Overload List
| # | Signature | Description |
|---|---|---|
| 1 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TCplx): TMtxVec; | self = X/Y - zScalar |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 2 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TCplx): TMtxVec; | self = (X / Y) * xyScale - zScalar |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 3 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TMtxVec): TMtxVec; | self = X/Y*xyScale - Z |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec; | ||
| 4 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TMtxVec; const zScale: TCplx): TMtxVec; | self = (X / Y) * xyScale - Z*zScale |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TMtxVec; zIndex: Integer; const zScale: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 5 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec): TMtxVec; | self = X/Y - Z |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec; | ||
| 6 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec; const zScale: TCplx): TMtxVec; | self = X/Y - Z*zScale |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; const zScale: TCplx; Index: Integer; Len: Integer): TMtxVec; | ||
| 7 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec; const zScale: Double): TMtxVec; | self = X/Y - Z*zScale |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; const zScale: Double; Index: Integer; Len: Integer): TMtxVec; | ||
| 8 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: Double): TMtxVec; | self = X/Y - zScalar |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: Double; Index: Integer; Len: Integer): TMtxVec; | ||
| 9 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: TMtxVec): TMtxVec; | self = X/Y*xyScale - Z |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: Double; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec; | ||
| 10 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: TMtxVec; const zScale: Double): TMtxVec; | self = (X / Y) * xyScale - Z*zScale |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: Double; const Z: TMtxVec; zIndex: Integer; const zScale: Double; Index: Integer; Len: Integer): TMtxVec; | ||
| 11 | function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: Double): TMtxVec; | self = (X / Y) * xyScale - zScalar |
| └ indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: Double; const Z: Double; Index: Integer; Len: Integer): TMtxVec; |
Overload 1: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TCplx): TMtxVec;
Compute X/Y - zScalar
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(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
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | Z | TCplx | |
| 6 | Index | Integer | start index |
| 7 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 2: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TCplx): TMtxVec;
Compute (X / Y) * xyScale - zScalar
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TCplx; Index: Integer; Len: Integer): TMtxVec;
Compute (X / Y) * xyScale - zScalar on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | xyScale | TCplx | |
| 6 | Z | TCplx | |
| 7 | Index | Integer | start index |
| 8 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 3: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TMtxVec): TMtxVec;
Compute X/Y*xyScale - Z
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, Z, A1, A2, A3: Vector;
xyScale: Double;
begin
xyScale := 1.5;
X := [8,10,12,14];
Y := [2,2,2,2];
Z := [1,1,1,1];
A1 := (X / Y) * xyScale - Z;
A2 := DivAndSub(X, Y, xyScale, Z);
A3.DivAndSub(X, Y, xyScale, Z);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
Compute X/Y*xyScale - Z on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | xyScale | TCplx | |
| 6 | Z | TMtxVec | |
| 7 | zIndex | Integer | |
| 8 | Index | Integer | start index |
| 9 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, A1, A2, A3: Vector;
zScalar: Double;
begin
zScalar := 2.0;
X := [6, 8, 10, 12];
Y := [2, 2, 2, 2];
A1 := (X / Y) - zScalar;
A2 := DivAndSub(X, Y, zScalar);
A3.DivAndSub(X, Y, zScalar);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Overload 4: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: TCplx; const Z: TMtxVec; const zScale: TCplx): TMtxVec;
Compute (X / Y) * xyScale - Z*zScale
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: TCplx; const Z: TMtxVec; zIndex: Integer; const zScale: TCplx; Index: Integer; Len: Integer): TMtxVec;
Compute (X / Y) * xyScale - Z on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | xyScale | TCplx | |
| 6 | Z | TMtxVec | |
| 7 | zIndex | Integer | |
| 8 | zScale | TCplx | |
| 9 | Index | Integer | start index |
| 10 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 5: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec): TMtxVec;
Compute X/Y - Z
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, Z, A1, A2, A3: Vector;
xyScale, zScale: Double;
begin
xyScale := 1.5;
zScale := 2.0;
X := [8,10,12,14];
Y := [2,2,2,2];
Z := [1,1,1,1];
A1 := (X / Y) * xyScale - Z * zScale;
A2 := DivAndSub(X, xyScale, Y, xyScale, Z, zScale);
A3.DivAndSub(X, xyScale, Y, xyScale, Z, zScale);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Indexed: function DivAndSub(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
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | Z | TMtxVec | |
| 6 | zIndex | Integer | |
| 7 | Index | Integer | start index |
| 8 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, A1, A2, A3: Vector;
xyScale, zScalar: Double;
begin
xyScale := 1.5;
zScalar := 2.0;
X := [8,10,12,14];
Y := [2,2,2,2];
A1 := (X / Y) * xyScale - zScalar;
A2 := DivAndSub(X, xyScale, Y, xyScale, zScalar);
A3.DivAndSub(X, xyScale, Y, xyScale, zScalar);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Overload 6: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec; const zScale: TCplx): TMtxVec;
Compute X/Y - Z*zScale
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; const zScale: TCplx; Index: Integer; Len: Integer): TMtxVec;
Compute X/Y - Z*zScale on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | Z | TMtxVec | |
| 6 | zIndex | Integer | |
| 7 | zScale | TCplx | |
| 8 | Index | Integer | start index |
| 9 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 7: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: TMtxVec; const zScale: Double): TMtxVec;
Compute X/Y - Z*zScale
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const Z: TMtxVec; zIndex: Integer; const zScale: Double; Index: Integer; Len: Integer): TMtxVec;
Compute X/Y - Z*zScale on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | Z | TMtxVec | |
| 6 | zIndex | Integer | |
| 7 | zScale | Double | |
| 8 | Index | Integer | start index |
| 9 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 8: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const Z: Double): TMtxVec;
Compute X/Y - zScalar
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(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
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | Z | Double | |
| 6 | Index | Integer | start index |
| 7 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 9: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: TMtxVec): TMtxVec;
Compute X/Y*xyScale - Z
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, Z, A1, A2, A3: Vector;
begin
X := [6,8,10,12];
Y := [2,2,2,2];
Z := [1,1,1,1];
A1 := (X / Y) - Z; // using operators
A2 := DivAndSub(X, Y, Z); // using the function
A3.DivAndSub(X, Y, Z); // in-place operation
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: Double; const Z: TMtxVec; zIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
Compute X/Y*xyScale - Z on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | xyScale | Double | |
| 6 | Z | TMtxVec | |
| 7 | zIndex | Integer | |
| 8 | Index | Integer | start index |
| 9 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
uses MtxVec, MtxExpr, Math387;
var
X, Y, Z, A1, A2, A3: Vector;
zScale: Double;
begin
zScale := 2.0;
X := [6, 8, 10, 12];
Y := [2, 2, 2, 2];
Z := [1, 1, 1, 1];
A1 := (X / Y) - (Z * zScale);
A2 := DivAndSub(X, Y, Z, zScale);
A3.DivAndSub(X, Y, Z, zScale);
if not A2.IsEqual(A1) then ERaise('Problem');
if not A3.IsEqual(A1) then ERaise('Problem');
end;
Overload 10: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: TMtxVec; const zScale: Double): TMtxVec;
Compute (X / Y) * xyScale - Z*zScale
Result: stored in self (calling object), returns self for chaining
Indexed: function DivAndSub(const X: TMtxVec; XIndex: Integer; const Y: TMtxVec; YIndex: Integer; const xyScale: Double; const Z: TMtxVec; zIndex: Integer; const zScale: Double; Index: Integer; Len: Integer): TMtxVec;
Compute (X / Y) * xyScale - Z on sub array
| # | Name | Type | Description |
|---|---|---|---|
| 1 | X | TMtxVec | |
| 2 | XIndex | Integer | X start index |
| 3 | Y | TMtxVec | |
| 4 | YIndex | Integer | Y start index |
| 5 | xyScale | Double | |
| 6 | Z | TMtxVec | |
| 7 | zIndex | Integer | |
| 8 | zScale | Double | |
| 9 | Index | Integer | start index |
| 10 | Len | Integer | element count |
Result: stored in self (calling object), returns self for chaining
Overload 11: function DivAndSub(const X: TMtxVec; const Y: TMtxVec; const xyScale: Double; const Z: Double): TMtxVec;
Compute (X / Y) * xyScale - zScalar
Result: stored in self (calling object), returns self for chaining