Vector.Mul Method

Overload List

#SignatureDescription
1function Mul(Value: TCplx): TMtxVec;Multiply all calling object elements with complex Value in-place.
└ indexed: function Mul(Value: TCplx; Index: Integer; Len: Integer): TMtxVec;
2function Mul(const Vec: TMtxVec): TMtxVec;Vector multiplication.
└ indexed: function Mul(const Vec: TMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
3function Mul(const Vec: TMtxVec; Value: TCplx): TMtxVec;Multiply each element of Vec with complex Value.
└ indexed: function Mul(const Vec: TMtxVec; Value: TCplx; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
4function Mul(const Vec1: TMtxVec; const Vec2: TMtxVec): TMtxVec;Multiply all Vec1 elements with corresponding Vec2 elements.
└ indexed: function Mul(const Vec1: TMtxVec; const Vec2: TMtxVec; Vec1Index: Integer; Vec2Index: Integer; Index: Integer; Len: Integer): TMtxVec;
5function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: TCplx): TMtxVec;self = X*Y*zScalar
└ indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TCplx; Index: Integer; Len: Integer): TMtxVec;
6function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec): TMtxVec;self = X*Y*Z
└ indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
7function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: Double): TMtxVec;self = X*Y*zScalar
└ indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: Double; Index: Integer; Len: Integer): TMtxVec;
8function Mul(const Vec: TMtxVec; Value: Double): TMtxVec;Multiply each element of Vec with Value.
└ indexed: function Mul(const Vec: TMtxVec; Value: Double; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
9function Mul(Value: Double): TMtxVec;Multiply object elements with Value.
└ indexed: function Mul(Value: Double; Index: Integer; Len: Integer): TMtxVec;

Overload 1: function Mul(Value: TCplx): TMtxVec;

Multiply all calling object elements with complex Value in-place.

#NameTypeDescription
1ValueTCplxscalar

Result: stored in self (calling object), returns self for chaining

Indexed: function Mul(Value: TCplx; Index: Integer; Len: Integer): TMtxVec;

Multipy calling object elements [Index]..[Index+Len-1] with complex Value in-place.

#NameTypeDescription
1ValueTCplxscalar
2IndexIntegerstart index
3LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if array borders are overrun or underrun.

Overload 2: function Mul(const Vec: TMtxVec): TMtxVec;

Vector multiplication.

#NameTypeDescription
1VecTMtxVec

Result: stored in self (calling object), returns self for chaining

Remarks:

Multiply each of Vec elements with corresponding elements in the calling object. Size and Vector.Complex property of the calling object are set automatically. The result is stored in the calling object.

Examples
var
    a, b, expected: Vector;
begin
    a := [1.0, 2.0, 3.0, 4.0];
    b := [5.0, 6.0, 7.0, 8.0];
    a.Mul(b);
    expected := [5.0, 12.0, 21.0, 32.0];
    if not a.IsEqual(expected, 1e-10, TCompare.cmpAbsolute) then
        raise Exception.Create('Vector.Mul: mismatch');
end;
See Also: Vector.Divide

Indexed: function Mul(const Vec: TMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Multiply Vec elements [VecIndex]..[VecIndex+Len-1] with calling object elements [Index]..[Index+Len-1] in-place.

#NameTypeDescription
1VecTMtxVec
2VecIndexInteger
3IndexIntegerstart index
4LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if Vec and calling object Vector.Complex property do not match or if array borders are overrun/underrun.

Overload 3: function Mul(const Vec: TMtxVec; Value: TCplx): TMtxVec;

Multiply each element of Vec with complex Value.

#NameTypeDescription
1VecTMtxVec
2ValueTCplxscalar

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the result in the calling object. Size of the calling object is set automatically. Vector.Complex property of the calling object is set to True.

Indexed: function Mul(const Vec: TMtxVec; Value: TCplx; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Multiply Vec elements [VecIndex]..[VecIndex+Len-1] with complex Value.

#NameTypeDescription
1VecTMtxVec
2ValueTCplxscalar
3VecIndexInteger
4IndexIntegerstart index
5LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the result in calling object elements [Index]..[Index+Len-1]. Size of the calling object is not changed. An exception is raised if array borders are overrun or underrun. Vector.Complex propertiy of the calling object is set to True.

Overload 4: function Mul(const Vec1: TMtxVec; const Vec2: TMtxVec): TMtxVec;

Multiply all Vec1 elements with corresponding Vec2 elements.

#NameTypeDescription
1Vec1TMtxVec
2Vec2TMtxVec

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the results in calling object. Size and Vector.Complex property of calling object are adjusted automatically to match those of Vec1 and Vec2. An exception is raised if Vec1 and Vec2 size and Vector.Complex property do not match.

Examples
var
    a, x, y, expected: Vector;
begin
    x := [1.0, 2.0, 3.0, 4.0];
    y := [5.0, 6.0, 7.0, 8.0];
    a.Mul(x, y);
    expected := [5.0, 12.0, 21.0, 32.0];
    if not a.IsEqual(expected, 1e-10, TCompare.cmpAbsolute) then
        raise Exception.Create('Vector.Mul: mismatch');
end;

Indexed: function Mul(const Vec1: TMtxVec; const Vec2: TMtxVec; Vec1Index: Integer; Vec2Index: Integer; Index: Integer; Len: Integer): TMtxVec;

Multiply Vec1 elements [Vec1Index]..[Vec1Index+Len-1] with Vec2 object elements [Vec2Index]..[Vec2Index+Len-1] and store the results in calling object elements [Index]..[Index+Len-1].

#NameTypeDescription
1Vec1TMtxVec
2Vec2TMtxVec
3Vec1IndexInteger
4Vec2IndexInteger
5IndexIntegerstart index
6LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Size and Vector.Complex properties of the calling object must be set explicitly. An exception is raised if Vector.ConditionCheck is True and array borders are overrun or underrun.

Overload 5: function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: TCplx): TMtxVec;

Compute X*Y*zScalar

#NameTypeDescription
1XTMtxVec
2YTMtxVec
3ZTCplx

Result: stored in self (calling object), returns self for chaining

Remarks:

The following expression would also run at the same or higher speed, when passing X also for the Z parameter:

X^2*zScalar

Indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TCplx; Index: Integer; Len: Integer): TMtxVec;

Compute X*Y*zScalar on sub array

#NameTypeDescription
1XTMtxVec
2XIndexIntegerX start index
3YTMtxVec
4YIndexIntegerY start index
5ZTCplx
6IndexIntegerstart index
7LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Overload 6: function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec): TMtxVec;

