MtxExpr.DivAndSub Method

Overload List

#SignatureDescription
1Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx Z)Result = X/Y - zScalar, where X is a Matrix
2Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TCplx Z)Result = (X / Y) * xyScale - zScalar, where X is a Matrix
3Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TMtxVec Z)Result = X/Y*xyScale - Z, where X is a Matrix
4Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)Result = (X / Y) * xyScale - Z*zScale, where X is a Matrix
5Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z)Result = X/Y - Z, where X is a Matrix
6Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = X/Y - Z*zScale, where X is a Matrix
7Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z, Double zScale)Result = X/Y - Z*zScale, where X is a Matrix
8Matrix DivAndSub(TMtx X, TMtxVec Y, Double Z)Result = X/Y - zScalar, where X is a Matrix
9Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z)Result = X/Y*xyScale - Z, where X is a Matrix
10Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)Result = (X / Y) * xyScale - Z*zScale, where X is a Matrix
11Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, Double Z)Result = (X / Y) * xyScale - zScalar, where X is a Matrix
12Vector DivAndSub(TVec X, TMtxVec Y, TCplx Z)Result = X/Y - zScalar
13Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TCplx Z)Result = (X / Y) * xyScale - zScalar
14Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TMtxVec Z)Result = X/Y*xyScale - Z
15Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)Result = (X / Y) * xyScale - Z*zScale
16Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z)Result = X/Y - Z
17Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = X/Y - Z*zScale
18Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z, Double zScale)Result = X/Y - Z*zScale
19Vector DivAndSub(TVec X, TMtxVec Y, Double Z)Result = X/Y - zScalar
20Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, TMtxVec Z)Result = X/Y*xyScale - Z
21Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)Result = (X / Y) * xyScale - Z*zScale
22Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, Double Z)Result = (X / Y) * xyScale - zScalar

Overload 1: Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx Z)

Compute X/Y - zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3ZTCplxscalar

Returns: Matrix

Overload 2: Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TCplx Z)

Compute (X / Y) * xyScale - zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTCplxscalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 3: Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TMtxVec Z)

Compute X/Y*xyScale - Z, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTMtxVecsource TVec or TMtx

Returns: Matrix

Overload 4: Matrix DivAndSub(TMtx X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)

Compute (X / Y) * xyScale - Z*zScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTMtxVecsource TVec or TMtx
5zScaleTCplxscalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 5: Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z)

Compute X/Y - Z, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 6: Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z, TCplx zScale)

Compute X/Y - Z*zScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx
4zScaleTCplxscalar

Returns: Matrix

Overload 7: Matrix DivAndSub(TMtx X, TMtxVec Y, TMtxVec Z, Double zScale)

Compute X/Y - Z*zScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx
4zScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 8: Matrix DivAndSub(TMtx X, TMtxVec Y, Double Z)

Compute X/Y - zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3ZDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 9: Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z)

Compute X/Y*xyScale - Z, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZTMtxVecsource TVec or TMtx

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 10: Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)

Compute (X / Y) * xyScale - Z*zScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZTMtxVecsource TVec or TMtx
5zScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 11: Matrix DivAndSub(TMtx X, TMtxVec Y, Double xyScale, Double Z)

Compute (X / Y) * xyScale - zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 12: Vector DivAndSub(TVec X, TMtxVec Y, TCplx Z)

Compute X/Y - zScalar

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3ZTCplxscalar

Returns: Vector

Overload 13: Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TCplx Z)

Compute (X / Y) * xyScale - zScalar

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTCplxscalar

Returns: Vector

Remarks:

The operation does only per-element math.

Overload 14: Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TMtxVec Z)

Compute X/Y*xyScale - Z

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTMtxVecsource TVec or TMtx

Returns: Vector

Overload 15: Vector DivAndSub(TVec X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)

Compute (X / Y) * xyScale - Z*zScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleTCplxscalar
4ZTMtxVecsource TVec or TMtx
5zScaleTCplxscalar

Returns: Vector

Remarks:

The operation does only per-element math.

Overload 16: Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z)

Compute X/Y - Z

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx

Returns: Vector

Remarks:

