MtxExpr.SubScaled Method

Overload List

#SignatureDescription
1Matrix SubScaled(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = X*xScale - Y*yScale - Z*zScale, where X is a Matrix
2Matrix SubScaled(TMtx X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = X - Y*yScale - Z*zScale, where X is a Matrix
3Matrix SubScaled(TMtx X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = X - Y - Z*zScale, where X is a Matrix
4Matrix SubScaled(TMtx X, TMtxVec Y, TMtxVec Z, Double zScale)Result = X - Y - Z*zScale, where X is a Matrix
5Matrix SubScaled(TMtx X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = X - Y*yScale - Z*zScale, where X is a Matrix
6Matrix SubScaled(TMtx X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = X*xScale - Y*yScale - Z*zScale, when X is a Matrix
7Vector SubScaled(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = X*xScale - Y*yScale - Z*zScale
8Vector SubScaled(TVec X, TMtxVec Y, TCplx yScale, TMtxVec Z, TCplx zScale)Result = X - Y*yScale - Z*zScale
9Vector SubScaled(TVec X, TMtxVec Y, TMtxVec Z, TCplx zScale)Result = X - Y - Z*zScale
10Vector SubScaled(TVec X, TMtxVec Y, TMtxVec Z, Double zScale)Result = X - Y - Z*zScale
11Vector SubScaled(TVec X, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = X - Y*yScale - Z*zScale
12Vector SubScaled(TVec X, Double xScale, TMtxVec Y, Double yScale, TMtxVec Z, Double zScale)Result = X*xScale - Y*yScale - Z*zScale

Overload 1: Matrix SubScaled(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 2: Matrix SubScaled(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 3: Matrix SubScaled(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 4: Matrix SubScaled(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

Overload 5: Matrix SubScaled(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

Overload 6: Matrix SubScaled(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

Overload 7: Vector SubScaled(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 8: Vector SubScaled(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 9: Vector SubScaled(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 10: Vector SubScaled(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 difference between X and Y, then subtracts Z scaled by zScale, 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[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 1, 1, 1, 1 };
        Vector A1 = X - Y - Z * zScale;
        Vector A2 = SubScaled(X, Y, Z, zScale);
        Vector A3 = new Vector();
        A3.Sub(X, Y, Z * zScale); // Or via a dedicated overload if available.
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 11: Vector SubScaled(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 difference between X and Y scaled by yScale, then subtracts Z scaled 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[] { 1, 1, 1, 1 };
        Vector A1 = X - Y * yScale - Z * zScale;
        Vector A2 = SubScaled(X, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.SubScaled(X, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 12: Vector SubScaled(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 - Z*zScale without temporary objects, achieving the same speed as an optimized inplace operation.

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[] { 5, 6, 7, 8 };
        Vector Y = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Z = (Vector) new double[] { 1, 1, 1, 1 };
        Vector A1 = X * xScale - Y * yScale - Z * zScale;
        Vector A2 = SubScaled(X, xScale, Y, yScale, Z, zScale);
        Vector A3 = new Vector();
        A3.SubScaled(X, xScale, Y, yScale, Z, zScale);
        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}