MtxExpr.AddAndMul Method

Overload List

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

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

#NameTypeDescription
1XTMtxsource TMtx
2YTCplxscalar
3ZTCplxscalar

Returns: Matrix

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

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

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTCplxscalar
4ZTCplxscalar

Returns: Matrix

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

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

Returns: Matrix

Overload 4: Matrix AddAndMul(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

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

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

Returns: Matrix

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

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

Returns: Matrix

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

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

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

Returns: Matrix

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

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

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

Returns: Matrix

Overload 9: Matrix AddAndMul(TMtx X, TMtxVec Y, TCplx Z)

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

Returns: Matrix

Overload 10: Matrix AddAndMul(TMtx X, TMtxVec Y, TCplx yScale, TCplx Z)

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

Returns: Matrix

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

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

Returns: Matrix

Overload 12: Matrix AddAndMul(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 AddAndMul(TMtx X, TMtxVec Y, TMtxVec Z, TCplx zScale)

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

Returns: Matrix

Overload 14: Matrix AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(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 AddAndMul(TMtx X, Double Y, Double Z)

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

#NameTypeDescription
1XTMtxsource TMtx
2YDoublescalar
3ZDoublescalar

Returns: Matrix

Overload 23: Matrix AddAndMul(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 AddAndMul(TMtx X, Double xScale, Double Y, TMtxVec Z, Double zScale)

Compute (X*xScale + yScalar)*Z*zScale, when 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 AddAndMul(TMtx X, Double xScale, Double Y, Double Z)

Compute (X*xScale + yScalar)*zScalar, when X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YDoublescalar
4ZDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

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

#NameTypeDescription
1XTVecsource TVec
2YTCplxscalar
3ZTCplxscalar

Returns: Vector

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

Compute (X*xScale + yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTCplxscalar
4ZTCplxscalar

Returns: Vector

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

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

Returns: Vector

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

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

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

Returns: Vector

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

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

Returns: Vector

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

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

Returns: Vector

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

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

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

Returns: Vector

Overload 33: Vector AddAndMul(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

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

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

Returns: Vector

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

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

Returns: Vector

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

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

Returns: Vector

Overload 37: Vector AddAndMul(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 sum of X and Y multiplied by Z without temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        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 + Y) * Z;
        Vector A2 = AddAndMul(X, Y, Z);
        Vector A3 = new Vector();
        A3.AddAndMul(X, Y, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 38: Vector AddAndMul(TVec X, TMtxVec Y, TMtxVec Z, TCplx zScale)

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

Returns: Vector

Overload 39: Vector AddAndMul(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 by the scalar 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[] { 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 + Y) * Z * zScale;
        Vector A2 = AddAndMul(X, Y, Z, zScale);
        Vector A3 = new Vector();
        A3.AddAndMul(X, Y, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

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

Compute (X + Y)*zScalar

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

Returns: Vector

Remarks:

Computes the sum of X and Y multiplied by the 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[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 3, 4, 5 };
        Vector A1 = (X + Y) * zScalar;
        Vector A2 = AddAndMul(X, Y, zScalar);
        Vector A3 = new Vector();
        A3.AddAndMul(X, Y, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 41: Vector AddAndMul(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 plus Y scaled by yScale) multiplied by Z and then by zScale, without 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[] { 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 + Y * yScale) * Z * zScale;
        Vector A2 = AddAndMul(X, yScale, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.AddAndMul(X, yScale, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 42: Vector AddAndMul(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 (X + Y*yScale) multiplied by a scalar zScalar without temporary objects.

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

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

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

Compute (X + yScalar)*Z

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

Returns: Vector

Remarks:

Computes the expression (X plus the scalar yScalar) multiplied 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, 4, 5, 6 };
        Vector A1 = (X + yScalar) * Z;
        Vector A2 = AddAndMul(X, yScalar, Z);
        Vector A3 = new Vector();
        A3.AddAndMul(X, yScalar, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 44: Vector AddAndMul(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:

Computes the expression (X + yScalar) 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 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 + yScalar) * Z * zScale;
        Vector A2 = AddAndMul(X, yScalar, Z, zScale);
        Vector A3 = new Vector();
        A3.AddAndMul(X, yScalar, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 45: Vector AddAndMul(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 expression (X*xScale + Y*yScale) multiplied by Z*zScale without 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 = AddAndMul(X, xScale, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.AddAndMul(X, xScale, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 46: Vector AddAndMul(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 expression (X*xScale + Y*yScale) 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, 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 = AddAndMul(X, xScale, Y, yScale, zScalar);
        Vector A3 = new Vector();
        A3.AddAndMul(X, xScale, Y, yScale, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

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

Compute (X + yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2YDoublescalar
3ZDoublescalar

Returns: Vector

Remarks:

Computes the result of adding the scalar yScalar to X and then multiplying by the 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 = AddAndMul(X, yScalar, zScalar);
        Vector A3 = new Vector();
        A3.AddAndMul(X, yScalar, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 48: Vector AddAndMul(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:

Computes the expression (X scaled by xScale plus the scalar yScalar) multiplied by Z, without creating temporary objects.

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

namespace Dew.Examples
{
    void Example()
    {
        double xScale = 1.0, yScalar = 2.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;
        Vector A2 = AddAndMul(X, xScale, yScalar, Z);
        Vector A3 = new Vector();
        A3.AddAndMul(X, xScale, yScalar, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 49: Vector AddAndMul(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 where X is scaled by xScale, then added to a scalar yScalar, and the result is multiplied element-wise by Z and finally scaled by zScale. This operation is performed without creating 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 = AddAndMul(X, xScale, yScalar, Z, zScale);
        Vector A3 = new Vector();
        A3.AddAndMul(X, xScale, yScalar, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

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

Compute (X*xScale + yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YDoublescalar
4ZDoublescalar

Returns: Vector

Remarks:

Computes the result of multiplying X by xScale, adding a scalar yScalar, and then multiplying the entire result by a scalar zScalar, all without creating 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 = AddAndMul(X, xScale, yScalar, zScalar);
        Vector A3 = new Vector();
        A3.AddAndMul(X, xScale, yScalar, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}