MtxExpr.AddAndMul Method

Overload List

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

Overload 1: 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 2: 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 3: 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 4: 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 5: 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 6: 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 7: 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 8: 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 9: 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 10: 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 11: 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 12: 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 13: 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 14: 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 15: 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 16: 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 17: 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 18: Vector AddAndMul(TVec X, TCplx xScale, TCplx Y, TCplx Z)

Compute (X*xScale + yScalar)*zScalar

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTCplxscalar
4ZTCplxscalar

Returns: Vector

Overload 19: 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 20: 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 21: 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 22: 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 23: 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 24: 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 25: 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 26: 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 27: 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 28: 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 29: 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 30: 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 31: 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 32: 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 33: 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 34: 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");
    }
}