universal-physics-tensor 1.0.4 → 2.0.1

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 (269) hide show
  1. package/README.md +11 -13
  2. package/dist/atlas/catalog-formal-ref.js +1 -1
  3. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  4. package/dist/atlas/chain-pipeline.d.ts +37 -0
  5. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  6. package/dist/atlas/chain-pipeline.js +95 -79
  7. package/dist/atlas/chain-pipeline.js.map +1 -1
  8. package/dist/atlas/derive-evidence.d.ts +6 -4
  9. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  10. package/dist/atlas/derive-evidence.js +12 -4
  11. package/dist/atlas/derive-evidence.js.map +1 -1
  12. package/dist/atlas/physjs-ref.d.ts +2 -2
  13. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  14. package/dist/atlas/physjs-ref.js +33 -3
  15. package/dist/atlas/physjs-ref.js.map +1 -1
  16. package/dist/atlas/proof-target.d.ts +28 -2
  17. package/dist/atlas/proof-target.d.ts.map +1 -1
  18. package/dist/atlas/proof-target.js +25 -16
  19. package/dist/atlas/proof-target.js.map +1 -1
  20. package/dist/bridges/be64-eddington-luminosity.d.ts.map +1 -1
  21. package/dist/bridges/be64-eddington-luminosity.js +1 -3
  22. package/dist/bridges/be64-eddington-luminosity.js.map +1 -1
  23. package/dist/bridges/be66-radiation-pressure.d.ts +30 -0
  24. package/dist/bridges/be66-radiation-pressure.d.ts.map +1 -0
  25. package/dist/bridges/be66-radiation-pressure.js +37 -0
  26. package/dist/bridges/be66-radiation-pressure.js.map +1 -0
  27. package/dist/bridges/be67-alfven-speed.d.ts +54 -0
  28. package/dist/bridges/be67-alfven-speed.d.ts.map +1 -0
  29. package/dist/bridges/be67-alfven-speed.js +49 -0
  30. package/dist/bridges/be67-alfven-speed.js.map +1 -0
  31. package/dist/bridges/be68-tolman-ehrenfest.d.ts +49 -0
  32. package/dist/bridges/be68-tolman-ehrenfest.d.ts.map +1 -0
  33. package/dist/bridges/be68-tolman-ehrenfest.js +46 -0
  34. package/dist/bridges/be68-tolman-ehrenfest.js.map +1 -0
  35. package/dist/bridges/bridge-equations.d.ts +6 -0
  36. package/dist/bridges/bridge-equations.d.ts.map +1 -1
  37. package/dist/bridges/bridge-equations.js +6 -0
  38. package/dist/bridges/bridge-equations.js.map +1 -1
  39. package/dist/bridges/evaluators.d.ts +3 -3
  40. package/dist/bridges/evaluators.d.ts.map +1 -1
  41. package/dist/bridges/evaluators.js +25 -4
  42. package/dist/bridges/evaluators.js.map +1 -1
  43. package/dist/bridges/index.d.ts +10 -4
  44. package/dist/bridges/index.d.ts.map +1 -1
  45. package/dist/bridges/index.js +74 -4
  46. package/dist/bridges/index.js.map +1 -1
  47. package/dist/cli/commands/_atlas-route.d.ts +1 -1
  48. package/dist/cli/commands/atlas.d.ts.map +1 -1
  49. package/dist/cli/commands/atlas.js +6 -2
  50. package/dist/cli/commands/atlas.js.map +1 -1
  51. package/dist/cli/commands/chain.d.ts.map +1 -1
  52. package/dist/cli/commands/chain.js +8 -3
  53. package/dist/cli/commands/chain.js.map +1 -1
  54. package/dist/cli/commands/derive.js +1 -1
  55. package/dist/cli/commands/eval.d.ts.map +1 -1
  56. package/dist/cli/commands/eval.js +31 -15
  57. package/dist/cli/commands/eval.js.map +1 -1
  58. package/dist/cli/commands/evaluate.d.ts +7 -3
  59. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  60. package/dist/cli/commands/evaluate.js +53 -32
  61. package/dist/cli/commands/evaluate.js.map +1 -1
  62. package/dist/cli/commands/explain.d.ts.map +1 -1
  63. package/dist/cli/commands/explain.js +119 -15
  64. package/dist/cli/commands/explain.js.map +1 -1
  65. package/dist/cli/commands/map.d.ts +1 -1
  66. package/dist/cli/commands/map.d.ts.map +1 -1
  67. package/dist/cli/commands/map.js.map +1 -1
  68. package/dist/cli/commands/metric.d.ts.map +1 -1
  69. package/dist/cli/commands/metric.js +10 -11
  70. package/dist/cli/commands/metric.js.map +1 -1
  71. package/dist/cli/commands/path.d.ts +2 -2
  72. package/dist/cli/commands/path.d.ts.map +1 -1
  73. package/dist/cli/commands/path.js +10 -11
  74. package/dist/cli/commands/path.js.map +1 -1
  75. package/dist/cli/commands/recover.d.ts.map +1 -1
  76. package/dist/cli/commands/recover.js +1 -2
  77. package/dist/cli/commands/recover.js.map +1 -1
  78. package/dist/cli/commands/regime.d.ts +2 -2
  79. package/dist/cli/commands/regime.d.ts.map +1 -1
  80. package/dist/cli/commands/regime.js +3 -4
  81. package/dist/cli/commands/regime.js.map +1 -1
  82. package/dist/cli/commands/search.d.ts.map +1 -1
  83. package/dist/cli/commands/search.js +8 -3
  84. package/dist/cli/commands/search.js.map +1 -1
  85. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  86. package/dist/cli/commands/symbolic.js +5 -0
  87. package/dist/cli/commands/symbolic.js.map +1 -1
  88. package/dist/cli/eval-numbers.d.ts +6 -4
  89. package/dist/cli/eval-numbers.d.ts.map +1 -1
  90. package/dist/cli/eval-numbers.js +11 -5
  91. package/dist/cli/eval-numbers.js.map +1 -1
  92. package/dist/cli/map-evidence.d.ts +2 -1
  93. package/dist/cli/map-evidence.d.ts.map +1 -1
  94. package/dist/cli/map-evidence.js +2 -1
  95. package/dist/cli/map-evidence.js.map +1 -1
  96. package/dist/cli/search-index.d.ts +8 -0
  97. package/dist/cli/search-index.d.ts.map +1 -1
  98. package/dist/cli/search-index.js +18 -1
  99. package/dist/cli/search-index.js.map +1 -1
  100. package/dist/cli/version.d.ts +6 -2
  101. package/dist/cli/version.d.ts.map +1 -1
  102. package/dist/cli/version.js +11 -3
  103. package/dist/cli/version.js.map +1 -1
  104. package/dist/cli-api.d.ts +52 -0
  105. package/dist/cli-api.d.ts.map +1 -1
  106. package/dist/cli-api.js +44 -0
  107. package/dist/cli-api.js.map +1 -1
  108. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  109. package/dist/composition/bridge-analysis.js +18 -1
  110. package/dist/composition/bridge-analysis.js.map +1 -1
  111. package/dist/composition/canonical-graph.d.ts +9 -4
  112. package/dist/composition/canonical-graph.d.ts.map +1 -1
  113. package/dist/composition/canonical-graph.js +113 -8
  114. package/dist/composition/canonical-graph.js.map +1 -1
  115. package/dist/composition/catalog-graph.d.ts +5 -4
  116. package/dist/composition/catalog-graph.d.ts.map +1 -1
  117. package/dist/composition/catalog-graph.js +7 -4
  118. package/dist/composition/catalog-graph.js.map +1 -1
  119. package/dist/composition/chain-result.d.ts +55 -0
  120. package/dist/composition/chain-result.d.ts.map +1 -0
  121. package/dist/composition/chain-result.js +57 -0
  122. package/dist/composition/chain-result.js.map +1 -0
  123. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  124. package/dist/composition/compose-symbolic.js +4 -39
  125. package/dist/composition/compose-symbolic.js.map +1 -1
  126. package/dist/composition/compose.d.ts.map +1 -1
  127. package/dist/composition/compose.js +11 -4
  128. package/dist/composition/compose.js.map +1 -1
  129. package/dist/composition/edges/applied-physicist.d.ts +43 -0
  130. package/dist/composition/edges/applied-physicist.d.ts.map +1 -0
  131. package/dist/composition/edges/applied-physicist.js +128 -0
  132. package/dist/composition/edges/applied-physicist.js.map +1 -0
  133. package/dist/composition/enumerate.d.ts +46 -5
  134. package/dist/composition/enumerate.d.ts.map +1 -1
  135. package/dist/composition/enumerate.js +37 -8
  136. package/dist/composition/enumerate.js.map +1 -1
  137. package/dist/composition/expr-simplify.d.ts.map +1 -1
  138. package/dist/composition/expr-simplify.js +3 -11
  139. package/dist/composition/expr-simplify.js.map +1 -1
  140. package/dist/composition/index.d.ts +2 -0
  141. package/dist/composition/index.d.ts.map +1 -1
  142. package/dist/composition/index.js +2 -0
  143. package/dist/composition/index.js.map +1 -1
  144. package/dist/composition/mathts-scalar-symbols.d.ts +48 -0
  145. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -0
  146. package/dist/composition/mathts-scalar-symbols.js +150 -0
  147. package/dist/composition/mathts-scalar-symbols.js.map +1 -0
  148. package/dist/composition/probe/study.js +1 -1
  149. package/dist/composition/probe/study.js.map +1 -1
  150. package/dist/composition/quantities/applied-physicist.d.ts +34 -0
  151. package/dist/composition/quantities/applied-physicist.d.ts.map +1 -0
  152. package/dist/composition/quantities/applied-physicist.js +82 -0
  153. package/dist/composition/quantities/applied-physicist.js.map +1 -0
  154. package/dist/composition/quantities.d.ts +1 -0
  155. package/dist/composition/quantities.d.ts.map +1 -1
  156. package/dist/composition/quantities.js +1 -0
  157. package/dist/composition/quantities.js.map +1 -1
  158. package/dist/composition/uncertainty.d.ts +2 -2
  159. package/dist/composition/uncertainty.d.ts.map +1 -1
  160. package/dist/composition/uncertainty.js +14 -13
  161. package/dist/composition/uncertainty.js.map +1 -1
  162. package/dist/core/constants.d.ts +16 -0
  163. package/dist/core/constants.d.ts.map +1 -1
  164. package/dist/core/constants.js +16 -0
  165. package/dist/core/constants.js.map +1 -1
  166. package/dist/diff/bridge-gradient.d.ts +5 -8
  167. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  168. package/dist/diff/bridge-gradient.js +5 -8
  169. package/dist/diff/bridge-gradient.js.map +1 -1
  170. package/dist/dimensional/bridge-check.d.ts +1 -1
  171. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  172. package/dist/dimensional/bridge-check.js +5 -2
  173. package/dist/dimensional/bridge-check.js.map +1 -1
  174. package/dist/dimensional/buckingham.d.ts.map +1 -1
  175. package/dist/dimensional/buckingham.js +19 -91
  176. package/dist/dimensional/buckingham.js.map +1 -1
  177. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  178. package/dist/dimensional/dimension-spec.js +1 -0
  179. package/dist/dimensional/dimension-spec.js.map +1 -1
  180. package/dist/dimensional/formula-names.d.ts.map +1 -1
  181. package/dist/dimensional/formula-names.js +9 -1
  182. package/dist/dimensional/formula-names.js.map +1 -1
  183. package/dist/dimensional/units.d.ts +13 -0
  184. package/dist/dimensional/units.d.ts.map +1 -1
  185. package/dist/dimensional/units.js +81 -3
  186. package/dist/dimensional/units.js.map +1 -1
  187. package/dist/index.d.ts +5 -1
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +8 -4
  190. package/dist/index.js.map +1 -1
  191. package/dist/numerical/binding-value.d.ts +21 -3
  192. package/dist/numerical/binding-value.d.ts.map +1 -1
  193. package/dist/numerical/binding-value.js +106 -33
  194. package/dist/numerical/binding-value.js.map +1 -1
  195. package/dist/numerical/einstein-equation.js +3 -3
  196. package/dist/numerical/einstein-equation.js.map +1 -1
  197. package/dist/numerical/engine-registry.d.ts +12 -27
  198. package/dist/numerical/engine-registry.d.ts.map +1 -1
  199. package/dist/numerical/engine-registry.js +10 -65
  200. package/dist/numerical/engine-registry.js.map +1 -1
  201. package/dist/numerical/errors.d.ts +1 -2
  202. package/dist/numerical/errors.d.ts.map +1 -1
  203. package/dist/numerical/errors.js +1 -2
  204. package/dist/numerical/errors.js.map +1 -1
  205. package/dist/numerical/formula-contract.d.ts +60 -0
  206. package/dist/numerical/formula-contract.d.ts.map +1 -0
  207. package/dist/numerical/formula-contract.js +107 -0
  208. package/dist/numerical/formula-contract.js.map +1 -0
  209. package/dist/numerical/formula-dimension.d.ts +33 -10
  210. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  211. package/dist/numerical/formula-dimension.js +48 -35
  212. package/dist/numerical/formula-dimension.js.map +1 -1
  213. package/dist/numerical/formula-mathts.d.ts +15 -17
  214. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  215. package/dist/numerical/formula-mathts.js +34 -36
  216. package/dist/numerical/formula-mathts.js.map +1 -1
  217. package/dist/numerical/formula-registry.d.ts +11 -19
  218. package/dist/numerical/formula-registry.d.ts.map +1 -1
  219. package/dist/numerical/formula-registry.js +16 -79
  220. package/dist/numerical/formula-registry.js.map +1 -1
  221. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  222. package/dist/numerical/geodesic-integrator.js +19 -31
  223. package/dist/numerical/geodesic-integrator.js.map +1 -1
  224. package/dist/numerical/gl4-integrator.d.ts +12 -51
  225. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  226. package/dist/numerical/gl4-integrator.js +103 -565
  227. package/dist/numerical/gl4-integrator.js.map +1 -1
  228. package/dist/numerical/index.d.ts +0 -2
  229. package/dist/numerical/index.d.ts.map +1 -1
  230. package/dist/numerical/index.js +0 -2
  231. package/dist/numerical/index.js.map +1 -1
  232. package/dist/numerical/kretschmann.d.ts +2 -2
  233. package/dist/numerical/kretschmann.js +2 -2
  234. package/dist/numerical/mathts-engine.d.ts +7 -8
  235. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  236. package/dist/numerical/mathts-engine.js +19 -27
  237. package/dist/numerical/mathts-engine.js.map +1 -1
  238. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  239. package/dist/numerical/null-ray-integrator.js +11 -28
  240. package/dist/numerical/null-ray-integrator.js.map +1 -1
  241. package/dist/numerical/quadrature.d.ts +2 -17
  242. package/dist/numerical/quadrature.d.ts.map +1 -1
  243. package/dist/numerical/quadrature.js +9 -20
  244. package/dist/numerical/quadrature.js.map +1 -1
  245. package/dist/numerical/strides.d.ts +1 -2
  246. package/dist/numerical/strides.d.ts.map +1 -1
  247. package/dist/numerical/strides.js +1 -2
  248. package/dist/numerical/strides.js.map +1 -1
  249. package/dist/numerical/tensor-engine.d.ts +2 -3
  250. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  251. package/dist/numerical/tensor-engine.js +1 -2
  252. package/dist/numerical/tensor-engine.js.map +1 -1
  253. package/dist/relations/category.d.ts +8 -2
  254. package/dist/relations/category.d.ts.map +1 -1
  255. package/dist/relations/category.js +10 -2
  256. package/dist/relations/category.js.map +1 -1
  257. package/dist/relations/regime-vocabularies.d.ts +40 -0
  258. package/dist/relations/regime-vocabularies.d.ts.map +1 -0
  259. package/dist/relations/regime-vocabularies.js +19 -0
  260. package/dist/relations/regime-vocabularies.js.map +1 -0
  261. package/package.json +12 -46
  262. package/dist/numerical/float64-engine.d.ts +0 -55
  263. package/dist/numerical/float64-engine.d.ts.map +0 -1
  264. package/dist/numerical/float64-engine.js +0 -675
  265. package/dist/numerical/float64-engine.js.map +0 -1
  266. package/dist/numerical/formula.d.ts +0 -106
  267. package/dist/numerical/formula.d.ts.map +0 -1
  268. package/dist/numerical/formula.js +0 -348
  269. package/dist/numerical/formula.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Scalar-formula contract shared by the MathTS parser.
3
+ *
4
+ * Path B, the recursive-descent parser that used to live in `formula.ts`, is
5
+ * gone. These types and the documented function table stay: the MathTS
6
+ * adapter still returns a `number`, still refuses `euler`, and still supplies
7
+ * `ln` when MathTS does not define it.
8
+ *
9
+ * @module numerical/formula-contract
10
+ */
11
+ /** A parse or evaluation failure (bad syntax, unknown symbol, arity). */
12
+ export class FormulaError extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'FormulaError';
16
+ }
17
+ }
18
+ /**
19
+ * The name `euler` is not Euler's number. Write `exp(x)`, for example `exp(1)`.
20
+ * A bare `e` is the elementary charge. `E` is energy.
21
+ * @internal
22
+ */
23
+ export const EULER_NUMBER_ERROR = "euler is not Euler's number. Write it as exp(x), for example exp(1). A bare e is the elementary charge. E is energy.";
24
+ const arity1 = (f) => (a) => {
25
+ if (a.length !== 1)
26
+ throw new FormulaError('expected 1 argument');
27
+ return f(a[0]);
28
+ };
29
+ const FUNCTIONS = {
30
+ sqrt: arity1(Math.sqrt),
31
+ cbrt: arity1(Math.cbrt),
32
+ exp: arity1(Math.exp),
33
+ ln: arity1(Math.log),
34
+ log: arity1(Math.log), // natural log (physics convention)
35
+ log10: arity1(Math.log10),
36
+ log2: arity1(Math.log2),
37
+ abs: arity1(Math.abs),
38
+ sin: arity1(Math.sin),
39
+ cos: arity1(Math.cos),
40
+ tan: arity1(Math.tan),
41
+ asin: arity1(Math.asin),
42
+ acos: arity1(Math.acos),
43
+ atan: arity1(Math.atan),
44
+ sinh: arity1(Math.sinh),
45
+ cosh: arity1(Math.cosh),
46
+ tanh: arity1(Math.tanh),
47
+ pow: (a) => {
48
+ if (a.length !== 2)
49
+ throw new FormulaError('pow expects 2 arguments');
50
+ return Math.pow(a[0], a[1]);
51
+ },
52
+ atan2: (a) => {
53
+ if (a.length !== 2)
54
+ throw new FormulaError('atan2 expects 2 arguments');
55
+ return Math.atan2(a[0], a[1]);
56
+ },
57
+ };
58
+ /** Names of the built-in functions this parser documents. @internal */
59
+ export const BUILTIN_FUNCTION_NAMES = Object.keys(FUNCTIONS);
60
+ /**
61
+ * Function names from other conventions, each with the documented function that computes the same
62
+ * value (audit I4). An unknown name still fails: the equivalent is only named in the message, so a
63
+ * formula never means something its author did not write. Every `use` is in
64
+ * {@link BUILTIN_FUNCTION_NAMES}.
65
+ * @internal
66
+ */
67
+ export const FUNCTION_EQUIVALENTS = {
68
+ lg: { use: 'log10', meaning: 'the base-10 logarithm' },
69
+ lb: { use: 'log2', meaning: 'the base-2 logarithm' },
70
+ ld: { use: 'log2', meaning: 'the base-2 logarithm' },
71
+ arcsin: { use: 'asin', meaning: 'the inverse sine' },
72
+ arccos: { use: 'acos', meaning: 'the inverse cosine' },
73
+ arctan: { use: 'atan', meaning: 'the inverse tangent' },
74
+ arctg: { use: 'atan', meaning: 'the inverse tangent' },
75
+ tg: { use: 'tan', meaning: 'the tangent' },
76
+ fabs: { use: 'abs', meaning: 'the absolute value' },
77
+ power: { use: 'pow', meaning: 'a power' },
78
+ arctan2: { use: 'atan2', meaning: 'the two-argument inverse tangent' },
79
+ };
80
+ /** The documented functions as help and diagnostics list them, with the base of `log` stated. @internal */
81
+ export const BUILTIN_FUNCTION_LIST = BUILTIN_FUNCTION_NAMES.map((n) => n === 'log' ? 'log (natural, = ln)' : n).join(', ');
82
+ /**
83
+ * The diagnostic for a function this parser does not document: the documented equivalent when the
84
+ * name is a known alias or differs only in case, then the documented list. @internal
85
+ */
86
+ export function unknownFunctionMessage(name) {
87
+ const alias = FUNCTION_EQUIVALENTS[name];
88
+ const lower = name.toLowerCase();
89
+ const use = alias?.use ?? (lower !== name && BUILTIN_FUNCTION_NAMES.includes(lower) ? lower : FUNCTION_EQUIVALENTS[lower]?.use);
90
+ const meaning = alias?.meaning ?? FUNCTION_EQUIVALENTS[lower]?.meaning;
91
+ const hint = use === undefined
92
+ ? ''
93
+ : ` For ${meaning ?? `the function ${use}`} use ${use}(…), which the formula parser evaluates.`;
94
+ return `unknown function '${name}'.${hint} Documented functions: ${BUILTIN_FUNCTION_LIST}.`;
95
+ }
96
+ /**
97
+ * Call a documented function by name, with this parser's arity checks. Supplies
98
+ * a function MathTS does not define (`ln`).
99
+ * @internal
100
+ */
101
+ export function callBuiltinFunction(name, args) {
102
+ const fn = FUNCTIONS[name];
103
+ if (fn === undefined)
104
+ throw new FormulaError(unknownFunctionMessage(name));
105
+ return fn(args);
106
+ }
107
+ //# sourceMappingURL=formula-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula-contract.js","sourceRoot":"","sources":["../../src/numerical/formula-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAiBD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,sHAAsH,CAAC;AAGzH,MAAM,MAAM,GAAG,CAAC,CAAwB,EAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACrD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,MAAM,SAAS,GAAiC;IAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,mCAAmC;IAC1D,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,yBAAyB,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAClC,CAAC;CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiF;IAChH,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE;IACtD,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACpD,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACpD,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACpD,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACtD,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACvD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACtD,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE;IAC1C,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACnD,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;IACzC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE;CACvE,CAAC;AAEF,2GAA2G;AAC3G,MAAM,CAAC,MAAM,qBAAqB,GAAW,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5E,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,GAAG,GACP,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACtH,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACvE,MAAM,IAAI,GACR,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,QAAQ,OAAO,IAAI,gBAAgB,GAAG,EAAE,QAAQ,GAAG,0CAA0C,CAAC;IACpG,OAAO,qBAAqB,IAAI,KAAK,IAAI,0BAA0B,qBAAqB,GAAG,CAAC;AAC9F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAc;IAC9D,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,KAAK,SAAS;QAAE,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -7,10 +7,8 @@
7
7
  * dimensionally HOMOGENEOUS and what dimension it has — unifying string→AST
8
8
  * with AST→dimension.
9
9
  *
10
- * Works with BOTH parsers: the MathTS AST (Path A) and the self-contained
11
- * Path B AST. Each has its own small transpiler over a shared core
12
- * (`createFormulaDimensionChecker` + the dimensional helpers), so the check
13
- * is available WITHOUT the MathTS peer (`builtinFormulaDimensionChecker`).
10
+ * The MathTS AST is the only front-end. It adapts to a normalized `PNode`,
11
+ * and the dimensional transpilation lives on that node.
14
12
  *
15
13
  * @module numerical/formula-dimension
16
14
  */
@@ -36,6 +34,31 @@ export declare function formulaSymbolDimension(name: string): Dimension | undefi
36
34
  * @internal
37
35
  */
38
36
  export declare const ELEMENTARY_CHARGE_MIX_MESSAGE = "e is the elementary charge and is not dimensionless here. Declare it or bind a value (e=<number>) if you mean a different quantity, or write Euler's number as exp(x). The catalog writes the eccentricity factor as one_minus_e_sq.";
37
+ /** Normalized parse node — the shape the MathTS AST adapts to. @internal */
38
+ type PNode = {
39
+ kind: 'num';
40
+ value: number;
41
+ } | {
42
+ kind: 'sym';
43
+ name: string;
44
+ } | {
45
+ kind: 'neg';
46
+ arg: PNode;
47
+ } | {
48
+ kind: 'op';
49
+ op: '+' | '-' | '*' | '/';
50
+ args: PNode[];
51
+ } | {
52
+ kind: 'pow';
53
+ base: PNode;
54
+ exp: PNode;
55
+ } | {
56
+ kind: 'call';
57
+ fn: string;
58
+ args: PNode[];
59
+ };
60
+ /** The normalized node {@link parseFormulaPNode} returns. @internal */
61
+ export type FormulaPNode = PNode;
39
62
  /** The result of a formula dimensional check. */
40
63
  interface FormulaDimensionResult {
41
64
  /** True iff the formula is dimensionally homogeneous and well-formed. */
@@ -57,13 +80,13 @@ export interface FormulaDimensionChecker {
57
80
  * @throws {FormulaDimensionError} on a parse error or non-homogeneity. */
58
81
  parse(expr: string, dims: Readonly<Record<string, Dimension>>): ParsedPhysics;
59
82
  }
60
- /** The built-in (Path B) dimensional checker — always available, no peer. */
61
- export declare function builtinFormulaDimensionChecker(): FormulaDimensionChecker;
62
83
  /**
63
- * Dynamically load the optional MathTS peer and build a dimensional checker
64
- * over its AST. Throws if the peer is absent — the registry catches and
65
- * falls back to {@link builtinFormulaDimensionChecker}.
84
+ * Parse a formula to the normalized node the binding reader evaluates.
85
+ * `euler` is refused here so a binding never becomes Math.E.
86
+ * @internal
66
87
  */
67
- export declare function loadFormulaDimensionChecker(): Promise<FormulaDimensionChecker>;
88
+ export declare function parseFormulaPNode(expr: string): PNode;
89
+ /** The dimensional checker over the MathTS AST. The historical name stays. */
90
+ export declare function builtinFormulaDimensionChecker(): FormulaDimensionChecker;
68
91
  export {};
69
92
  //# sourceMappingURL=formula-dimension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula-dimension.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAM9E;;cAEc;AACd,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAMD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAM1E;AAyDD;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,yOAC+L,CAAC;AAyJ1O,iDAAiD;AACjD,UAAU,sBAAsB;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,sBAAsB,CAAC;IACvF;+EAC2E;IAC3E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,aAAa,CAAC;CAC/E;AAsCD,6EAA6E;AAC7E,wBAAgB,8BAA8B,IAAI,uBAAuB,CAExE;AAMD;;;;GAIG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAQpF"}
1
+ {"version":3,"file":"formula-dimension.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAK9E;;cAEc;AACd,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAMD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAM1E;AAyDD;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,yOAC+L,CAAC;AA2C1O,4EAA4E;AAC5E,KAAK,KAAK,GACN;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC;AAEhD,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;AAmFjC,iDAAiD;AACjD,UAAU,sBAAsB;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,sBAAsB,CAAC;IACvF;+EAC2E;IAC3E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,aAAa,CAAC;CAC/E;AA8CD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAIrD;AA0BD,8EAA8E;AAC9E,wBAAgB,8BAA8B,IAAI,uBAAuB,CAExE"}
@@ -7,18 +7,17 @@
7
7
  * dimensionally HOMOGENEOUS and what dimension it has — unifying string→AST
8
8
  * with AST→dimension.
9
9
  *
10
- * Works with BOTH parsers: the MathTS AST (Path A) and the self-contained
11
- * Path B AST. Each has its own small transpiler over a shared core
12
- * (`createFormulaDimensionChecker` + the dimensional helpers), so the check
13
- * is available WITHOUT the MathTS peer (`builtinFormulaDimensionChecker`).
10
+ * The MathTS AST is the only front-end. It adapts to a normalized `PNode`,
11
+ * and the dimensional transpilation lives on that node.
14
12
  *
15
13
  * @module numerical/formula-dimension
16
14
  */
15
+ import { parse as parseMathTs } from '@danielsimonjr/mathts-functions';
17
16
  import { CHARGE, DIMENSIONLESS, ENERGY } from '../dimensional/types.js';
18
17
  import { equals, format, multiply } from '../dimensional/algebra.js';
19
18
  import { validate } from '../dimensional/validator.js';
20
19
  import { sym } from '../dimensional/ast-builders.js';
21
- import { EULER_NUMBER_ERROR, parseFormulaToAst } from './formula.js';
20
+ import { EULER_NUMBER_ERROR, FormulaError } from './formula-contract.js';
22
21
  /** A formula cannot be dimensionally analyzed (undeclared symbol, variable
23
22
  * exponent, transcendental of a dimensional argument, unsupported node).
24
23
  * @public */
@@ -148,25 +147,6 @@ function mathtsToPNode(node) {
148
147
  throw new FormulaDimensionError(`unsupported node '${node.type}'`);
149
148
  }
150
149
  }
151
- /** Adapt a built-in `FormulaAstNode` to a `PNode` (pure shape map). */
152
- function pathBToPNode(node) {
153
- switch (node.kind) {
154
- case 'num':
155
- return { kind: 'num', value: node.value };
156
- case 'sym':
157
- return { kind: 'sym', name: node.name };
158
- case 'unary':
159
- return node.op === '-'
160
- ? { kind: 'neg', arg: pathBToPNode(node.arg) }
161
- : pathBToPNode(node.arg); // unary '+' is identity
162
- case 'bin':
163
- return node.op === '^'
164
- ? { kind: 'pow', base: pathBToPNode(node.left), exp: pathBToPNode(node.right) }
165
- : { kind: 'op', op: node.op, args: [pathBToPNode(node.left), pathBToPNode(node.right)] };
166
- case 'call':
167
- return { kind: 'call', fn: node.fn, args: node.args.map(pathBToPNode) };
168
- }
169
- }
170
150
  /** Fold a (presumed constant) `PNode` to a finite number, else throw. */
171
151
  function pnodeConstant(node) {
172
152
  const v = evalConstPNode(node);
@@ -259,20 +239,53 @@ function createFormulaDimensionChecker(toExprNode) {
259
239
  },
260
240
  };
261
241
  }
262
- /** The built-in (Path B) dimensional checker — always available, no peer. */
263
- export function builtinFormulaDimensionChecker() {
264
- return createFormulaDimensionChecker((expr, dims) => normToExpr(pathBToPNode(parseFormulaToAst(expr)), dims));
242
+ function parsedMathNode(expr) {
243
+ try {
244
+ return parseMathTs(expr);
245
+ }
246
+ catch (e) {
247
+ throw new FormulaError(`parse error: ${e instanceof Error ? e.message : String(e)}`);
248
+ }
265
249
  }
266
250
  /**
267
- * Dynamically load the optional MathTS peer and build a dimensional checker
268
- * over its AST. Throws if the peer is absent — the registry catches and
269
- * falls back to {@link builtinFormulaDimensionChecker}.
251
+ * Parse a formula to the normalized node the binding reader evaluates.
252
+ * `euler` is refused here so a binding never becomes Math.E.
253
+ * @internal
270
254
  */
271
- export async function loadFormulaDimensionChecker() {
272
- const mod = (await import('@danielsimonjr/mathts-functions'));
273
- if (typeof mod.parse !== 'function') {
274
- throw new FormulaDimensionError('mathts-functions: no parse() export');
255
+ export function parseFormulaPNode(expr) {
256
+ const node = mathtsToPNode(parsedMathNode(expr));
257
+ refuseEuler(node);
258
+ return node;
259
+ }
260
+ function refuseEuler(node) {
261
+ switch (node.kind) {
262
+ case 'sym':
263
+ if (node.name === 'euler')
264
+ throw new FormulaError(EULER_NUMBER_ERROR);
265
+ return;
266
+ case 'neg':
267
+ refuseEuler(node.arg);
268
+ return;
269
+ case 'op':
270
+ for (const a of node.args)
271
+ refuseEuler(a);
272
+ return;
273
+ case 'pow':
274
+ refuseEuler(node.base);
275
+ refuseEuler(node.exp);
276
+ return;
277
+ case 'call':
278
+ if (node.fn === 'euler')
279
+ throw new FormulaError(EULER_NUMBER_ERROR);
280
+ for (const a of node.args)
281
+ refuseEuler(a);
282
+ return;
283
+ case 'num':
284
+ return;
275
285
  }
276
- return createFormulaDimensionChecker((expr, dims) => normToExpr(mathtsToPNode(mod.parse(expr)), dims));
286
+ }
287
+ /** The dimensional checker over the MathTS AST. The historical name stays. */
288
+ export function builtinFormulaDimensionChecker() {
289
+ return createFormulaDimensionChecker((expr, dims) => normToExpr(mathtsToPNode(parsedMathNode(expr)), dims));
277
290
  }
278
291
  //# sourceMappingURL=formula-dimension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula-dimension.js","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-dimension.js","sourceRoot":"","sources":["../../src/numerical/formula-dimension.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,25 @@
1
1
  /**
2
- * MathTS-backed scalar-formula parser (Path A — see
3
- * docs/planning/MathTS-Formula-Integration-Design-Note.md).
2
+ * MathTS-backed scalar-formula parser.
4
3
  *
5
- * Implements the same {@link FormulaParser} contract as the self-contained
6
- * Path B parser (`formula.ts`), backed by `@danielsimonjr/mathts-functions`'s
7
- * assembled mathjs-style engine (`parse(expr) → Node`, `node.evaluate(scope)`).
8
- * The optional peer is loaded dynamically (it is NOT present at tsc time —
9
- * the ambient declaration in `mathts-functions.ambient.d.ts` covers it), so
10
- * the package still builds and runs without it; the registry
11
- * (`formula-registry.ts`) falls back to Path B when it is absent.
4
+ * Backed by `@danielsimonjr/mathts-functions` (`parse(expr) → Node`,
5
+ * `node.evaluate(scope)`). The package is a required dependency.
12
6
  *
13
7
  * SCALAR-ONLY guard: the CLI/inference contract returns a `number`. If a
14
8
  * formula evaluates to a non-number (matrix, complex, unit, function), this
15
9
  * throws a {@link FormulaError} rather than leaking MathTS types through the
16
- * seam — keeping the two parsers interchangeable.
10
+ * seam.
11
+ *
12
+ * Bare `e` is the elementary charge. MathTS `{ physics: true, charge: 'scalar' }`
13
+ * binds that symbol to the SI magnitude `1.602176634e-19`, so `1-e^2` is
14
+ * ordinary arithmetic. `{ physics: true }` without `charge: 'scalar'` is a
15
+ * Unit, and subtract does not accept it. Euler's number is `exp(x)`. The name
16
+ * `euler` is refused. `E` stays unbound.
17
17
  *
18
18
  * @module numerical/formula-mathts
19
19
  */
20
- import type { FormulaParser } from './formula.js';
21
- /**
22
- * Dynamically load the optional peer and build the MathTS-backed parser.
23
- * Throws if the peer is absent or fails to assemble — the registry catches
24
- * this and falls back to the self-contained Path B parser.
25
- */
26
- export declare function loadMathtsFormulaParser(): Promise<FormulaParser>;
20
+ import type { CompiledFormula, FormulaParser } from './formula-contract.js';
21
+ /** The MathTS formula parser. @internal */
22
+ export declare const mathtsFormulaParser: FormulaParser;
23
+ /** Parse a scalar formula. @internal */
24
+ export declare function parseFormula(expr: string): CompiledFormula;
27
25
  //# sourceMappingURL=formula-mathts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula-mathts.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,cAAc,CAAC;AAkKnE;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC,CAQtE"}
1
+ {"version":3,"file":"formula-mathts.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAmK5E,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,EAAE,aAAuD,CAAC;AAE1F,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE1D"}
@@ -1,32 +1,26 @@
1
1
  /**
2
- * MathTS-backed scalar-formula parser (Path A — see
3
- * docs/planning/MathTS-Formula-Integration-Design-Note.md).
2
+ * MathTS-backed scalar-formula parser.
4
3
  *
5
- * Implements the same {@link FormulaParser} contract as the self-contained
6
- * Path B parser (`formula.ts`), backed by `@danielsimonjr/mathts-functions`'s
7
- * assembled mathjs-style engine (`parse(expr) → Node`, `node.evaluate(scope)`).
8
- * The optional peer is loaded dynamically (it is NOT present at tsc time —
9
- * the ambient declaration in `mathts-functions.ambient.d.ts` covers it), so
10
- * the package still builds and runs without it; the registry
11
- * (`formula-registry.ts`) falls back to Path B when it is absent.
4
+ * Backed by `@danielsimonjr/mathts-functions` (`parse(expr) → Node`,
5
+ * `node.evaluate(scope)`). The package is a required dependency.
12
6
  *
13
7
  * SCALAR-ONLY guard: the CLI/inference contract returns a `number`. If a
14
8
  * formula evaluates to a non-number (matrix, complex, unit, function), this
15
9
  * throws a {@link FormulaError} rather than leaking MathTS types through the
16
- * seam — keeping the two parsers interchangeable.
10
+ * seam.
11
+ *
12
+ * Bare `e` is the elementary charge. MathTS `{ physics: true, charge: 'scalar' }`
13
+ * binds that symbol to the SI magnitude `1.602176634e-19`, so `1-e^2` is
14
+ * ordinary arithmetic. `{ physics: true }` without `charge: 'scalar'` is a
15
+ * Unit, and subtract does not accept it. Euler's number is `exp(x)`. The name
16
+ * `euler` is refused. `E` stays unbound.
17
17
  *
18
18
  * @module numerical/formula-mathts
19
19
  */
20
- import { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EULER_NUMBER_ERROR, FormulaError, unknownFunctionMessage } from './formula.js';
21
- import { E_SI } from '../core/constants.js';
22
- /**
23
- * Values injected ahead of the caller scope. MathTS's own `e` is Euler's
24
- * number; the physics reading is the elementary charge, and a scope entry
25
- * replaces it. The name `euler` is refused: Euler's number is `exp(x)`.
26
- */
27
- const PHYSICS_VALUES = { e: E_SI };
28
- /** Names that are constants here even when MathTS does not know them. */
29
- const PHYSICS_CONSTANT_NAMES = new Set(['e']);
20
+ import { compileExpr, parse as parseMathTs } from '@danielsimonjr/mathts-functions';
21
+ import { BUILTIN_FUNCTION_NAMES, callBuiltinFunction, EULER_NUMBER_ERROR, FormulaError, unknownFunctionMessage } from './formula-contract.js';
22
+ /** Bare `e` is the SI magnitude, not the coulomb Unit. */
23
+ const PHYSICS_SCALAR = { physics: true, charge: 'scalar' };
30
24
  /**
31
25
  * Build a {@link FormulaParser} bound to an already-loaded mathts-functions
32
26
  * module. Pure (no I/O) — the dynamic import lives in the registry.
@@ -54,8 +48,9 @@ function createMathtsFormulaParser(mod) {
54
48
  // treating it as a built-in dropped it from the free-variable list, so
55
49
  // `sqrt(gamma*pressure/density)` died as "undeclared symbol 'gamma'".
56
50
  // Only a name that evaluates to a number is a MathTS constant (`pi`, `tau`).
57
- // Bare `e` is one of those, and evaluation replaces MathTS's Euler value
58
- // with the elementary charge. The name `euler` is refused below.
51
+ // Bare `e` is one of those under MathTS's default (Euler's number). Evaluation
52
+ // below reads it as the elementary charge through `{ physics: true, charge: 'scalar' }`.
53
+ // An explicit scope `e` still wins. The name `euler` is refused below.
59
54
  // A call such as `gamma(5)` is still a callee, decided separately.
60
55
  const valueConstantCache = new Map();
61
56
  const isValueConstant = (name) => {
@@ -113,8 +108,11 @@ function createMathtsFormulaParser(mod) {
113
108
  .filter((n) => n.isSymbolNode === true)
114
109
  .map((n) => n.name)
115
110
  .filter((n) => typeof n === 'string')
116
- .filter((n) => !callees.has(n) && !isValueConstant(n) && !PHYSICS_CONSTANT_NAMES.has(n))),
111
+ .filter((n) => !callees.has(n) && !isValueConstant(n))),
117
112
  ].sort();
113
+ // `compileExpr` applies `{ physics: true, charge: 'scalar' }` on each
114
+ // evaluation, so bare `e` is the SI magnitude and a scope entry for `e` wins.
115
+ const compiled = compileExpr(expr, PHYSICS_SCALAR);
118
116
  return {
119
117
  source: expr,
120
118
  variables,
@@ -123,10 +121,13 @@ function createMathtsFormulaParser(mod) {
123
121
  throw new FormulaError(unknownFunctionMessage(unknownCallee));
124
122
  let result;
125
123
  try {
126
- result = node.evaluate({ ...shims, ...PHYSICS_VALUES, ...scope });
124
+ result = compiled.evaluate({ ...shims, ...scope });
127
125
  }
128
126
  catch (err) {
129
- throw new FormulaError(err instanceof Error ? err.message : String(err));
127
+ // `compileExpr` quotes the name (`Undefined symbol "process"`).
128
+ // The interpreter path reports `Undefined symbol process`.
129
+ const message = err instanceof Error ? err.message : String(err);
130
+ throw new FormulaError(message.replace(/^Undefined symbol "([^"]+)"$/, 'Undefined symbol $1'));
130
131
  }
131
132
  if (typeof result !== 'number' || !Number.isFinite(result)) {
132
133
  // typeof Infinity and NaN is "number", which reads as a type error.
@@ -152,16 +153,13 @@ function describeNonFinite(result) {
152
153
  }
153
154
  return typeof result;
154
155
  }
155
- /**
156
- * Dynamically load the optional peer and build the MathTS-backed parser.
157
- * Throws if the peer is absent or fails to assemble — the registry catches
158
- * this and falls back to the self-contained Path B parser.
159
- */
160
- export async function loadMathtsFormulaParser() {
161
- const mod = (await import('@danielsimonjr/mathts-functions'));
162
- if (typeof mod.parse !== 'function') {
163
- throw new FormulaError('mathts-functions: no parse() export');
164
- }
165
- return createMathtsFormulaParser(mod);
156
+ const mathTsModule = {
157
+ parse: (expr) => parseMathTs(expr),
158
+ };
159
+ /** The MathTS formula parser. @internal */
160
+ export const mathtsFormulaParser = createMathtsFormulaParser(mathTsModule);
161
+ /** Parse a scalar formula. @internal */
162
+ export function parseFormula(expr) {
163
+ return mathtsFormulaParser.parse(expr);
166
164
  }
167
165
  //# sourceMappingURL=formula-mathts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-mathts.js","sourceRoot":"","sources":["../../src/numerical/formula-mathts.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,28 @@
1
1
  /**
2
- * Formula-parser registry (Path A selector — mirrors `engine-registry.ts`).
2
+ * Formula-parser registry.
3
3
  *
4
- * `getFormulaParser()` returns the MathTS-backed parser when the optional
5
- * peer is installed AND actually assembles and evaluates (smoke-tested),
6
- * otherwise the self-contained Path B parser. The choice is detected once
7
- * and cached. A broken or absent MathTS never breaks the caller — it falls
8
- * back silently to Path B.
9
- *
10
- * The CLI and any inference code depend only on the {@link FormulaParser}
11
- * interface, so swapping Path B ↔ Path A is transparent.
4
+ * `getFormulaParser()` returns the MathTS-backed parser. The MathTS packages
5
+ * are required dependencies, so there is no absent-peer branch and no Path B
6
+ * parser.
12
7
  *
13
8
  * @module numerical/formula-registry
14
9
  */
15
- import type { FormulaParser } from './formula.js';
10
+ import type { FormulaParser } from './formula-contract.js';
16
11
  import type { Dimension } from '../dimensional/types.js';
17
12
  import type { FormulaDimensionChecker, ParsedPhysics } from './formula-dimension.js';
18
13
  type FormulaParserKind = 'mathts' | 'builtin';
19
- /** Resolve the active formula parser (cached). @internal */
14
+ /** Resolve the active formula parser. It is the MathTS parser. @internal */
20
15
  export declare function getFormulaParser(): Promise<FormulaParser>;
21
- /** Which parser is active — `mathts` (Path A) or `builtin` (Path B). @internal */
16
+ /** Which parser is active. Always `mathts`. @internal */
22
17
  export declare function getFormulaParserKind(): Promise<FormulaParserKind>;
23
18
  /**
24
- * The dimensional checker for user formulas (MathTS Phase 2). Always
25
- * available: it uses the MathTS AST when the peer is installed and
26
- * smoke-tests clean, else the self-contained Path B AST — both transpile to
27
- * the same `ExprNode`, so the dimensional verdict is identical. @internal
19
+ * The dimensional checker for user formulas. It transpiles the MathTS AST.
20
+ * @internal
28
21
  */
29
22
  export declare function getFormulaDimensionChecker(): Promise<FormulaDimensionChecker>;
30
23
  /**
31
- * Parse physics text to a dimensional `ExprNode` + its inferred dimension, using
32
- * the active front-end (MathTS when the optional peer is installed, else the
33
- * built-in parser). The single public string→`ExprNode` entry point.
24
+ * Parse physics text to a dimensional `ExprNode` + its inferred dimension.
25
+ * The single public string→`ExprNode` entry point.
34
26
  *
35
27
  * @throws {FormulaDimensionError} on a parse error or non-homogeneity.
36
28
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF,KAAK,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AA8C9C,4DAA4D;AAC5D,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAG/D;AAED,kFAAkF;AAClF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAGvE;AAMD;;;;;GAKG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAYnF;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC,CAGxB"}
1
+ {"version":3,"file":"formula-registry.d.ts","sourceRoot":"","sources":["../../src/numerical/formula-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF,KAAK,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAE/D;AAED,yDAAyD;AACzD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAEnF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC,CAExB"}