@pawells/math-extended 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +15 -21
  2. package/build/clamp.d.ts +5 -5
  3. package/build/clamp.js +5 -5
  4. package/build/core.d.ts +23 -0
  5. package/build/core.d.ts.map +1 -0
  6. package/build/core.js +25 -0
  7. package/build/core.js.map +1 -0
  8. package/build/index.d.ts +1 -4
  9. package/build/index.d.ts.map +1 -1
  10. package/build/index.js +1 -6
  11. package/build/index.js.map +1 -1
  12. package/build/interpolation.d.ts +158 -171
  13. package/build/interpolation.d.ts.map +1 -1
  14. package/build/interpolation.js +162 -181
  15. package/build/interpolation.js.map +1 -1
  16. package/build/matrices/arithmetic.d.ts +132 -132
  17. package/build/matrices/arithmetic.d.ts.map +1 -1
  18. package/build/matrices/arithmetic.js +194 -226
  19. package/build/matrices/arithmetic.js.map +1 -1
  20. package/build/matrices/asserts.d.ts +30 -408
  21. package/build/matrices/asserts.d.ts.map +1 -1
  22. package/build/matrices/asserts.js +98 -542
  23. package/build/matrices/asserts.js.map +1 -1
  24. package/build/matrices/core.d.ts +117 -46
  25. package/build/matrices/core.d.ts.map +1 -1
  26. package/build/matrices/core.js +127 -103
  27. package/build/matrices/core.js.map +1 -1
  28. package/build/matrices/decompositions.d.ts +95 -96
  29. package/build/matrices/decompositions.d.ts.map +1 -1
  30. package/build/matrices/decompositions.js +119 -160
  31. package/build/matrices/decompositions.js.map +1 -1
  32. package/build/matrices/index.d.ts +0 -1
  33. package/build/matrices/index.d.ts.map +1 -1
  34. package/build/matrices/index.js +0 -3
  35. package/build/matrices/index.js.map +1 -1
  36. package/build/matrices/linear-algebra.d.ts +45 -8
  37. package/build/matrices/linear-algebra.d.ts.map +1 -1
  38. package/build/matrices/linear-algebra.js +76 -32
  39. package/build/matrices/linear-algebra.js.map +1 -1
  40. package/build/matrices/normalization.d.ts +29 -8
  41. package/build/matrices/normalization.d.ts.map +1 -1
  42. package/build/matrices/normalization.js +32 -23
  43. package/build/matrices/normalization.js.map +1 -1
  44. package/build/matrices/transformations.d.ts +116 -148
  45. package/build/matrices/transformations.d.ts.map +1 -1
  46. package/build/matrices/transformations.js +69 -91
  47. package/build/matrices/transformations.js.map +1 -1
  48. package/build/matrices/types.d.ts +32 -60
  49. package/build/matrices/types.d.ts.map +1 -1
  50. package/build/matrices/types.js +63 -1
  51. package/build/matrices/types.js.map +1 -1
  52. package/build/quaternions/asserts.d.ts +29 -38
  53. package/build/quaternions/asserts.d.ts.map +1 -1
  54. package/build/quaternions/asserts.js +61 -77
  55. package/build/quaternions/asserts.js.map +1 -1
  56. package/build/quaternions/conversions.d.ts +26 -26
  57. package/build/quaternions/conversions.d.ts.map +1 -1
  58. package/build/quaternions/conversions.js +24 -24
  59. package/build/quaternions/core.d.ts +70 -69
  60. package/build/quaternions/core.d.ts.map +1 -1
  61. package/build/quaternions/core.js +71 -71
  62. package/build/quaternions/core.js.map +1 -1
  63. package/build/quaternions/index.d.ts +0 -1
  64. package/build/quaternions/index.d.ts.map +1 -1
  65. package/build/quaternions/index.js +0 -2
  66. package/build/quaternions/index.js.map +1 -1
  67. package/build/quaternions/interpolation.d.ts +16 -16
  68. package/build/quaternions/interpolation.d.ts.map +1 -1
  69. package/build/quaternions/interpolation.js +21 -21
  70. package/build/quaternions/interpolation.js.map +1 -1
  71. package/build/quaternions/predefined.d.ts +10 -10
  72. package/build/quaternions/predefined.d.ts.map +1 -1
  73. package/build/quaternions/predefined.js +9 -9
  74. package/build/quaternions/types.d.ts +23 -12
  75. package/build/quaternions/types.d.ts.map +1 -1
  76. package/build/quaternions/types.js +51 -1
  77. package/build/quaternions/types.js.map +1 -1
  78. package/build/random.d.ts +66 -20
  79. package/build/random.d.ts.map +1 -1
  80. package/build/random.js +73 -20
  81. package/build/random.js.map +1 -1
  82. package/build/vectors/asserts.d.ts +50 -220
  83. package/build/vectors/asserts.d.ts.map +1 -1
  84. package/build/vectors/asserts.js +141 -327
  85. package/build/vectors/asserts.js.map +1 -1
  86. package/build/vectors/core.d.ts +182 -229
  87. package/build/vectors/core.d.ts.map +1 -1
  88. package/build/vectors/core.js +234 -288
  89. package/build/vectors/core.js.map +1 -1
  90. package/build/vectors/index.d.ts +0 -1
  91. package/build/vectors/index.d.ts.map +1 -1
  92. package/build/vectors/index.js +0 -2
  93. package/build/vectors/index.js.map +1 -1
  94. package/build/vectors/interpolation.d.ts +40 -40
  95. package/build/vectors/interpolation.d.ts.map +1 -1
  96. package/build/vectors/interpolation.js +75 -86
  97. package/build/vectors/interpolation.js.map +1 -1
  98. package/build/vectors/predefined.d.ts +31 -7
  99. package/build/vectors/predefined.d.ts.map +1 -1
  100. package/build/vectors/predefined.js +30 -6
  101. package/build/vectors/predefined.js.map +1 -1
  102. package/build/vectors/types.d.ts +26 -4
  103. package/build/vectors/types.d.ts.map +1 -1
  104. package/build/vectors/types.js +50 -1
  105. package/build/vectors/types.js.map +1 -1
  106. package/package.json +3 -2
  107. package/build/matrices/_exports.d.ts +0 -13
  108. package/build/matrices/_exports.d.ts.map +0 -1
  109. package/build/matrices/_exports.js +0 -13
  110. package/build/matrices/_exports.js.map +0 -1
  111. package/build/quaternions/_exports.d.ts +0 -11
  112. package/build/quaternions/_exports.d.ts.map +0 -1
  113. package/build/quaternions/_exports.js +0 -11
  114. package/build/quaternions/_exports.js.map +0 -1
  115. package/build/vectors/_exports.d.ts +0 -10
  116. package/build/vectors/_exports.d.ts.map +0 -1
  117. package/build/vectors/_exports.js +0 -10
  118. package/build/vectors/_exports.js.map +0 -1
