@johnhenry/math 0.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 (242) hide show
  1. package/README.md +165 -0
  2. package/dist/Bivector4.d.ts +52 -0
  3. package/dist/Bivector4.d.ts.map +1 -0
  4. package/dist/Bivector4.js +105 -0
  5. package/dist/Bivector4.js.map +1 -0
  6. package/dist/CellGraph.d.ts +259 -0
  7. package/dist/CellGraph.d.ts.map +1 -0
  8. package/dist/CellGraph.js +637 -0
  9. package/dist/CellGraph.js.map +1 -0
  10. package/dist/Clifford4Internal.d.ts +35 -0
  11. package/dist/Clifford4Internal.d.ts.map +1 -0
  12. package/dist/Clifford4Internal.js +86 -0
  13. package/dist/Clifford4Internal.js.map +1 -0
  14. package/dist/Combinatorics.d.ts +61 -0
  15. package/dist/Combinatorics.d.ts.map +1 -0
  16. package/dist/Combinatorics.js +186 -0
  17. package/dist/Combinatorics.js.map +1 -0
  18. package/dist/CombinatoricsGenerators.d.ts +44 -0
  19. package/dist/CombinatoricsGenerators.d.ts.map +1 -0
  20. package/dist/CombinatoricsGenerators.js +148 -0
  21. package/dist/CombinatoricsGenerators.js.map +1 -0
  22. package/dist/ComplexMath.d.ts +46 -0
  23. package/dist/ComplexMath.d.ts.map +1 -0
  24. package/dist/ComplexMath.js +98 -0
  25. package/dist/ComplexMath.js.map +1 -0
  26. package/dist/ComplexNumber.d.ts +174 -0
  27. package/dist/ComplexNumber.d.ts.map +1 -0
  28. package/dist/ComplexNumber.js +443 -0
  29. package/dist/ComplexNumber.js.map +1 -0
  30. package/dist/Cycle.d.ts +42 -0
  31. package/dist/Cycle.d.ts.map +1 -0
  32. package/dist/Cycle.js +120 -0
  33. package/dist/Cycle.js.map +1 -0
  34. package/dist/Decimal.d.ts +45 -0
  35. package/dist/Decimal.d.ts.map +1 -0
  36. package/dist/Decimal.js +135 -0
  37. package/dist/Decimal.js.map +1 -0
  38. package/dist/Distributions.d.ts +55 -0
  39. package/dist/Distributions.d.ts.map +1 -0
  40. package/dist/Distributions.js +222 -0
  41. package/dist/Distributions.js.map +1 -0
  42. package/dist/DualNumber.d.ts +42 -0
  43. package/dist/DualNumber.d.ts.map +1 -0
  44. package/dist/DualNumber.js +91 -0
  45. package/dist/DualNumber.js.map +1 -0
  46. package/dist/Environment.d.ts +44 -0
  47. package/dist/Environment.d.ts.map +1 -0
  48. package/dist/Environment.js +129 -0
  49. package/dist/Environment.js.map +1 -0
  50. package/dist/Expression.d.ts +19 -0
  51. package/dist/Expression.d.ts.map +1 -0
  52. package/dist/Expression.js +43 -0
  53. package/dist/Expression.js.map +1 -0
  54. package/dist/FFT.d.ts +21 -0
  55. package/dist/FFT.d.ts.map +1 -0
  56. package/dist/FFT.js +136 -0
  57. package/dist/FFT.js.map +1 -0
  58. package/dist/GeometricAlgebra4.d.ts +73 -0
  59. package/dist/GeometricAlgebra4.d.ts.map +1 -0
  60. package/dist/GeometricAlgebra4.js +115 -0
  61. package/dist/GeometricAlgebra4.js.map +1 -0
  62. package/dist/Geometry.d.ts +41 -0
  63. package/dist/Geometry.d.ts.map +1 -0
  64. package/dist/Geometry.js +167 -0
  65. package/dist/Geometry.js.map +1 -0
  66. package/dist/Graph.d.ts +72 -0
  67. package/dist/Graph.d.ts.map +1 -0
  68. package/dist/Graph.js +337 -0
  69. package/dist/Graph.js.map +1 -0
  70. package/dist/Graph3DUtils.d.ts +80 -0
  71. package/dist/Graph3DUtils.d.ts.map +1 -0
  72. package/dist/Graph3DUtils.js +156 -0
  73. package/dist/Graph3DUtils.js.map +1 -0
  74. package/dist/GraphUtils.d.ts +67 -0
  75. package/dist/GraphUtils.d.ts.map +1 -0
  76. package/dist/GraphUtils.js +72 -0
  77. package/dist/GraphUtils.js.map +1 -0
  78. package/dist/GroupTheory.d.ts +73 -0
  79. package/dist/GroupTheory.d.ts.map +1 -0
  80. package/dist/GroupTheory.js +194 -0
  81. package/dist/GroupTheory.js.map +1 -0
  82. package/dist/IntUtils.d.ts +33 -0
  83. package/dist/IntUtils.d.ts.map +1 -0
  84. package/dist/IntUtils.js +185 -0
  85. package/dist/IntUtils.js.map +1 -0
  86. package/dist/Interval.d.ts +44 -0
  87. package/dist/Interval.d.ts.map +1 -0
  88. package/dist/Interval.js +165 -0
  89. package/dist/Interval.js.map +1 -0
  90. package/dist/Lattice.d.ts +48 -0
  91. package/dist/Lattice.d.ts.map +1 -0
  92. package/dist/Lattice.js +65 -0
  93. package/dist/Lattice.js.map +1 -0
  94. package/dist/Logic.d.ts +22 -0
  95. package/dist/Logic.d.ts.map +1 -0
  96. package/dist/Logic.js +34 -0
  97. package/dist/Logic.js.map +1 -0
  98. package/dist/MatrixMath.d.ts +71 -0
  99. package/dist/MatrixMath.d.ts.map +1 -0
  100. package/dist/MatrixMath.js +302 -0
  101. package/dist/MatrixMath.js.map +1 -0
  102. package/dist/NumberTheory.d.ts +49 -0
  103. package/dist/NumberTheory.d.ts.map +1 -0
  104. package/dist/NumberTheory.js +230 -0
  105. package/dist/NumberTheory.js.map +1 -0
  106. package/dist/Numerical.d.ts +85 -0
  107. package/dist/Numerical.d.ts.map +1 -0
  108. package/dist/Numerical.js +343 -0
  109. package/dist/Numerical.js.map +1 -0
  110. package/dist/Permutation.d.ts +43 -0
  111. package/dist/Permutation.d.ts.map +1 -0
  112. package/dist/Permutation.js +142 -0
  113. package/dist/Permutation.js.map +1 -0
  114. package/dist/Polygon.d.ts +64 -0
  115. package/dist/Polygon.d.ts.map +1 -0
  116. package/dist/Polygon.js +221 -0
  117. package/dist/Polygon.js.map +1 -0
  118. package/dist/PolynomialRing.d.ts +74 -0
  119. package/dist/PolynomialRing.d.ts.map +1 -0
  120. package/dist/PolynomialRing.js +231 -0
  121. package/dist/PolynomialRing.js.map +1 -0
  122. package/dist/Quaternion.d.ts +37 -0
  123. package/dist/Quaternion.d.ts.map +1 -0
  124. package/dist/Quaternion.js +106 -0
  125. package/dist/Quaternion.js.map +1 -0
  126. package/dist/Rational.d.ts +34 -0
  127. package/dist/Rational.d.ts.map +1 -0
  128. package/dist/Rational.js +136 -0
  129. package/dist/Rational.js.map +1 -0
  130. package/dist/RealMath.d.ts +112 -0
  131. package/dist/RealMath.d.ts.map +1 -0
  132. package/dist/RealMath.js +262 -0
  133. package/dist/RealMath.js.map +1 -0
  134. package/dist/Rotor4.d.ts +180 -0
  135. package/dist/Rotor4.d.ts.map +1 -0
  136. package/dist/Rotor4.js +388 -0
  137. package/dist/Rotor4.js.map +1 -0
  138. package/dist/SpecialFunctions.d.ts +32 -0
  139. package/dist/SpecialFunctions.d.ts.map +1 -0
  140. package/dist/SpecialFunctions.js +161 -0
  141. package/dist/SpecialFunctions.js.map +1 -0
  142. package/dist/SpecialOperator.d.ts +21 -0
  143. package/dist/SpecialOperator.d.ts.map +1 -0
  144. package/dist/SpecialOperator.js +26 -0
  145. package/dist/SpecialOperator.js.map +1 -0
  146. package/dist/Statistics.d.ts +50 -0
  147. package/dist/Statistics.d.ts.map +1 -0
  148. package/dist/Statistics.js +131 -0
  149. package/dist/Statistics.js.map +1 -0
  150. package/dist/StringEvaluator.d.ts +48 -0
  151. package/dist/StringEvaluator.d.ts.map +1 -0
  152. package/dist/StringEvaluator.js +190 -0
  153. package/dist/StringEvaluator.js.map +1 -0
  154. package/dist/Structure.d.ts +130 -0
  155. package/dist/Structure.d.ts.map +1 -0
  156. package/dist/Structure.js +394 -0
  157. package/dist/Structure.js.map +1 -0
  158. package/dist/Symbolic.d.ts +501 -0
  159. package/dist/Symbolic.d.ts.map +1 -0
  160. package/dist/Symbolic.js +4077 -0
  161. package/dist/Symbolic.js.map +1 -0
  162. package/dist/Type.d.ts +31 -0
  163. package/dist/Type.d.ts.map +1 -0
  164. package/dist/Type.js +47 -0
  165. package/dist/Type.js.map +1 -0
  166. package/dist/Utilities.d.ts +27 -0
  167. package/dist/Utilities.d.ts.map +1 -0
  168. package/dist/Utilities.js +47 -0
  169. package/dist/Utilities.js.map +1 -0
  170. package/dist/Vec4.d.ts +39 -0
  171. package/dist/Vec4.d.ts.map +1 -0
  172. package/dist/Vec4.js +82 -0
  173. package/dist/Vec4.js.map +1 -0
  174. package/dist/Vector.d.ts +83 -0
  175. package/dist/Vector.d.ts.map +1 -0
  176. package/dist/Vector.js +173 -0
  177. package/dist/Vector.js.map +1 -0
  178. package/dist/VectorCalculus.d.ts +42 -0
  179. package/dist/VectorCalculus.d.ts.map +1 -0
  180. package/dist/VectorCalculus.js +82 -0
  181. package/dist/VectorCalculus.js.map +1 -0
  182. package/dist/VectorUtils.d.ts +172 -0
  183. package/dist/VectorUtils.d.ts.map +1 -0
  184. package/dist/VectorUtils.js +706 -0
  185. package/dist/VectorUtils.js.map +1 -0
  186. package/dist/differentiation-rules.d.ts +21 -0
  187. package/dist/differentiation-rules.d.ts.map +1 -0
  188. package/dist/differentiation-rules.js +52 -0
  189. package/dist/differentiation-rules.js.map +1 -0
  190. package/dist/index.d.ts +52 -0
  191. package/dist/index.d.ts.map +1 -0
  192. package/dist/index.js +66 -0
  193. package/dist/index.js.map +1 -0
  194. package/package.json +68 -0
  195. package/src/Bivector4.ts +136 -0
  196. package/src/CellGraph.ts +669 -0
  197. package/src/Clifford4Internal.ts +90 -0
  198. package/src/Combinatorics.ts +183 -0
  199. package/src/CombinatoricsGenerators.ts +144 -0
  200. package/src/ComplexMath.ts +162 -0
  201. package/src/ComplexNumber.ts +491 -0
  202. package/src/Cycle.ts +126 -0
  203. package/src/Decimal.ts +145 -0
  204. package/src/Distributions.ts +269 -0
  205. package/src/DualNumber.ts +105 -0
  206. package/src/Environment.ts +127 -0
  207. package/src/Expression.ts +48 -0
  208. package/src/FFT.ts +146 -0
  209. package/src/GeometricAlgebra4.ts +157 -0
  210. package/src/Geometry.ts +173 -0
  211. package/src/Graph.ts +337 -0
  212. package/src/Graph3DUtils.ts +269 -0
  213. package/src/GraphUtils.ts +159 -0
  214. package/src/GroupTheory.ts +214 -0
  215. package/src/IntUtils.ts +200 -0
  216. package/src/Interval.ts +171 -0
  217. package/src/Lattice.ts +87 -0
  218. package/src/Logic.ts +38 -0
  219. package/src/MatrixMath.ts +326 -0
  220. package/src/NumberTheory.ts +228 -0
  221. package/src/Numerical.ts +390 -0
  222. package/src/Permutation.ts +148 -0
  223. package/src/Polygon.ts +229 -0
  224. package/src/PolynomialRing.ts +242 -0
  225. package/src/Quaternion.ts +125 -0
  226. package/src/Rational.ts +148 -0
  227. package/src/RealMath.ts +346 -0
  228. package/src/Rotor4.ts +440 -0
  229. package/src/SpecialFunctions.ts +152 -0
  230. package/src/SpecialOperator.ts +28 -0
  231. package/src/Statistics.ts +170 -0
  232. package/src/StringEvaluator.ts +208 -0
  233. package/src/Structure.ts +481 -0
  234. package/src/Symbolic.ts +4313 -0
  235. package/src/Type.ts +48 -0
  236. package/src/Utilities.ts +49 -0
  237. package/src/Vec4.ts +98 -0
  238. package/src/Vector.ts +189 -0
  239. package/src/VectorCalculus.ts +87 -0
  240. package/src/VectorUtils.ts +797 -0
  241. package/src/differentiation-rules.ts +73 -0
  242. package/src/index.ts +140 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interval.js","sourceRoot":"","sources":["../src/Interval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Lattice — axial-coordinate neighbor helpers for hexagonal and triangular
