Overload List
| # | Signature | Description |
|---|---|---|
| 1 | function AddScaledSqr(const X: TMtxVec; const xScale: TCplx; const Y: TMtxVec; const yScale: TCplx): TMtxVec; | self = sqr(X*xScale + Y*yScale) |
| └ indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const xScale: TCplx; const Y: TMtxVec; YIndex: Integer; const yScale: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 2 | function AddScaledSqr(const X: TMtxVec; const Y: TMtxVec; const yScale: TCplx): TMtxVec; | self = sqr(X + Y*yScale) |
| └ indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const yScale: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 3 | function AddScaledSqr(const X: TMtxVec; const Y: TMtxVec; const yScale: Double): TMtxVec; | self = sqr(X + Y*yScale) |
| └ indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const yScale: Double; Index: Integer; Len: Integer): TMtxVec; | ||
| 4 | function AddScaledSqr(const X: TMtxVec; const xScale: Double; const Y: TMtxVec; const yScale: Double): TMtxVec; | self = sqr(X*xScale + Y*yScale) |
| └ indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const xScale: Double; const Y: TMtxVec; YIndex: Integer; const yScale: Double; Index: Integer; Len: Integer): TMtxVec; |
Overload 1: function AddScaledSqr(const X: TMtxVec; const xScale: TCplx; const Y: TMtxVec; const yScale: TCplx): TMtxVec;
Compute sqr(X*xScale + Y*yScale)
Result: stored in self (calling object), returns self for chaining
Indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const xScale: TCplx; const Y: TMtxVec; YIndex: Integer; const yScale: TCplx; Index: Integer; Len: Integer): TMtxVec;
Compute sqr(X*xScale + Y*yScale) on sub arrays
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | xScale | TCplx | |
| 4 | Y | TMtxVec | |
| 5 | YIndex | Integer | Y start index |
| 6 | yScale | TCplx | |
| 7 | Index | Integer | start index |
| 8 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 2: function AddScaledSqr(const X: TMtxVec; const Y: TMtxVec; const yScale: TCplx): TMtxVec;
Compute sqr(X + Y*yScale)
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, A1, A2, A3: Vector;
yScale: Double;
begin
yScale := 1.5;
X := [1,2,3,4];
Y := [2,3,4,5];
A1 := Sqr(X + Y * yScale);
A2 := AddScaledSqr(X, Y, yScale);
A3.AddScaledSqr(X, Y, yScale);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const yScale: TCplx; Index: Integer; Len: Integer): TMtxVec;
Compute sqr(X + Y*yScale) on sub arrays
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | yScale | TCplx | |
| 6 | Index | Integer | start index |
| 7 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 3: function AddScaledSqr(const X: TMtxVec; const Y: TMtxVec; const yScale: Double): TMtxVec;
Compute sqr(X + Y*yScale)
Result: stored in self (calling object), returns self for chaining
By making use of yScale, it is also possible to compute the following (at the same or higher speed):
(X - Y)^2 = X^2 - 2XY +Y^2
uses MtxVec, MtxExpr, Math387;
var
X, Y, A1, A2, A3: Vector;
xScale, yScale: Double;
begin
xScale := 1.5;
yScale := -1.5;
X := [1,2,3,4];
Y := [2,3,4,5];
A1 := Sqr(X * xScale + Y * yScale);
A2 := AddScaledSqr(X, xScale, Y, yScale);
A3.AddScaledSqr(X, xScale, Y, yScale);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Indexed: function AddScaledSqr(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const yScale: Double; Index: Integer; Len: Integer): TMtxVec;
Compute sqr(X + Y*yScale) on sub arrays
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | yScale | Double | |
| 6 | Index | Integer | start index |
| 7 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 4: function AddScaledSqr(const X: TMtxVec; const xScale: Double; const Y: TMtxVec; const yScale: Double): TMtxVec;
Compute sqr(X*xScale + Y*yScale)
Result: stored in self (calling object), returns self for chaining