@@ -1,14 +1,23 @@
1
1
  import { AssertNumber } from '@pawells/typescript-common';
2
- import { AssertMatrix, AssertMatrixRow, AssertMatrixValue } from './asserts.js';
2
+ import { AssertMatrix, AssertMatrixSquare } from './asserts.js';
3
3
  /**
4
4
  * Creates a matrix with specified dimensions, initialized with zeros.
5
5
  * @param rows - Number of rows (non-negative integer). If only this parameter is provided, creates a square matrix.
6
6
  * @param cols - Number of columns (non-negative integer). Optional for square matrices.
7
7
  * @returns {TMatrix | TMatrix1 | TMatrix2 | TMatrix3 | TMatrix4} Zero-filled matrix with specified dimensions
8
8
  * @throws {Error} If rows or cols are negative or not integers
9
- * @example MatrixCreate() // [[0]] (1x1 matrix)
10
- * @example MatrixCreate(2) // [[0, 0], [0, 0]] (2x2 matrix)
11
- * @example MatrixCreate(2, 3) // [[0, 0, 0], [0, 0, 0]] (2x3 matrix)
9
+ * @example
10
+ * ```typescript
11
+ * MatrixCreate() // [[0]] (1x1 matrix)
12
+ * ```
13
+ * @example
14
+ * ```typescript
15
+ * MatrixCreate(2) // [[0, 0], [0, 0]] (2x2 matrix)
16
+ * ```
17
+ * @example
18
+ * ```typescript
19
+ * MatrixCreate(2, 3) // [[0, 0, 0], [0, 0, 0]] (2x3 matrix)
20
+ * ```
12
21
  */