3
+ * grids (part of johnhenry/math#30's "lattice-geometry helpers" item,
4
+ * upstream for the generalized Wang tile laboratory,
5
+ * johnhenry/mallory#92). Both the solver (adjacency for constraint
6
+ * propagation) and the app (drawing) need a shared, tested "direction d's
7
+ * neighbor" definition per lattice — this is that definition, kept purely
8
+ * combinatorial (integer coordinate offsets), independent of any pixel
9
+ * geometry (see {@link Polygon.regular} for that side).
10
+ */
11
+ /** One of the 6 axial directions on a hex grid, in the standard pointy-top ordering (E, NE, NW, W, SW, SE). */
12
+ export type HexDirection = 0 | 1 | 2 | 3 | 4 | 5;
13
+ /**
14
+ * The 6 axial-coordinate offsets, indexed by {@link HexDirection}. Opposite
15
+ * directions are `d` and `(d+3) % 6` — verified: `hexNeighbor` in direction
16
+ * `d` followed by `hexNeighbor` in direction `(d+3) % 6` returns to the
17
+ * start cell, for every `d`.
18
+ */
19
+ export declare const HEX_AXIAL_DIRECTIONS: ReadonlyArray<readonly [number, number]>;
20
+ /** The axial-coordinate neighbor of `(q, r)` in direction `d`. */
21
+ export declare function hexNeighbor(q: number, r: number, d: HexDirection): readonly [number, number];
22
+ /** Every axial neighbor of `(q, r)`, in direction order. */
23
+ export declare function hexNeighbors(q: number, r: number): Array<readonly [number, number]>;
24
+ /**
25
+ * A triangular lattice cell's orientation: `(x, y)` with `x + y` even is
26
+ * "up" (a triangle pointing up, vertex at the top edge), odd is "down" —
27
+ * a lattice of alternating up/down triangles tiling the plane, indexed by
28
+ * integer `(x, y)` (NOT pixel coordinates; see {@link Polygon.regular} for
29
+ * that side).
30
+ */
31
+ export type TriOrientation = "up" | "down";
32
+ export declare function triOrientation(x: number, y: number): TriOrientation;
33
+ /** An "up" triangle's 3 edge-sharing neighbors (all "down"): its left/right neighbors in the same row, and the one above sharing its top edge. */
34
+ export type UpTriDirection = "left" | "right" | "top";
35
+ /** A "down" triangle's 3 edge-sharing neighbors (all "up"): its left/right neighbors in the same row, and the one below sharing its bottom edge. */
36
+ export type DownTriDirection = "left" | "right" | "bottom";
37
+ export type TriDirection = UpTriDirection | DownTriDirection;
38
+ /**
39
+ * The neighbor of triangular cell `(x, y)` in `direction` — reciprocal
40
+ * pairs: an "up" cell's `"right"` neighbor's `"left"` is itself, and an
41
+ * "up" cell's `"top"` neighbor's `"bottom"` is itself (verified before
42
+ * writing tests). `direction` must match `(x, y)`'s own orientation
43
+ * (`"top"` is only valid on an "up" cell, `"bottom"` only on "down").
44
+ */
45
+ export declare function triNeighbor(x: number, y: number, direction: TriDirection): readonly [number, number];
46
+ /** Every edge-sharing neighbor of triangular cell `(x, y)`, in the direction order valid for its own orientation. */
47
+ export declare function triNeighbors(x: number, y: number): Array<readonly [number, number]>;
48
+ //# sourceMappingURL=Lattice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lattice.d.ts","sourceRoot":"","sources":["../src/Lattice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,+GAA+G;AAC/G,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAOzE,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAG5F;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,CAAC;AAE3C,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,cAAc,CAEnE;AAED,kJAAkJ;AAClJ,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AACtD,oJAAoJ;AACpJ,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAYpG;AAED,qHAAqH;AACrH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKnF"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Lattice — axial-coordinate neighbor helpers for hexagonal and triangular
3
+ * grids (part of johnhenry/math#30's "lattice-geometry helpers" item,
4
+ * upstream for the generalized Wang tile laboratory,
5
+ * johnhenry/mallory#92). Both the solver (adjacency for constraint
6
+ * propagation) and the app (drawing) need a shared, tested "direction d's
7
+ * neighbor" definition per lattice — this is that definition, kept purely
8
+ * combinatorial (integer coordinate offsets), independent of any pixel
9
+ * geometry (see {@link Polygon.regular} for that side).
10
+ */
11
+ /**
12
+ * The 6 axial-coordinate offsets, indexed by {@link HexDirection}. Opposite
13
+ * directions are `d` and `(d+3) % 6` — verified: `hexNeighbor` in direction
14
+ * `d` followed by `hexNeighbor` in direction `(d+3) % 6` returns to the
15
+ * start cell, for every `d`.
16
+ */
17
+ export const HEX_AXIAL_DIRECTIONS = [
18
+ [1, 0],
19
+ [1, -1],
20
+ [0, -1],
21
+ [-1, 0],
22
+ [-1, 1],
23
+ [0, 1],
24
+ ];
25
+ /** The axial-coordinate neighbor of `(q, r)` in direction `d`. */
26
+ export function hexNeighbor(q, r, d) {
27
+ const [dq, dr] = HEX_AXIAL_DIRECTIONS[d];
28
+ return [q + dq, r + dr];
29
+ }
30
+ /** Every axial neighbor of `(q, r)`, in direction order. */
31
+ export function hexNeighbors(q, r) {
32
+ return [0, 1, 2, 3, 4, 5].map((d) => hexNeighbor(q, r, d));
33
+ }
34
+ export function triOrientation(x, y) {
35
+ return (((x + y) % 2) + 2) % 2 === 0 ? "up" : "down";
36
+ }
37
+ /**
38
+ * The neighbor of triangular cell `(x, y)` in `direction` — reciprocal
39
+ * pairs: an "up" cell's `"right"` neighbor's `"left"` is itself, and an
40
+ * "up" cell's `"top"` neighbor's `"bottom"` is itself (verified before
41
+ * writing tests). `direction` must match `(x, y)`'s own orientation
42
+ * (`"top"` is only valid on an "up" cell, `"bottom"` only on "down").
43
+ */
44
+ export function triNeighbor(x, y, direction) {
45
+ const orientation = triOrientation(x, y);
46
+ if (direction === "left")
47
+ return [x - 1, y];
48
+ if (direction === "right")
49
+ return [x + 1, y];
50
+ if (direction === "top") {
51
+ if (orientation !== "up")
52
+ throw new Error(`triNeighbor: "top" is only valid on an "up" cell, (${x},${y}) is "down".`);
53
+ return [x, y + 1];
54
+ }
55
+ if (orientation !== "down")
56
+ throw new Error(`triNeighbor: "bottom" is only valid on a "down" cell, (${x},${y}) is "up".`);
57
+ return [x, y - 1];
58
+ }
59
+ /** Every edge-sharing neighbor of triangular cell `(x, y)`, in the direction order valid for its own orientation. */
60
+ export function triNeighbors(x, y) {
61
+ const orientation = triOrientation(x, y);
62
+ const directions = orientation === "up" ? ["left", "right", "top"] : ["left", "right", "bottom"];
63
+ return directions.map((d) => triNeighbor(x, y, d));
64
+ }
65
+ //# sourceMappingURL=Lattice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lattice.js","sourceRoot":"","sources":["../src/Lattice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC5E,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;CACP,CAAC;AAEF,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAe;IAC/D,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAA8B,CAAC;IACtE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAiB,CAAC,CAAC,CAAC;AAC7E,CAAC;AAWD,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACvD,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,SAAuB;IACvE,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,IAAI,WAAW,KAAK,IAAI;YACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9F,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,WAAW,KAAK,MAAM;QACxB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChG,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,UAAU,GACd,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Logic — boolean helper predicates.
3
+ *
4
+ * Ported from Mallory's ActionScript `Logic`. The AS3 source did not actually
5
+ * compile (`And(a*;b:*)` and friends are syntactically invalid); the intent is
6
+ * clear from the comments and reproduced here as ordinary boolean functions.
7
+ */
8
+ export declare class Logic {
9
+ /** Always true, whatever the arguments. */
10
+ static truth(..._anything: unknown[]): boolean;
11
+ /** Always false, whatever the arguments. */
12
+ static falsehood(..._anything: unknown[]): boolean;
13
+ /** Logical AND. */
14
+ static and(a: unknown, b: unknown): boolean;
15
+ /** Logical (inclusive) OR. */
16
+ static or(a: unknown, b: unknown): boolean;
17
+ /** Logical exclusive OR. */
18
+ static xor(a: unknown, b: unknown): boolean;
19
+ /** Logical NOT. */
20
+ static not(a: unknown): boolean;
21
+ }
22
+ //# sourceMappingURL=Logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logic.d.ts","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,KAAK;IAChB,2CAA2C;IAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO;IAI9C,4CAA4C;IAC5C,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO;IAIlD,mBAAmB;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAI3C,8BAA8B;IAC9B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAI1C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAI3C,mBAAmB;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;CAGhC"}
package/dist/Logic.js ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Logic — boolean helper predicates.
3
+ *
4
+ * Ported from Mallory's ActionScript `Logic`. The AS3 source did not actually
5
+ * compile (`And(a*;b:*)` and friends are syntactically invalid); the intent is
6
+ * clear from the comments and reproduced here as ordinary boolean functions.
7
+ */
8
+ export class Logic {
9
+ /** Always true, whatever the arguments. */
10
+ static truth(..._anything) {
11
+ return true;
12
+ }
13
+ /** Always false, whatever the arguments. */
14
+ static falsehood(..._anything) {
15
+ return false;
16
+ }
17
+ /** Logical AND. */
18
+ static and(a, b) {
19
+ return Boolean(a) && Boolean(b);
20
+ }
21
+ /** Logical (inclusive) OR. */
22
+ static or(a, b) {
23
+ return Boolean(a) || Boolean(b);
24
+ }
25
+ /** Logical exclusive OR. */
26
+ static xor(a, b) {
27
+ return Boolean(a) !== Boolean(b);
28
+ }
29
+ /** Logical NOT. */
30
+ static not(a) {
31
+ return !a;
32
+ }
33
+ }
34
+ //# sourceMappingURL=Logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logic.js","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,KAAK;IAChB,2CAA2C;IAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,SAAoB;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,SAAS,CAAC,GAAG,SAAoB;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,MAAM,CAAC,GAAG,CAAC,CAAU,EAAE,CAAU;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,EAAE,CAAC,CAAU,EAAE,CAAU;QAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAU,EAAE,CAAU;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,mBAAmB;IACnB,MAAM,CAAC,GAAG,CAAC,CAAU;QACnB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { Vector } from "./Vector.ts";
2
+ import type { Matrix } from "./VectorUtils.ts";
3
+ /**
4
+ * MatrixMath — numerical linear algebra: decompositions (LU, QR, Cholesky,
5
+ * eigen, SVD), direct solvers, rank/RREF/null space, least squares, the
6
+ * pseudo-inverse, and matrix norms. Complements the elementary matrix ops in
7
+ * {@link RealMath} (determinant, inverse, multiply) with the higher-level
8
+ * factorisations they lacked.
9
+ *
10
+ * Matrices are the library's `Matrix<number>` (a {@link Vector} of row Vectors);
11
+ * plain `number[][]` is also accepted as input.
12
+ */
13
+ type Mat = Matrix<number>;
14
+ type MatrixInput = Mat | number[][];
15
+ export interface LUResult {
16
+ L: Mat;
17
+ U: Mat;
18
+ P: Mat;
19
+ sign: number;
20
+ }
21
+ export interface QRResult {
22
+ Q: Mat;
23
+ R: Mat;
24
+ }
25
+ export interface EigenResult {
26
+ values: Vector<number>;
27
+ vectors: Mat;
28
+ }
29
+ export interface SVDResult {
30
+ U: Mat;
31
+ S: Vector<number>;
32
+ V: Mat;
33
+ }
34
+ export declare class MatrixMath {
35
+ /** LU decomposition with partial pivoting: `P·A = L·U`. */
36
+ static lu(A: MatrixInput): LUResult;
37
+ /** Solve the linear system `A·x = b` via LU decomposition. */
38
+ static solve(A: MatrixInput, b: number[] | Vector<number>): Vector<number>;
39
+ /** Reduced row echelon form (Gauss-Jordan elimination). */
40
+ static rref(A: MatrixInput): Mat;
41
+ /** Rank of a matrix (number of nonzero rows in its RREF). */
42
+ static rank(A: MatrixInput): number;
43
+ /** A basis for the null space (kernel) of `A`, as a matrix whose rows are basis vectors. */
44
+ static nullSpace(A: MatrixInput): Mat;
45
+ /** QR decomposition via modified Gram-Schmidt: `A = Q·R` (Q orthonormal). */
46
+ static qr(A: MatrixInput): QRResult;
47
+ /** Cholesky decomposition of a symmetric positive-definite matrix: `A = L·Lᵀ`. */
48
+ static cholesky(A: MatrixInput): Mat;
49
+ /**
50
+ * Eigenvalues and orthonormal eigenvectors of a symmetric matrix via the
51
+ * cyclic Jacobi rotation algorithm. Values are returned in descending order.
52
+ */
53
+ static eigenSymmetric(A: MatrixInput, maxSweeps?: number): EigenResult;
54
+ /**
55
+ * Singular value decomposition `A = U·Σ·Vᵀ` (via the eigendecomposition of
56
+ * `AᵀA`). Returns `U`, the singular values `S` (descending), and `V`.
57
+ */
58
+ static svd(A: MatrixInput): SVDResult;
59
+ /** Least-squares solution of an overdetermined system `A·x ≈ b` (normal equations). */
60
+ static leastSquares(A: MatrixInput, b: number[] | Vector<number>): Vector<number>;
61
+ /** The Moore-Penrose pseudo-inverse `A⁺` (via SVD). */
62
+ static pseudoInverse(A: MatrixInput): Mat;
63
+ /** The Frobenius norm (root of the sum of squared entries). */
64
+ static frobeniusNorm(A: MatrixInput): number;
65
+ /** The spectral (2-)norm: the largest singular value. */
66
+ static spectralNorm(A: MatrixInput): number;
67
+ /** The 2-norm condition number `σ_max / σ_min`. */
68
+ static conditionNumber(A: MatrixInput): number;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=MatrixMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatrixMath.d.ts","sourceRoot":"","sources":["../src/MatrixMath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;;GASG;AAEH,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK,WAAW,GAAG,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;AAoBpC,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,GAAG,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,GAAG,CAAC;CACR;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,EAAE,GAAG,CAAC;CACR;AAED,qBAAa,UAAU;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,GAAG,QAAQ;IAyBnC,8DAA8D;IAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IA2B1E,2DAA2D;IAC3D,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IA2BhC,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IAKnC,4FAA4F;IAC5F,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IAsBrC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,GAAG,QAAQ;IAuBnC,kFAAkF;IAClF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IAkBpC;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,SAAM,GAAG,WAAW;IA4CnE;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS;IAoBrC,uFAAuF;IACvF,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IASjF,uDAAuD;IACvD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IAazC,+DAA+D;IAC/D,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IAI5C,yDAAyD;IACzD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;IAI3C,mDAAmD;IACnD,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM;CAK/C"}
@@ -0,0 +1,302 @@
1
+ import { Vector } from "./Vector.js";
2
+ const EPS = 1e-12;
3
+ const raw = (m) => [...m].map((r) => [...r]);
4
+ const wrap = (a) => Vector.fromArray(a.map((r) => Vector.fromArray(r)));
5
+ const vec = (a) => Vector.fromArray(a);
6
+ const identity = (n) => Array.from({ length: n }, (_, i) => Array.from({ length: n }, (_, j) => (i === j ? 1 : 0)));
7
+ const zeros = (m, n) => Array.from({ length: m }, () => new Array(n).fill(0));
8
+ const transposeRaw = (a) => a[0].map((_, j) => a.map((row) => row[j]));
9
+ const matmul = (a, b) => {
10
+ const m = a.length;
11
+ const n = b[0].length;
12
+ const k = b.length;
13
+ const out = zeros(m, n);
14
+ for (let i = 0; i < m; i++)
15
+ for (let p = 0; p < k; p++)
16
+ for (let j = 0; j < n; j++)
17
+ out[i][j] += a[i][p] * b[p][j];
18
+ return out;
19
+ };
20
+ export class MatrixMath {
21
+ /** LU decomposition with partial pivoting: `P·A = L·U`. */
22
+ static lu(A) {
23
+ const U = raw(A);
24
+ const n = U.length;
25
+ const L = identity(n);
26
+ const P = identity(n);
27
+ let sign = 1;
28
+ for (let k = 0; k < n; k++) {
29
+ let pivot = k;
30
+ for (let i = k + 1; i < n; i++)
31
+ if (Math.abs(U[i][k]) > Math.abs(U[pivot][k]))
32
+ pivot = i;
33
+ if (pivot !== k) {
34
+ [U[k], U[pivot]] = [U[pivot], U[k]];
35
+ [P[k], P[pivot]] = [P[pivot], P[k]];
36
+ for (let j = 0; j < k; j++)
37
+ [L[k][j], L[pivot][j]] = [L[pivot][j], L[k][j]];
38
+ sign = -sign;
39
+ }
40
+ if (Math.abs(U[k][k]) < EPS)
41
+ continue; // singular column
42
+ for (let i = k + 1; i < n; i++) {
43
+ const f = U[i][k] / U[k][k];
44
+ L[i][k] = f;
45
+ for (let j = k; j < n; j++)
46
+ U[i][j] -= f * U[k][j];
47
+ }
48
+ }
49
+ return { L: wrap(L), U: wrap(U), P: wrap(P), sign };
50
+ }
51
+ /** Solve the linear system `A·x = b` via LU decomposition. */
52
+ static solve(A, b) {
53
+ const a = raw(A);
54
+ const n = a.length;
55
+ const rhs = [...b];
56
+ const { L, U, P } = MatrixMath.lu(a);
57
+ const Lr = raw(L);
58
+ const Ur = raw(U);
59
+ const Pr = raw(P);
60
+ // Pb
61
+ const pb = Pr.map((row) => row.reduce((s, v, j) => s + v * rhs[j], 0));
62
+ // forward solve L y = Pb
63
+ const y = new Array(n).fill(0);
64
+ for (let i = 0; i < n; i++) {
65
+ let s = pb[i];
66
+ for (let j = 0; j < i; j++)
67
+ s -= Lr[i][j] * y[j];
68
+ y[i] = s; // L has unit diagonal
69
+ }
70
+ // back solve U x = y
71
+ const x = new Array(n).fill(0);
72
+ for (let i = n - 1; i >= 0; i--) {
73
+ let s = y[i];
74
+ for (let j = i + 1; j < n; j++)
75
+ s -= Ur[i][j] * x[j];
76
+ x[i] = Math.abs(Ur[i][i]) < EPS ? 0 : s / Ur[i][i];
77
+ }
78
+ return vec(x);
79
+ }
80
+ /** Reduced row echelon form (Gauss-Jordan elimination). */
81
+ static rref(A) {
82
+ const a = raw(A);
83
+ const rows = a.length;
84
+ const cols = a[0].length;
85
+ let lead = 0;
86
+ for (let r = 0; r < rows && lead < cols; r++, lead++) {
87
+ let i = r;
88
+ while (lead < cols && Math.abs(a[i][lead]) < EPS) {
89
+ i++;
90
+ if (i === rows) {
91
+ i = r;
92
+ lead++;
93
+ if (lead === cols)
94
+ return wrap(a);
95
+ }
96
+ }
97
+ [a[i], a[r]] = [a[r], a[i]];
98
+ const pivot = a[r][lead];
99
+ for (let j = 0; j < cols; j++)
100
+ a[r][j] /= pivot;
101
+ for (let k = 0; k < rows; k++) {
102
+ if (k === r)
103
+ continue;
104
+ const factor = a[k][lead];
105
+ for (let j = 0; j < cols; j++)
106
+ a[k][j] -= factor * a[r][j];
107
+ }
108
+ }
109
+ return wrap(a);
110
+ }
111
+ /** Rank of a matrix (number of nonzero rows in its RREF). */
112
+ static rank(A) {
113
+ const r = raw(MatrixMath.rref(A));
114
+ return r.filter((row) => row.some((v) => Math.abs(v) > 1e-9)).length;
115
+ }
116
+ /** A basis for the null space (kernel) of `A`, as a matrix whose rows are basis vectors. */
117
+ static nullSpace(A) {
118
+ const R = raw(MatrixMath.rref(A));
119
+ const rows = R.length;
120
+ const cols = R[0].length;
121
+ const pivotCols = [];
122
+ for (let r = 0; r < rows; r++) {
123
+ const lead = R[r].findIndex((v) => Math.abs(v) > 1e-9);
124
+ if (lead !== -1)
125
+ pivotCols.push(lead);
126
+ }
127
+ const freeCols = [];
128
+ for (let c = 0; c < cols; c++)
129
+ if (!pivotCols.includes(c))
130
+ freeCols.push(c);
131
+ const basis = [];
132
+ for (const free of freeCols) {
133
+ const v = new Array(cols).fill(0);
134
+ v[free] = 1;
135
+ for (let r = 0; r < pivotCols.length; r++)
136
+ v[pivotCols[r]] = -R[r][free];
137
+ basis.push(v);
138
+ }
139
+ return wrap(basis.length ? basis : [new Array(cols).fill(0)]);
140
+ }
141
+ /** QR decomposition via modified Gram-Schmidt: `A = Q·R` (Q orthonormal). */
142
+ static qr(A) {
143
+ const a = raw(A);
144
+ const m = a.length;
145
+ const n = a[0].length;
146
+ const Q = zeros(m, n);
147
+ const R = zeros(n, n);
148
+ const cols = transposeRaw(a); // columns of A
149
+ for (let j = 0; j < n; j++) {
150
+ const v = [...cols[j]];
151
+ for (let i = 0; i < j; i++) {
152
+ let dot = 0;
153
+ for (let r = 0; r < m; r++)
154
+ dot += Q[r][i] * v[r];
155
+ R[i][j] = dot;
156
+ for (let r = 0; r < m; r++)
157
+ v[r] -= dot * Q[r][i];
158
+ }
159
+ let norm = Math.hypot(...v);
160
+ R[j][j] = norm;
161
+ if (norm < EPS)
162
+ norm = 1;
163
+ for (let r = 0; r < m; r++)
164
+ Q[r][j] = v[r] / norm;
165
+ }
166
+ return { Q: wrap(Q), R: wrap(R) };
167
+ }
168
+ /** Cholesky decomposition of a symmetric positive-definite matrix: `A = L·Lᵀ`. */
169
+ static cholesky(A) {
170
+ const a = raw(A);
171
+ const n = a.length;
172
+ const L = zeros(n, n);
173
+ for (let j = 0; j < n; j++) {
174
+ let d = a[j][j];
175
+ for (let k = 0; k < j; k++)
176
+ d -= L[j][k] * L[j][k];
177
+ if (d <= 0)
178
+ throw new Error("Matrix is not positive-definite.");
179
+ L[j][j] = Math.sqrt(d);
180
+ for (let i = j + 1; i < n; i++) {
181
+ let s = a[i][j];
182
+ for (let k = 0; k < j; k++)
183
+ s -= L[i][k] * L[j][k];
184
+ L[i][j] = s / L[j][j];
185
+ }
186
+ }
187
+ return wrap(L);
188
+ }
189
+ /**
190
+ * Eigenvalues and orthonormal eigenvectors of a symmetric matrix via the
191
+ * cyclic Jacobi rotation algorithm. Values are returned in descending order.
192
+ */
193
+ static eigenSymmetric(A, maxSweeps = 100) {
194
+ const a = raw(A);
195
+ const n = a.length;
196
+ const V = identity(n);
197
+ for (let sweep = 0; sweep < maxSweeps; sweep++) {
198
+ let off = 0;
199
+ for (let p = 0; p < n; p++)
200
+ for (let q = p + 1; q < n; q++)
201
+ off += a[p][q] * a[p][q];
202
+ if (off < EPS)
203
+ break;
204
+ for (let p = 0; p < n; p++) {
205
+ for (let q = p + 1; q < n; q++) {
206
+ if (Math.abs(a[p][q]) < EPS)
207
+ continue;
208
+ const theta = (a[q][q] - a[p][p]) / (2 * a[p][q]);
209
+ const t = Math.sign(theta || 1) / (Math.abs(theta) + Math.sqrt(theta * theta + 1));
210
+ const c = 1 / Math.sqrt(t * t + 1);
211
+ const s = t * c;
212
+ for (let i = 0; i < n; i++) {
213
+ const aip = a[i][p];
214
+ const aiq = a[i][q];
215
+ a[i][p] = c * aip - s * aiq;
216
+ a[i][q] = s * aip + c * aiq;
217
+ }
218
+ for (let i = 0; i < n; i++) {
219
+ const api = a[p][i];
220
+ const aqi = a[q][i];
221
+ a[p][i] = c * api - s * aqi;
222
+ a[q][i] = s * api + c * aqi;
223
+ }
224
+ for (let i = 0; i < n; i++) {
225
+ const vip = V[i][p];
226
+ const viq = V[i][q];
227
+ V[i][p] = c * vip - s * viq;
228
+ V[i][q] = s * vip + c * viq;
229
+ }
230
+ }
231
+ }
232
+ }
233
+ const pairs = a.map((row, i) => ({ value: row[i], vec: V.map((r) => r[i]) }));
234
+ pairs.sort((x, y) => y.value - x.value);
235
+ return {
236
+ values: vec(pairs.map((p) => p.value)),
237
+ vectors: wrap(transposeRaw(pairs.map((p) => p.vec))),
238
+ };
239
+ }
240
+ /**
241
+ * Singular value decomposition `A = U·Σ·Vᵀ` (via the eigendecomposition of
242
+ * `AᵀA`). Returns `U`, the singular values `S` (descending), and `V`.
243
+ */
244
+ static svd(A) {
245
+ const a = raw(A);
246
+ const m = a.length;
247
+ const n = a[0].length;
248
+ const at = transposeRaw(a);
249
+ const ata = matmul(at, a); // n×n
250
+ const { values, vectors } = MatrixMath.eigenSymmetric(ata);
251
+ const V = raw(vectors); // columns are eigenvectors of AᵀA
252
+ const sv = [...values].map((v) => Math.sqrt(Math.max(v, 0)));
253
+ // U columns: A·v_i / σ_i
254
+ const U = zeros(m, n);
255
+ for (let i = 0; i < n; i++) {
256
+ const vi = V.map((r) => r[i]);
257
+ const avi = a.map((row) => row.reduce((s, val, j) => s + val * vi[j], 0));
258
+ const sigma = sv[i];
259
+ for (let r = 0; r < m; r++)
260
+ U[r][i] = sigma > EPS ? avi[r] / sigma : 0;
261
+ }
262
+ return { U: wrap(U), S: vec(sv), V: wrap(V) };
263
+ }
264
+ /** Least-squares solution of an overdetermined system `A·x ≈ b` (normal equations). */
265
+ static leastSquares(A, b) {
266
+ const a = raw(A);
267
+ const at = transposeRaw(a);
268
+ const ata = matmul(at, a);
269
+ const rhs = [...b];
270
+ const atb = at.map((row) => row.reduce((s, v, j) => s + v * rhs[j], 0));
271
+ return MatrixMath.solve(wrap(ata), atb);
272
+ }
273
+ /** The Moore-Penrose pseudo-inverse `A⁺` (via SVD). */
274
+ static pseudoInverse(A) {
275
+ const { U, S, V } = MatrixMath.svd(A);
276
+ const Ur = raw(U);
277
+ const Vr = raw(V);
278
+ const s = [...S];
279
+ const n = s.length;
280
+ // A⁺ = V · Σ⁺ · Uᵀ
281
+ const sInv = s.map((v) => (v > 1e-9 ? 1 / v : 0));
282
+ const sigmaPlus = zeros(n, n);
283
+ for (let i = 0; i < n; i++)
284
+ sigmaPlus[i][i] = sInv[i];
285
+ return wrap(matmul(matmul(Vr, sigmaPlus), transposeRaw(Ur)));
286
+ }
287
+ /** The Frobenius norm (root of the sum of squared entries). */
288
+ static frobeniusNorm(A) {
289
+ return Math.hypot(...raw(A).flat());
290
+ }
291
+ /** The spectral (2-)norm: the largest singular value. */
292
+ static spectralNorm(A) {
293
+ return Math.max(...MatrixMath.svd(A).S);
294
+ }
295
+ /** The 2-norm condition number `σ_max / σ_min`. */
296
+ static conditionNumber(A) {
297
+ const s = [...MatrixMath.svd(A).S];
298
+ const min = Math.min(...s);
299
+ return min < EPS ? Number.POSITIVE_INFINITY : Math.max(...s) / min;
300
+ }
301
+ }
302
+ //# sourceMappingURL=MatrixMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatrixMath.js","sourceRoot":"","sources":["../src/MatrixMath.ts"],"names":[],"mappings":"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"}