MtxExpr.DivAndAdd Method

Overload List

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

Overload 1: Matrix DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z)

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

Returns: Matrix

Overload 10: Matrix DivAndAdd(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 DivAndAdd(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 DivAndAdd(TVec X, TMtxVec Y, TCplx Z)

Compute X/Y + zScalar

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

Returns: Vector

Overload 13: Vector DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 DivAndAdd(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 adds 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;             // standard operation using operators
        Vector A2 = DivAndAdd(X, Y, Z);       // using the function
        Vector A3 = new Vector();
        A3.DivAndAdd(X, Y, Z);               // in-place operation on A3
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 17: Vector DivAndAdd(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 DivAndAdd(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, then adds 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 = DivAndAdd(X, Y, zScale, Z);
        Vector A3 = new Vector();
        A3.DivAndAdd(X, Y, zScale, Z);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 19: Vector DivAndAdd(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 adds the scalar zScalar, all 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;             // standard operator use
        Vector A2 = DivAndAdd(X, Y, zScalar);       // function call
        Vector A3 = new Vector();
        A3.DivAndAdd(X, Y, zScalar);                // in-place method call
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 20: Vector DivAndAdd(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 result by xyScale, and then adds Z, without creating temporary objects.

Overload 21: Vector DivAndAdd(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:

Computes the expression (X divided by Y) multiplied by xyScale plus Z multiplied by zScale, without creating 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 = DivAndAdd(X, xyScale, Y, xyScale, Z, zScale);
        Vector A3 = new Vector();
        A3.DivAndAdd(X, xyScale, Y, xyScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 22: Vector DivAndAdd(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 plus a scalar zScalar, without creating 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 = DivAndAdd(X, xyScale, Y, xyScale, zScalar);
        Vector A3 = new Vector();
        A3.DivAndAdd(X, xyScale, Y, xyScale, zScalar);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}