MtxExpr.SubAndMul Method

Overload List

#SignatureDescription
1Matrix SubAndMul(TMtx X, TCplx Y, TCplx Z)Result = (X - yScalar)*zScalar, where X is a Matrix
2Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TCplx Z)
3Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TMtxVec Z)Result = (X*xScale - yScalar)*Z, where X is a Matrix
4Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TMtxVec Z, TCplx zScale)Result = (X*xScale - yScalar)*Z*zScale, where X is a Matrix
5Matrix SubAndMul(TMtx X, TCplx Y, TMtxVec Z)Result = (X - yScalar)*Z, where X is a Matrix
6Matrix SubAndMul(TMtx X, TCplx Y, TMtxVec Z, TCplx zScale)Result = (X - yScalar)*Z*zScale, where X is a Matrix
7Matrix SubAndMul(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale, TCplx Z)Result = (X*xScale - Y*yScale)*zScale
8Matrix SubAndMul(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = (X*xScale - Y*yScale)*Z*zScale, when X is a Matrix
9Matrix SubAndMul(TMtx X, TMtxVec Y, TCplx Z)Result = (X - Y)*zScalar, where X is a Matrix
10Matrix SubAndMul(TMtx X, TMtxVec Y, TCplx yScale, TCplx Z)Result = (X - Y*yScale)*zScalar, where X is a Matrix
11Matrix SubAndMul(TMtx X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = (X - Y*yScale)*Z*zScale, where X is a Matrix
12Matrix SubAndMul(TMtx X, TMtxVec Y, TMtxVec Z)Result = (X - Y)*Z, where X is a Matrix
13Matrix SubAndMul(TMtx X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = (X - Y)*Z*zScale, where X is a Matrix
14Matrix SubAndMul(TMtx X, TMtxVec Y, TMtxVec Z, Double zScale)Result = (X - Y)*Z*zScale, where X is a Matrix
15Matrix SubAndMul(TMtx X, TMtxVec Y, Double Z)Result = (X - Y)*zScalar, where X is a Matrix
16Matrix SubAndMul(TMtx X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = (X - Y*yScale)*Z*zScale, where X is a Matrix
17Matrix SubAndMul(TMtx X, TMtxVec Y, Double yScale, Double Z)Result = (X - Y*yScale)*zScalar, where X is a Matrix
18Matrix SubAndMul(TMtx X, Double Y, TMtxVec Z)Result = (X - yScalar)*Z, where X is a Matrix
19Matrix SubAndMul(TMtx X, Double Y, TMtxVec Z, Double zScale)Result = (X - yScalar)*Z*zScale, where X is a Matrix
20Matrix SubAndMul(TMtx X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = (X*xScale - Y*yScale)*Z*zScale, when X is a Matrix
21Matrix SubAndMul(TMtx X, Double xScale, TMtxVec Y, Double yScale, Double Z)Result = (X*xScale - Y*yScale)*zScalar, when X is a Matrix
22Matrix SubAndMul(TMtx X, Double Y, Double Z)Result = (X - yScalar)*zScalar, where X is a Matrix
23Matrix SubAndMul(TMtx X, Double xScale, Double Y, TMtxVec Z)Result = (X*xScale - yScalar)*Z, where X is a Matrix
24Matrix SubAndMul(TMtx X, Double xScale, Double Y, TMtxVec Z, Double zScale)Result = (X*xScale - yScalar)*Z*zScale, where X is a Matrix
25Matrix SubAndMul(TMtx X, Double xScale, Double Y, Double Z)Result = (X*xScale - yScalar)*zScalar, where X is a Matrix
26Vector SubAndMul(TVec X, TCplx Y, TCplx Z)Result = (X - yScalar)*zScalar
27Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TCplx Z)
28Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TMtxVec Z)Result = (X*xScale - yScalar)*Z
29Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TMtxVec Z, TCplx zScale)Result = (X*xScale - yScalar)*Z*zScale, where X is a Matrix
30Vector SubAndMul(TVec X, TCplx Y, TMtxVec Z)Result = (X - yScalar)*Z
31Vector SubAndMul(TVec X, TCplx Y, TMtxVec Z, TCplx zScale)Result = (X - yScalar)*Z*zScale
32Vector SubAndMul(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale, TCplx Z)Result = (X*xScale - Y*yScale)*zScale
33Vector SubAndMul(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = (X*xScale - Y*yScale)*Z*zScale
34Vector SubAndMul(TVec X, TMtxVec Y, TCplx Z)Result = (X - Y)*zScalar
35Vector SubAndMul(TVec X, TMtxVec Y, TCplx yScale, TCplx Z)Result = (X - Y*yScale)*zScalar
36Vector SubAndMul(TVec X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = (X - Y*yScale)*Z*zScale
37Vector SubAndMul(TVec X, TMtxVec Y, TMtxVec Z)Result = (X - Y)*Z
38Vector SubAndMul(TVec X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = (X - Y)*Z*zScale
39Vector SubAndMul(TVec X, TMtxVec Y, TMtxVec Z, Double zScale)Result = (X - Y)*Z*zScale
40Vector SubAndMul(TVec X, TMtxVec Y, Double Z)Result = (X - Y)*zScalar
41Vector SubAndMul(TVec X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = (X - Y*yScale)*Z*zScale
42Vector SubAndMul(TVec X, TMtxVec Y, Double yScale, Double Z)Result = (X - Y*yScale)*zScalar
43Vector SubAndMul(TVec X, Double Y, TMtxVec Z)Result = (X - yScalar)*Z
44Vector SubAndMul(TVec X, Double Y, TMtxVec Z, Double zScale)Result = (X - yScalar)*Z*zScale
45Vector SubAndMul(TVec X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = (X*xScale - Y*yScale)*Z*zScale
46Vector SubAndMul(TVec X, Double xScale, TMtxVec Y, Double yScale, Double Z)Result = (X*xScale - Y*yScale)*zScalar
47Vector SubAndMul(TVec X, Double Y, Double Z)Result = (X - yScalar)*zScalar
48Vector SubAndMul(TVec X, Double xScale, Double Y, TMtxVec Z)Result = (X*xScale - yScalar)*Z
49Vector SubAndMul(TVec X, Double xScale, Double Y, TMtxVec Z, Double zScale)Result = (X*xScale - yScalar)*Z*zScale
50Vector SubAndMul(TVec X, Double xScale, Double Y, Double Z)Result = (X*xScale - yScalar)*zScalar

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

Compute (X - yScalar)*zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTCplxscalar
3ZTCplxscalar

Returns: Matrix

Overload 2: Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TCplx Z)

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTCplxscalar
4ZTCplxscalar

Returns: Matrix

Overload 3: Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TMtxVec Z)

Compute (X*xScale - yScalar)*Z, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTCplxscalar
4ZTMtxVecsource TVec or TMtx

Returns: Matrix

Overload 4: Matrix SubAndMul(TMtx X, TCplx xScale, TCplx Y, TMtxVec Z, TCplx zScale)

Compute (X*xScale - yScalar)*Z*zScale, where X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTCplxscalar
4ZTMtxVecsource TVec or TMtx
5zScaleTCplxscalar

Returns: Matrix

Remarks:

The operation does only per-element math.

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

Compute (X - yScalar)*Z, where X is a Matrix

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

Returns: Matrix

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

Compute (X - yScalar)*Z*zScale, where X is a Matrix

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

Returns: Matrix

Overload 7: Matrix SubAndMul(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale, TCplx Z)

Compute (X*xScale - Y*yScale)*zScale

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar
5ZTCplxscalar

Returns: Matrix

Overload 8: Matrix SubAndMul(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)

Compute (X*xScale - Y*yScale)*Z*zScale, when X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar
5ZTMtxVecsource TVec or TMtx
6zScaleTCplxscalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 9: Matrix SubAndMul(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 10: Matrix SubAndMul(TMtx X, TMtxVec Y, TCplx yScale, TCplx Z)

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

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

Returns: Matrix

Overload 11: Matrix SubAndMul(TMtx X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)

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

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

Returns: Matrix

Overload 12: Matrix SubAndMul(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 13: Matrix SubAndMul(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 14: Matrix SubAndMul(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 15: Matrix SubAndMul(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

Overload 16: Matrix SubAndMul(TMtx X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)

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

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

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 17: Matrix SubAndMul(TMtx X, TMtxVec Y, Double yScale, Double Z)

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

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

Returns: Matrix

Overload 18: Matrix SubAndMul(TMtx X, Double Y, TMtxVec Z)

Compute (X - yScalar)*Z, where X is a Matrix

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

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 19: Matrix SubAndMul(TMtx X, Double Y, TMtxVec Z, Double zScale)

Compute (X - yScalar)*Z*zScale, where X is a Matrix

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

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 20: Matrix SubAndMul(TMtx X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)

Compute (X*xScale - Y*yScale)*Z*zScale, when X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar
5ZTMtxVecsource TVec or TMtx
6zScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 21: Matrix SubAndMul(TMtx X, Double xScale, TMtxVec Y, Double yScale, Double Z)

Compute (X*xScale - Y*yScale)*zScalar, when X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar
5ZDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 22: Matrix SubAndMul(TMtx X, Double Y, Double Z)

Compute (X - yScalar)*zScalar, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YDoublescalar
3ZDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 23: Matrix SubAndMul(TMtx X, Double xScale, Double Y, TMtxVec Z)

Compute (X*xScale - yScalar)*Z, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YDoublescalar
4ZTMtxVecsource TVec or TMtx

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 24: Matrix SubAndMul(TMtx X, Double xScale, Double Y, TMtxVec Z, Double zScale)

Compute (X*xScale - yScalar)*Z*zScale, where X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YDoublescalar
4ZTMtxVecsource TVec or TMtx
5zScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 25: Matrix SubAndMul(TMtx X, Double xScale, Double Y, Double Z)

Compute (X*xScale - yScalar)*zScalar, where X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YDoublescalar
4ZDoublescalar

Returns: Matrix

Overload 26: Vector SubAndMul(TVec X, TCplx Y, TCplx Z)

Compute (X - yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2YTCplxscalar
3ZTCplxscalar

Returns: Vector

Overload 27: Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TCplx Z)

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTCplxscalar
4ZTCplxscalar

Returns: Vector

Overload 28: Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TMtxVec Z)

Compute (X*xScale - yScalar)*Z

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTCplxscalar
4ZTMtxVecsource TVec or TMtx

Returns: Vector

Overload 29: Vector SubAndMul(TVec X, TCplx xScale, TCplx Y, TMtxVec Z, TCplx zScale)

Compute (X*xScale - yScalar)*Z*zScale, where X is a Matrix.

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTCplxscalar
4ZTMtxVecsource TVec or TMtx
5zScaleTCplxscalar

Returns: Vector

Remarks:

The operation does only per-element math.

Overload 30: Vector SubAndMul(TVec X, TCplx Y, TMtxVec Z)

Compute (X - yScalar)*Z

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

Returns: Vector

Overload 31: Vector SubAndMul(TVec X, TCplx Y, TMtxVec Z, TCplx zScale)

Compute (X - yScalar)*Z*zScale

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

Returns: Vector

Overload 32: Vector SubAndMul(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale, TCplx Z)

Compute (X*xScale - Y*yScale)*zScale

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar
5ZTCplxscalar

Returns: Vector

Overload 33: Vector SubAndMul(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)

Compute (X*xScale - Y*yScale)*Z*zScale.

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar
5ZTMtxVecsource TVec or TMtx
6zScaleTCplxscalar

Returns: Vector

Remarks:

The operation does only per-element math.

Overload 34: Vector SubAndMul(TVec X, TMtxVec Y, TCplx Z)

Compute (X - Y)*zScalar

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

Returns: Vector

Overload 35: Vector SubAndMul(TVec X, TMtxVec Y, TCplx yScale, TCplx Z)

Compute (X - Y*yScale)*zScalar

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

Returns: Vector

Overload 36: Vector SubAndMul(TVec X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)

Compute (X - Y*yScale)*Z*zScale

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

Returns: Vector

Overload 37: Vector SubAndMul(TVec X, TMtxVec Y, TMtxVec Z)

Compute (X - Y)*Z

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

Returns: Vector

Remarks:

Computes the product of the difference between X and Y multiplied by Z without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        Vector X = (Vector) new double[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X - Y) * Z;
        Vector A2 = SubAndMul(X, Y, Z);
        Vector A3 = new Vector();
        A3.SubAndMul(X, Y, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 38: Vector SubAndMul(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 39: Vector SubAndMul(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:

Computes the product of (X - Y) multiplied by Z and then scaled by zScale, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double zScale = 3.0;
        Vector X = (Vector) new double[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X - Y) * Z * zScale;
        Vector A2 = SubAndMul(X, Y, Z, zScale);
        Vector A3 = new Vector();
        A3.SubAndMul(X, Y, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 40: Vector SubAndMul(TVec X, TMtxVec Y, Double Z)

Compute (X - Y)*zScalar

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

Returns: Vector

Remarks:

Computes the product of (X - Y) multiplied by a scalar zScalar without temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double zScalar = 3.0;
        Vector X = (Vector) new double[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector A1 = (X - Y) * zScalar;
        Vector A2 = SubAndMul(X, Y, zScalar);
        Vector A3 = new Vector();
        A3.SubAndMul(X, Y, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 41: Vector SubAndMul(TVec X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)

Compute (X - Y*yScale)*Z*zScale

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

Returns: Vector

Remarks:

Computes the product of (X minus Y scaled by yScale) multiplied by Z and then by zScale, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double yScale = 1.5, zScale = 2.0;
        Vector X = (Vector) new double[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X - Y * yScale) * Z * zScale;
        Vector A2 = SubAndMul(X, yScale, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.SubAndMul(X, yScale, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 42: Vector SubAndMul(TVec X, TMtxVec Y, Double yScale, Double Z)

Compute (X - Y*yScale)*zScalar

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

Returns: Vector

Remarks:

Computes the expression where Y is first scaled by yScale, then subtracted from X, and the resulting vector is multiplied by a scalar zScalar. This is performed without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double yScale = 0.5, zScalar = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 4, 6, 8 };
        Vector A1 = (X - Y * yScale) * zScalar;
        Vector A2 = SubAndMul(X, yScale, Y, zScalar);
        Vector A3 = new Vector();
        A3.SubAndMul(X, yScale, Y, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 43: Vector SubAndMul(TVec X, Double Y, TMtxVec Z)

Compute (X - yScalar)*Z

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

Returns: Vector

Remarks:

Subtracts the scalar yScalar from X and multiplies the result element-wise by Z, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double yScalar = 2.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 3, 3, 3, 3 };
        Vector A1 = (X - yScalar) * Z;
        Vector A2 = SubAndMul(X, yScalar, Z);
        Vector A3 = new Vector();
        A3.SubAndMul(X, yScalar, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 44: Vector SubAndMul(TVec X, Double Y, TMtxVec Z, Double zScale)

Compute (X - yScalar)*Z*zScale

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

Returns: Vector

Remarks:

Subtracts a scalar yScalar from X, then multiplies the result element-wise by Z, and finally scales the product by zScale. This operation is performed without temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double yScalar = 2.0, zScale = 4.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X - yScalar) * Z * zScale;
        Vector A2 = SubAndMul(X, yScalar, Z, zScale);
        Vector A3 = new Vector();
        A3.SubAndMul(X, yScalar, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 45: Vector SubAndMul(TVec X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)

Compute (X*xScale - Y*yScale)*Z*zScale

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar
5ZTMtxVecsource TVec or TMtx
6zScaleDoublescalar

Returns: Vector

Remarks:

Computes the product of (X scaled by xScale minus Y scaled by yScale) multiplied by Z scaled by zScale, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 1.0, yScale = 2.0, zScale = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 3, 4, 5 };
        Vector Z = (Vector) new double[] { 3, 4, 5, 6 };
        Vector A1 = (X * xScale - Y * yScale) * Z * zScale;
        Vector A2 = SubAndMul(X, xScale, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.SubAndMul(X, xScale, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 46: Vector SubAndMul(TVec X, Double xScale, TMtxVec Y, Double yScale, Double Z)

Compute (X*xScale - Y*yScale)*zScalar

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar
5ZDoublescalar

Returns: Vector

Remarks:

Computes the product of (X scaled by xScale minus Y scaled by yScale) multiplied by a scalar zScalar, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 1.0, yScale = 2.0, zScalar = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 3, 4, 5 };
        Vector A1 = (X * xScale - Y * yScale) * zScalar;
        Vector A2 = SubAndMul(X, xScale, Y, yScale, zScalar);
        Vector A3 = new Vector();
        A3.SubAndMul(X, xScale, Y, yScale, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 47: Vector SubAndMul(TVec X, Double Y, Double Z)

Compute (X - yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2YDoublescalar
3ZDoublescalar

Returns: Vector

Remarks:

Computes the result of subtracting a scalar yScalar from X and then multiplying by a scalar zScalar, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double yScalar = 2.0, zScalar = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector A1 = (X - yScalar) * zScalar;
        Vector A2 = SubAndMul(X, yScalar, zScalar);
        Vector A3 = new Vector();
        A3.SubAndMul(X, yScalar, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 48: Vector SubAndMul(TVec X, Double xScale, Double Y, TMtxVec Z)

Compute (X*xScale - yScalar)*Z

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YDoublescalar
4ZTMtxVecsource TVec or TMtx

Returns: Vector

Remarks:

Multiplies X by xScale, subtracts the scalar yScalar, and then multiplies the result element-wise by Z, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 2.0, yScalar = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 2, 2, 2, 2 };
        Vector A1 = (X * xScale - yScalar) * Z;
        Vector A2 = SubAndMul(X, xScale, yScalar, Z);
        Vector A3 = new Vector();
        A3.SubAndMul(X, xScale, yScalar, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 49: Vector SubAndMul(TVec X, Double xScale, Double Y, TMtxVec Z, Double zScale)

Compute (X*xScale - yScalar)*Z*zScale

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YDoublescalar
4ZTMtxVecsource TVec or TMtx
5zScaleDoublescalar

Returns: Vector

Remarks:

Computes the expression (X*xScale - yScalar) multiplied by Z*zScale without temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 1.0, yScalar = 2.0, zScale = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 3, 4, 5, 6 };
        Vector A1 = (X * xScale - yScalar) * Z * zScale;
        Vector A2 = SubAndMul(X, xScale, yScalar, Z, zScale);
        Vector A3 = new Vector();
        A3.SubAndMul(X, xScale, yScalar, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 50: Vector SubAndMul(TVec X, Double xScale, Double Y, Double Z)

Compute (X*xScale - yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YDoublescalar
4ZDoublescalar

Returns: Vector

Remarks:

Computes the expression (X*xScale - yScalar) multiplied by a scalar zScalar without temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 1.0, yScalar = 2.0, zScalar = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector A1 = (X * xScale - yScalar) * zScalar;
        Vector A2 = SubAndMul(X, xScale, yScalar, zScalar);
        Vector A3 = new Vector();
        A3.SubAndMul(X, xScale, yScalar, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}