@pawells/math-extended 1.0.5 → 2.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 (106) hide show
  1. package/README.md +5 -5
  2. package/build/angles.d.ts +43 -3
  3. package/build/angles.d.ts.map +1 -1
  4. package/build/angles.js +61 -34
  5. package/build/angles.js.map +1 -1
  6. package/build/clamp.d.ts +5 -3
  7. package/build/clamp.d.ts.map +1 -1
  8. package/build/clamp.js +5 -3
  9. package/build/clamp.js.map +1 -1
  10. package/build/interpolation.d.ts +444 -67
  11. package/build/interpolation.d.ts.map +1 -1
  12. package/build/interpolation.js +444 -67
  13. package/build/interpolation.js.map +1 -1
  14. package/build/matrices/_exports.d.ts +13 -0
  15. package/build/matrices/_exports.d.ts.map +1 -0
  16. package/build/matrices/_exports.js +13 -0
  17. package/build/matrices/_exports.js.map +1 -0
  18. package/build/matrices/arithmetic.d.ts +170 -181
  19. package/build/matrices/arithmetic.d.ts.map +1 -1
  20. package/build/matrices/arithmetic.js +192 -202
  21. package/build/matrices/arithmetic.js.map +1 -1
  22. package/build/matrices/asserts.d.ts +244 -116
  23. package/build/matrices/asserts.d.ts.map +1 -1
  24. package/build/matrices/asserts.js +291 -94
  25. package/build/matrices/asserts.js.map +1 -1
  26. package/build/matrices/core.d.ts +40 -41
  27. package/build/matrices/core.d.ts.map +1 -1
  28. package/build/matrices/core.js +12 -13
  29. package/build/matrices/core.js.map +1 -1
  30. package/build/matrices/decompositions.d.ts +121 -124
  31. package/build/matrices/decompositions.d.ts.map +1 -1
  32. package/build/matrices/decompositions.js +168 -226
  33. package/build/matrices/decompositions.js.map +1 -1
  34. package/build/matrices/index.d.ts +3 -2
  35. package/build/matrices/index.d.ts.map +1 -1
  36. package/build/matrices/index.js +5 -2
  37. package/build/matrices/index.js.map +1 -1
  38. package/build/matrices/linear-algebra.d.ts +18 -13
  39. package/build/matrices/linear-algebra.d.ts.map +1 -1
  40. package/build/matrices/linear-algebra.js +58 -23
  41. package/build/matrices/linear-algebra.js.map +1 -1
  42. package/build/matrices/normalization.d.ts +8 -8
  43. package/build/matrices/transformations.d.ts +184 -168
  44. package/build/matrices/transformations.d.ts.map +1 -1
  45. package/build/matrices/transformations.js +99 -83
  46. package/build/matrices/transformations.js.map +1 -1
  47. package/build/matrices/types.d.ts +12 -12
  48. package/build/matrices/types.d.ts.map +1 -1
  49. package/build/quaternions/_exports.d.ts +11 -0
  50. package/build/quaternions/_exports.d.ts.map +1 -0
  51. package/build/quaternions/_exports.js +11 -0
  52. package/build/quaternions/_exports.js.map +1 -0
  53. package/build/quaternions/asserts.d.ts +115 -7
  54. package/build/quaternions/asserts.d.ts.map +1 -1
  55. package/build/quaternions/asserts.js +162 -8
  56. package/build/quaternions/asserts.js.map +1 -1
  57. package/build/quaternions/conversions.d.ts +31 -21
  58. package/build/quaternions/conversions.d.ts.map +1 -1
  59. package/build/quaternions/conversions.js +28 -18
  60. package/build/quaternions/conversions.js.map +1 -1
  61. package/build/quaternions/core.d.ts +73 -41
  62. package/build/quaternions/core.d.ts.map +1 -1
  63. package/build/quaternions/core.js +84 -49
  64. package/build/quaternions/core.js.map +1 -1
  65. package/build/quaternions/index.d.ts +3 -2
  66. package/build/quaternions/index.d.ts.map +1 -1
  67. package/build/quaternions/index.js +5 -2
  68. package/build/quaternions/index.js.map +1 -1
  69. package/build/quaternions/interpolation.d.ts +15 -9
  70. package/build/quaternions/interpolation.d.ts.map +1 -1
  71. package/build/quaternions/interpolation.js +15 -9
  72. package/build/quaternions/interpolation.js.map +1 -1
  73. package/build/quaternions/predefined.d.ts +9 -3
  74. package/build/quaternions/predefined.d.ts.map +1 -1
  75. package/build/quaternions/predefined.js +9 -3
  76. package/build/quaternions/predefined.js.map +1 -1
  77. package/build/quaternions/types.d.ts +3 -3
  78. package/build/random.d.ts +5 -2
  79. package/build/random.d.ts.map +1 -1
  80. package/build/random.js +20 -17
  81. package/build/random.js.map +1 -1
  82. package/build/vectors/_exports.d.ts +10 -0
  83. package/build/vectors/_exports.d.ts.map +1 -0
  84. package/build/vectors/_exports.js +10 -0
  85. package/build/vectors/_exports.js.map +1 -0
  86. package/build/vectors/asserts.d.ts +153 -49
  87. package/build/vectors/asserts.d.ts.map +1 -1
  88. package/build/vectors/asserts.js +202 -52
  89. package/build/vectors/asserts.js.map +1 -1
  90. package/build/vectors/core.d.ts +216 -137
  91. package/build/vectors/core.d.ts.map +1 -1
  92. package/build/vectors/core.js +217 -158
  93. package/build/vectors/core.js.map +1 -1
  94. package/build/vectors/index.d.ts +1 -0
  95. package/build/vectors/index.d.ts.map +1 -1
  96. package/build/vectors/index.js +3 -0
  97. package/build/vectors/index.js.map +1 -1
  98. package/build/vectors/interpolation.d.ts +39 -27
  99. package/build/vectors/interpolation.d.ts.map +1 -1
  100. package/build/vectors/interpolation.js +39 -27
  101. package/build/vectors/interpolation.js.map +1 -1
  102. package/build/vectors/predefined.d.ts +48 -24
  103. package/build/vectors/predefined.d.ts.map +1 -1
  104. package/build/vectors/predefined.js +38 -18
  105. package/build/vectors/predefined.js.map +1 -1
  106. package/package.json +12 -15
