MtxExpr.SqrAddScaled Method

Overload List

#SignatureDescription
1Matrix SqrAddScaled(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale)Result = sqr(X)*xScale + sqr(Y)*yScale, where X is a Matrix
2Matrix SqrAddScaled(TMtx X, TMtxVec Y, TCplx yScale)Result = sqr(X) + sqr(Y)*yScale, where X is a Matrix
3Matrix SqrAddScaled(TMtx X, TMtxVec Y, Double yScale)Result = sqr(X) + sqr(Y)*yScale, when X is a Matrix
4Matrix SqrAddScaled(TMtx X, Double xScale, TMtxVec Y, Double yScale)Result = sqr(X)*xScale + sqr(Y)*yScale, when X is a matrix
5Vector SqrAddScaled(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale)Result = sqr(X)*xScale + sqr(Y)*yScale
6Vector SqrAddScaled(TVec X, TMtxVec Y, TCplx yScale)Result = sqr(X) + sqr(Y)*yScale
7Vector SqrAddScaled(TVec X, TMtxVec Y, Double yScale)Result = sqr(X) + sqr(Y)*yScale
8Vector SqrAddScaled(TVec X, Double xScale, TMtxVec Y, Double yScale)Result = sqr(X)*xScale + sqr(Y)*yScale

Overload 1: Matrix SqrAddScaled(TMtx X, TCplx xScale, TMtxVec Y, TCplx yScale)

Compute sqr(X)*xScale + sqr(Y)*yScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar

Returns: Matrix

Overload 2: Matrix SqrAddScaled(TMtx X, TMtxVec Y, TCplx yScale)

Compute sqr(X) + sqr(Y)*yScale, where X is a Matrix

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3yScaleTCplxscalar

Returns: Matrix

Overload 3: Matrix SqrAddScaled(TMtx X, TMtxVec Y, Double yScale)

Compute sqr(X) + sqr(Y)*yScale, when X is a Matrix.

#NameTypeDescription
1XTMtxsource TMtx
2YTMtxVecsource TVec or TMtx
3yScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 4: Matrix SqrAddScaled(TMtx X, Double xScale, TMtxVec Y, Double yScale)

Compute sqr(X)*xScale + sqr(Y)*yScale, when X is a matrix

#NameTypeDescription
1XTMtxsource TMtx
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar

Returns: Matrix

Remarks:

The operation does only per-element math.

Overload 5: Vector SqrAddScaled(TVec X, TCplx xScale, TMtxVec Y, TCplx yScale)

Compute sqr(X)*xScale + sqr(Y)*yScale

#NameTypeDescription
1XTVecsource TVec
2xScaleTCplxscalar
3YTMtxVecsource TVec or TMtx
4yScaleTCplxscalar

Returns: Vector

Overload 6: Vector SqrAddScaled(TVec X, TMtxVec Y, TCplx yScale)

Compute sqr(X) + sqr(Y)*yScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3yScaleTCplxscalar

Returns: Vector

Overload 7: Vector SqrAddScaled(TVec X, TMtxVec Y, Double yScale)

Compute sqr(X) + sqr(Y)*yScale

#NameTypeDescription
1XTVecsource TVec
2YTMtxVecsource TVec or TMtx
3yScaleDoublescalar

Returns: Vector

Remarks:

Computes the sum of the square of X and the scaled square of Y without temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;
namespace Dew.Examples
{
    void Example()
    {
        double yScale = 2.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 3, 4, 5 };
        Vector A1 = MtxExpr.Sqr(X) + MtxExpr.Sqr(Y) * yScale;
        Vector A2 = SqrAddScaled(X, Y, yScale);
        Vector A3 = new Vector();
        A3.SqrAddScaled(X, Y, yScale);

        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}

Overload 8: Vector SqrAddScaled(TVec X, Double xScale, TMtxVec Y, Double yScale)

Compute sqr(X)*xScale + sqr(Y)*yScale

#NameTypeDescription
1XTVecsource TVec
2xScaleDoublescalar
3YTMtxVecsource TVec or TMtx
4yScaleDoublescalar

Returns: Vector

Remarks:

Computes the weighted sum of the squares of X and Y without temporary objects.

Examples
using Dew.Math;
using Dew.Math.Units;
namespace Dew.Examples
{
    void Example()
    {
        double xScale = 2.0, yScale = 3.0;
        Vector X = (Vector) new double[] { 1, 2, 3, 4 };
        Vector Y = (Vector) new double[] { 2, 3, 4, 5 };
        Vector A1 = MtxExpr.Sqr(X) * xScale + MtxExpr.Sqr(Y) * yScale;
        Vector A2 = SqrAddScaled(X, xScale, Y, yScale);
        Vector A3 = new Vector();
        A3.SqrAddScaled(X, xScale, Y, yScale);

        if (!A2.IsEqual(A1)) Math387.ERaise("Problem");
        if (!A3.IsEqual(A1)) Math387.ERaise("Problem");
    }
}