Overload List
Overload 1: Vector MulAndAdd(TVec *X, TMtxVec *Y, const double xyScale, TMtxVec *Z, const double zScale);
Compute (X*Y)*xyScale + Z*zScale
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec * | |
| 2 | Y | TMtxVec * | |
| 3 | xyScale | const double | |
| 4 | Z | TMtxVec * | |
| 5 | zScale | const double |
Computes the product of X and Y scaled by xyScale, and then adds Z scaled by zScale, without creating temporary objects.
#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, zScale = 2.0;
Vector X = {2, 4, 6, 8};
Vector Y = {1, 1, 1, 1};
Vector Z = {3, 4, 5, 6};
Vector A1 = (X * Y * xyScale) + (Z * zScale);
Vector A2 = MulAndAdd(X, Y, xyScale, Z, zScale);
Vector A3;
A3.MulAndAdd(X, Y, xyScale, Z, zScale);
if (!A2.IsEqual(A1)) ERaise("Problem");
if (!A3.IsEqual(A1)) ERaise("Problem");
}
Overload 2: Matrix MulAndAdd(TMtx *X, TMtxVec *Y, const double xyScale, TMtxVec *Z, const double zScale);
Compute (X*Y)*xyScale + Z*zScale, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx * | |
| 2 | Y | TMtxVec * | |
| 3 | xyScale | const double | |
| 4 | Z | TMtxVec * | |
| 5 | zScale | const double |
The operation does only per-element math.
Overload 3: Vector MulAndAdd(TVec *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z, const TCplx &zScale);
Compute (X*Y)*xyScale + Z*zScale.
The operation does only per-element math.
Overload 4: Matrix MulAndAdd(TMtx *X, TMtxVec *Y, const TCplx &xyScale, TMtxVec *Z, const TCplx &zScale);
Compute (X*Y)*xyScale + Z*zScale, where X is a Matrix.
The operation does only per-element math.
Overload 5: Vector MulAndAdd(TVec *X, TMtxVec *Y, const double xyScale, const double Z);
Compute (X*Y)*xyScale + zScalar
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec * | |
| 2 | Y | TMtxVec * | |
| 3 | xyScale | const double | |
| 4 | Z | const double |
Computes the product of X and Y scaled by xyScale, then adds a scalar zScalar, without creating temporary objects.
#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, zScalar = 2.0;
Vector X = {2, 4, 6, 8};
Vector Y = {1, 1, 1, 1};
Vector A1 = (X * Y * xyScale) + zScalar;
Vector A2 = MulAndAdd(X, Y, xyScale, zScalar);
Vector A3;
A3.MulAndAdd(X, Y, xyScale, zScalar);
if (!A2.IsEqual(A1)) ERaise("Problem");
if (!A3.IsEqual(A1)) ERaise("Problem");
}
Overload 6: Matrix MulAndAdd(TMtx *X, TMtxVec *Y, const double xyScale, const double Z);
Compute (X*Y)*xyScale + zScalar, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx * | |
| 2 | Y | TMtxVec * | |
| 3 | xyScale | const double | |
| 4 | Z | const double |
The operation does only per-element math.
Overload 7: Vector MulAndAdd(TVec *X, TMtxVec *Y, const TCplx &xyScale, const TCplx &Z);
Compute (X*Y)*xyScale + zScalar
The operation does only per-element math.
Overload 8: Matrix MulAndAdd(TMtx *X, TMtxVec *Y, const TCplx &xyScale, const TCplx &Z);
Compute (X*Y)*xyScale + zScalar, where X is a Matrix.
The operation does only per-element math.
Overload 9: Vector MulAndAdd(TVec *X, const double Y, const double Z);
Compute (X*yScalar) + zScalar
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec * | |
| 2 | Y | const double | |
| 3 | Z | const double |
Computes the result of multiplying X by a scalar yScalar and then adding a scalar zScalar, without creating temporary objects.
#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, zScalar = 3.0;
Vector X = { 2, 4, 6, 8 };
Vector A1 = (X * yScalar) + zScalar;
Vector A2 = MulAndAdd(X, yScalar, zScalar);
Vector A3;
A3.MulAndAdd(X, yScalar, zScalar);
if (!A2.IsEqual(A1)) ERaise("Problem");
if (!A3.IsEqual(A1)) ERaise("Problem");
}
Overload 10: Matrix MulAndAdd(TMtx *X, const double Y, const double Z);
Compute (X*yScalar) + zScalar, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx * | |
| 2 | Y | const double | |
| 3 | Z | const double |
Overload 11: Vector MulAndAdd(TVec *X, const TCplx &Y, const TCplx &Z);
Compute (X*yScalar) + zScalar, where X is a Matrix.