Overload List
Overload 1: Matrix MulAndAdd(TMtx X, TCplx Y, TCplx Z)
Compute (X*yScalar) + zScalar, where X is a Matrix.
Returns: Matrix
Overload 2: Matrix MulAndAdd(TMtx X, TMtxVec Y, TCplx xyScale, TCplx Z)
Compute (X*Y)*xyScale + zScalar, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx | source TMtx |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | TCplx | scalar |
| 4 | Z | TCplx | scalar |
Returns: Matrix
The operation does only per-element math.
Overload 3: Matrix MulAndAdd(TMtx X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)
Compute (X*Y)*xyScale + Z*zScale, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx | source TMtx |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | TCplx | scalar |
| 4 | Z | TMtxVec | source TVec or TMtx |
| 5 | zScale | TCplx | scalar |
Returns: Matrix
The operation does only per-element math.
Overload 4: Matrix MulAndAdd(TMtx X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)
Compute (X*Y)*xyScale + Z*zScale, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx | source TMtx |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | Double | scalar |
| 4 | Z | TMtxVec | source TVec or TMtx |
| 5 | zScale | Double | scalar |
Returns: Matrix
The operation does only per-element math.
Overload 5: Matrix MulAndAdd(TMtx X, TMtxVec Y, Double xyScale, Double Z)
Compute (X*Y)*xyScale + zScalar, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx | source TMtx |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | Double | scalar |
| 4 | Z | Double | scalar |
Returns: Matrix
The operation does only per-element math.
Overload 6: Matrix MulAndAdd(TMtx X, Double Y, Double Z)
Compute (X*yScalar) + zScalar, where X is a Matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtx | source TMtx |
| 2 | Y | Double | scalar |
| 3 | Z | Double | scalar |
Returns: Matrix
Overload 7: Vector MulAndAdd(TVec X, TCplx Y, TCplx Z)
Compute (X*yScalar) + zScalar, where X is a Matrix.
Returns: Vector
Overload 8: Vector MulAndAdd(TVec X, TMtxVec Y, TCplx xyScale, TCplx Z)
Compute (X*Y)*xyScale + zScalar
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec | source TVec |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | TCplx | scalar |
| 4 | Z | TCplx | scalar |
Returns: Vector
The operation does only per-element math.
Overload 9: Vector MulAndAdd(TVec X, TMtxVec Y, TCplx xyScale, TMtxVec Z, TCplx zScale)
Compute (X*Y)*xyScale + Z*zScale.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec | source TVec |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | TCplx | scalar |
| 4 | Z | TMtxVec | source TVec or TMtx |
| 5 | zScale | TCplx | scalar |
Returns: Vector
The operation does only per-element math.
Overload 10: Vector MulAndAdd(TVec X, TMtxVec Y, Double xyScale, TMtxVec Z, Double zScale)
Compute (X*Y)*xyScale + Z*zScale
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec | source TVec |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | Double | scalar |
| 4 | Z | TMtxVec | source TVec or TMtx |
| 5 | zScale | Double | scalar |
Returns: Vector
Computes the product of X and Y scaled by xyScale, and then adds Z scaled by zScale, without creating temporary objects.
using Dew.Math;
using Dew.Math.Units;
namespace Dew.Examples
{
void Example()
{
double xyScale = 1.5, zScale = 2.0;
Vector X = (Vector) new double[] { 2, 4, 6, 8 };
Vector Y = (Vector) new double[] { 1, 1, 1, 1 };
Vector Z = (Vector) new double[] { 3, 4, 5, 6 };
Vector A1 = (X * Y * xyScale) + (Z * zScale);
Vector A2 = MulAndAdd(X, xyScale, Y, xyScale, Z, zScale);
Vector A3 = new Vector();
A3.MulAndAdd(X, xyScale, Y, xyScale, Z, zScale);
if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
}
}
Overload 11: Vector MulAndAdd(TVec X, TMtxVec Y, Double xyScale, Double Z)
Compute (X*Y)*xyScale + zScalar
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec | source TVec |
| 2 | Y | TMtxVec | source TVec or TMtx |
| 3 | xyScale | Double | scalar |
| 4 | Z | Double | scalar |
Returns: Vector
Computes the product of X and Y scaled by xyScale, then adds a scalar zScalar, without creating temporary objects.
using Dew.Math;
using Dew.Math.Units;
namespace Dew.Examples
{
void Example()
{
double xyScale = 1.5, zScalar = 2.0;
Vector X = (Vector) new double[] { 2, 4, 6, 8 };
Vector Y = (Vector) new double[] { 1, 1, 1, 1 };
Vector A1 = (X * Y * xyScale) + zScalar;
Vector A2 = MulAndAdd(X, xyScale, Y, xyScale, zScalar);
Vector A3 = new Vector();
A3.MulAndAdd(X, xyScale, Y, xyScale, zScalar);
if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
}
}
Overload 12: Vector MulAndAdd(TVec X, Double Y, Double Z)
Compute (X*yScalar) + zScalar
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TVec | source TVec |
| 2 | Y | Double | scalar |
| 3 | Z | Double | scalar |
Returns: Vector
Computes the result of multiplying X by a scalar yScalar and then adding a scalar zScalar, without creating temporary objects.
using Dew.Math;
using Dew.Math.Units;
namespace Dew.Examples
{
void Example()
{
double yScalar = 2.0, zScalar = 3.0;
Vector X = (Vector) new double[] { 2, 4, 6, 8 };
Vector A1 = (X * yScalar) + zScalar;
Vector A2 = MulAndAdd(X, yScalar, zScalar);
Vector A3 = new Vector();
A3.MulAndAdd(X, yScalar, zScalar);
if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
}
}