13
22
  export function MatrixCreate(rows, cols) {
14
23
  // Handle no parameters - default to 1x1
@@ -57,13 +66,15 @@ export function MatrixCreate(rows, cols) {
57
66
  * @param matrix - The matrix to measure
58
67
  * @returns {[number, number]} Tuple [rows, columns]. Returns [0, 0] for empty matrices.
59
68
  * @throws {Error} If the input is not a valid matrix
60
- * @example MatrixSize([[1, 2, 3], [4, 5, 6]]) // [2, 3]
69
+ * @example
70
+ * ```typescript
71
+ * MatrixSize([[1, 2, 3], [4, 5, 6]]) // [2, 3]
72
+ * ```
61
73
  */
62
74
  export function MatrixSize(matrix) {
63
75
  // Basic validation without calling AssertMatrix to avoid circular dependency
64
- if (!Array.isArray(matrix)) {
76
+ if (!Array.isArray(matrix))
65
77
  throw new Error('Input must be an array');
66
- }
67
78
  // Handle empty matrix or matrix with no columns
68
79
  if (matrix.length === 0 || !Array.isArray(matrix[0]))
69
80
  return [0, 0];
@@ -74,54 +85,34 @@ export function MatrixSize(matrix) {
74
85
  * @param matrix - The square matrix to measure
75
86
  * @returns {number} The size (n for an n×n matrix)
76
87
  * @throws {Error} If the matrix is not square
77
- * @example MatrixSizeSquare([[1, 2], [3, 4]]) // 2
88
+ * @example
89
+ * ```typescript
90
+ * MatrixSizeSquare([[1, 2], [3, 4]]) // 2
91
+ * ```
78
92
  */
79
93
  export function MatrixSizeSquare(matrix) {
80
- AssertMatrix(matrix, { square: true });
94
+ AssertMatrixSquare(matrix);
81
95
  const [rows] = MatrixSize(matrix);
82
96
  return rows;
83
97
  }
84
- /**
85
- * Validates that the input is a well-formed matrix.
86
- * @param matrix - The value to validate as a matrix
87
- * @returns {boolean} True if the input is a valid matrix, false otherwise
88
- * @example MatrixIsValid([[1, 2], [3, 4]]) // true
89
- * @example MatrixIsValid([[1, 'invalid'], [3, 4]]) // false
90
- */
91
- export function MatrixIsValid(matrix) {
92
- try {
93
- AssertMatrix(matrix);
94
- return true;
95
- }
96
- catch {
97
- return false;
98
- }
99
- }
100
- /**
101
- * Checks if a matrix is square (equal number of rows and columns).
102
- * @param matrix - The matrix to check
103
- * @returns {boolean} True if the matrix is square, false otherwise
104
- * @example MatrixIsSquare([[1, 2], [3, 4]]) // true (2×2)
105
- * @example MatrixIsSquare([[1, 2, 3], [4, 5, 6]]) // false (3×2)
106
- */
107
- export function MatrixIsSquare(matrix) {
108
- try {
109
- MatrixSizeSquare(matrix);
110
- return true;
111
- }
112
- catch {
113
- return false;
114
- }
115
- }
116
98
  /**
117
99
  * Checks if a matrix is a zero matrix (all elements are zero within tolerance).
118
100
  * @param matrix - The matrix to check
119
101
  * @param threshold - Tolerance for considering values as zero (default: 1e-14)
120
102
  * @returns {boolean} True if all matrix elements are within threshold of zero
121
103
  * @throws {Error} If the input is not a valid matrix
122
- * @example MatrixIsZero([[0, 0], [0, 0]]) // true
123
- * @example MatrixIsZero([[1e-15, 0], [0, 0]]) // true (within default threshold)
124
- * @example MatrixIsZero([[0.1, 0], [0, 0]]) // false
104
+ * @example
105
+ * ```typescript
106
+ * MatrixIsZero([[0, 0], [0, 0]]) // true
107
+ * ```
108
+ * @example
109
+ * ```typescript
110
+ * MatrixIsZero([[1e-15, 0], [0, 0]]) // true (within default threshold)
111
+ * ```
112
+ * @example
113
+ * ```typescript
114
+ * MatrixIsZero([[0.1, 0], [0, 0]]) // false
115
+ * ```
125
116
  */
126
117
  export function MatrixIsZero(matrix, threshold = 1e-14) {
127
118
  AssertMatrix(matrix);
@@ -130,13 +121,10 @@ export function MatrixIsZero(matrix, threshold = 1e-14) {
130
121
  return true; // Empty matrix is considered zero
131
122
  for (let row = 0; row < rows; row++) {
132
123
  const matrixRow = matrix[row];
133
- AssertMatrixRow(matrixRow, { rowIndex: row });
134
124
  for (let col = 0; col < cols; col++) {
135
125
  const value = matrixRow[col];
136
- AssertMatrixValue(value, { rowIndex: row, columnIndex: col });
137
- if (Math.abs(value) > threshold) {
138
- return false; // Found a non-zero value
139
- }
126
+ if (Math.abs(value) > threshold)
127
+ return false;
140
128
  }
141
129
  }
142
130
  return true; // All values are within the threshold
@@ -147,9 +135,18 @@ export function MatrixIsZero(matrix, threshold = 1e-14) {
147
135
  * @param threshold - Tolerance for floating-point comparisons (default: 1e-14)
148
136
  * @returns {boolean} True if the matrix is an identity matrix within tolerance
149
137
  * @throws {Error} If the input is not a valid matrix
150
- * @example MatrixIsIdentity([[1, 0], [0, 1]]) // true
151
- * @example MatrixIsIdentity([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) // true
152
- * @example MatrixIsIdentity([[1, 1], [0, 1]]) // false
138
+ * @example
139
+ * ```typescript
140
+ * MatrixIsIdentity([[1, 0], [0, 1]]) // true
141
+ * ```
142
+ * @example
143
+ * ```typescript
144
+ * MatrixIsIdentity([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) // true
145
+ * ```
146
+ * @example
147
+ * ```typescript
148
+ * MatrixIsIdentity([[1, 1], [0, 1]]) // false
149
+ * ```
153
150
  */
154
151
  export function MatrixIsIdentity(matrix, threshold = 1e-14) {
155
152
  AssertMatrix(matrix);
@@ -158,10 +155,8 @@ export function MatrixIsIdentity(matrix, threshold = 1e-14) {
158
155
  return false; // Identity must be square
159
156
  for (let row = 0; row < rows; row++) {
160
157
  const matrixRow = matrix[row];
161
- AssertMatrixRow(matrixRow, { rowIndex: row });
162
158
  for (let col = 0; col < cols; col++) {
163
159
  const value = matrixRow[col];
164
- AssertMatrixValue(value, { rowIndex: row, columnIndex: col });
165
160
  const expected = row === col ? 1 : 0;
166
161
  if (Math.abs(value - expected) > threshold)
167
162
  return false;
@@ -175,9 +170,18 @@ export function MatrixIsIdentity(matrix, threshold = 1e-14) {
175
170
  * @param threshold - Tolerance for floating-point comparisons (default: 1e-14)
176
171
  * @returns {boolean} True if the matrix is symmetric within tolerance
177
172
  * @throws {Error} If the input is not a valid matrix
178
- * @example MatrixIsSymmetric([[1, 2], [2, 1]]) // true
179
- * @example MatrixIsSymmetric([[1, 2], [3, 4]]) // false
180
- * @example MatrixIsSymmetric([[1, 2, 3], [2, 5, 4], [3, 4, 6]]) // true
173
+ * @example
174
+ * ```typescript
175
+ * MatrixIsSymmetric([[1, 2], [2, 1]]) // true
176
+ * ```
177
+ * @example
178
+ * ```typescript
179
+ * MatrixIsSymmetric([[1, 2], [3, 4]]) // false
180
+ * ```
181
+ * @example
182
+ * ```typescript
183
+ * MatrixIsSymmetric([[1, 2, 3], [2, 5, 4], [3, 4, 6]]) // true
184
+ * ```
181
185
  */
182
186
  export function MatrixIsSymmetric(matrix, threshold = 1e-14) {
183
187
  AssertMatrix(matrix);
@@ -186,14 +190,10 @@ export function MatrixIsSymmetric(matrix, threshold = 1e-14) {
186
190
  return false; // Symmetry requires a square matrix
187
191
  for (let row = 0; row < rows; row++) {
188
192
  const matrixRow = matrix[row];
189
- AssertMatrixRow(matrixRow, { rowIndex: row });
190
193
  for (let col = row + 1; col < cols; col++) {
191
194
  const upper = matrixRow[col];
192
- AssertMatrixValue(upper, { rowIndex: row, columnIndex: col });
193
195
  const lowerRow = matrix[col];
194
- AssertMatrixRow(lowerRow, { rowIndex: col });
195
196
  const lower = lowerRow[row];
196
- AssertMatrixValue(lower, { rowIndex: col, columnIndex: row });
197
197
  if (Math.abs(upper - lower) > threshold)
198
198
  return false;
199
199
  }
@@ -207,9 +207,18 @@ export function MatrixIsSymmetric(matrix, threshold = 1e-14) {
207
207
  * @param threshold - Tolerance for considering values as zero (default: 1e-14)
208
208
  * @returns {boolean} True if the matrix is diagonal within tolerance
209
209
  * @throws {Error} If the input is not a valid matrix
210
- * @example MatrixIsDiagonal([[3, 0], [0, 7]]) // true
211
- * @example MatrixIsDiagonal([[1, 0, 0], [0, 5, 0], [0, 0, 2]]) // true
212
- * @example MatrixIsDiagonal([[1, 2], [0, 1]]) // false
210
+ * @example
211
+ * ```typescript
212
+ * MatrixIsDiagonal([[3, 0], [0, 7]]) // true
213
+ * ```
214
+ * @example
215
+ * ```typescript
216
+ * MatrixIsDiagonal([[1, 0, 0], [0, 5, 0], [0, 0, 2]]) // true
217
+ * ```
218
+ * @example
219
+ * ```typescript
220
+ * MatrixIsDiagonal([[1, 2], [0, 1]]) // false
221
+ * ```
213
222
  */
214
223
  export function MatrixIsDiagonal(matrix, threshold = 1e-14) {
215
224
  AssertMatrix(matrix);
@@ -218,12 +227,10 @@ export function MatrixIsDiagonal(matrix, threshold = 1e-14) {
218
227
  return false; // Diagonality requires a square matrix
219
228
  for (let row = 0; row < rows; row++) {
220
229
  const matrixRow = matrix[row];
221
- AssertMatrixRow(matrixRow, { rowIndex: row });
222
230
  for (let col = 0; col < cols; col++) {
223
231
  if (row === col)
224
232
  continue; // Skip diagonal elements
225
233
  const value = matrixRow[col];
226
- AssertMatrixValue(value, { rowIndex: row, columnIndex: col });
227
234
  if (Math.abs(value) > threshold)
228
235
  return false;
229
236
  }
@@ -236,7 +243,6 @@ export function MatrixIdentity(size) {
236
243
  // Set diagonal elements to 1
237
244
  for (let i = 0; i < size; i++) {
238
245
  const row = result[i];
239
- AssertMatrixRow(row, { rowIndex: i });
240
246
  row[i] = 1;
241
247
  }
242
248
  return result;
@@ -246,7 +252,10 @@ export function MatrixIdentity(size) {
246
252
  * @param matrix - The matrix to clone
247
253
  * @returns {TMatrixResult<T>} A new matrix with identical values but independent memory allocation
248
254
  * @throws {Error} If the input is not a valid matrix
249
- * @example MatrixClone([[1, 2], [3, 4]]) // [[1, 2], [3, 4]] (independent copy)
255
+ * @example
256
+ * ```typescript
257
+ * MatrixClone([[1, 2], [3, 4]]) // [[1, 2], [3, 4]] (independent copy)
258
+ * ```
250
259
  */
251
260
  export function MatrixClone(matrix) {
252
261
  AssertMatrix(matrix);
@@ -260,8 +269,14 @@ export function MatrixClone(matrix) {
260
269
  * @param tolerance - Maximum allowed difference between corresponding elements (default: 1e-8)
261
270
  * @returns {boolean} True if matrices are equal within tolerance, false otherwise
262
271
  * @throws {Error} If either input is not a valid matrix or if matrix data is corrupted
263
- * @example MatrixEquals([[1, 2]], [[1.0001, 2]], 0.001) // true
264
- * @example MatrixEquals([[1, 2]], [[1, 3]]) // false
272
+ * @example
273
+ * ```typescript
274
+ * MatrixEquals([[1, 2]], [[1.0001, 2]], 0.001) // true
275
+ * ```
276
+ * @example
277
+ * ```typescript
278
+ * MatrixEquals([[1, 2]], [[1, 3]]) // false
279
+ * ```
265
280
  */
266
281
  export function MatrixEquals(a, b, tolerance = 1e-8) {
267
282
  AssertMatrix(a);
@@ -275,16 +290,11 @@ export function MatrixEquals(a, b, tolerance = 1e-8) {
275
290
  for (let row = 0; row < rowsA; row++) {
276
291
  const rowA = a[row];
277
292
  const rowB = b[row];
278
- AssertMatrixRow(rowA, { rowIndex: row });
279
- AssertMatrixRow(rowB, { rowIndex: row });
280
293
  for (let col = 0; col < colsA; col++) {
281
294
  const valA = rowA[col];
282
295
  const valB = rowB[col];
283
- AssertMatrixValue(valA, { rowIndex: row, columnIndex: col });
284
- AssertMatrixValue(valB, { rowIndex: row, columnIndex: col });
285
- if (Math.abs(valA - valB) > tolerance) {
296
+ if (Math.abs(valA - valB) > tolerance)
286
297
  return false;
287
- }
288
298
  }
289
299
  }
290
300
  return true;
@@ -295,8 +305,14 @@ export function MatrixEquals(a, b, tolerance = 1e-8) {
295
305
  * @param precision - Number of decimal places for formatting (default: 2)
296
306
  * @returns {string} A formatted string representation of the matrix
297
307
  * @throws {Error} If the input is not a valid matrix
298
- * @example MatrixToString([[1.23, 2.7]]) // "[ 1.23, 2.70 ]"
299
- * @example MatrixToString([[1, 2], [3, 4]], 0) // "[ 1, 2 ]\n[ 3, 4 ]"
308
+ * @example
309
+ * ```typescript
310
+ * MatrixToString([[1.23, 2.7]]) // "[ 1.23, 2.70 ]"
311
+ * ```
312
+ * @example
313
+ * ```typescript
314
+ * MatrixToString([[1, 2], [3, 4]], 0) // "[ 1, 2 ]\n[ 3, 4 ]"
315
+ * ```
300
316
  */
301
317
  export function MatrixToString(matrix, precision = 2) {
302
318
  AssertMatrix(matrix);
@@ -304,7 +320,7 @@ export function MatrixToString(matrix, precision = 2) {
304
320
  return matrix
305
321
  .map((row) => '[ ' + row
306
322
  .map((val) => {
307
- return typeof val === 'number' ? val.toFixed(precision) : String(val);
323
+ return val.toFixed(precision);
308
324
  })
309
325
  .join(', ') + ' ]')
310
326
  .join('\n');
@@ -315,8 +331,14 @@ export function MatrixToString(matrix, precision = 2) {
315
331
  * @param tolerance - Numerical tolerance for zero detection (default: 1e-10)
316
332
  * @returns {number} The rank of the matrix (0 ≤ rank ≤ min(rows, columns))
317
333
  * @throws {Error} If the matrix contains invalid values
318
- * @example MatrixRank([[1, 2], [2, 4]]) // 1 (second row = 2 × first row)
319
- * @example MatrixRank([[1, 0], [0, 1]]) // 2 (full rank)
334
+ * @example
335
+ * ```typescript
336
+ * MatrixRank([[1, 2], [2, 4]]) // 1 (second row = 2 × first row)
337
+ * ```
338
+ * @example
339
+ * ```typescript
340
+ * MatrixRank([[1, 0], [0, 1]]) // 2 (full rank)
341
+ * ```
320
342
  */
321
343
  export function MatrixRank(matrix, tolerance = 1e-10) {
322
344
  AssertMatrix(matrix);
@@ -332,9 +354,7 @@ export function MatrixRank(matrix, tolerance = 1e-10) {
332
354
  let pivotRow = -1;
333
355
  for (let row = 0; row < rows; row++) {
334
356
  const matrixRow = mat[row];
335
- AssertMatrixRow(matrixRow, { rowIndex: row });
336
357
  const value = matrixRow[col];
337
- AssertMatrixValue(value, { rowIndex: row, columnIndex: col });
338
358
  if (!rowUsed[row] && Math.abs(value) > tolerance) {
339
359
  pivotRow = row;
340
360
  break;
@@ -349,21 +369,14 @@ export function MatrixRank(matrix, tolerance = 1e-10) {
349
369
  if (row !== pivotRow) {
350
370
  const currentRow = mat[row];
351
371
  const pivotRowData = mat[pivotRow];
352
- AssertMatrixRow(currentRow, { rowIndex: row });
353
- AssertMatrixRow(pivotRowData, { rowIndex: pivotRow });
354
372
  const pivotValue = pivotRowData[col];
355
373
  const currentValue = currentRow[col];
356
- AssertMatrixValue(pivotValue, { rowIndex: pivotRow, columnIndex: col });
357
- AssertMatrixValue(currentValue, { rowIndex: row, columnIndex: col });
358
374
  const factor = currentValue / pivotValue;
359
375
  for (let k = col; k < cols; k++) {
360
376
  const pivotK = pivotRowData[k];
361
377
  const currentK = currentRow[k];
362
- AssertMatrixValue(pivotK, { rowIndex: pivotRow, columnIndex: k });
363
- AssertMatrixValue(currentK, { rowIndex: row, columnIndex: k });
364
378
  currentRow[k] = currentK - (factor * pivotK);
365
379
  const updatedValue = currentRow[k];
366
- AssertMatrixValue(updatedValue, { rowIndex: row, columnIndex: k });
367
380
  if (Math.abs(updatedValue) < tolerance) {
368
381
  currentRow[k] = 0;
369
382
  }
@@ -378,8 +391,14 @@ export function MatrixRank(matrix, tolerance = 1e-10) {
378
391
  * @param matrix - The input matrix (can be square or rectangular)
379
392
  * @returns {number} The trace value (sum of diagonal elements)
380
393
  * @throws {Error} If the matrix contains invalid values
381
- * @example MatrixTrace([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) // 15 (1 + 5 + 9)
382
- * @example MatrixTrace([[1, 2], [3, 4], [5, 6]]) // 5 (1 + 4, rectangular matrix)
394
+ * @example
395
+ * ```typescript
396
+ * MatrixTrace([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) // 15 (1 + 5 + 9)
397
+ * ```
398
+ * @example
399
+ * ```typescript
400
+ * MatrixTrace([[1, 2], [3, 4], [5, 6]]) // 5 (1 + 4, rectangular matrix)
401
+ * ```
383
402
  */
384
403
  export function MatrixTrace(matrix) {
385
404
  AssertMatrix(matrix);
@@ -389,9 +408,7 @@ export function MatrixTrace(matrix) {
389
408
  const n = Math.min(rows, cols);
390
409
  for (let i = 0; i < n; i++) {
391
410
  const row = matrix[i];
392
- AssertMatrixRow(row, { rowIndex: i });
393
411
  const val = row[i];
394
- AssertMatrixValue(val, { rowIndex: i, columnIndex: i });
395
412
  trace += val;
396
413
  }
397
414
  return trace;
@@ -401,8 +418,14 @@ export function MatrixTrace(matrix) {
401
418
  * @param matrix - The matrix to transpose (can be any m×n matrix)
402
419
  * @returns {TMatrixResult<T>} The transposed matrix with dimensions n×m
403
420
  * @throws {Error} If the input is not a valid matrix
404
- * @example MatrixTranspose([[1, 2, 3], [4, 5, 6]]) // [[1, 4], [2, 5], [3, 6]]
405
- * @example MatrixTranspose([[1, 2], [3, 4]]) // [[1, 3], [2, 4]]
421
+ * @example
422
+ * ```typescript
423
+ * MatrixTranspose([[1, 2, 3], [4, 5, 6]]) // [[1, 4], [2, 5], [3, 6]]
424
+ * ```
425
+ * @example
426
+ * ```typescript
427
+ * MatrixTranspose([[1, 2], [3, 4]]) // [[1, 3], [2, 4]]
428
+ * ```
406
429
  */
407
430
  export function MatrixTranspose(matrix) {
408
431
  AssertMatrix(matrix);
@@ -415,13 +438,10 @@ export function MatrixTranspose(matrix) {
415
438
  }
416
439
  for (let row = 0; row < rows; row++) {
417
440
  const matrixRow = matrix[row];
418
- AssertMatrixRow(matrixRow, { rowIndex: row });
419
441
  for (let col = 0; col < cols; col++) {
420
442
  const val = matrixRow[col];
421
- AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
422
443
  // Swap row and column indices in the result
423
444
  const resultCol = result[col];
424
- AssertMatrixRow(resultCol, { rowIndex: col });
425
445
  resultCol[row] = val;
426
446
  }
427
447
  }
@@ -433,8 +453,14 @@ export function MatrixTranspose(matrix) {
433
453
  * @param fn - Transformation function: (value, row, col) => transformedValue
434
454
  * @returns {TMatrixResult<T>} A new matrix with transformed values (same dimensions as input)
435
455
  * @throws {Error} If the input matrix is invalid or transformation function throws
436
- * @example MatrixMap([[1, 2], [3, 4]], (value) => value * value) // [[1, 4], [9, 16]]
437
- * @example MatrixMap([[1, 2], [3, 4]], (value, row, col) => value + row + col) // [[1, 3], [4, 6]]
456
+ * @example
457
+ * ```typescript
458
+ * MatrixMap([[1, 2], [3, 4]], (value) => value * value) // [[1, 4], [9, 16]]
459
+ * ```
460
+ * @example
461
+ * ```typescript
462
+ * MatrixMap([[1, 2], [3, 4]], (value, row, col) => value + row + col) // [[1, 3], [4, 6]]
463
+ * ```
438
464
  */
439
465
  export function MatrixMap(matrix, fn) {
440
466
  AssertMatrix(matrix);
@@ -442,11 +468,9 @@ export function MatrixMap(matrix, fn) {
442
468
  const result = [];
443
469
  for (let row = 0; row < rows; row++) {
444
470
  const matrixRow = matrix[row];
445
- AssertMatrixRow(matrixRow, { rowIndex: row });
446
471
  const newRow = [];
447
472
  for (let col = 0; col < cols; col++) {
448
473
  const val = matrixRow[col];
449
- AssertMatrixValue(val, { rowIndex: row, columnIndex: col });
450
474
  newRow.push(fn(val, row, col));
451
475
  }
452
476
  result.push(newRow);
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/matrices/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/matrices/core.ts"],"names":[],"mappings":"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"}