@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":"ComplexMath.d.ts","sourceRoot":"","sources":["../src/ComplexMath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,KAAK,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;AACtC,KAAK,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAClC,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,aAAa,KAAK,aAAa,CAAC;AAMlD,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAEvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAG9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAE5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CAGjE;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAW1D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAIvD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAE,OAAW,GAAG,aAAa,CASnE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,OAAW,GAAG,aAAa,CAExF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,aAAa,CAE1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CAInE;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,OAAW,EAAE,IAAI,GAAE,OAAW,GAAG,aAAa,CAEtF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,OAAW,EAAE,IAAI,GAAE,OAAW,GAAG,aAAa,CAE5F;AAED,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAMvE;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,OAAO,GAAG,aAAa,CAEpE;AAkBD,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,6BAA6B,SAAK,EAClC,mBAAmB,SAAS,GAC3B,aAAa,CAOf;AAED,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,OAAO,EACV,6BAA6B,SAAK,EAClC,QAAQ,SAAS,GAChB,aAAa,CAEf"}
@@ -0,0 +1,98 @@
1
+ import { ComplexNumber } from "./ComplexNumber.js";
2
+ import { integrateN } from "./RealMath.js";
3
+ import { Vector } from "./Vector.js";
4
+ import { VectorUtils } from "./VectorUtils.js";
5
+ const cn = (x) => (x instanceof ComplexNumber ? x : new ComplexNumber(x));
6
+ // -- vectors ------------------------------------------------------------------
7
+ export function addVector(alpha, beta) {
8
+ return VectorUtils.combine(alpha, beta, (a, b) => a.add(b));
9
+ }
10
+ export function scaleVector(alpha, scalar) {
11
+ const s = cn(scalar);
12
+ return VectorUtils.transform(alpha, (x) => s.multiply(x));
13
+ }
14
+ export function negativeVector(alpha) {
15
+ return scaleVector(alpha, -1);
16
+ }
17
+ export function subtractVector(alpha, beta) {
18
+ return addVector(alpha, negativeVector(beta));
19
+ }
20
+ export function dotProduct(alpha, beta) {
21
+ const collapsable = VectorUtils.combine(alpha, beta, (a, b) => a.multiply(b), ComplexNumber.Zero);
22
+ return VectorUtils.collapse(collapsable, (a, b) => a.add(b));
23
+ }
24
+ /** 3D cross product (bug fix: index 2 for z, presence not truthiness — as in RealMath). */
25
+ export function crossProduct(alpha, beta) {
26
+ const a = [ComplexNumber.Zero, ComplexNumber.Zero, ComplexNumber.Zero];
27
+ const b = [ComplexNumber.Zero, ComplexNumber.Zero, ComplexNumber.Zero];
28
+ for (let idx = 0; idx < 3; idx++) {
29
+ if (idx < alpha.length && alpha[idx] != null)
30
+ a[idx] = alpha[idx];
31
+ if (idx < beta.length && beta[idx] != null)
32
+ b[idx] = beta[idx];
33
+ }
34
+ const i = a[1].multiply(b[2]).subtract(a[2].multiply(b[1]));
35
+ const j = a[2].multiply(b[0]).subtract(a[0].multiply(b[2]));
36
+ const k = a[0].multiply(b[1]).subtract(a[1].multiply(b[0]));
37
+ return Vector.fromArray([i, j, k]);
38
+ }
39
+ export function kroneckerProduct(A, B) {
40
+ let kronecker = VectorUtils.constantVector(A.length, null);
41
+ kronecker = VectorUtils.fillByIndex(kronecker, (i) => scaleVector(B, A[i]));
42
+ return VectorUtils.flattenSDLevels(kronecker, 2);
43
+ }
44
+ export function pNorm(alpha, norm = 2) {
45
+ const p = cn(norm);
46
+ if (p.value === 0) {
47
+ const magnitudes = VectorUtils.transform(alpha, (x) => new ComplexNumber(x.magnitude()));
48
+ return VectorUtils.collapse(magnitudes, (a, b) => (a.magCompare(b) >= 0 ? a : b));
49
+ }
50
+ const summable = VectorUtils.transform(alpha, (x) => new ComplexNumber(x.magnitude()).power(p.value));
51
+ const sum = VectorUtils.collapse(summable, (a, b) => a.add(b), ComplexNumber.Zero);
52
+ return sum.power(1 / p.value);
53
+ }
54
+ export function distanceVector(alpha, beta, norm = 2) {
55
+ return pNorm(subtractVector(alpha, beta), norm);
56
+ }
57
+ export function magnitudeVector(alpha) {
58
+ return pNorm(alpha, 2);
59
+ }
60
+ export function angleBetween(alpha, beta) {
61
+ return dotProduct(alpha, beta)
62
+ .divide(magnitudeVector(alpha).multiply(magnitudeVector(beta)))
63
+ .arcCosine();
64
+ }
65
+ // -- probability ----------------------------------------------------------------
66
+ export function zScore(x, mean = 0, sDev = 1) {
67
+ return cn(x).subtract(mean).divide(sDev);
68
+ }
69
+ export function invertZScore(z, mean = 0, sDev = 1) {
70
+ return cn(z).multiply(sDev).add(mean);
71
+ }
72
+ /** Normal PDF closure over complex arguments. */
73
+ export function normalDistribution(mean, sDev) {
74
+ return (x) => cn(sDev)
75
+ .multiply(Math.sqrt(2 * Math.PI))
76
+ .reciprocal()
77
+ .multiply(ComplexNumber.E.power(zScore(x, mean, sDev).square().multiply(-0.5)));
78
+ }
79
+ export function standardNormalDistribution(x) {
80
+ return normalDistribution(0, 1)(cn(x));
81
+ }
82
+ /**
83
+ * Numeric integral of a complex-valued function over a real interval, via the
84
+ * real {@link integrateN} applied component-wise (bug fix: same midpoint-rule
85
+ * fix as `RealMath.integrateN`).
86
+ */
87
+ function integrateComplexN(unaryOperation, lowerLimit, upperLimit, interval = 0.0001) {
88
+ const re = integrateN((t) => unaryOperation(new ComplexNumber(t, 0)).value, lowerLimit, upperLimit, interval);
89
+ const im = integrateN((t) => unaryOperation(new ComplexNumber(t, 0)).iValue, lowerLimit, upperLimit, interval);
90
+ return new ComplexNumber(re, im);
91
+ }
92
+ export function normalProbability(x, mean, sDev, negativeInfinityApproximation = -5, integrationInterval = 0.0001) {
93
+ return integrateComplexN(normalDistribution(mean, sDev), negativeInfinityApproximation, cn(x).value, integrationInterval);
94
+ }
95
+ export function standardNormalProbability(z, negativeInfinityApproximation = -5, interval = 0.0001) {
96
+ return integrateComplexN(standardNormalDistribution, negativeInfinityApproximation, cn(z).value, interval);
97
+ }
98
+ //# sourceMappingURL=ComplexMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexMath.js","sourceRoot":"","sources":["../src/ComplexMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { Vector } from "./Vector.ts";
2
+ /** Anything that can stand in for a complex operand in a fluent method call. */
3
+ export type CNInput = ComplexNumber | number;
4
+ /**
5
+ * ComplexNumber — an immutable-ish complex value `value + iValue·i`, with a
6
+ * fluent arithmetic/trigonometric API matching the style of `Quaternion`/
7
+ * `Rational`/`DualNumber`/`Decimal`.
8
+ *
9
+ * Ported from Mallory's ActionScript `ComplexNumber`. The AS3 class extended
10
+ * `Array` and stashed its two coordinates in a private `Vector`; that indirection
11
+ * bought nothing, so here the real and imaginary parts are plain number fields.
12
+ * The historical accessor names `value` (real) and `iValue` (imaginary) are kept
13
+ * because the rest of the library reads them hundreds of times; `re`/`im` are
14
+ * provided as modern aliases.
15
+ *
16
+ * The arithmetic/trig/log methods and the `E`/`I`/`PI`/`PHI`/`Zero`/`One`
17
+ * constants and `random()` factory were previously the static-method "namespace
18
+ * class" `ComplexMath` — folded in here so a complex value carries its own
19
+ * operations rather than requiring a second class to operate on it.
20
+ *
21
+ * Bug fixes relative to the AS3 original:
22
+ * - `parse` (was `fromString`) no longer throws when `String.match` returns
23
+ * `null`, and it correctly handles negative imaginary parts and the bare
24
+ * `i` / `-i` forms, so it round-trips with `toString`.
25
+ * - `toString` renders a negative imaginary part as `a-b*i` rather than the
26
+ * old `a+-b*i`.
27
+ * - `divide`'s zero-divisor branches compared `alpha.ivalue` (lowercase v),
28
+ * which is always `undefined`, so the eight directed infinities were never
29
+ * returned. Fixed to `iValue`.
30
+ * - `power`: a zero base produced `NaN` (via `ln 0`); now handled directly, so
31
+ * `square(0)`, `squareRoot(0)` and e.g. `arcSine(0)` are correct.
32
+ */
33
+ export declare class ComplexNumber {
34
+ value: number;
35
+ iValue: number;
36
+ /** "Not a Complex Number" — both parts NaN. */
37
+ static readonly NaCN: ComplexNumber;
38
+ static readonly PositiveInfinity: ComplexNumber;
39
+ static readonly InfinityQ1: ComplexNumber;
40
+ static readonly PositiveInfinityI: ComplexNumber;
41
+ static readonly InfinityQ2: ComplexNumber;
42
+ static readonly NegativeInfinity: ComplexNumber;
43
+ static readonly InfinityQ3: ComplexNumber;
44
+ static readonly NegativeInfinityI: ComplexNumber;
45
+ static readonly InfinityQ4: ComplexNumber;
46
+ static readonly Zero: ComplexNumber;
47
+ static readonly One: ComplexNumber;
48
+ static readonly I: ComplexNumber;
49
+ static readonly E: ComplexNumber;
50
+ static readonly PI: ComplexNumber;
51
+ static readonly PHI: ComplexNumber;
52
+ /**
53
+ * Construct a complex number. Accepts:
54
+ * - `()` → 0
55
+ * - `(re, im)` → re + im·i
56
+ * - `(ComplexNumber)` → a copy
57
+ * - `(number)` → a real number
58
+ * - `(string)` → parsed (see {@link ComplexNumber.parse})
59
+ */
60
+ constructor(value?: number | ComplexNumber | string, iValue?: number);
61
+ /** Modern alias for {@link value} (the real part). */
62
+ get re(): number;
63
+ set re(v: number);
64
+ /** Modern alias for {@link iValue} (the imaginary part). */
65
+ get im(): number;
66
+ set im(v: number);
67
+ /**
68
+ * Coerce an arbitrary value into a ComplexNumber, returning {@link NaCN} for
69
+ * anything that cannot be interpreted numerically. Safe replacement for the
70
+ * AS3 pattern `new ComplexNumber(element)` used by {@link isComplex}.
71
+ */
72
+ static from(input: unknown): ComplexNumber;
73
+ /** True when `input` is NOT a finite/definite complex number. */
74
+ static isNotComplex(input: unknown): boolean;
75
+ /** True when `input` can be interpreted as a complex number. */
76
+ static isComplex(input: unknown): boolean;
77
+ /**
78
+ * Wrap arguments into a ComplexNumber. Mirrors AS3 `Wrap`: one argument is
79
+ * coerced, two are taken as (re, im). Returns {@link NaCN} for other arities
80
+ * (the AS3 version returned `false`; a ComplexNumber is friendlier and typed).
81
+ */
82
+ static wrap(...args: Array<number | ComplexNumber | string>): ComplexNumber;
83
+ /** Build a real complex number from a plain number. */
84
+ static fromNumber(num: number): ComplexNumber;
85
+ /** Build a complex number from polar form `r·e^(iθ)` (inverse of magnitude/angle). */
86
+ static fromPolar(magnitude: number, angle: number): ComplexNumber;
87
+ /** Build a complex number from a `[re, im]` vector-like (inverse of {@link toVector}). */
88
+ static fromVector(coordinates: ArrayLike<number>): ComplexNumber;
89
+ /** Parse the `<complexNumber>` form produced by {@link toXML} (inverse of it). */
90
+ static fromXML(xml: string): ComplexNumber;
91
+ /**
92
+ * Parse a string such as `"3"`, `"-2*i"`, `"i"`, `"3+2*i"`, `"3-2i"`.
93
+ * The `*` between coefficient and `i` is optional. Whitespace is ignored.
94
+ * Returns {@link NaCN} when the string is not a recognisable complex literal.
95
+ */
96
+ static parse(expression: string): ComplexNumber;
97
+ /** Uniform random complex number, real part in `[min(r1,r2), max(r1,r2)]`, imaginary in `[min(i1,i2), max(i1,i2)]`. */
98
+ static random(r1?: number, r2?: number, i1?: number, i2?: number, _inclusive?: boolean): ComplexNumber;
99
+ /** XML-ish serialisation kept for API compatibility. */
100
+ toXML(): string;
101
+ /** The two coordinates as a fresh {@link Vector}. */
102
+ toVector(): Vector<number>;
103
+ /**
104
+ * String representation. In `fullMode` the raw `a+bi` form is emitted (used
105
+ * for debugging); otherwise a canonical, sign-correct form is produced that
106
+ * round-trips through {@link parse}.
107
+ */
108
+ toString(fullMode?: boolean): string;
109
+ /** Additive inverse `-z`. */
110
+ neg(): ComplexNumber;
111
+ /** Multiplicative inverse `1/z` (returns {@link NaCN} for zero). */
112
+ reciprocal(): ComplexNumber;
113
+ /** Complex conjugate `a - b·i`. */
114
+ conjugate(): ComplexNumber;
115
+ /** Swap the real and imaginary parts (`a + b·i` → `b + a·i`). */
116
+ flip(): ComplexNumber;
117
+ /** Structural equality (NaN parts compare unequal, matching IEEE semantics). */
118
+ equals(other: ComplexNumber): boolean;
119
+ /** Lexicographic comparison: real part first, then imaginary. */
120
+ lexCompare(other: CNInput): number;
121
+ /** Comparison by magnitude. */
122
+ magCompare(other: CNInput): number;
123
+ add(other?: CNInput): ComplexNumber;
124
+ subtract(other?: CNInput): ComplexNumber;
125
+ multiply(other?: CNInput): ComplexNumber;
126
+ /** Division, returning one of the eight directed infinities on a zero divisor. */
127
+ divide(other?: CNInput): ComplexNumber;
128
+ magnitude(): number;
129
+ angle(): number;
130
+ private static power2;
131
+ private selectedNaturalLogarithm;
132
+ /** `this ** exponent`, with branch selection for the multivalued complex logarithm. */
133
+ power(exponent?: CNInput, selector?: number): ComplexNumber;
134
+ square(): ComplexNumber;
135
+ squareRoot(): ComplexNumber;
136
+ /** Logarithm in an arbitrary `base` (natural log by default), with branch selection. */
137
+ logarithm(base?: CNInput, selectA?: number, selectB?: number): ComplexNumber;
138
+ sine(): ComplexNumber;
139
+ cosine(): ComplexNumber;
140
+ tangent(): ComplexNumber;
141
+ hyperbolicSine(): ComplexNumber;
142
+ hyperbolicCosine(): ComplexNumber;
143
+ hyperbolicTangent(): ComplexNumber;
144
+ arcSine(): ComplexNumber;
145
+ arcCosine(): ComplexNumber;
146
+ arcTangent(): ComplexNumber;
147
+ /** `asinh(z) = log(z + sqrt(z^2 + 1))`. */
148
+ arcHyperbolicSine(): ComplexNumber;
149
+ /**
150
+ * `acosh(z) = log(z + sqrt(z+1)*sqrt(z-1))` — the numerically-careful
151
+ * factored form, not the naive `log(z + sqrt(z^2-1))`. The two are
152
+ * algebraically identical but the factored form keeps the two square
153
+ * roots' branch cuts separate (one for `z+1`, one for `z-1`), which
154
+ * matches the principal-branch convention every serious complex `acosh`
155
+ * implementation uses (e.g. the C99/IEEE 754-2008 `cacosh` reference
156
+ * algorithm) — the naive form can pick the wrong branch/sign near its
157
+ * own cut along the real axis below 1.
158
+ */
159
+ arcHyperbolicCosine(): ComplexNumber;
160
+ /** `atanh(z) = 0.5 * log((1+z)/(1-z))`. */
161
+ arcHyperbolicTangent(): ComplexNumber;
162
+ /**
163
+ * Coercion safety: a genuinely complex value (nonzero imaginary part)
164
+ * cannot be implicitly converted to a `Number` — without this override,
165
+ * `+z`/`z * 2`/etc. on a non-real `ComplexNumber` silently produce `NaN`
166
+ * (the default `Object`-to-primitive path falls through to parsing
167
+ * `toString()`'s `"a+bi"` output as a number), which is exactly the kind
168
+ * of silent-wrong-answer failure this library avoids elsewhere. A purely
169
+ * real `ComplexNumber` (iValue === 0) still converts safely, matching
170
+ * `ℝ ⊂ ℂ`.
171
+ */
172
+ valueOf(): number;
173
+ }
174
+ //# sourceMappingURL=ComplexNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexNumber.d.ts","sourceRoot":"","sources":["../src/ComplexNumber.ts"],"names":[],"mappings":"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"}