Divides X by Y element-wise and then subtracts Z, all without creating temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        Vector X = (Vector)new double[] { 6, 8, 10, 12 };
        Vector Y = (Vector)new double[] { 2, 2, 2, 2 };
        Vector Z = (Vector)new double[] { 1, 1, 1, 1 };
        Vector A1 = (X / Y) - Z;
        Vector A2 = DivAndSub(X, Y, Z);
        Vector A3 = new Vector();
        A3.DivAndSub(X, Y, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 17: Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z, TCplx zScale)

Compute X/Y - Z*zScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx
4zScaleTCplxscalar

Returns: Vector

Overload 18: Vector DivAndSub(TVec X, TMtxVec Y, TMtxVec Z, Double zScale)

Compute X/Y - Z*zScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3ZTMtxVecsource TVec or TMtx
4zScaleDoublescalar

Returns: Vector

Remarks:

Divides X by Y element-wise and then subtracts Z multiplied by zScale, all without creating temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        double zScale = 2.0;
        Vector X = (Vector)new double[] { 6, 8, 10, 12 };
        Vector Y = (Vector)new double[] { 2, 2, 2, 2 };
        Vector Z = (Vector)new double[] { 1, 1, 1, 1 };
        Vector A1 = (X / Y) - (Z * zScale);
        Vector A2 = DivAndSub(X, Y, Z, zScale);
        Vector A3 = new Vector();
        A3.DivAndSub(X, Y, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 19: Vector DivAndSub(TVec X, TMtxVec Y, Double Z)

Compute X/Y - zScalar

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3ZDoublescalar

Returns: Vector

Remarks:

Divides X by Y element-wise and then subtracts the scalar zScalar, without creating temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        double zScalar = 2.0;
        Vector X = (Vector)new double[] { 6, 8, 10, 12 };
        Vector Y = (Vector)new double[] { 2, 2, 2, 2 };
        Vector A1 = (X / Y) - zScalar;
        Vector A2 = DivAndSub(X, Y, zScalar);
        Vector A3 = new Vector();
        A3.DivAndSub(X, Y, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 20: Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, TMtxVec Z)

Compute X/Y*xyScale - Z

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZTMtxVecsource TVec or TMtx

Returns: Vector

Remarks:

Divides X by Y element-wise, multiplies the quotient by xyScale, and then subtracts Z, without creating temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        double xyScale = 1.5;
        Vector X = (Vector)new double[] { 8, 10, 12, 14 };
        Vector Y = (Vector)new double[] { 2, 2, 2, 2 };
        Vector Z = (Vector)new double[] { 1, 1, 1, 1 };
        Vector A1 = (X / Y) * xyScale - Z;
        Vector A2 = DivAndSub(X, Y, xyScale, Z);
        Vector A3 = new Vector();
        A3.DivAndSub(X, Y, xyScale, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 21: Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)

Compute (X / Y) * xyScale - Z*zScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZTMtxVecsource TVec or TMtx
5zScaleDoublescalar

Returns: Vector

Remarks:

Divides X by Y, scales the quotient by xyScale, then subtracts Z scaled by zScale, all without temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        double xyScale = 1.5, zScale = 2.0;
        Vector X = (Vector) new double[] { 8, 10, 12, 14 };
        Vector Y = (Vector) new double[] { 2, 2, 2, 2 };
        Vector Z = (Vector) new double[] { 1, 1, 1, 1 };
        Vector A1 = (X / Y) * xyScale - Z * zScale;
        Vector A2 = DivAndSub(X, xyScale, Y, xyScale, Z, zScale);
        Vector A3 = new Vector();
        A3.DivAndSub(X, xyScale, Y, xyScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 22: Vector DivAndSub(TVec X, TMtxVec Y, Double xyScale, Double Z)

Compute (X / Y) * xyScale - zScalar

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3xyScaleDoublescalar
4ZDoublescalar

Returns: Vector

Remarks:

Computes the expression (X divided by Y) multiplied by xyScale and then subtracts the scalar zScalar, all without temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;

namespace Dew.Examples
{
    void Example()
    {
        double xyScale = 1.5, zScalar = 2.0;
        Vector X = (Vector) new double[] { 8, 10, 12, 14 };
        Vector Y = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X / Y) * xyScale - zScalar;
        Vector A2 = DivAndSub(X, xyScale, Y, xyScale, zScalar);
        Vector A3 = new Vector();
        A3.DivAndSub(X, xyScale, Y, xyScale, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}