MtxExpr::MulAndSub Function

Overload List

#SignatureDescription
1Vector MulAndSub(TVec *X, const double Y, TMtxVec *Z, const double zScale);Compute X*yScalar - Z*zScale
2Matrix MulAndSub(TMtx *X, const double Y, TMtxVec *Z, const double zScale);Compute X*yScalar - Z*zScale, where X is a Matrix
3Vector MulAndSub(TVec *X, const TCplx &Y, TMtxVec *Z, const TCplx &zScale);Compute X*yScalar - Z*zScale
4Matrix MulAndSub(TMtx *X, const TCplx &Y, TMtxVec *Z, const TCplx &zScale);Compute X*yScalar - Z*zScale, where X is a Matrix
5Vector MulAndSub(TVec *X, TMtxVec *Y, TMtxVec *Z);Compute X*Y - Z
6Matrix MulAndSub(TMtx *X, TMtxVec *Y, TMtxVec *Z);Compute X*Y - Z, where X is a Matrix
7Vector MulAndSub(TVec *X, TMtxVec *Y, const double xyScale, TMtxVec *Z);Compute X*Y*xyScale - Z
8Matrix MulAndSub(TMtx *X, TMtxVec *Y, const double xyScale, TMtxVec *Z);Compute X*Y*xyScale - Z, where X is a Matrix
9Vector MulAndSub(TVec *X, TMtxVec *Y, TMtxVec *Z, const double zScale);Compute X*Y - Z*zScale
10Matrix MulAndSub(TMtx *X, TMtxVec *Y, TMtxVec *Z, const double zScale);Compute X*Y - Z*zScale, where X is a Matrix
11Vector MulAndSub(TVec *X, TMtxVec *Y, const double Z);Compute X*Y - zScalar
12Matrix MulAndSub(TMtx *X, TMtxVec *Y, const double Z);Compute X*Y - zScalar, where X is a Matrix
13Vector MulAndSub(TVec *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z);Compute X*Y*xyScale - Z
14Matrix MulAndSub(TMtx *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z);Compute X*Y*xyScale - Z, where X is a Matrix
15Vector MulAndSub(TVec *X, TMtxVec *Y, TMtxVec *Z, const TCplx &zScale);Compute X*Y - Z*zScale
16Matrix MulAndSub(TMtx *X, TMtxVec *Y, TMtxVec *Z, const TCplx &zScale);Compute X*Y - Z*zScale, where X is a Matrix
17Vector MulAndSub(TVec *X, TMtxVec *Y, const TCplx &Z);Compute X*Y - zScalar
18Matrix MulAndSub(TMtx *X, TMtxVec *Y, const TCplx &Z);Compute X*Y - zScalar, where X is a Matrix

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

Compute X*yScalar - Z*zScale

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

Computes the result of multiplying X by a scalar yScalar and then subtracting Z multiplied 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 yScalar = 2.0, zScale = 3.0;
    Vector X = { 3, 6, 9, 12 };
    Vector Z = { 1, 1, 1, 1 };
    Vector A1 = (X * yScalar) - (Z * zScale);
    Vector A2 = MulAndSub(X, yScalar, Z, zScale);
    Vector A3;
    A3.MulAndSub(X, yScalar, 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 MulAndSub(TMtx *X, const double Y, TMtxVec *Z, const double zScale);

Compute X*yScalar - Z*zScale, where X is a Matrix

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

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

Compute X*yScalar - Z*zScale

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

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

Compute X*yScalar - Z*zScale, where X is a Matrix

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

Overload 5: Vector MulAndSub(TVec *X, TMtxVec *Y, TMtxVec *Z);

Compute X*Y - Z

#NameTypeDescription
1XTVec *
2YTMtxVec *
3ZTMtxVec *
Remarks:

Computes the element-wise product of X and Y, then subtracts Z, 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()
{
    Vector X = { 3, 6, 9, 12 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 2, 2, 2, 2 };
    Vector A1 = (X * Y) - Z;
    Vector A2 = MulAndSub(X, Y, Z);
    Vector A3;
    A3.MulAndSub(X, Y, Z);
    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 6: Matrix MulAndSub(TMtx *X, TMtxVec *Y, TMtxVec *Z);

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

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3ZTMtxVec *
Remarks:

The operation does only per-element math.

Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

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

Compute X*Y*xyScale - Z

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

Computes the element-wise product of X and Y scaled by xyScale, then subtracts Z, 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 xyScale = 1.5;
    Vector X = { 3, 6, 9, 12 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 2, 2, 2, 2 };
    Vector A1 = (X * Y * xyScale) - Z;
    Vector A2 = MulAndSub(X, Y, xyScale, Z);
    Vector A3;
    A3.MulAndSub(X, Y, xyScale, Z);
    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 MulAndSub(TMtx *X, TMtxVec *Y, const double xyScale, TMtxVec *Z);

Compute X*Y*xyScale - Z, where X is a Matrix

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3xyScaleconst double
4ZTMtxVec *
Remarks:

The operation does only per-element math.

Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

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

Compute X*Y - Z*zScale

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

Computes the element-wise product of X and Y, then subtracts (Z multiplied 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 = { 3, 6, 9, 12 };
    Vector Y = { 1, 2, 3, 4 };
    Vector Z = { 2, 2, 2, 2 };
    Vector A1 = (X * Y) - (Z * zScale);
    Vector A2 = MulAndSub(X, Y, Z, zScale);
    Vector A3;
    A3.MulAndSub(X, Y, 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 10: Matrix MulAndSub(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
Remarks:

The operation does only per-element math.

Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 11: Vector MulAndSub(TVec *X, TMtxVec *Y, const double Z);

Compute X*Y - zScalar

#NameTypeDescription
1XTVec *
2YTMtxVec *
3Zconst double
Remarks:

Computes the element-wise product of X and Y, then subtracts a scalar zScalar, 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 zScalar = 2.0;
    Vector X = { 3, 6, 9, 12 };
    Vector Y = { 1, 2, 3, 4 };
    Vector A1 = (X * Y) - zScalar;
    Vector A2 = MulAndSub(X, Y, zScalar);
    Vector A3;
    A3.MulAndSub(X, Y, zScalar);
    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 12: Matrix MulAndSub(TMtx *X, TMtxVec *Y, const double Z);

Compute X*Y - zScalar, where X is a Matrix

#NameTypeDescription
1XTMtx *
2YTMtxVec *
3Zconst double
Remarks:

The operation does only per-element math.

Declared in Dew::Math::Units::MtxExpr · Dew.Math/Units.MtxExpr.h · Cross-compiler

Overload 13: Vector MulAndSub(TVec *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z);

Compute X*Y*xyScale - Z

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

Overload 14: Matrix MulAndSub(TMtx *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z);

Compute X*Y*xyScale - Z, where X is a Matrix

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

Overload 15: Vector MulAndSub(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 16: Matrix MulAndSub(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 17: Vector MulAndSub(TVec *X, TMtxVec *Y, const TCplx &Z);

Compute X*Y - zScalar

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

Overload 18: Matrix MulAndSub(TMtx *X, TMtxVec *Y, const TCplx &Z);

Compute X*Y - zScalar, where X is a Matrix

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