Compute X*Y*Z

#NameTypeDescription
1XTMtxVec
2YTMtxVec
3ZTMtxVec

Result: stored in self (calling object), returns self for chaining

Remarks:

The following expression would also run at the same or higher speed, when passing X also for the Z parameter:

X^2*Y

Indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Compute X*Y*Z on sub array

#NameTypeDescription
1XTMtxVec
2XIndexIntegerX start index
3YTMtxVec
4YIndexIntegerY start index
5ZTMtxVec
6zIndexInteger
7IndexIntegerstart index
8LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Overload 7: function Mul(const X: TMtxVec; const Y: TMtxVec; const Z: Double): TMtxVec;

Compute X*Y*zScalar

#NameTypeDescription
1XTMtxVec
2YTMtxVec
3ZDouble

Result: stored in self (calling object), returns self for chaining

Remarks:

The following expression would also run at the same or higher speed, when passing X also for the Z parameter:

X^2*zScalar

Indexed: function Mul(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: Double; Index: Integer; Len: Integer): TMtxVec;

Compute X*Y*zScalar on sub array

#NameTypeDescription
1XTMtxVec
2XIndexIntegerX start index
3YTMtxVec
4YIndexIntegerY start index
5ZDouble
6IndexIntegerstart index
7LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Overload 8: function Mul(const Vec: TMtxVec; Value: Double): TMtxVec;

Multiply each element of Vec with Value.

#NameTypeDescription
1VecTMtxVec
2ValueDoublescalar

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the result in the calling object. Size and Vector.Complex properties of the calling object are adjusted automatically.

Indexed: function Mul(const Vec: TMtxVec; Value: Double; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Multiply Vec elements [VecIndex]..[VecIndex+Len-1] with Value.

#NameTypeDescription
1VecTMtxVec
2ValueDoublescalar
3VecIndexInteger
4IndexIntegerstart index
5LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the result in calling object elements [Index]..[Index+Len-1]. Size of the calling object is not changed. An exception is raised if array borders are overrun or underrun. Vector.Complex propertiy of the calling object is set implicitly.

Overload 9: function Mul(Value: Double): TMtxVec;

Multiply object elements with Value.

#NameTypeDescription
1ValueDoublescalar

Result: stored in self (calling object), returns self for chaining

Remarks:

Multiply all calling object elements with Value in-place.

Examples
var v: TVec;
begin
    v:= TVec.Create;
    try
        v.SetIt(false,[2,3,5]);  // v = [2,3,5]
        v.Mul(3); // v = [6,9,15]
    finally
        v.Free;
    end;
end;
See Also: Vector.Add

Indexed: function Mul(Value: Double; Index: Integer; Len: Integer): TMtxVec;

Multipy calling object elements [Index]..[Index+Len-1] with Value in-place.

#NameTypeDescription
1ValueDoublescalar
2IndexIntegerstart index
3LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if array borders are overrun or underrun.