@@ -10,31 +10,36 @@ import { MatrixSize } from './core.js';
10
10
  * @class MatrixError
11
11
  * @extends Error
12
12
  * @example
13
- * ```typescript
14
- * try {
15
- * AssertMatrix(invalidMatrix);
16
- * } catch (error) {
17
- * if (error instanceof MatrixError) {
18
- * console.log('Matrix validation failed:', error.message);
19
- * }
20
- * }
21
- * ```
13
+ * ```typescript
14
+ * ```typescript
15
+ * try {
16
+ * AssertMatrix(invalidMatrix);
17
+ * } catch (error) {
18
+ * if (error instanceof MatrixError) {
19
+ * console.log('Matrix validation failed:', error.message);
20
+ * }
21
+ * }
22
+ * ```
23
+ * ```
22
24
  */
23
25
  export class MatrixError extends Error {
26
+ code = 'MATRIX_ERROR';
24
27
  /**
25
28
  * Creates a new MatrixError instance.
26
29
  *
27
- * @param message - Optional error message describing the validation failure
30
+ * @param message - Error message describing the validation failure
31
+ * @param options - Optional error context
32
+ * @param options.cause - Original error that caused this error
28
33
  */
29
- constructor(message) {
30
- super(message);
34
+ constructor(message, options) {
35
+ super(message, options);
31
36
  this.name = 'MatrixError';
32
37
  // Maintains proper prototype chain for instanceof checks
33
38
  Object.setPrototypeOf(this, new.target.prototype);
34
39
  }
35
40
  }
36
41
  /**
37
- * Validates that an unknown value is a valid matrix conforming to the IMatrix interface.
42
+ * Validates that an unknown value is a valid matrix conforming to the TMatrix interface.
38
43
  *
39
44
  * This function performs comprehensive validation of matrix structure including:
40
45
  * - Type checking to ensure the value is a proper matrix
@@ -48,16 +53,16 @@ export class MatrixError extends Error {
48
53
  * @throws {IAssertException} When the matrix doesn't meet the specified criteria
49
54
  *
50
55
  * @example
51
- * ```typescript
52
- * // Validate a 3x3 square matrix
53
- * AssertMatrix(someValue, { square: true, size: 3 });
54
- *
55
- * // Validate minimum dimensions
56
- * AssertMatrix(someValue, { minRows: 2, minColumns: 3 });
57
- *
58
- * // Validate exact dimensions
59
- * AssertMatrix(someValue, { rows: 4, columns: 5 });
60
- * ```
56
+ * ```typescript
57
+ * ```typescript
58
+ * // Validate a 3x3 square matrix
59
+ * AssertMatrix(someValue, { square: true, size: 3 });
60
+ * // Validate minimum dimensions
61
+ * AssertMatrix(someValue, { minRows: 2, minColumns: 3 });
62
+ * // Validate exact dimensions
63
+ * AssertMatrix(someValue, { rows: 4, columns: 5 });
64
+ * ```
65
+ * ```
61
66
  */
62
67
  export function AssertMatrix(matrix, args = {}, exception = {}) {
63
68
  // Initialize the exception with the default MatrixError class if not provided
@@ -150,21 +155,20 @@ export function AssertMatrix(matrix, args = {}, exception = {}) {
150
155
  * which should be an array containing only numeric values.
151
156
  *
152
157
  * @param row - The value to validate as a matrix row
153
- * @param exception - Custom exception details if validation fails
154
- * @param rowIndex - Optional row index for more descriptive error messages
155
- * @throws {IAssertException} When the row is not a valid array of numbers
158
+ * @param exception - Custom exception details (optionally includes `rowIndex` for richer messages)
159
+ * @throws {MatrixError} When the row is not a valid array of finite numbers
156
160
  *
157
161
  * @example
158
- * ```typescript
159
- * // Validate a matrix row
160
- * AssertMatrixRow([1, 2, 3, 4]);
161
- *
162
- * // Validate with row index for better error messages
163
- * AssertMatrixRow([1, 2, 3, 4], {}, 0);
164
- *
165
- * // This would throw an exception
166
- * AssertMatrixRow([1, "2", 3]); // Contains non-numeric value
167
- * ```
162
+ * ```typescript
163
+ * ```typescript
164
+ * // Validate a matrix row
165
+ * AssertMatrixRow([1, 2, 3, 4]);
166
+ * // Validate with row index in exception for better error messages
167
+ * AssertMatrixRow([1, 2, 3, 4], { rowIndex: 0 });
168
+ * // This would throw MatrixError
169
+ * AssertMatrixRow([1, '2', 3]); // Contains non-numeric value
170
+ * ```
171
+ * ```
168
172
  */
169
173
  export function AssertMatrixRow(row, exception = {}) {
170
174
  // Initialize the exception with the default MatrixError class if not provided
@@ -194,24 +198,22 @@ export function AssertMatrixRow(row, exception = {}) {
194
198
  * which should be a finite number (not NaN, Infinity, or -Infinity).
195
199
  *
196
200
  * @param value - The value to validate as a matrix element
197
- * @param exception - Custom exception details if validation fails
198
- * @param rowIndex - Optional row index for more descriptive error messages
199
- * @param columnIndex - Optional column index for more descriptive error messages
200
- * @throws {IAssertException} When the value is not a finite number
201
+ * @param exception - Custom exception details (optionally includes `rowIndex` and `columnIndex` for richer messages)
202
+ * @throws {MatrixError} When the value is not a finite number
201
203
  *
202
204
  * @example
203
- * ```typescript
204
- * // Validate a matrix element
205
- * AssertMatrixValue(42);
206
- *
207
- * // Validate with position information for better error messages
208
- * AssertMatrixValue(3.14, {}, 0, 1);
209
- *
210
- * // This would throw an exception
211
- * AssertMatrixValue(NaN); // Not a finite number
212
- * AssertMatrixValue(Infinity); // Not a finite number
213
- * AssertMatrixValue("5"); // Not a number
214
- * ```
205
+ * ```typescript
206
+ * ```typescript
207
+ * // Validate a matrix element
208
+ * AssertMatrixValue(42);
209
+ * // Validate with position information for better error messages
210
+ * AssertMatrixValue(3.14, { rowIndex: 0, columnIndex: 1 });
211
+ * // These would throw MatrixError
212
+ * AssertMatrixValue(NaN); // Not a number
213
+ * AssertMatrixValue(Infinity); // Not a finite number
214
+ * AssertMatrixValue('5'); // Not a number type
215
+ * ```
216
+ * ```
215
217
  */
216
218
  export function AssertMatrixValue(value, exception = {}) {
217
219
  // Initialize the exception with the default MatrixError class if not provided
@@ -221,7 +223,14 @@ export function AssertMatrixValue(value, exception = {}) {
221
223
  const position = exception.rowIndex !== undefined && exception.columnIndex !== undefined ? ` at row ${exception.rowIndex}, column ${exception.columnIndex}` : '';
222
224
  SetExceptionMessage(exception, `Matrix value${position} must be a finite number`);
223
225
  // Delegate to the general number assertion which handles finite number validation
224
- AssertNumber(value, { finite: true }, exception);
226
+ // Wrap any thrown error as MatrixError to maintain consistent error handling
227
+ try {
228
+ AssertNumber(value, { finite: true }, exception);
229
+ }
230
+ catch {
231
+ // Re-throw as MatrixError to maintain API contract
232
+ throw new MatrixError(exception.message ?? 'Matrix value must be a finite number');
233
+ }
225
234
  }
226
235
  /**
227
236
  * Validates compatibility between two matrices for mathematical operations.
@@ -237,13 +246,14 @@ export function AssertMatrixValue(value, exception = {}) {
237
246
  * @throws {IAssertException} When the matrices are not compatible
238
247
  *
239
248
  * @example
240
- * ```typescript
241
- * // Validate matrices for multiplication (A columns must equal B rows)
242
- * AssertMatrices(matrixA, matrixB);
243
- *
244
- * // Allow transposed compatibility
245
- * AssertMatrices(matrixA, matrixB, { transposition: true });
246
- * ```
249
+ * ```typescript
250
+ * ```typescript
251
+ * // Validate matrices for multiplication (A columns must equal B rows)
252
+ * AssertMatrices(matrixA, matrixB);
253
+ * // Allow transposed compatibility
254
+ * AssertMatrices(matrixA, matrixB, { transposition: true });
255
+ * ```
256
+ * ```
247
257
  */
248
258
  export function AssertMatrices(a, b, args = {}, exception = {}) {
249
259
  // Initialize the exception with the default MatrixError class if not provided
@@ -251,7 +261,7 @@ export function AssertMatrices(a, b, args = {}, exception = {}) {
251
261
  // First validation: ensure both inputs are valid matrices
252
262
  AssertMatrix(a, {}, exception);
253
263
  AssertMatrix(b, {}, exception);
254
- // Safe cast to IMatrix since we've validated both inputs
264
+ // Safe cast to TMatrix since we've validated both inputs
255
265
  const matrixA = a;
256
266
  const matrixB = b;
257
267
  // Extract dimensions from both matrices for compatibility checking
@@ -295,13 +305,14 @@ export function AssertMatrices(a, b, args = {}, exception = {}) {
295
305
  * @throws {IAssertException} When the matrix is not a valid 1x1 matrix
296
306
  *
297
307
  * @example
298
- * ```typescript
299
- * // Validate a 1x1 matrix
300
- * AssertMatrix1([[5]]);
301
- *
302
- * // This would throw an exception
303
- * AssertMatrix1([[1, 2]]); // Too many columns
304
- * ```
308
+ * ```typescript
309
+ * ```typescript
310
+ * // Validate a 1x1 matrix
311
+ * AssertMatrix1([[5]]);
312
+ * // This would throw an exception
313
+ * AssertMatrix1([[1, 2]]); // Too many columns
314
+ * ```
315
+ * ```
305
316
  */
306
317
  export function AssertMatrix1(matrix, exception = {}) {
307
318
  // Initialize the exception with the default MatrixError class if not provided
@@ -321,13 +332,14 @@ export function AssertMatrix1(matrix, exception = {}) {
321
332
  * @throws {IAssertException} When the matrix is not a valid 2x2 matrix
322
333
  *
323
334
  * @example
324
- * ```typescript
325
- * // Validate a 2x2 matrix
326
- * AssertMatrix2([[1, 2], [3, 4]]);
327
- *
328
- * // This would throw an exception
329
- * AssertMatrix2([[1, 2, 3], [4, 5, 6]]); // Too many columns
330
- * ```
335
+ * ```typescript
336
+ * ```typescript
337
+ * // Validate a 2x2 matrix
338
+ * AssertMatrix2([[1, 2], [3, 4]]);
339
+ * // This would throw an exception
340
+ * AssertMatrix2([[1, 2, 3], [4, 5, 6]]); // Too many columns
341
+ * ```
342
+ * ```
331
343
  */
332
344
  export function AssertMatrix2(matrix, exception = {}) {
333
345
  // Initialize the exception with the default MatrixError class if not provided
@@ -347,13 +359,14 @@ export function AssertMatrix2(matrix, exception = {}) {
347
359
  * @throws {IAssertException} When the matrix is not a valid 3x3 matrix
348
360
  *
349
361
  * @example
350
- * ```typescript
351
- * // Validate a 3x3 matrix
352
- * AssertMatrix3([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
353
- *
354
- * // This would throw an exception
355
- * AssertMatrix3([[1, 2], [3, 4]]); // Too few rows and columns
356
- * ```
362
+ * ```typescript
363
+ * ```typescript
364
+ * // Validate a 3x3 matrix
365
+ * AssertMatrix3([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
366
+ * // This would throw an exception
367
+ * AssertMatrix3([[1, 2], [3, 4]]); // Too few rows and columns
368
+ * ```
369
+ * ```
357
370
  */
358
371
  export function AssertMatrix3(matrix, exception = {}) {
359
372
  // Initialize the exception with the default MatrixError class if not provided
@@ -373,18 +386,19 @@ export function AssertMatrix3(matrix, exception = {}) {
373
386
  * @throws {IAssertException} When the matrix is not a valid 4x4 matrix
374
387
  *
375
388
  * @example
376
- * ```typescript
377
- * // Validate a 4x4 matrix
378
- * AssertMatrix4([
379
- * [1, 2, 3, 4],
380
- * [5, 6, 7, 8],
381
- * [9, 10, 11, 12],
382
- * [13, 14, 15, 16]
383
- * ]);
384
- *
385
- * // This would throw an exception
386
- * AssertMatrix4([[1, 2], [3, 4]]); // Too few rows and columns
387
- * ```
389
+ * ```typescript
390
+ * ```typescript
391
+ * // Validate a 4x4 matrix
392
+ * AssertMatrix4([
393
+ * [1, 2, 3, 4],
394
+ * [5, 6, 7, 8],
395
+ * [9, 10, 11, 12],
396
+ * [13, 14, 15, 16]
397
+ * ]);
398
+ * // This would throw an exception
399
+ * AssertMatrix4([[1, 2], [3, 4]]); // Too few rows and columns
400
+ * ```
401
+ * ```
388
402
  */
389
403
  export function AssertMatrix4(matrix, exception = {}) {
390
404
  // Initialize the exception with the default MatrixError class if not provided
@@ -393,4 +407,187 @@ export function AssertMatrix4(matrix, exception = {}) {
393
407
  // This ensures the matrix is exactly 4 rows by 4 columns
394
408
  AssertMatrix(matrix, { square: true, size: 4 }, exception);
395
409
  }
410
+ /**
411
+ * Validates that an unknown value is a valid matrix without throwing an error.
412
+ *
413
+ * This function performs the same validation as AssertMatrix but returns
414
+ * a boolean instead of throwing an exception, making it suitable for
415
+ * conditional logic where exceptions are not desired.
416
+ *
417
+ * @param matrix - The value to validate as a matrix
418
+ * @param args - Validation configuration options
419
+ * @returns true if the matrix is valid, false otherwise
420
+ *
421
+ * @example
422
+ * ```typescript
423
+ * if (ValidateMatrix(someValue, { square: true })) {
424
+ * // Process the valid square matrix
425
+ * }
426
+ * ```
427
+ */
428
+ export function ValidateMatrix(matrix, args = {}) {
429
+ try {
430
+ AssertMatrix(matrix, args);
431
+ return true;
432
+ }
433
+ catch {
434
+ return false;
435
+ }
436
+ }
437
+ /**
438
+ * Validates that an unknown value is a valid 1×1 matrix without throwing an error.
439
+ *
440
+ * @param matrix - The value to validate as a 1×1 matrix
441
+ * @returns true if the matrix is valid, false otherwise
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * if (ValidateMatrix1(someValue)) {
446
+ * // Process the valid 1×1 matrix
447
+ * }
448
+ * ```
449
+ */
450
+ export function ValidateMatrix1(matrix) {
451
+ try {
452
+ AssertMatrix1(matrix);
453
+ return true;
454
+ }
455
+ catch {
456
+ return false;
457
+ }
458
+ }
459
+ /**
460
+ * Validates that an unknown value is a valid 2×2 matrix without throwing an error.
461
+ *
462
+ * @param matrix - The value to validate as a 2×2 matrix
463
+ * @returns true if the matrix is valid, false otherwise
464
+ *
465
+ * @example
466
+ * ```typescript
467
+ * if (ValidateMatrix2(someValue)) {
468
+ * // Process the valid 2×2 matrix
469
+ * }
470
+ * ```
471
+ */
472
+ export function ValidateMatrix2(matrix) {
473
+ try {
474
+ AssertMatrix2(matrix);
475
+ return true;
476
+ }
477
+ catch {
478
+ return false;
479
+ }
480
+ }
481
+ /**
482
+ * Validates that an unknown value is a valid 3×3 matrix without throwing an error.
483
+ *
484
+ * @param matrix - The value to validate as a 3×3 matrix
485
+ * @returns true if the matrix is valid, false otherwise
486
+ *
487
+ * @example
488
+ * ```typescript
489
+ * if (ValidateMatrix3(someValue)) {
490
+ * // Process the valid 3×3 matrix
491
+ * }
492
+ * ```
493
+ */
494
+ export function ValidateMatrix3(matrix) {
495
+ try {
496
+ AssertMatrix3(matrix);
497
+ return true;
498
+ }
499
+ catch {
500
+ return false;
501
+ }
502
+ }
503
+ /**
504
+ * Validates that an unknown value is a valid 4×4 matrix without throwing an error.
505
+ *
506
+ * @param matrix - The value to validate as a 4×4 matrix
507
+ * @returns true if the matrix is valid, false otherwise
508
+ *
509
+ * @example
510
+ * ```typescript
511
+ * if (ValidateMatrix4(someValue)) {
512
+ * // Process the valid 4×4 matrix
513
+ * }
514
+ * ```
515
+ */
516
+ export function ValidateMatrix4(matrix) {
517
+ try {
518
+ AssertMatrix4(matrix);
519
+ return true;
520
+ }
521
+ catch {
522
+ return false;
523
+ }
524
+ }
525
+ /**
526
+ * Validates that an unknown value is a valid matrix row without throwing an error.
527
+ *
528
+ * @param row - The value to validate as a matrix row
529
+ * @returns true if the row is valid, false otherwise
530
+ *
531
+ * @example
532
+ * ```typescript
533
+ * if (ValidateMatrixRow([1, 2, 3])) {
534
+ * // Process the valid row
535
+ * }
536
+ * ```
537
+ */
538
+ export function ValidateMatrixRow(row) {
539
+ try {
540
+ AssertMatrixRow(row);
541
+ return true;
542
+ }
543
+ catch {
544
+ return false;
545
+ }
546
+ }
547
+ /**
548
+ * Validates that an unknown value is a valid matrix value (finite number) without throwing an error.
549
+ *
550
+ * @param value - The value to validate as a matrix element
551
+ * @returns true if the value is valid, false otherwise
552
+ *
553
+ * @example
554
+ * ```typescript
555
+ * if (ValidateMatrixValue(someValue)) {
556
+ * // Process the valid numeric value
557
+ * }
558
+ * ```
559
+ */
560
+ export function ValidateMatrixValue(value) {
561
+ try {
562
+ AssertMatrixValue(value);
563
+ return true;
564
+ }
565
+ catch {
566
+ return false;
567
+ }
568
+ }
569
+ /**
570
+ * Validates that two unknown values are compatible matrices without throwing an error.
571
+ *
572
+ * @param a - The first matrix to validate
573
+ * @param b - The second matrix to validate
574
+ * @param args - Validation configuration options
575
+ * @returns true if both matrices are valid and compatible, false otherwise
576
+ *
577
+ * @example
578
+ * ```typescript
579
+ * if (ValidateMatrices(matrixA, matrixB, { transposition: true })) {
580
+ * // Process the valid and compatible matrices
581
+ * }
582
+ * ```
583
+ */
584
+ export function ValidateMatrices(a, b, args = {}) {
585
+ try {
586
+ AssertMatrices(a, b, args);
587
+ return true;
588
+ }
589
+ catch {
590
+ return false;
591
+ }
592
+ }
396
593
  //# sourceMappingURL=asserts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../src/matrices/asserts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../src/matrices/asserts.ts"],"names":[],"mappings":"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"}