MtxExpr::SubScaled Function

Overload List

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

Overload 1: Vector SubScaled(TVec *X, const double xScale, TMtxVec *Y, const double yScale, TMtxVec *Z, const double zScale);

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

#NameTypeDescription
1XTVec *
2xScaleconst double
3YTMtxVec *
4yScaleconst double
5ZTMtxVec *
6zScaleconst double
Remarks:

Computes the expression X*xScale - Y*yScale - Z*zScale without temporary objects, achieving the same speed as an optimized inplace operation.

Examples
#include "MtxExpr.h"
#include "Units.Math387.h"
#include "Units.MtxExpr.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Math::Units::Math387;
using namespace Dew::Math::Units::MtxExpr;

void Example()
{
    double xScale = 1.0, yScale = 2.0, zScale = 3.0;
    Vector X = { 5, 6, 7, 8 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 1, 1, 1, 1 };
    Vector A1 = X * xScale - Y * yScale - Z * zScale;
    Vector A2 = SubScaled(X, xScale, Y, yScale, Z, zScale);
    Vector A3;
    A3.SubScaled(X, xScale, Y, yScale, Z, zScale);
    if (!A2.IsEqual(A1)) ERaise("Problem");
    if (!A3.IsEqual(A1)) ERaise("Problem");
}
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 2: Matrix SubScaled(TMtx *X, const double xScale, TMtxVec *Y, const double yScale, TMtxVec *Z, const double zScale);

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

#NameTypeDescription
1XTMtx *
2xScaleconst double
3YTMtxVec *
4yScaleconst double
5ZTMtxVec *
6zScaleconst double
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 3: Vector SubScaled(TVec *X, TMtxVec *Y, const double yScale, TMtxVec *Z, const double zScale);

Compute X - Y*yScale - Z*zScale

#NameTypeDescription
1XTVec *
2YTMtxVec *
3yScaleconst double
4ZTMtxVec *
5zScaleconst double
Remarks:

Computes the difference between X and Y scaled by yScale, then subtracts Z scaled by zScale, without creating temporary objects.

Examples
#include "MtxExpr.h"
#include "Units.Math387.h"
#include "Units.MtxExpr.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Math::Units::Math387;
using namespace Dew::Math::Units::MtxExpr;

void Example()
{
    double yScale = 1.5, zScale = 2.0;
    Vector X = { 5, 6, 7, 8 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 1, 1, 1, 1 };
    Vector A1 = X - Y * yScale - Z * zScale;
    Vector A2 = SubScaled(X, Y, yScale, Z, zScale);
    Vector A3;
    A3.SubScaled(X, Y, yScale, Z, zScale);
    if (!A2.IsEqual(A1)) ERaise("Problem");
    if (!A3.IsEqual(A1)) ERaise("Problem");
}
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 4: Matrix SubScaled(TMtx *X, TMtxVec *Y, const double yScale, TMtxVec *Z, const double zScale);

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

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3yScaleconst double
4ZTMtxVec *
5zScaleconst double
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 5: Vector SubScaled(TVec *X, TMtxVec *Y, const TCplx &yScale, TMtxVec *Z, const TCplx &zScale);

Compute X - Y*yScale - Z*zScale

#NameTypeDescription
1XTVec *
2YTMtxVec *
3yScaleconst TCplx &
4ZTMtxVec *
5zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 6: Matrix SubScaled(TMtx *X, TMtxVec *Y, const TCplx &yScale, TMtxVec *Z, const TCplx &zScale);

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

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3yScaleconst TCplx &
4ZTMtxVec *
5zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 7: Vector SubScaled(TVec *X, TMtxVec *Y, TMtxVec *Z, const double zScale);

Compute X - Y - Z*zScale

#NameTypeDescription
1XTVec *
2YTMtxVec *
3ZTMtxVec *
4zScaleconst double
Remarks:

Computes the difference between X and Y, then subtracts Z scaled by zScale, without creating temporary objects.

Examples
#include "MtxExpr.h"
#include "Units.Math387.h"
#include "Units.MtxExpr.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Math::Units::Math387;
using namespace Dew::Math::Units::MtxExpr;

void Example()
{
    double zScale = 2.0;
    Vector X = { 5, 6, 7, 8 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 1, 1, 1, 1 };
    Vector A1 = X - Y - Z * zScale;
    Vector A2 = SubScaled(X, Y, Z, zScale);
    Vector A3;
    A3.Sub(X, Y, Z * zScale); // Or via a dedicated overload if available.
    if (!A2.IsEqual(A1)) ERaise("Problem");
    if (!A3.IsEqual(A1)) ERaise("Problem");
}
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 8: Matrix SubScaled(TMtx *X, TMtxVec *Y, TMtxVec *Z, const double zScale);

Compute X - Y - Z*zScale, where X is a Matrix.

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3ZTMtxVec *
4zScaleconst double
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 9: Vector SubScaled(TVec *X, TMtxVec *Y, TMtxVec *Z, const TCplx &zScale);

Compute X - Y - Z*zScale

#NameTypeDescription
1XTVec *
2YTMtxVec *
3ZTMtxVec *
4zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 10: Matrix SubScaled(TMtx *X, TMtxVec *Y, TMtxVec *Z, const TCplx &zScale);

Compute X - Y - Z*zScale, where X is a Matrix.

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3ZTMtxVec *
4zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 11: Vector SubScaled(TVec *X, const TCplx &xScale, TMtxVec *Y, const TCplx &yScale, TMtxVec *Z, const TCplx &zScale);

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

#NameTypeDescription
1XTVec *
2xScaleconst TCplx &
3YTMtxVec *
4yScaleconst TCplx &
5ZTMtxVec *
6zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 12: Matrix SubScaled(TMtx *X, const TCplx &xScale, TMtxVec *Y, const TCplx &yScale, TMtxVec *Z, const TCplx &zScale);

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

#NameTypeDescription
1XTMtx *
2xScaleconst TCplx &
3YTMtxVec *
4yScaleconst TCplx &
5ZTMtxVec *
6zScaleconst TCplx &
Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler