@pawells/math-extended 1.0.1 → 1.0.2

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 (85) hide show
  1. package/package.json +1 -1
  2. package/build/angles.spec.d.ts +0 -2
  3. package/build/angles.spec.d.ts.map +0 -1
  4. package/build/angles.spec.js +0 -147
  5. package/build/angles.spec.js.map +0 -1
  6. package/build/clamp.spec.d.ts +0 -2
  7. package/build/clamp.spec.d.ts.map +0 -1
  8. package/build/clamp.spec.js +0 -19
  9. package/build/clamp.spec.js.map +0 -1
  10. package/build/documentation-validation.spec.d.ts +0 -11
  11. package/build/documentation-validation.spec.d.ts.map +0 -1
  12. package/build/documentation-validation.spec.js +0 -401
  13. package/build/documentation-validation.spec.js.map +0 -1
  14. package/build/interpolation.spec.d.ts +0 -2
  15. package/build/interpolation.spec.d.ts.map +0 -1
  16. package/build/interpolation.spec.js +0 -480
  17. package/build/interpolation.spec.js.map +0 -1
  18. package/build/matrices/arithmetic.spec.d.ts +0 -2
  19. package/build/matrices/arithmetic.spec.d.ts.map +0 -1
  20. package/build/matrices/arithmetic.spec.js +0 -915
  21. package/build/matrices/arithmetic.spec.js.map +0 -1
  22. package/build/matrices/asserts.spec.d.ts +0 -2
  23. package/build/matrices/asserts.spec.d.ts.map +0 -1
  24. package/build/matrices/asserts.spec.js +0 -565
  25. package/build/matrices/asserts.spec.js.map +0 -1
  26. package/build/matrices/core.spec.d.ts +0 -2
  27. package/build/matrices/core.spec.d.ts.map +0 -1
  28. package/build/matrices/core.spec.js +0 -634
  29. package/build/matrices/core.spec.js.map +0 -1
  30. package/build/matrices/decompositions.spec.d.ts +0 -2
  31. package/build/matrices/decompositions.spec.d.ts.map +0 -1
  32. package/build/matrices/decompositions.spec.js +0 -195
  33. package/build/matrices/decompositions.spec.js.map +0 -1
  34. package/build/matrices/linear-algebra.spec.d.ts +0 -2
  35. package/build/matrices/linear-algebra.spec.d.ts.map +0 -1
  36. package/build/matrices/linear-algebra.spec.js +0 -355
  37. package/build/matrices/linear-algebra.spec.js.map +0 -1
  38. package/build/matrices/normalization.spec.d.ts +0 -2
  39. package/build/matrices/normalization.spec.d.ts.map +0 -1
  40. package/build/matrices/normalization.spec.js +0 -335
  41. package/build/matrices/normalization.spec.js.map +0 -1
  42. package/build/matrices/transformations.spec.d.ts +0 -2
  43. package/build/matrices/transformations.spec.d.ts.map +0 -1
  44. package/build/matrices/transformations.spec.js +0 -755
  45. package/build/matrices/transformations.spec.js.map +0 -1
  46. package/build/quaternions/asserts.spec.d.ts +0 -2
  47. package/build/quaternions/asserts.spec.d.ts.map +0 -1
  48. package/build/quaternions/asserts.spec.js +0 -320
  49. package/build/quaternions/asserts.spec.js.map +0 -1
  50. package/build/quaternions/conversions.spec.d.ts +0 -2
  51. package/build/quaternions/conversions.spec.d.ts.map +0 -1
  52. package/build/quaternions/conversions.spec.js +0 -344
  53. package/build/quaternions/conversions.spec.js.map +0 -1
  54. package/build/quaternions/core.spec.d.ts +0 -2
  55. package/build/quaternions/core.spec.d.ts.map +0 -1
  56. package/build/quaternions/core.spec.js +0 -294
  57. package/build/quaternions/core.spec.js.map +0 -1
  58. package/build/quaternions/interpolation.spec.d.ts +0 -2
  59. package/build/quaternions/interpolation.spec.d.ts.map +0 -1
  60. package/build/quaternions/interpolation.spec.js +0 -64
  61. package/build/quaternions/interpolation.spec.js.map +0 -1
  62. package/build/quaternions/predefined.spec.d.ts +0 -2
  63. package/build/quaternions/predefined.spec.d.ts.map +0 -1
  64. package/build/quaternions/predefined.spec.js +0 -35
  65. package/build/quaternions/predefined.spec.js.map +0 -1
  66. package/build/random.spec.d.ts +0 -2
  67. package/build/random.spec.d.ts.map +0 -1
  68. package/build/random.spec.js +0 -267
  69. package/build/random.spec.js.map +0 -1
  70. package/build/vectors/asserts.spec.d.ts +0 -2
  71. package/build/vectors/asserts.spec.d.ts.map +0 -1
  72. package/build/vectors/asserts.spec.js +0 -260
  73. package/build/vectors/asserts.spec.js.map +0 -1
  74. package/build/vectors/core.spec.d.ts +0 -2
  75. package/build/vectors/core.spec.d.ts.map +0 -1
  76. package/build/vectors/core.spec.js +0 -343
  77. package/build/vectors/core.spec.js.map +0 -1
  78. package/build/vectors/interpolation.spec.d.ts +0 -2
  79. package/build/vectors/interpolation.spec.d.ts.map +0 -1
  80. package/build/vectors/interpolation.spec.js +0 -378
  81. package/build/vectors/interpolation.spec.js.map +0 -1
  82. package/build/vectors/predefined.spec.d.ts +0 -2
  83. package/build/vectors/predefined.spec.d.ts.map +0 -1
  84. package/build/vectors/predefined.spec.js +0 -333
  85. package/build/vectors/predefined.spec.js.map +0 -1
@@ -1,335 +0,0 @@
1
- import { MatrixFrobeniusNorm, MatrixSpectralNorm, Matrix1Norm, MatrixInfinityNorm, MatrixNuclearNorm, MatrixMaxNorm, MatrixPNorm } from './normalization.js';
2
- import { MatrixIdentity } from './core.js';
3
- describe('Matrix Normalizations', () => {
4
- describe('MatrixFrobeniusNorm', () => {
5
- test('should compute Frobenius norm for 2x2 matrix', () => {
6
- const matrix = [[3, 4], [0, 0]];
7
- expect(MatrixFrobeniusNorm(matrix)).toBe(5); // sqrt(3² + 4²) = 5
8
- });
9
- test('should compute Frobenius norm for identity matrix', () => {
10
- const matrix = MatrixIdentity(2);
11
- expect(MatrixFrobeniusNorm(matrix)).toBe(Math.sqrt(2)); // sqrt(1² + 1²) = sqrt(2)
12
- });
13
- test('should compute Frobenius norm for zero matrix', () => {
14
- const matrix = [[0, 0], [0, 0]];
15
- expect(MatrixFrobeniusNorm(matrix)).toBe(0);
16
- });
17
- test('should compute Frobenius norm for rectangular matrix', () => {
18
- const matrix = [[1, 2, 3], [4, 5, 6]];
19
- const expected = Math.sqrt(1 + 4 + 9 + 16 + 25 + 36); // sqrt(91)
20
- expect(MatrixFrobeniusNorm(matrix)).toBeCloseTo(expected, 10);
21
- });
22
- test('should handle single element matrix', () => {
23
- const matrix = [[7]];
24
- expect(MatrixFrobeniusNorm(matrix)).toBe(7);
25
- });
26
- test('should handle negative values', () => {
27
- const matrix = [[-3, 4], [0, -5]];
28
- const expected = Math.sqrt(9 + 16 + 0 + 25); // sqrt(50)
29
- expect(MatrixFrobeniusNorm(matrix)).toBeCloseTo(expected, 10);
30
- });
31
- test('should throw for empty matrix', () => {
32
- const matrix = [];
33
- expect(() => MatrixFrobeniusNorm(matrix)).toThrow('Matrix must have at least one row and one column');
34
- });
35
- test('should throw error for invalid matrix', () => {
36
- expect(() => MatrixFrobeniusNorm('invalid')).toThrow();
37
- });
38
- });
39
- describe('MatrixSpectralNorm', () => {
40
- test('should compute spectral norm for diagonal matrix', () => {
41
- const matrix = [[3, 0], [0, 4]];
42
- expect(MatrixSpectralNorm(matrix)).toBe(4); // largest singular value
43
- });
44
- test('should compute spectral norm for identity matrix', () => {
45
- const matrix = MatrixIdentity(3);
46
- expect(MatrixSpectralNorm(matrix)).toBe(1); // all singular values are 1
47
- });
48
- test('should compute spectral norm for zero matrix', () => {
49
- const matrix = [[0, 0], [0, 0]];
50
- expect(MatrixSpectralNorm(matrix)).toBe(0);
51
- });
52
- test('should handle single element matrix', () => {
53
- const matrix = [[5]];
54
- expect(MatrixSpectralNorm(matrix)).toBeCloseTo(5);
55
- });
56
- test('should handle rectangular matrix', () => {
57
- const matrix = [[1, 0], [0, 0], [0, 0]];
58
- expect(MatrixSpectralNorm(matrix)).toBe(1);
59
- });
60
- test('should throw for empty matrix', () => {
61
- const matrix = [];
62
- expect(() => MatrixSpectralNorm(matrix)).toThrow('Matrix must have at least one row and one column');
63
- });
64
- test('should throw error for invalid matrix', () => {
65
- expect(() => MatrixSpectralNorm('invalid')).toThrow();
66
- });
67
- });
68
- describe('Matrix1Norm', () => {
69
- test('should compute 1-norm for square matrix', () => {
70
- const matrix = [[1, 2], [3, 4]];
71
- expect(Matrix1Norm(matrix)).toBe(6); // max column sum: max(|1|+|3|, |2|+|4|) = max(4, 6) = 6
72
- });
73
- test('should compute 1-norm for rectangular matrix', () => {
74
- const matrix = [[1, 2, 3], [4, 5, 6]];
75
- const expected = Math.max(1 + 4, 2 + 5, 3 + 6); // max(5, 7, 9) = 9
76
- expect(Matrix1Norm(matrix)).toBe(expected);
77
- });
78
- test('should handle negative values', () => {
79
- const matrix = [[-1, 2], [3, -4]];
80
- const expected = Math.max(1 + 3, 2 + 4); // max(4, 6) = 6
81
- expect(Matrix1Norm(matrix)).toBe(expected);
82
- });
83
- test('should compute 1-norm for identity matrix', () => {
84
- const matrix = MatrixIdentity(3);
85
- expect(Matrix1Norm(matrix)).toBe(1); // each column sums to 1
86
- });
87
- test('should compute 1-norm for zero matrix', () => {
88
- const matrix = [[0, 0], [0, 0]];
89
- expect(Matrix1Norm(matrix)).toBe(0);
90
- });
91
- test('should handle single element matrix', () => {
92
- const matrix = [[7]];
93
- expect(Matrix1Norm(matrix)).toBe(7);
94
- });
95
- test('should throw for empty matrix', () => {
96
- const matrix = [];
97
- expect(() => Matrix1Norm(matrix)).toThrow('Matrix must have at least one row and one column');
98
- });
99
- test('should handle single column matrix', () => {
100
- const matrix = [[1], [2], [3]];
101
- expect(Matrix1Norm(matrix)).toBe(6); // sum of absolute values: 1 + 2 + 3 = 6
102
- });
103
- });
104
- describe('MatrixInfinityNorm', () => {
105
- test('should compute infinity norm for square matrix', () => {
106
- const matrix = [[1, 2], [3, 4]];
107
- expect(MatrixInfinityNorm(matrix)).toBe(7); // max row sum: max(|1|+|2|, |3|+|4|) = max(3, 7) = 7
108
- });
109
- test('should compute infinity norm for rectangular matrix', () => {
110
- const matrix = [[1, 2, 3], [4, 5, 6]];
111
- const expected = Math.max(1 + 2 + 3, 4 + 5 + 6); // max(6, 15) = 15
112
- expect(MatrixInfinityNorm(matrix)).toBe(expected);
113
- });
114
- test('should handle negative values', () => {
115
- const matrix = [[-1, 2], [3, -4]];
116
- const expected = Math.max(1 + 2, 3 + 4); // max(3, 7) = 7
117
- expect(MatrixInfinityNorm(matrix)).toBe(expected);
118
- });
119
- test('should compute infinity norm for identity matrix', () => {
120
- const matrix = MatrixIdentity(3);
121
- expect(MatrixInfinityNorm(matrix)).toBe(1); // each row sums to 1
122
- });
123
- test('should compute infinity norm for zero matrix', () => {
124
- const matrix = [[0, 0], [0, 0]];
125
- expect(MatrixInfinityNorm(matrix)).toBe(0);
126
- });
127
- test('should handle single element matrix', () => {
128
- const matrix = [[7]];
129
- expect(MatrixInfinityNorm(matrix)).toBe(7);
130
- });
131
- test('should throw for empty matrix', () => {
132
- const matrix = [];
133
- expect(() => MatrixInfinityNorm(matrix)).toThrow('Matrix must have at least one row and one column');
134
- });
135
- test('should handle single row matrix', () => {
136
- const matrix = [[1, 2, 3]];
137
- expect(MatrixInfinityNorm(matrix)).toBe(6); // sum of absolute values: 1 + 2 + 3 = 6
138
- });
139
- });
140
- describe('MatrixNuclearNorm', () => {
141
- test('should compute nuclear norm for diagonal matrix', () => {
142
- const matrix = [[3, 0], [0, 4]];
143
- expect(MatrixNuclearNorm(matrix)).toBe(7); // sum of singular values: 3 + 4 = 7
144
- });
145
- test('should compute nuclear norm for identity matrix', () => {
146
- const matrix = MatrixIdentity(3);
147
- expect(MatrixNuclearNorm(matrix)).toBe(3); // sum of all singular values (all are 1)
148
- });
149
- test('should compute nuclear norm for zero matrix', () => {
150
- const matrix = [[0, 0], [0, 0]];
151
- expect(MatrixNuclearNorm(matrix)).toBe(0);
152
- });
153
- test('should handle single element matrix', () => {
154
- const matrix = [[5]];
155
- expect(MatrixNuclearNorm(matrix)).toBe(5);
156
- });
157
- test('should handle rectangular matrix', () => {
158
- const matrix = [[1, 0], [0, 0], [0, 0]];
159
- expect(MatrixNuclearNorm(matrix)).toBe(1); // only one non-zero singular value
160
- });
161
- test('should throw for empty matrix', () => {
162
- const matrix = [];
163
- expect(() => MatrixNuclearNorm(matrix)).toThrow('Matrix must have at least one row and one column');
164
- });
165
- test('should throw error for invalid matrix', () => {
166
- expect(() => MatrixNuclearNorm('invalid')).toThrow();
167
- });
168
- });
169
- describe('MatrixMaxNorm', () => {
170
- test('should compute max norm for square matrix', () => {
171
- const matrix = [[1, -5], [3, 2]];
172
- expect(MatrixMaxNorm(matrix)).toBe(5); // max absolute value
173
- });
174
- test('should compute max norm for rectangular matrix', () => {
175
- const matrix = [[1, 2, -8], [4, 5, 6]];
176
- expect(MatrixMaxNorm(matrix)).toBe(8); // max absolute value
177
- });
178
- test('should handle all positive values', () => {
179
- const matrix = [[1, 2], [3, 4]];
180
- expect(MatrixMaxNorm(matrix)).toBe(4);
181
- });
182
- test('should handle all negative values', () => {
183
- const matrix = [[-1, -2], [-3, -4]];
184
- expect(MatrixMaxNorm(matrix)).toBe(4);
185
- });
186
- test('should compute max norm for identity matrix', () => {
187
- const matrix = MatrixIdentity(3);
188
- expect(MatrixMaxNorm(matrix)).toBe(1);
189
- });
190
- test('should compute max norm for zero matrix', () => {
191
- const matrix = [[0, 0], [0, 0]];
192
- expect(MatrixMaxNorm(matrix)).toBe(0);
193
- });
194
- test('should handle single element matrix', () => {
195
- const matrix = [[-7]];
196
- expect(MatrixMaxNorm(matrix)).toBe(7);
197
- });
198
- test('should throw for empty matrix', () => {
199
- const matrix = [];
200
- expect(() => MatrixMaxNorm(matrix)).toThrow('Matrix must have at least one row and one column');
201
- });
202
- test('should handle fractional values', () => {
203
- const matrix = [[0.1, -0.5], [0.3, 0.2]];
204
- expect(MatrixMaxNorm(matrix)).toBe(0.5);
205
- });
206
- });
207
- describe('MatrixPNorm', () => {
208
- test('should compute 1-norm (p=1)', () => {
209
- const matrix = [[1, 2], [3, 4]];
210
- const expected = 1 + 2 + 3 + 4; // sum of absolute values = 10
211
- expect(MatrixPNorm(matrix, 1)).toBe(expected);
212
- });
213
- test('should compute 2-norm (p=2, Frobenius norm)', () => {
214
- const matrix = [[3, 4], [0, 0]];
215
- const expected = Math.sqrt(9 + 16); // sqrt(25) = 5
216
- expect(MatrixPNorm(matrix, 2)).toBe(expected);
217
- });
218
- test('should compute infinity norm (p=Infinity)', () => {
219
- const matrix = [[1, -5], [3, 2]];
220
- expect(MatrixPNorm(matrix, Infinity)).toBe(5); // max absolute value
221
- });
222
- test('should compute 3-norm', () => {
223
- const matrix = [[1, 2], [3, 4]];
224
- const expected = Math.pow(1 + 8 + 27 + 64, 1 / 3); // (1³ + 2³ + 3³ + 4³)^(1/3)
225
- expect(MatrixPNorm(matrix, 3)).toBeCloseTo(expected, 10);
226
- });
227
- test('should handle negative values with even p', () => {
228
- const matrix = [[-1, 2], [-3, 4]];
229
- const expected = Math.sqrt(1 + 4 + 9 + 16); // sqrt(30)
230
- expect(MatrixPNorm(matrix, 2)).toBeCloseTo(expected, 10);
231
- });
232
- test('should handle negative values with odd p', () => {
233
- const matrix = [[-1, 2], [-3, 4]];
234
- const expected = Math.pow(1 + 8 + 27 + 64, 1 / 3); // (|-1|³ + |2|³ + |-3|³ + |4|³)^(1/3)
235
- expect(MatrixPNorm(matrix, 3)).toBeCloseTo(expected, 10);
236
- });
237
- test('should compute p-norm for identity matrix', () => {
238
- const matrix = MatrixIdentity(2);
239
- const expected = Math.pow(2, 1 / 2); // (1² + 1²)^(1/2) = sqrt(2)
240
- expect(MatrixPNorm(matrix, 2)).toBeCloseTo(expected, 10);
241
- });
242
- test('should compute p-norm for zero matrix', () => {
243
- const matrix = [[0, 0], [0, 0]];
244
- expect(MatrixPNorm(matrix, 2)).toBe(0);
245
- expect(MatrixPNorm(matrix, 5)).toBe(0);
246
- });
247
- test('should handle single element matrix', () => {
248
- const matrix = [[5]];
249
- expect(MatrixPNorm(matrix, 2)).toBeCloseTo(5, 10);
250
- expect(MatrixPNorm(matrix, 3)).toBeCloseTo(5, 10);
251
- });
252
- test('should throw for empty matrix', () => {
253
- const matrix = [];
254
- expect(() => MatrixPNorm(matrix, 2)).toThrow('Matrix must have at least one row and one column');
255
- });
256
- test('should throw error for p < 1', () => {
257
- const matrix = [[1, 2]];
258
- expect(() => MatrixPNorm(matrix, 0.5)).toThrow('p-norm parameter must be >= 1');
259
- expect(() => MatrixPNorm(matrix, 0)).toThrow('p-norm parameter must be >= 1');
260
- expect(() => MatrixPNorm(matrix, -1)).toThrow('p-norm parameter must be >= 1');
261
- });
262
- test('should handle edge case p = 1', () => {
263
- const matrix = [[1, 2], [3, 4]];
264
- expect(MatrixPNorm(matrix, 1)).toBe(10); // sum of absolute values
265
- });
266
- test('should handle large p values', () => {
267
- const matrix = [[1, 5], [2, 3]];
268
- const result = MatrixPNorm(matrix, 100);
269
- expect(result).toBeCloseTo(5, 10); // approaches max norm as p increases
270
- });
271
- test('should be consistent with other norm functions', () => {
272
- const matrix = [[1, 2], [3, 4]];
273
- // p=1 should match sum of absolute values
274
- expect(MatrixPNorm(matrix, 1)).toBe(10);
275
- // p=2 should match Frobenius norm
276
- expect(MatrixPNorm(matrix, 2)).toBeCloseTo(MatrixFrobeniusNorm(matrix), 10);
277
- // p=Infinity should match max norm
278
- expect(MatrixPNorm(matrix, Infinity)).toBe(MatrixMaxNorm(matrix));
279
- });
280
- });
281
- describe('Error handling', () => {
282
- test('should throw error for invalid matrices across all norm functions', () => {
283
- const invalidInputs = [
284
- 'invalid',
285
- 123,
286
- null,
287
- undefined,
288
- [['not', 'numbers']],
289
- [[1, 2], [3]], // inconsistent row lengths
290
- ];
291
- const normFunctions = [
292
- MatrixFrobeniusNorm,
293
- MatrixSpectralNorm,
294
- Matrix1Norm,
295
- MatrixInfinityNorm,
296
- MatrixNuclearNorm,
297
- MatrixMaxNorm,
298
- ];
299
- invalidInputs.forEach((input) => {
300
- normFunctions.forEach((func) => {
301
- expect(() => func(input)).toThrow();
302
- });
303
- expect(() => MatrixPNorm(input, 2)).toThrow();
304
- });
305
- });
306
- });
307
- describe('Performance and edge cases', () => {
308
- test('should handle large matrices efficiently', () => {
309
- // Create a 10x10 matrix with known values
310
- const size = 10;
311
- const matrix = [];
312
- for (let i = 0; i < size; i++) {
313
- const row = [];
314
- for (let j = 0; j < size; j++) {
315
- row.push(i + j + 1);
316
- }
317
- matrix.push(row);
318
- }
319
- // These should complete without timeout
320
- expect(typeof MatrixFrobeniusNorm(matrix)).toBe('number');
321
- expect(typeof Matrix1Norm(matrix)).toBe('number');
322
- expect(typeof MatrixInfinityNorm(matrix)).toBe('number');
323
- expect(typeof MatrixMaxNorm(matrix)).toBe('number');
324
- expect(typeof MatrixPNorm(matrix, 2)).toBe('number');
325
- });
326
- test('should maintain precision for small values', () => {
327
- const matrix = [[1e-10, 2e-10], [3e-10, 4e-10]];
328
- expect(MatrixFrobeniusNorm(matrix)).toBeGreaterThan(0);
329
- expect(MatrixMaxNorm(matrix)).toBe(4e-10);
330
- expect(Matrix1Norm(matrix)).toBe(6e-10);
331
- expect(MatrixInfinityNorm(matrix)).toBeCloseTo(7e-10);
332
- });
333
- });
334
- });
335
- //# sourceMappingURL=normalization.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalization.spec.js","sourceRoot":"","sources":["../../src/matrices/normalization.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transformations.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformations.spec.d.ts","sourceRoot":"","sources":["../../src/matrices/transformations.spec.ts"],"names":[],"mappings":""}