universal-physics-tensor 6.1.0 → 8.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 (823) hide show
  1. package/README.md +5 -5
  2. package/data/atlas/atlas.json +3044 -0
  3. package/data/atlas/atlas.jsonld +1819 -0
  4. package/data/atlas/diffusion.json +1084 -0
  5. package/data/atlas/oscillators.json +1041 -0
  6. package/data/atlas/qudt-resolution.json +60 -0
  7. package/data/atlas/waves.json +916 -0
  8. package/data/atlas/witness-results.json +249 -0
  9. package/data/bridge-catalog.json +15273 -0
  10. package/data/bridge-catalog.schema.json +116 -0
  11. package/data/confrontation-sources.md +137 -0
  12. package/data/quantities.json +9743 -0
  13. package/data/schemas/atlas-record.v0.json +236 -0
  14. package/data/schemas/discovery-run.v0.json +203 -0
  15. package/dist/atlas/catalog-formal-ref.d.ts +6 -12
  16. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  17. package/dist/atlas/catalog-formal-ref.js +15 -25
  18. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  19. package/dist/atlas/physjs-entries.generated.d.ts +304 -1
  20. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  21. package/dist/atlas/physjs-entries.generated.js +341 -1
  22. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  23. package/dist/atlas/physjs-ref.d.ts +7 -1
  24. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  25. package/dist/atlas/physjs-ref.js +10 -85
  26. package/dist/atlas/physjs-ref.js.map +1 -1
  27. package/dist/bridges/caller-table.d.ts +56 -0
  28. package/dist/bridges/caller-table.d.ts.map +1 -0
  29. package/dist/bridges/{be53-yang-mills-confrontation.js → caller-table.js} +13 -15
  30. package/dist/bridges/caller-table.js.map +1 -0
  31. package/dist/bridges/catalog-load.d.ts +34 -0
  32. package/dist/bridges/catalog-load.d.ts.map +1 -0
  33. package/dist/bridges/catalog-load.js +89 -0
  34. package/dist/bridges/catalog-load.js.map +1 -0
  35. package/dist/bridges/catalog-types.d.ts +119 -0
  36. package/dist/bridges/catalog-types.d.ts.map +1 -0
  37. package/dist/bridges/catalog-types.js +8 -0
  38. package/dist/bridges/catalog-types.js.map +1 -0
  39. package/dist/bridges/coefficient-statement.d.ts +27 -0
  40. package/dist/bridges/coefficient-statement.d.ts.map +1 -0
  41. package/dist/bridges/coefficient-statement.js +33 -0
  42. package/dist/bridges/coefficient-statement.js.map +1 -0
  43. package/dist/bridges/confrontations.d.ts +8 -25
  44. package/dist/bridges/confrontations.d.ts.map +1 -1
  45. package/dist/bridges/confrontations.js +26 -714
  46. package/dist/bridges/confrontations.js.map +1 -1
  47. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  48. package/dist/bridges/evaluator-inputs.js +30 -8
  49. package/dist/bridges/evaluator-inputs.js.map +1 -1
  50. package/dist/bridges/evaluators.d.ts +14 -27
  51. package/dist/bridges/evaluators.d.ts.map +1 -1
  52. package/dist/bridges/evaluators.js +83 -354
  53. package/dist/bridges/evaluators.js.map +1 -1
  54. package/dist/bridges/expr-parse.d.ts +19 -0
  55. package/dist/bridges/expr-parse.d.ts.map +1 -0
  56. package/dist/bridges/expr-parse.js +269 -0
  57. package/dist/bridges/expr-parse.js.map +1 -0
  58. package/dist/bridges/holds.d.ts +22 -0
  59. package/dist/bridges/holds.d.ts.map +1 -0
  60. package/dist/bridges/holds.js +266 -0
  61. package/dist/bridges/holds.js.map +1 -0
  62. package/dist/bridges/index.d.ts +18 -352
  63. package/dist/bridges/index.d.ts.map +1 -1
  64. package/dist/bridges/index.js +17 -3306
  65. package/dist/bridges/index.js.map +1 -1
  66. package/dist/bridges/relation-eval.d.ts +23 -0
  67. package/dist/bridges/relation-eval.d.ts.map +1 -0
  68. package/dist/bridges/relation-eval.js +136 -0
  69. package/dist/bridges/relation-eval.js.map +1 -0
  70. package/dist/bridges/rhs-registry.d.ts +7 -21
  71. package/dist/bridges/rhs-registry.d.ts.map +1 -1
  72. package/dist/bridges/rhs-registry.js +13 -123
  73. package/dist/bridges/rhs-registry.js.map +1 -1
  74. package/dist/bridges/sensitivity.d.ts +11 -3
  75. package/dist/bridges/sensitivity.d.ts.map +1 -1
  76. package/dist/bridges/sensitivity.js +20 -36
  77. package/dist/bridges/sensitivity.js.map +1 -1
  78. package/dist/bridges/types.d.ts +52 -0
  79. package/dist/bridges/types.d.ts.map +1 -0
  80. package/dist/bridges/types.js +10 -0
  81. package/dist/bridges/types.js.map +1 -0
  82. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  83. package/dist/canonical/entries/atomic.js +5 -4
  84. package/dist/canonical/entries/atomic.js.map +1 -1
  85. package/dist/canonical/entries/condensed-matter.js +1 -1
  86. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  87. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  88. package/dist/canonical/entries/electromagnetism.js +7 -3
  89. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  90. package/dist/canonical/entries/fluids-waves.js +1 -1
  91. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  92. package/dist/canonical/entries/mechanics.js +1 -1
  93. package/dist/canonical/entries/mechanics.js.map +1 -1
  94. package/dist/canonical/entries/nonmonomial.js +1 -1
  95. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  96. package/dist/canonical/entries/relativity.js +1 -1
  97. package/dist/canonical/entries/relativity.js.map +1 -1
  98. package/dist/canonical/entries/statistical-mechanics.js +1 -1
  99. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  100. package/dist/canonical/entries/thermo-nuclear-cosmo.js +2 -2
  101. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  102. package/dist/canonical/normal-form.d.ts.map +1 -1
  103. package/dist/canonical/normal-form.js +9 -4
  104. package/dist/canonical/normal-form.js.map +1 -1
  105. package/dist/cases/kepler-rv.d.ts.map +1 -1
  106. package/dist/cases/kepler-rv.js +7 -3
  107. package/dist/cases/kepler-rv.js.map +1 -1
  108. package/dist/cases/resistor-noise.d.ts.map +1 -1
  109. package/dist/cases/resistor-noise.js +10 -5
  110. package/dist/cases/resistor-noise.js.map +1 -1
  111. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  112. package/dist/cli/commands/_discovery-opts.js +18 -1
  113. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  114. package/dist/cli/commands/atlas.js +1 -1
  115. package/dist/cli/commands/atlas.js.map +1 -1
  116. package/dist/cli/commands/chain.js +2 -2
  117. package/dist/cli/commands/chain.js.map +1 -1
  118. package/dist/cli/commands/confront.d.ts.map +1 -1
  119. package/dist/cli/commands/confront.js +17 -17
  120. package/dist/cli/commands/confront.js.map +1 -1
  121. package/dist/cli/commands/eval.d.ts.map +1 -1
  122. package/dist/cli/commands/eval.js +11 -1
  123. package/dist/cli/commands/eval.js.map +1 -1
  124. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  125. package/dist/cli/commands/evaluate.js +44 -27
  126. package/dist/cli/commands/evaluate.js.map +1 -1
  127. package/dist/cli/commands/explain.d.ts.map +1 -1
  128. package/dist/cli/commands/explain.js +16 -3
  129. package/dist/cli/commands/explain.js.map +1 -1
  130. package/dist/cli/commands/map.js +1 -1
  131. package/dist/cli/commands/map.js.map +1 -1
  132. package/dist/cli/commands/regime.d.ts.map +1 -1
  133. package/dist/cli/commands/regime.js +15 -3
  134. package/dist/cli/commands/regime.js.map +1 -1
  135. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  136. package/dist/cli/commands/symbolic.js +5 -4
  137. package/dist/cli/commands/symbolic.js.map +1 -1
  138. package/dist/cli/search-index.d.ts +1 -1
  139. package/dist/cli/search-index.js +1 -1
  140. package/dist/cli/search-index.js.map +1 -1
  141. package/dist/cli-api.d.ts +13 -2
  142. package/dist/cli-api.d.ts.map +1 -1
  143. package/dist/cli-api.js +13 -2
  144. package/dist/cli-api.js.map +1 -1
  145. package/dist/composition/aliases.d.ts +10 -29
  146. package/dist/composition/aliases.d.ts.map +1 -1
  147. package/dist/composition/aliases.js +17 -66
  148. package/dist/composition/aliases.js.map +1 -1
  149. package/dist/composition/canonical-compare.d.ts.map +1 -1
  150. package/dist/composition/canonical-compare.js +4 -3
  151. package/dist/composition/canonical-compare.js.map +1 -1
  152. package/dist/composition/canonical-graph.d.ts +12 -7
  153. package/dist/composition/canonical-graph.d.ts.map +1 -1
  154. package/dist/composition/canonical-graph.js +78 -20
  155. package/dist/composition/canonical-graph.js.map +1 -1
  156. package/dist/composition/catalog-graph.d.ts +11 -4
  157. package/dist/composition/catalog-graph.d.ts.map +1 -1
  158. package/dist/composition/catalog-graph.js +78 -45
  159. package/dist/composition/catalog-graph.js.map +1 -1
  160. package/dist/composition/discovery.d.ts.map +1 -1
  161. package/dist/composition/discovery.js +26 -22
  162. package/dist/composition/discovery.js.map +1 -1
  163. package/dist/composition/evaluate-relation.d.ts +18 -0
  164. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  165. package/dist/composition/evaluate-relation.js +103 -18
  166. package/dist/composition/evaluate-relation.js.map +1 -1
  167. package/dist/composition/expr-eval.d.ts.map +1 -1
  168. package/dist/composition/expr-eval.js +6 -0
  169. package/dist/composition/expr-eval.js.map +1 -1
  170. package/dist/composition/frontier-account.d.ts.map +1 -1
  171. package/dist/composition/frontier-account.js +1 -1
  172. package/dist/composition/frontier-account.js.map +1 -1
  173. package/dist/composition/index.d.ts +6 -13
  174. package/dist/composition/index.d.ts.map +1 -1
  175. package/dist/composition/index.js +6 -13
  176. package/dist/composition/index.js.map +1 -1
  177. package/dist/composition/quantities.d.ts +11 -26
  178. package/dist/composition/quantities.d.ts.map +1 -1
  179. package/dist/composition/quantities.js +29 -28
  180. package/dist/composition/quantities.js.map +1 -1
  181. package/dist/composition/user-equation.d.ts +3 -20
  182. package/dist/composition/user-equation.d.ts.map +1 -1
  183. package/dist/composition/user-equation.js +8 -55
  184. package/dist/composition/user-equation.js.map +1 -1
  185. package/dist/core/constants.d.ts +14 -0
  186. package/dist/core/constants.d.ts.map +1 -1
  187. package/dist/core/constants.js +16 -0
  188. package/dist/core/constants.js.map +1 -1
  189. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  190. package/dist/diff/bridge-ast-gradient.js +1 -0
  191. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  192. package/dist/diff/bridge-gradient.d.ts +1 -1
  193. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  194. package/dist/diff/bridge-specs.d.ts +32 -62
  195. package/dist/diff/bridge-specs.d.ts.map +1 -1
  196. package/dist/diff/bridge-specs.js +55 -76
  197. package/dist/diff/bridge-specs.js.map +1 -1
  198. package/dist/dimensional/bridge-check.d.ts +9 -26
  199. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  200. package/dist/dimensional/bridge-check.js +22 -214
  201. package/dist/dimensional/bridge-check.js.map +1 -1
  202. package/dist/dimensional/formula-names.d.ts +65 -0
  203. package/dist/dimensional/formula-names.d.ts.map +1 -1
  204. package/dist/dimensional/formula-names.js +150 -2
  205. package/dist/dimensional/formula-names.js.map +1 -1
  206. package/dist/dimensional/hyphen-names.d.ts +13 -0
  207. package/dist/dimensional/hyphen-names.d.ts.map +1 -0
  208. package/dist/dimensional/hyphen-names.js +27 -0
  209. package/dist/dimensional/hyphen-names.js.map +1 -0
  210. package/dist/dimensional/quantity-registry.d.ts +33 -0
  211. package/dist/dimensional/quantity-registry.d.ts.map +1 -0
  212. package/dist/dimensional/quantity-registry.js +49 -0
  213. package/dist/dimensional/quantity-registry.js.map +1 -0
  214. package/dist/dimensional/units.d.ts +4 -2
  215. package/dist/dimensional/units.d.ts.map +1 -1
  216. package/dist/dimensional/units.js +274 -60
  217. package/dist/dimensional/units.js.map +1 -1
  218. package/dist/index.d.ts +23 -59
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +14 -45
  221. package/dist/index.js.map +1 -1
  222. package/dist/numerical/binding-value.d.ts.map +1 -1
  223. package/dist/numerical/binding-value.js +75 -24
  224. package/dist/numerical/binding-value.js.map +1 -1
  225. package/dist/numerical/{be37-covariant-eikonal.d.ts → covariant-eikonal.d.ts} +13 -13
  226. package/dist/numerical/covariant-eikonal.d.ts.map +1 -0
  227. package/dist/numerical/{be37-covariant-eikonal.js → covariant-eikonal.js} +18 -18
  228. package/dist/numerical/covariant-eikonal.js.map +1 -0
  229. package/dist/numerical/derivative-lowering.d.ts +2 -1
  230. package/dist/numerical/derivative-lowering.d.ts.map +1 -1
  231. package/dist/numerical/derivative-lowering.js +2 -1
  232. package/dist/numerical/derivative-lowering.js.map +1 -1
  233. package/dist/numerical/gl4-integrator.d.ts +6 -3
  234. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  235. package/dist/numerical/gl4-integrator.js +6 -3
  236. package/dist/numerical/gl4-integrator.js.map +1 -1
  237. package/dist/numerical/index.d.ts +4 -3
  238. package/dist/numerical/index.d.ts.map +1 -1
  239. package/dist/numerical/index.js +2 -2
  240. package/dist/numerical/index.js.map +1 -1
  241. package/dist/numerical/null-ic.d.ts +6 -5
  242. package/dist/numerical/null-ic.d.ts.map +1 -1
  243. package/dist/numerical/null-ic.js +6 -5
  244. package/dist/numerical/null-ic.js.map +1 -1
  245. package/dist/numerical/null-ray-integrator.js +1 -1
  246. package/dist/numerical/perihelion-finder.d.ts +5 -4
  247. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  248. package/dist/numerical/perihelion-finder.js +5 -4
  249. package/dist/numerical/perihelion-finder.js.map +1 -1
  250. package/package.json +2 -1
  251. package/dist/bridges/be100-lyddane-sachs-teller.d.ts +0 -41
  252. package/dist/bridges/be100-lyddane-sachs-teller.d.ts.map +0 -1
  253. package/dist/bridges/be100-lyddane-sachs-teller.js +0 -30
  254. package/dist/bridges/be100-lyddane-sachs-teller.js.map +0 -1
  255. package/dist/bridges/be101-bkt-jump.d.ts +0 -24
  256. package/dist/bridges/be101-bkt-jump.d.ts.map +0 -1
  257. package/dist/bridges/be101-bkt-jump.js +0 -29
  258. package/dist/bridges/be101-bkt-jump.js.map +0 -1
  259. package/dist/bridges/be102-landauer-conductance.d.ts +0 -24
  260. package/dist/bridges/be102-landauer-conductance.d.ts.map +0 -1
  261. package/dist/bridges/be102-landauer-conductance.js +0 -28
  262. package/dist/bridges/be102-landauer-conductance.js.map +0 -1
  263. package/dist/bridges/be11-decoherence-confrontation.d.ts +0 -63
  264. package/dist/bridges/be11-decoherence-confrontation.d.ts.map +0 -1
  265. package/dist/bridges/be11-decoherence-confrontation.js +0 -39
  266. package/dist/bridges/be11-decoherence-confrontation.js.map +0 -1
  267. package/dist/bridges/be21-kss-confrontation.d.ts +0 -52
  268. package/dist/bridges/be21-kss-confrontation.d.ts.map +0 -1
  269. package/dist/bridges/be21-kss-confrontation.js +0 -38
  270. package/dist/bridges/be21-kss-confrontation.js.map +0 -1
  271. package/dist/bridges/be23-planckian-confrontation.d.ts +0 -162
  272. package/dist/bridges/be23-planckian-confrontation.d.ts.map +0 -1
  273. package/dist/bridges/be23-planckian-confrontation.js +0 -196
  274. package/dist/bridges/be23-planckian-confrontation.js.map +0 -1
  275. package/dist/bridges/be35-bootstrap-confrontation.d.ts +0 -59
  276. package/dist/bridges/be35-bootstrap-confrontation.d.ts.map +0 -1
  277. package/dist/bridges/be35-bootstrap-confrontation.js +0 -39
  278. package/dist/bridges/be35-bootstrap-confrontation.js.map +0 -1
  279. package/dist/bridges/be36-gw170817-confrontation.d.ts +0 -111
  280. package/dist/bridges/be36-gw170817-confrontation.d.ts.map +0 -1
  281. package/dist/bridges/be36-gw170817-confrontation.js +0 -100
  282. package/dist/bridges/be36-gw170817-confrontation.js.map +0 -1
  283. package/dist/bridges/be37-cassini-confrontation.d.ts +0 -43
  284. package/dist/bridges/be37-cassini-confrontation.d.ts.map +0 -1
  285. package/dist/bridges/be37-cassini-confrontation.js +0 -34
  286. package/dist/bridges/be37-cassini-confrontation.js.map +0 -1
  287. package/dist/bridges/be48-collapse-confrontation.d.ts +0 -52
  288. package/dist/bridges/be48-collapse-confrontation.d.ts.map +0 -1
  289. package/dist/bridges/be48-collapse-confrontation.js +0 -37
  290. package/dist/bridges/be48-collapse-confrontation.js.map +0 -1
  291. package/dist/bridges/be51-lensing-confrontation.d.ts +0 -53
  292. package/dist/bridges/be51-lensing-confrontation.d.ts.map +0 -1
  293. package/dist/bridges/be51-lensing-confrontation.js +0 -52
  294. package/dist/bridges/be51-lensing-confrontation.js.map +0 -1
  295. package/dist/bridges/be52-mercury-confrontation.d.ts +0 -72
  296. package/dist/bridges/be52-mercury-confrontation.d.ts.map +0 -1
  297. package/dist/bridges/be52-mercury-confrontation.js +0 -70
  298. package/dist/bridges/be52-mercury-confrontation.js.map +0 -1
  299. package/dist/bridges/be53-yang-mills-confrontation.d.ts +0 -81
  300. package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +0 -1
  301. package/dist/bridges/be53-yang-mills-confrontation.js.map +0 -1
  302. package/dist/bridges/be55-quantum-hall-confrontation.d.ts +0 -51
  303. package/dist/bridges/be55-quantum-hall-confrontation.d.ts.map +0 -1
  304. package/dist/bridges/be55-quantum-hall-confrontation.js +0 -32
  305. package/dist/bridges/be55-quantum-hall-confrontation.js.map +0 -1
  306. package/dist/bridges/be55-quantum-hall.d.ts +0 -24
  307. package/dist/bridges/be55-quantum-hall.d.ts.map +0 -1
  308. package/dist/bridges/be55-quantum-hall.js +0 -46
  309. package/dist/bridges/be55-quantum-hall.js.map +0 -1
  310. package/dist/bridges/be56-casimir-confrontation.d.ts +0 -52
  311. package/dist/bridges/be56-casimir-confrontation.d.ts.map +0 -1
  312. package/dist/bridges/be56-casimir-confrontation.js +0 -31
  313. package/dist/bridges/be56-casimir-confrontation.js.map +0 -1
  314. package/dist/bridges/be56-casimir.d.ts +0 -18
  315. package/dist/bridges/be56-casimir.d.ts.map +0 -1
  316. package/dist/bridges/be56-casimir.js +0 -36
  317. package/dist/bridges/be56-casimir.js.map +0 -1
  318. package/dist/bridges/be57-unruh.d.ts +0 -18
  319. package/dist/bridges/be57-unruh.d.ts.map +0 -1
  320. package/dist/bridges/be57-unruh.js +0 -38
  321. package/dist/bridges/be57-unruh.js.map +0 -1
  322. package/dist/bridges/be58-johnson-nyquist-confrontation.d.ts +0 -57
  323. package/dist/bridges/be58-johnson-nyquist-confrontation.d.ts.map +0 -1
  324. package/dist/bridges/be58-johnson-nyquist-confrontation.js +0 -38
  325. package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +0 -1
  326. package/dist/bridges/be58-johnson-nyquist.d.ts +0 -22
  327. package/dist/bridges/be58-johnson-nyquist.d.ts.map +0 -1
  328. package/dist/bridges/be58-johnson-nyquist.js +0 -36
  329. package/dist/bridges/be58-johnson-nyquist.js.map +0 -1
  330. package/dist/bridges/be59-ac-josephson-confrontation.d.ts +0 -46
  331. package/dist/bridges/be59-ac-josephson-confrontation.d.ts.map +0 -1
  332. package/dist/bridges/be59-ac-josephson-confrontation.js +0 -32
  333. package/dist/bridges/be59-ac-josephson-confrontation.js.map +0 -1
  334. package/dist/bridges/be59-ac-josephson.d.ts +0 -22
  335. package/dist/bridges/be59-ac-josephson.d.ts.map +0 -1
  336. package/dist/bridges/be59-ac-josephson.js +0 -35
  337. package/dist/bridges/be59-ac-josephson.js.map +0 -1
  338. package/dist/bridges/be60-fractional-qh-confrontation.d.ts +0 -45
  339. package/dist/bridges/be60-fractional-qh-confrontation.d.ts.map +0 -1
  340. package/dist/bridges/be60-fractional-qh-confrontation.js +0 -31
  341. package/dist/bridges/be60-fractional-qh-confrontation.js.map +0 -1
  342. package/dist/bridges/be60-fractional-qh.d.ts +0 -20
  343. package/dist/bridges/be60-fractional-qh.d.ts.map +0 -1
  344. package/dist/bridges/be60-fractional-qh.js +0 -33
  345. package/dist/bridges/be60-fractional-qh.js.map +0 -1
  346. package/dist/bridges/be61-wiedemann-franz-confrontation.d.ts +0 -35
  347. package/dist/bridges/be61-wiedemann-franz-confrontation.d.ts.map +0 -1
  348. package/dist/bridges/be61-wiedemann-franz-confrontation.js +0 -49
  349. package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +0 -1
  350. package/dist/bridges/be61-wiedemann-franz.d.ts +0 -25
  351. package/dist/bridges/be61-wiedemann-franz.d.ts.map +0 -1
  352. package/dist/bridges/be61-wiedemann-franz.js +0 -41
  353. package/dist/bridges/be61-wiedemann-franz.js.map +0 -1
  354. package/dist/bridges/be62-bcs-gap-confrontation.d.ts +0 -35
  355. package/dist/bridges/be62-bcs-gap-confrontation.d.ts.map +0 -1
  356. package/dist/bridges/be62-bcs-gap-confrontation.js +0 -46
  357. package/dist/bridges/be62-bcs-gap-confrontation.js.map +0 -1
  358. package/dist/bridges/be62-bcs-gap.d.ts +0 -22
  359. package/dist/bridges/be62-bcs-gap.d.ts.map +0 -1
  360. package/dist/bridges/be62-bcs-gap.js +0 -38
  361. package/dist/bridges/be62-bcs-gap.js.map +0 -1
  362. package/dist/bridges/be63-chandrasekhar-mass-confrontation.d.ts +0 -32
  363. package/dist/bridges/be63-chandrasekhar-mass-confrontation.d.ts.map +0 -1
  364. package/dist/bridges/be63-chandrasekhar-mass-confrontation.js +0 -46
  365. package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +0 -1
  366. package/dist/bridges/be63-chandrasekhar-mass.d.ts +0 -22
  367. package/dist/bridges/be63-chandrasekhar-mass.d.ts.map +0 -1
  368. package/dist/bridges/be63-chandrasekhar-mass.js +0 -34
  369. package/dist/bridges/be63-chandrasekhar-mass.js.map +0 -1
  370. package/dist/bridges/be64-eddington-luminosity-confrontation.d.ts +0 -48
  371. package/dist/bridges/be64-eddington-luminosity-confrontation.d.ts.map +0 -1
  372. package/dist/bridges/be64-eddington-luminosity-confrontation.js +0 -31
  373. package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +0 -1
  374. package/dist/bridges/be64-eddington-luminosity.d.ts +0 -22
  375. package/dist/bridges/be64-eddington-luminosity.d.ts.map +0 -1
  376. package/dist/bridges/be64-eddington-luminosity.js +0 -35
  377. package/dist/bridges/be64-eddington-luminosity.js.map +0 -1
  378. package/dist/bridges/be65-jeans-mass-confrontation.d.ts +0 -36
  379. package/dist/bridges/be65-jeans-mass-confrontation.d.ts.map +0 -1
  380. package/dist/bridges/be65-jeans-mass-confrontation.js +0 -58
  381. package/dist/bridges/be65-jeans-mass-confrontation.js.map +0 -1
  382. package/dist/bridges/be65-jeans-mass.d.ts +0 -24
  383. package/dist/bridges/be65-jeans-mass.d.ts.map +0 -1
  384. package/dist/bridges/be65-jeans-mass.js +0 -38
  385. package/dist/bridges/be65-jeans-mass.js.map +0 -1
  386. package/dist/bridges/be66-radiation-pressure.d.ts +0 -30
  387. package/dist/bridges/be66-radiation-pressure.d.ts.map +0 -1
  388. package/dist/bridges/be66-radiation-pressure.js +0 -37
  389. package/dist/bridges/be66-radiation-pressure.js.map +0 -1
  390. package/dist/bridges/be67-alfven-speed.d.ts +0 -41
  391. package/dist/bridges/be67-alfven-speed.d.ts.map +0 -1
  392. package/dist/bridges/be67-alfven-speed.js +0 -50
  393. package/dist/bridges/be67-alfven-speed.js.map +0 -1
  394. package/dist/bridges/be68-tolman-ehrenfest.d.ts +0 -49
  395. package/dist/bridges/be68-tolman-ehrenfest.d.ts.map +0 -1
  396. package/dist/bridges/be68-tolman-ehrenfest.js +0 -46
  397. package/dist/bridges/be68-tolman-ehrenfest.js.map +0 -1
  398. package/dist/bridges/be69-fast-magnetosonic.d.ts +0 -30
  399. package/dist/bridges/be69-fast-magnetosonic.d.ts.map +0 -1
  400. package/dist/bridges/be69-fast-magnetosonic.js +0 -33
  401. package/dist/bridges/be69-fast-magnetosonic.js.map +0 -1
  402. package/dist/bridges/be70-einstein-relation.d.ts +0 -30
  403. package/dist/bridges/be70-einstein-relation.d.ts.map +0 -1
  404. package/dist/bridges/be70-einstein-relation.js +0 -41
  405. package/dist/bridges/be70-einstein-relation.js.map +0 -1
  406. package/dist/bridges/be71-clapeyron.d.ts +0 -43
  407. package/dist/bridges/be71-clapeyron.d.ts.map +0 -1
  408. package/dist/bridges/be71-clapeyron.js +0 -32
  409. package/dist/bridges/be71-clapeyron.js.map +0 -1
  410. package/dist/bridges/be72-gravitational-redshift.d.ts +0 -43
  411. package/dist/bridges/be72-gravitational-redshift.d.ts.map +0 -1
  412. package/dist/bridges/be72-gravitational-redshift.js +0 -32
  413. package/dist/bridges/be72-gravitational-redshift.js.map +0 -1
  414. package/dist/bridges/be73-kelvin-peltier.d.ts +0 -42
  415. package/dist/bridges/be73-kelvin-peltier.d.ts.map +0 -1
  416. package/dist/bridges/be73-kelvin-peltier.js +0 -31
  417. package/dist/bridges/be73-kelvin-peltier.js.map +0 -1
  418. package/dist/bridges/be74-magnetic-pressure.d.ts +0 -27
  419. package/dist/bridges/be74-magnetic-pressure.d.ts.map +0 -1
  420. package/dist/bridges/be74-magnetic-pressure.js +0 -29
  421. package/dist/bridges/be74-magnetic-pressure.js.map +0 -1
  422. package/dist/bridges/be75-london-penetration.d.ts +0 -27
  423. package/dist/bridges/be75-london-penetration.d.ts.map +0 -1
  424. package/dist/bridges/be75-london-penetration.js +0 -31
  425. package/dist/bridges/be75-london-penetration.js.map +0 -1
  426. package/dist/bridges/be76-plasma-beta.d.ts +0 -32
  427. package/dist/bridges/be76-plasma-beta.d.ts.map +0 -1
  428. package/dist/bridges/be76-plasma-beta.js +0 -34
  429. package/dist/bridges/be76-plasma-beta.js.map +0 -1
  430. package/dist/bridges/be77-hagen-poiseuille.d.ts +0 -50
  431. package/dist/bridges/be77-hagen-poiseuille.d.ts.map +0 -1
  432. package/dist/bridges/be77-hagen-poiseuille.js +0 -39
  433. package/dist/bridges/be77-hagen-poiseuille.js.map +0 -1
  434. package/dist/bridges/be78-euler-buckling.d.ts +0 -44
  435. package/dist/bridges/be78-euler-buckling.d.ts.map +0 -1
  436. package/dist/bridges/be78-euler-buckling.js +0 -33
  437. package/dist/bridges/be78-euler-buckling.js.map +0 -1
  438. package/dist/bridges/be79-pull-in.d.ts +0 -33
  439. package/dist/bridges/be79-pull-in.d.ts.map +0 -1
  440. package/dist/bridges/be79-pull-in.js +0 -35
  441. package/dist/bridges/be79-pull-in.js.map +0 -1
  442. package/dist/bridges/be80-mott-gurney.d.ts +0 -52
  443. package/dist/bridges/be80-mott-gurney.d.ts.map +0 -1
  444. package/dist/bridges/be80-mott-gurney.js +0 -38
  445. package/dist/bridges/be80-mott-gurney.js.map +0 -1
  446. package/dist/bridges/be81-child-langmuir.d.ts +0 -33
  447. package/dist/bridges/be81-child-langmuir.d.ts.map +0 -1
  448. package/dist/bridges/be81-child-langmuir.js +0 -38
  449. package/dist/bridges/be81-child-langmuir.js.map +0 -1
  450. package/dist/bridges/be82-shockley-diode.d.ts +0 -32
  451. package/dist/bridges/be82-shockley-diode.d.ts.map +0 -1
  452. package/dist/bridges/be82-shockley-diode.js +0 -37
  453. package/dist/bridges/be82-shockley-diode.js.map +0 -1
  454. package/dist/bridges/be83-thomson.d.ts +0 -46
  455. package/dist/bridges/be83-thomson.d.ts.map +0 -1
  456. package/dist/bridges/be83-thomson.js +0 -32
  457. package/dist/bridges/be83-thomson.js.map +0 -1
  458. package/dist/bridges/be84-four-point.d.ts +0 -45
  459. package/dist/bridges/be84-four-point.d.ts.map +0 -1
  460. package/dist/bridges/be84-four-point.js +0 -34
  461. package/dist/bridges/be84-four-point.js.map +0 -1
  462. package/dist/bridges/be85-shot-noise.d.ts +0 -30
  463. package/dist/bridges/be85-shot-noise.d.ts.map +0 -1
  464. package/dist/bridges/be85-shot-noise.js +0 -32
  465. package/dist/bridges/be85-shot-noise.js.map +0 -1
  466. package/dist/bridges/be86-reynolds-analogy.d.ts +0 -45
  467. package/dist/bridges/be86-reynolds-analogy.d.ts.map +0 -1
  468. package/dist/bridges/be86-reynolds-analogy.js +0 -30
  469. package/dist/bridges/be86-reynolds-analogy.js.map +0 -1
  470. package/dist/bridges/be87-capacitor-noise.d.ts +0 -27
  471. package/dist/bridges/be87-capacitor-noise.d.ts.map +0 -1
  472. package/dist/bridges/be87-capacitor-noise.js +0 -32
  473. package/dist/bridges/be87-capacitor-noise.js.map +0 -1
  474. package/dist/bridges/be88-fermi-sea.d.ts +0 -31
  475. package/dist/bridges/be88-fermi-sea.d.ts.map +0 -1
  476. package/dist/bridges/be88-fermi-sea.js +0 -35
  477. package/dist/bridges/be88-fermi-sea.js.map +0 -1
  478. package/dist/bridges/be89-debye-cutoff.d.ts +0 -39
  479. package/dist/bridges/be89-debye-cutoff.d.ts.map +0 -1
  480. package/dist/bridges/be89-debye-cutoff.js +0 -28
  481. package/dist/bridges/be89-debye-cutoff.js.map +0 -1
  482. package/dist/bridges/be90-debye-heat.d.ts +0 -30
  483. package/dist/bridges/be90-debye-heat.d.ts.map +0 -1
  484. package/dist/bridges/be90-debye-heat.js +0 -35
  485. package/dist/bridges/be90-debye-heat.js.map +0 -1
  486. package/dist/bridges/be91-einstein-solid.d.ts +0 -30
  487. package/dist/bridges/be91-einstein-solid.d.ts.map +0 -1
  488. package/dist/bridges/be91-einstein-solid.js +0 -37
  489. package/dist/bridges/be91-einstein-solid.js.map +0 -1
  490. package/dist/bridges/be92-sommerfeld-heat.d.ts +0 -30
  491. package/dist/bridges/be92-sommerfeld-heat.d.ts.map +0 -1
  492. package/dist/bridges/be92-sommerfeld-heat.js +0 -34
  493. package/dist/bridges/be92-sommerfeld-heat.js.map +0 -1
  494. package/dist/bridges/be93-curie-weiss.d.ts +0 -41
  495. package/dist/bridges/be93-curie-weiss.d.ts.map +0 -1
  496. package/dist/bridges/be93-curie-weiss.js +0 -45
  497. package/dist/bridges/be93-curie-weiss.js.map +0 -1
  498. package/dist/bridges/be94-pauli-paramagnetism.d.ts +0 -30
  499. package/dist/bridges/be94-pauli-paramagnetism.d.ts.map +0 -1
  500. package/dist/bridges/be94-pauli-paramagnetism.js +0 -33
  501. package/dist/bridges/be94-pauli-paramagnetism.js.map +0 -1
  502. package/dist/bridges/be95-ginzburg-landau.d.ts +0 -46
  503. package/dist/bridges/be95-ginzburg-landau.d.ts.map +0 -1
  504. package/dist/bridges/be95-ginzburg-landau.js +0 -32
  505. package/dist/bridges/be95-ginzburg-landau.js.map +0 -1
  506. package/dist/bridges/be96-upper-critical.d.ts +0 -24
  507. package/dist/bridges/be96-upper-critical.d.ts.map +0 -1
  508. package/dist/bridges/be96-upper-critical.js +0 -27
  509. package/dist/bridges/be96-upper-critical.js.map +0 -1
  510. package/dist/bridges/be97-ambegaokar-baratoff.d.ts +0 -24
  511. package/dist/bridges/be97-ambegaokar-baratoff.d.ts.map +0 -1
  512. package/dist/bridges/be97-ambegaokar-baratoff.js +0 -30
  513. package/dist/bridges/be97-ambegaokar-baratoff.js.map +0 -1
  514. package/dist/bridges/be98-bcs-jump.d.ts +0 -40
  515. package/dist/bridges/be98-bcs-jump.d.ts.map +0 -1
  516. package/dist/bridges/be98-bcs-jump.js +0 -29
  517. package/dist/bridges/be98-bcs-jump.js.map +0 -1
  518. package/dist/bridges/be99-mass-action.d.ts +0 -33
  519. package/dist/bridges/be99-mass-action.d.ts.map +0 -1
  520. package/dist/bridges/be99-mass-action.js +0 -37
  521. package/dist/bridges/be99-mass-action.js.map +0 -1
  522. package/dist/bridges/bridge-equations.d.ts +0 -225
  523. package/dist/bridges/bridge-equations.d.ts.map +0 -1
  524. package/dist/bridges/bridge-equations.js +0 -226
  525. package/dist/bridges/bridge-equations.js.map +0 -1
  526. package/dist/bridges/engineering-r7-catalog.d.ts +0 -28
  527. package/dist/bridges/engineering-r7-catalog.d.ts.map +0 -1
  528. package/dist/bridges/engineering-r7-catalog.js +0 -172
  529. package/dist/bridges/engineering-r7-catalog.js.map +0 -1
  530. package/dist/bridges/engineering-r7.d.ts +0 -152
  531. package/dist/bridges/engineering-r7.d.ts.map +0 -1
  532. package/dist/bridges/engineering-r7.js +0 -208
  533. package/dist/bridges/engineering-r7.js.map +0 -1
  534. package/dist/bridges/equations/_be-helpers.d.ts +0 -80
  535. package/dist/bridges/equations/_be-helpers.d.ts.map +0 -1
  536. package/dist/bridges/equations/_be-helpers.js +0 -103
  537. package/dist/bridges/equations/_be-helpers.js.map +0 -1
  538. package/dist/bridges/equations/be-11-decoherence-master.d.ts +0 -82
  539. package/dist/bridges/equations/be-11-decoherence-master.d.ts.map +0 -1
  540. package/dist/bridges/equations/be-11-decoherence-master.js +0 -105
  541. package/dist/bridges/equations/be-11-decoherence-master.js.map +0 -1
  542. package/dist/bridges/equations/be-12-coherence-length.d.ts +0 -86
  543. package/dist/bridges/equations/be-12-coherence-length.d.ts.map +0 -1
  544. package/dist/bridges/equations/be-12-coherence-length.js +0 -120
  545. package/dist/bridges/equations/be-12-coherence-length.js.map +0 -1
  546. package/dist/bridges/equations/be-13-einstein-trace.d.ts +0 -136
  547. package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +0 -1
  548. package/dist/bridges/equations/be-13-einstein-trace.js +0 -199
  549. package/dist/bridges/equations/be-13-einstein-trace.js.map +0 -1
  550. package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +0 -73
  551. package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts.map +0 -1
  552. package/dist/bridges/equations/be-14-ryu-takayanagi.js +0 -101
  553. package/dist/bridges/equations/be-14-ryu-takayanagi.js.map +0 -1
  554. package/dist/bridges/equations/be-15-emergence.d.ts +0 -184
  555. package/dist/bridges/equations/be-15-emergence.d.ts.map +0 -1
  556. package/dist/bridges/equations/be-15-emergence.js +0 -208
  557. package/dist/bridges/equations/be-15-emergence.js.map +0 -1
  558. package/dist/bridges/equations/be-16-landauer.d.ts +0 -186
  559. package/dist/bridges/equations/be-16-landauer.d.ts.map +0 -1
  560. package/dist/bridges/equations/be-16-landauer.js +0 -198
  561. package/dist/bridges/equations/be-16-landauer.js.map +0 -1
  562. package/dist/bridges/equations/be-17-einstein-cartan.d.ts +0 -258
  563. package/dist/bridges/equations/be-17-einstein-cartan.d.ts.map +0 -1
  564. package/dist/bridges/equations/be-17-einstein-cartan.js +0 -301
  565. package/dist/bridges/equations/be-17-einstein-cartan.js.map +0 -1
  566. package/dist/bridges/equations/be-18-higgs-mass.d.ts +0 -71
  567. package/dist/bridges/equations/be-18-higgs-mass.d.ts.map +0 -1
  568. package/dist/bridges/equations/be-18-higgs-mass.js +0 -75
  569. package/dist/bridges/equations/be-18-higgs-mass.js.map +0 -1
  570. package/dist/bridges/equations/be-19-quantum-bounce.d.ts +0 -107
  571. package/dist/bridges/equations/be-19-quantum-bounce.d.ts.map +0 -1
  572. package/dist/bridges/equations/be-19-quantum-bounce.js +0 -196
  573. package/dist/bridges/equations/be-19-quantum-bounce.js.map +0 -1
  574. package/dist/bridges/equations/be-20-vacuum-energy.d.ts +0 -93
  575. package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +0 -1
  576. package/dist/bridges/equations/be-20-vacuum-energy.js +0 -142
  577. package/dist/bridges/equations/be-20-vacuum-energy.js.map +0 -1
  578. package/dist/bridges/equations/be-21-kss-bound.d.ts +0 -74
  579. package/dist/bridges/equations/be-21-kss-bound.d.ts.map +0 -1
  580. package/dist/bridges/equations/be-21-kss-bound.js +0 -97
  581. package/dist/bridges/equations/be-21-kss-bound.js.map +0 -1
  582. package/dist/bridges/equations/be-22-topological-entanglement.d.ts +0 -87
  583. package/dist/bridges/equations/be-22-topological-entanglement.d.ts.map +0 -1
  584. package/dist/bridges/equations/be-22-topological-entanglement.js +0 -111
  585. package/dist/bridges/equations/be-22-topological-entanglement.js.map +0 -1
  586. package/dist/bridges/equations/be-23-syk-planckian.d.ts +0 -95
  587. package/dist/bridges/equations/be-23-syk-planckian.d.ts.map +0 -1
  588. package/dist/bridges/equations/be-23-syk-planckian.js +0 -141
  589. package/dist/bridges/equations/be-23-syk-planckian.js.map +0 -1
  590. package/dist/bridges/equations/be-24-foerster-fret.d.ts +0 -87
  591. package/dist/bridges/equations/be-24-foerster-fret.d.ts.map +0 -1
  592. package/dist/bridges/equations/be-24-foerster-fret.js +0 -113
  593. package/dist/bridges/equations/be-24-foerster-fret.js.map +0 -1
  594. package/dist/bridges/equations/be-25-iit-phi.d.ts +0 -222
  595. package/dist/bridges/equations/be-25-iit-phi.d.ts.map +0 -1
  596. package/dist/bridges/equations/be-25-iit-phi.js +0 -255
  597. package/dist/bridges/equations/be-25-iit-phi.js.map +0 -1
  598. package/dist/bridges/equations/be-25-orch-or.d.ts +0 -93
  599. package/dist/bridges/equations/be-25-orch-or.d.ts.map +0 -1
  600. package/dist/bridges/equations/be-25-orch-or.js +0 -124
  601. package/dist/bridges/equations/be-25-orch-or.js.map +0 -1
  602. package/dist/bridges/equations/be-26-dna-tunneling.d.ts +0 -88
  603. package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +0 -1
  604. package/dist/bridges/equations/be-26-dna-tunneling.js +0 -142
  605. package/dist/bridges/equations/be-26-dna-tunneling.js.map +0 -1
  606. package/dist/bridges/equations/be-27-effective-temperature.d.ts +0 -87
  607. package/dist/bridges/equations/be-27-effective-temperature.d.ts.map +0 -1
  608. package/dist/bridges/equations/be-27-effective-temperature.js +0 -112
  609. package/dist/bridges/equations/be-27-effective-temperature.js.map +0 -1
  610. package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +0 -181
  611. package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts.map +0 -1
  612. package/dist/bridges/equations/be-28-onsager-entropy-production.js +0 -199
  613. package/dist/bridges/equations/be-28-onsager-entropy-production.js.map +0 -1
  614. package/dist/bridges/equations/be-29-jarzynski.d.ts +0 -92
  615. package/dist/bridges/equations/be-29-jarzynski.d.ts.map +0 -1
  616. package/dist/bridges/equations/be-29-jarzynski.js +0 -127
  617. package/dist/bridges/equations/be-29-jarzynski.js.map +0 -1
  618. package/dist/bridges/equations/be-30-flm-first-law.d.ts +0 -102
  619. package/dist/bridges/equations/be-30-flm-first-law.d.ts.map +0 -1
  620. package/dist/bridges/equations/be-30-flm-first-law.js +0 -98
  621. package/dist/bridges/equations/be-30-flm-first-law.js.map +0 -1
  622. package/dist/bridges/equations/be-31-causal-set-bd.d.ts +0 -102
  623. package/dist/bridges/equations/be-31-causal-set-bd.d.ts.map +0 -1
  624. package/dist/bridges/equations/be-31-causal-set-bd.js +0 -119
  625. package/dist/bridges/equations/be-31-causal-set-bd.js.map +0 -1
  626. package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +0 -110
  627. package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts.map +0 -1
  628. package/dist/bridges/equations/be-32-quantum-reference-frame.js +0 -145
  629. package/dist/bridges/equations/be-32-quantum-reference-frame.js.map +0 -1
  630. package/dist/bridges/equations/be-33-hertz-millis.d.ts +0 -102
  631. package/dist/bridges/equations/be-33-hertz-millis.d.ts.map +0 -1
  632. package/dist/bridges/equations/be-33-hertz-millis.js +0 -117
  633. package/dist/bridges/equations/be-33-hertz-millis.js.map +0 -1
  634. package/dist/bridges/equations/be-34-kibble-zurek.d.ts +0 -83
  635. package/dist/bridges/equations/be-34-kibble-zurek.d.ts.map +0 -1
  636. package/dist/bridges/equations/be-34-kibble-zurek.js +0 -139
  637. package/dist/bridges/equations/be-34-kibble-zurek.js.map +0 -1
  638. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +0 -101
  639. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +0 -1
  640. package/dist/bridges/equations/be-35-conformal-bootstrap.js +0 -123
  641. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +0 -1
  642. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +0 -90
  643. package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +0 -1
  644. package/dist/bridges/equations/be-36-gw-speed-bound.js +0 -106
  645. package/dist/bridges/equations/be-36-gw-speed-bound.js.map +0 -1
  646. package/dist/bridges/equations/be-37-shapiro-delay.d.ts +0 -264
  647. package/dist/bridges/equations/be-37-shapiro-delay.d.ts.map +0 -1
  648. package/dist/bridges/equations/be-37-shapiro-delay.js +0 -420
  649. package/dist/bridges/equations/be-37-shapiro-delay.js.map +0 -1
  650. package/dist/bridges/equations/be-38-mond.d.ts +0 -94
  651. package/dist/bridges/equations/be-38-mond.d.ts.map +0 -1
  652. package/dist/bridges/equations/be-38-mond.js +0 -114
  653. package/dist/bridges/equations/be-38-mond.js.map +0 -1
  654. package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +0 -170
  655. package/dist/bridges/equations/be-39-asymptotic-safety.d.ts.map +0 -1
  656. package/dist/bridges/equations/be-39-asymptotic-safety.js +0 -263
  657. package/dist/bridges/equations/be-39-asymptotic-safety.js.map +0 -1
  658. package/dist/bridges/equations/be-40-composite-higgs.d.ts +0 -89
  659. package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +0 -1
  660. package/dist/bridges/equations/be-40-composite-higgs.js +0 -149
  661. package/dist/bridges/equations/be-40-composite-higgs.js.map +0 -1
  662. package/dist/bridges/equations/be-41-swampland.d.ts +0 -73
  663. package/dist/bridges/equations/be-41-swampland.d.ts.map +0 -1
  664. package/dist/bridges/equations/be-41-swampland.js +0 -108
  665. package/dist/bridges/equations/be-41-swampland.js.map +0 -1
  666. package/dist/bridges/equations/be-42-hawking-temperature.d.ts +0 -72
  667. package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +0 -1
  668. package/dist/bridges/equations/be-42-hawking-temperature.js +0 -108
  669. package/dist/bridges/equations/be-42-hawking-temperature.js.map +0 -1
  670. package/dist/bridges/equations/be-43-er-epr.d.ts +0 -79
  671. package/dist/bridges/equations/be-43-er-epr.d.ts.map +0 -1
  672. package/dist/bridges/equations/be-43-er-epr.js +0 -106
  673. package/dist/bridges/equations/be-43-er-epr.js.map +0 -1
  674. package/dist/bridges/equations/be-44-soft-hair.d.ts +0 -157
  675. package/dist/bridges/equations/be-44-soft-hair.d.ts.map +0 -1
  676. package/dist/bridges/equations/be-44-soft-hair.js +0 -177
  677. package/dist/bridges/equations/be-44-soft-hair.js.map +0 -1
  678. package/dist/bridges/equations/be-45-tcc.d.ts +0 -122
  679. package/dist/bridges/equations/be-45-tcc.d.ts.map +0 -1
  680. package/dist/bridges/equations/be-45-tcc.js +0 -149
  681. package/dist/bridges/equations/be-45-tcc.js.map +0 -1
  682. package/dist/bridges/equations/be-46-multiverse-measure.d.ts +0 -169
  683. package/dist/bridges/equations/be-46-multiverse-measure.d.ts.map +0 -1
  684. package/dist/bridges/equations/be-46-multiverse-measure.js +0 -192
  685. package/dist/bridges/equations/be-46-multiverse-measure.js.map +0 -1
  686. package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +0 -78
  687. package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts.map +0 -1
  688. package/dist/bridges/equations/be-47-bbn-dark-sector.js +0 -119
  689. package/dist/bridges/equations/be-47-bbn-dark-sector.js.map +0 -1
  690. package/dist/bridges/equations/be-48-grw-localization.d.ts +0 -91
  691. package/dist/bridges/equations/be-48-grw-localization.d.ts.map +0 -1
  692. package/dist/bridges/equations/be-48-grw-localization.js +0 -103
  693. package/dist/bridges/equations/be-48-grw-localization.js.map +0 -1
  694. package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +0 -103
  695. package/dist/bridges/equations/be-49-quantum-darwinism.d.ts.map +0 -1
  696. package/dist/bridges/equations/be-49-quantum-darwinism.js +0 -117
  697. package/dist/bridges/equations/be-49-quantum-darwinism.js.map +0 -1
  698. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +0 -116
  699. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +0 -1
  700. package/dist/bridges/equations/be-50-wheeler-feynman.js +0 -215
  701. package/dist/bridges/equations/be-50-wheeler-feynman.js.map +0 -1
  702. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +0 -179
  703. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +0 -1
  704. package/dist/bridges/equations/be-53-yang-mills-beta.js +0 -187
  705. package/dist/bridges/equations/be-53-yang-mills-beta.js.map +0 -1
  706. package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts +0 -117
  707. package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts.map +0 -1
  708. package/dist/bridges/equations/be-54-randall-sundrum-brane.js +0 -209
  709. package/dist/bridges/equations/be-54-randall-sundrum-brane.js.map +0 -1
  710. package/dist/bridges/gravitational-lensing.d.ts +0 -73
  711. package/dist/bridges/gravitational-lensing.d.ts.map +0 -1
  712. package/dist/bridges/gravitational-lensing.js +0 -59
  713. package/dist/bridges/gravitational-lensing.js.map +0 -1
  714. package/dist/bridges/perihelion-precession-labeled.d.ts +0 -46
  715. package/dist/bridges/perihelion-precession-labeled.d.ts.map +0 -1
  716. package/dist/bridges/perihelion-precession-labeled.js +0 -54
  717. package/dist/bridges/perihelion-precession-labeled.js.map +0 -1
  718. package/dist/bridges/perihelion-precession.d.ts +0 -87
  719. package/dist/bridges/perihelion-precession.d.ts.map +0 -1
  720. package/dist/bridges/perihelion-precession.js +0 -82
  721. package/dist/bridges/perihelion-precession.js.map +0 -1
  722. package/dist/bridges/plasma-catalog.d.ts +0 -29
  723. package/dist/bridges/plasma-catalog.d.ts.map +0 -1
  724. package/dist/bridges/plasma-catalog.js +0 -427
  725. package/dist/bridges/plasma-catalog.js.map +0 -1
  726. package/dist/bridges/plasma-space.d.ts +0 -310
  727. package/dist/bridges/plasma-space.d.ts.map +0 -1
  728. package/dist/bridges/plasma-space.js +0 -262
  729. package/dist/bridges/plasma-space.js.map +0 -1
  730. package/dist/composition/edges/_catalog-helpers.d.ts +0 -38
  731. package/dist/composition/edges/_catalog-helpers.d.ts.map +0 -1
  732. package/dist/composition/edges/_catalog-helpers.js +0 -90
  733. package/dist/composition/edges/_catalog-helpers.js.map +0 -1
  734. package/dist/composition/edges/applied-physicist.d.ts +0 -181
  735. package/dist/composition/edges/applied-physicist.d.ts.map +0 -1
  736. package/dist/composition/edges/applied-physicist.js +0 -843
  737. package/dist/composition/edges/applied-physicist.js.map +0 -1
  738. package/dist/composition/edges/calibration.d.ts +0 -107
  739. package/dist/composition/edges/calibration.d.ts.map +0 -1
  740. package/dist/composition/edges/calibration.js +0 -559
  741. package/dist/composition/edges/calibration.js.map +0 -1
  742. package/dist/composition/edges/catalog-condensed-matter.d.ts +0 -65
  743. package/dist/composition/edges/catalog-condensed-matter.d.ts.map +0 -1
  744. package/dist/composition/edges/catalog-condensed-matter.js +0 -257
  745. package/dist/composition/edges/catalog-condensed-matter.js.map +0 -1
  746. package/dist/composition/edges/catalog-fields.d.ts +0 -68
  747. package/dist/composition/edges/catalog-fields.d.ts.map +0 -1
  748. package/dist/composition/edges/catalog-fields.js +0 -207
  749. package/dist/composition/edges/catalog-fields.js.map +0 -1
  750. package/dist/composition/edges/catalog-full.d.ts +0 -43
  751. package/dist/composition/edges/catalog-full.d.ts.map +0 -1
  752. package/dist/composition/edges/catalog-full.js +0 -73
  753. package/dist/composition/edges/catalog-full.js.map +0 -1
  754. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +0 -81
  755. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +0 -1
  756. package/dist/composition/edges/catalog-gravitation-cosmology.js +0 -275
  757. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +0 -1
  758. package/dist/composition/edges/catalog-quantum.d.ts +0 -85
  759. package/dist/composition/edges/catalog-quantum.d.ts.map +0 -1
  760. package/dist/composition/edges/catalog-quantum.js +0 -297
  761. package/dist/composition/edges/catalog-quantum.js.map +0 -1
  762. package/dist/composition/edges/catalog-tranche.d.ts +0 -108
  763. package/dist/composition/edges/catalog-tranche.d.ts.map +0 -1
  764. package/dist/composition/edges/catalog-tranche.js +0 -304
  765. package/dist/composition/edges/catalog-tranche.js.map +0 -1
  766. package/dist/composition/edges/condensed-r5.d.ts +0 -105
  767. package/dist/composition/edges/condensed-r5.d.ts.map +0 -1
  768. package/dist/composition/edges/condensed-r5.js +0 -505
  769. package/dist/composition/edges/condensed-r5.js.map +0 -1
  770. package/dist/composition/edges/engineering-r7.d.ts +0 -20
  771. package/dist/composition/edges/engineering-r7.d.ts.map +0 -1
  772. package/dist/composition/edges/engineering-r7.js +0 -262
  773. package/dist/composition/edges/engineering-r7.js.map +0 -1
  774. package/dist/composition/edges/plasma-space.d.ts +0 -50
  775. package/dist/composition/edges/plasma-space.d.ts.map +0 -1
  776. package/dist/composition/edges/plasma-space.js +0 -481
  777. package/dist/composition/edges/plasma-space.js.map +0 -1
  778. package/dist/composition/edges/proved-seeds.d.ts +0 -39
  779. package/dist/composition/edges/proved-seeds.d.ts.map +0 -1
  780. package/dist/composition/edges/proved-seeds.js +0 -197
  781. package/dist/composition/edges/proved-seeds.js.map +0 -1
  782. package/dist/composition/quantities/_dims.d.ts +0 -45
  783. package/dist/composition/quantities/_dims.d.ts.map +0 -1
  784. package/dist/composition/quantities/_dims.js +0 -55
  785. package/dist/composition/quantities/_dims.js.map +0 -1
  786. package/dist/composition/quantities/applied-physicist.d.ts +0 -166
  787. package/dist/composition/quantities/applied-physicist.d.ts.map +0 -1
  788. package/dist/composition/quantities/applied-physicist.js +0 -543
  789. package/dist/composition/quantities/applied-physicist.js.map +0 -1
  790. package/dist/composition/quantities/common.d.ts +0 -69
  791. package/dist/composition/quantities/common.d.ts.map +0 -1
  792. package/dist/composition/quantities/common.js +0 -210
  793. package/dist/composition/quantities/common.js.map +0 -1
  794. package/dist/composition/quantities/condensed-matter.d.ts +0 -79
  795. package/dist/composition/quantities/condensed-matter.d.ts.map +0 -1
  796. package/dist/composition/quantities/condensed-matter.js +0 -238
  797. package/dist/composition/quantities/condensed-matter.js.map +0 -1
  798. package/dist/composition/quantities/condensed-r5.d.ts +0 -110
  799. package/dist/composition/quantities/condensed-r5.d.ts.map +0 -1
  800. package/dist/composition/quantities/condensed-r5.js +0 -359
  801. package/dist/composition/quantities/condensed-r5.js.map +0 -1
  802. package/dist/composition/quantities/engineering-r7.d.ts +0 -82
  803. package/dist/composition/quantities/engineering-r7.d.ts.map +0 -1
  804. package/dist/composition/quantities/engineering-r7.js +0 -92
  805. package/dist/composition/quantities/engineering-r7.js.map +0 -1
  806. package/dist/composition/quantities/fields.d.ts +0 -69
  807. package/dist/composition/quantities/fields.d.ts.map +0 -1
  808. package/dist/composition/quantities/fields.js +0 -210
  809. package/dist/composition/quantities/fields.js.map +0 -1
  810. package/dist/composition/quantities/gravitation-cosmology.d.ts +0 -71
  811. package/dist/composition/quantities/gravitation-cosmology.d.ts.map +0 -1
  812. package/dist/composition/quantities/gravitation-cosmology.js +0 -215
  813. package/dist/composition/quantities/gravitation-cosmology.js.map +0 -1
  814. package/dist/composition/quantities/plasma-space.d.ts +0 -178
  815. package/dist/composition/quantities/plasma-space.d.ts.map +0 -1
  816. package/dist/composition/quantities/plasma-space.js +0 -185
  817. package/dist/composition/quantities/plasma-space.js.map +0 -1
  818. package/dist/composition/quantities/quantum.d.ts +0 -63
  819. package/dist/composition/quantities/quantum.d.ts.map +0 -1
  820. package/dist/composition/quantities/quantum.js +0 -190
  821. package/dist/composition/quantities/quantum.js.map +0 -1
  822. package/dist/numerical/be37-covariant-eikonal.d.ts.map +0 -1
  823. package/dist/numerical/be37-covariant-eikonal.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Kebab catalog names are one token. A parser that treats `-` as subtraction
3
+ * splits them. Longest match first, so a longer declared name wins over a
4
+ * shorter one that is its suffix.
5
+ *
6
+ * @module dimensional/hyphen-names
7
+ */
8
+ function escapeRegExp(s) {
9
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
10
+ }
11
+ /**
12
+ * Rewrite declared kebab-case names to underscores. Names without a hyphen
13
+ * stay. A hyphen that is not a declared name stays subtraction.
14
+ */
15
+ export function rewriteCatalogHyphens(text, catalogNames) {
16
+ const names = [...catalogNames]
17
+ .filter((n) => n.includes('-'))
18
+ .sort((a, b) => b.length - a.length || a.localeCompare(b));
19
+ let out = text;
20
+ for (const name of names) {
21
+ const underscored = name.replace(/-/g, '_');
22
+ const re = new RegExp(`(?<![A-Za-z0-9_])${escapeRegExp(name)}(?![A-Za-z0-9_])`, 'g');
23
+ out = out.replace(re, underscored);
24
+ }
25
+ return out;
26
+ }
27
+ //# sourceMappingURL=hyphen-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyphen-names.js","sourceRoot":"","sources":["../../src/dimensional/hyphen-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,YAAoD;IAEpD,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACrF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The quantity registry. Canonical id, aliases, dimension, and whether an
3
+ * affine temperature is an absolute point or an interval. Synonym groups and
4
+ * the temperature role are projections of this table.
5
+ *
6
+ * @module dimensional/quantity-registry
7
+ */
8
+ import type { Dimension } from './types.js';
9
+ /** Declared role of an affine temperature quantity. */
10
+ export type QuantityKind = 'absolute' | 'interval';
11
+ /** A carrier that enters a same-sign transport rule. */
12
+ export type SignRole = 'charge' | 'mobility';
13
+ /** One quantity. `graphNode` is false for a spelling that is not a graph node. */
14
+ export interface QuantityRecord {
15
+ readonly id: string;
16
+ readonly symbol: string;
17
+ readonly dimension: Dimension;
18
+ readonly attributes: Readonly<Record<string, string>>;
19
+ readonly kind?: QuantityKind;
20
+ readonly aliases?: readonly string[];
21
+ readonly signRole?: SignRole;
22
+ readonly graphNode: boolean;
23
+ }
24
+ /** Every quantity record, graph nodes and spellings. */
25
+ export declare function allQuantityRecords(): readonly QuantityRecord[];
26
+ /** The record `name` spells, comparing `_` and `-` as the same character. */
27
+ export declare function quantityRecord(name: string): QuantityRecord | undefined;
28
+ /**
29
+ * Synonym groups projected from declared aliases. The canonical id is first.
30
+ * A quantity with no alias is not a group.
31
+ */
32
+ export declare function synonymGroupsFromRegistry(): readonly (readonly string[])[];
33
+ //# sourceMappingURL=quantity-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantity-registry.d.ts","sourceRoot":"","sources":["../../src/dimensional/quantity-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,uDAAuD;AACvD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,wDAAwD;AACxD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7C,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AA0BD,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,SAAS,cAAc,EAAE,CAE9D;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEvE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAQ1E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The quantity registry. Canonical id, aliases, dimension, and whether an
3
+ * affine temperature is an absolute point or an interval. Synonym groups and
4
+ * the temperature role are projections of this table.
5
+ *
6
+ * @module dimensional/quantity-registry
7
+ */
8
+ import { readFileSync } from 'node:fs';
9
+ import { dirname, join } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ const foldName = (s) => s.replace(/_/g, '-');
12
+ function loadQuantities() {
13
+ const path = join(dirname(fileURLToPath(import.meta.url)), '../../data/quantities.json');
14
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
15
+ return parsed.quantities;
16
+ }
17
+ const QUANTITIES = loadQuantities();
18
+ const BY_KEY = new Map();
19
+ for (const row of QUANTITIES) {
20
+ BY_KEY.set(row.id, row);
21
+ BY_KEY.set(foldName(row.id), row);
22
+ for (const alias of row.aliases ?? []) {
23
+ BY_KEY.set(alias, row);
24
+ BY_KEY.set(foldName(alias), row);
25
+ }
26
+ }
27
+ /** Every quantity record, graph nodes and spellings. */
28
+ export function allQuantityRecords() {
29
+ return QUANTITIES;
30
+ }
31
+ /** The record `name` spells, comparing `_` and `-` as the same character. */
32
+ export function quantityRecord(name) {
33
+ return BY_KEY.get(name) ?? BY_KEY.get(foldName(name));
34
+ }
35
+ /**
36
+ * Synonym groups projected from declared aliases. The canonical id is first.
37
+ * A quantity with no alias is not a group.
38
+ */
39
+ export function synonymGroupsFromRegistry() {
40
+ const groups = [];
41
+ for (const row of QUANTITIES) {
42
+ const aliases = row.aliases ?? [];
43
+ if (aliases.length === 0)
44
+ continue;
45
+ groups.push([row.id, ...aliases]);
46
+ }
47
+ return groups;
48
+ }
49
+ //# sourceMappingURL=quantity-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantity-registry.js","sourceRoot":"","sources":["../../src/dimensional/quantity-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAyBzC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE7D,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiB,CAAC;IACtE,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;AAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;AACjD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -3,8 +3,8 @@ import type { Dimension } from './types.js';
3
3
  export interface ParsedUnit {
4
4
  readonly scale: number;
5
5
  readonly dim: Dimension;
6
- /** `'celsius'` only for a lone `degC`, which is affine and needs a reading. */
7
- readonly affine?: 'celsius';
6
+ /** Set only for a lone affine temperature, which needs a reading. */
7
+ readonly affine?: 'celsius' | 'fahrenheit';
8
8
  }
9
9
  /** Thrown for any input that does not parse as a value with a known unit. @public */
10
10
  export declare class UnitError extends Error {
@@ -21,6 +21,8 @@ export declare function unitConventionNotes(given: string): string[];
21
21
  export declare function parseUnit(text: string): ParsedUnit;
22
22
  /** How a temperature value is read: as a point on the scale, or as a difference. @public */
23
23
  export type TemperatureReading = 'absolute' | 'difference';
24
+ /** Kelvin added when this affine unit is an absolute point. @internal */
25
+ export declare function affineAbsoluteOffsetK(id: 'celsius' | 'fahrenheit'): number;
24
26
  /**
25
27
  * Convert `raw` (`<number>[unit]`) into `target` (a unit expression). A bare
26
28
  * number is taken to be in `target` already. The dimensions must agree.
@@ -1 +1 @@
1
- {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/dimensional/units.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,qFAAqF;AACrF,qBAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAuHD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAe3D;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAYlD;AAED,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAA+B,GACvC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsBlC;AA6CD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAU/C;AAOD,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAErD;AAED,4GAA4G;AAC5G,wBAAgB,UAAU,IAAI;IAC5B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,CAEA"}
1
+ {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/dimensional/units.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CAC5C;AAED,qFAAqF;AACrF,qBAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAmUD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3D;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAUlD;AAED,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,CAI1E;AASD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAA+B,GACvC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA0BlC;AA6CD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAU/C;AAOD,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAErD;AAED,4GAA4G;AAC5G,wBAAgB,UAAU,IAAI;IAC5B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,CAEA"}
@@ -6,15 +6,30 @@
6
6
  * `W/m*K` both mean W·m⁻¹·K⁻¹). An exact symbol is matched before a prefixed
7
7
  * one, so `min` is a minute, `Pa` a pascal and `mm` a millimetre.
8
8
  *
9
- * Temperature in °C is affine, so it is accepted only alone and only with an
10
- * explicit reading: an ABSOLUTE temperature adds 273.15 K; a temperature
11
- * DIFFERENCE (an uncertainty, an interval) does not. °F is refused rather than
12
- * converted.
9
+ * An affine temperature (`degC`, `°C`, `degF`, `°F`) is accepted only alone.
10
+ * The kelvin value is `value × scale + offset` for an absolute reading and
11
+ * `value × scale` for a difference. Rankine is proportional (`°R × 5/9`), not
12
+ * affine. The caller decides which reading, from the quantity's role.
13
13
  *
14
14
  * An exact symbol wins over a prefix: `T` is the tesla and `Ts` is a
15
- * terasecond; `G` is the gauss and `GPa` is a gigapascal. A glued positive
16
- * exponent is that power when the letters are already a unit, so `K2` and
17
- * `K²` are `K^2`. An unknown token that ends in a digit stays unknown.
15
+ * terasecond; `G` is the gauss and `GPa` is a gigapascal; `P` is the poise
16
+ * and `PV` is still a petavolt. A glued positive exponent is that power when
17
+ * the letters are already a unit, so `K2` and `K²` are `K^2`.
18
+ *
19
+ * A token with no separator is one factor when the whole token is an exact
20
+ * unit or a prefix plus a unit, with an optional exponent. That reading
21
+ * wins on a bare token, so `ms` stays a millisecond, `mm` a millimetre,
22
+ * `mK` a millikelvin, and `Ts` a terasecond. Inside a larger expression the
23
+ * prefixed reading competes with a heterogeneous product (`mK` is millikelvin
24
+ * or metre·kelvin; `ms` is millisecond or metre·second). A homogeneous power
25
+ * does not compete (`mm` is a millimetre, not metre·metre). `parseUnit` names
26
+ * every remaining reading and refuses. `convertValue` keeps the one reading
27
+ * whose dimension is the declared unit. A token that is not one factor is a
28
+ * product when exactly one split exists: `m2K` is `m^2·K`, `Vs` is `V·s`,
29
+ * and `cm^2/Vs` is `cm^2/(V·s)`. Zero splits are an unknown unit. Two or more
30
+ * splits name each reading and are refused (`mAs` is milliampere·second or
31
+ * metre·ampere·second). An unknown token that ends in a digit stays unknown
32
+ * when it is not that product.
18
33
  * `AU` is the same exact metre count as `au`. `Msun` is `M_SUN_SI` kilograms; `Msun_iau` is
19
34
  * `GM_SUN_SI / G_SI`. `myr` is a milliyear because `m` is the SI prefix.
20
35
  * `eV` takes an SI prefix, so `GeV` is 10⁹ eV in joules. `nat` is the
@@ -90,67 +105,252 @@ const UNITS = new Map([
90
105
  // IAU-style parsec; the prefix applies, so `Mpc` is a megaparsec.
91
106
  ['pc', [3.0856775814913673e16, D({ L: 1 }), true]],
92
107
  ['ly', [C_SI * 365.25 * 86400, D({ L: 1 }), false]],
108
+ // CGPM 1964: 1 L = 1 dm³ = 10⁻³ m³ exactly. Prefixable, so mL is a millilitre.
109
+ // `l` is the same litre. Bare `mL` stays the prefix; `mol/mL` competes with metre·litre.
110
+ ['L', [1e-3, D({ L: 3 }), true]],
111
+ ['l', [1e-3, D({ L: 3 }), true]],
112
+ // Thermochemical calorie: 1 cal_th = 4.184 J exactly (NIST). Not cal_IT = 4.1868 J.
113
+ // Prefixable, so kcal is 4184 J.
114
+ ['cal', [4.184, JOULE, true]],
115
+ // International Steam Table BTU: cal_IT × (lb/g) / (°F per 1.8 °C).
116
+ // 4.1868 × 453.59237 / 1.8 J exactly. Not the thermochemical calorie.
117
+ ['BTU', [(4.1868 * 453.59237) / 1.8, JOULE, false]],
118
+ // psi = lbf/in². lbf = 0.45359237 kg × 9.80665 m/s² (1959 pound × standard gravity).
119
+ // inch = 0.0254 m exactly.
120
+ ['psi', [(0.45359237 * 9.80665) / (0.0254 * 0.0254), D({ L: -1, M: 1, T: -2 }), false]],
121
+ // torr = 1/760 of a standard atmosphere = 101325/760 Pa exactly. Prefixable (mtorr).
122
+ ['torr', [101325 / 760, D({ L: -1, M: 1, T: -2 }), true]],
123
+ // Conventional millimetre of mercury, 133.322387415 Pa exactly (NIST SP 811).
124
+ // Not the torr, and not `mm` × `Hg`.
125
+ ['mmHg', [133.322387415, D({ L: -1, M: 1, T: -2 }), false]],
126
+ // Poise = 0.1 Pa·s exactly. Prefixable, so cP = 10⁻³ Pa·s. Exact `P` wins over peta.
127
+ ['P', [0.1, D({ L: -1, M: 1, T: -1 }), true]],
128
+ // Rankine is proportional: K = °R × 5/9. Not affine.
129
+ ['degR', [5 / 9, D({ Theta: 1 }), false]],
130
+ ['°R', [5 / 9, D({ Theta: 1 }), false]],
131
+ // Revolutions per minute = 1/60 Hz. Prefixable, so krpm is a kilorevolution per minute.
132
+ ['rpm', [1 / 60, D({ T: -1 }), true]],
133
+ // Mechanical horsepower = 550 ft·lbf/s. ft = 0.3048 m.
134
+ ['hp', [550 * 0.3048 * 0.45359237 * 9.80665, D({ L: 2, M: 1, T: -3 }), false]],
93
135
  ]);
94
136
  const CELSIUS_OFFSET_K = 273.15;
137
+ const FAHRENHEIT_SCALE = 5 / 9;
138
+ /** Lone spellings. A compound that contains one is refused. */
139
+ const AFFINE = [
140
+ { id: 'celsius', scale: 1, offset: CELSIUS_OFFSET_K, symbols: ['degC', '°C'] },
141
+ {
142
+ id: 'fahrenheit',
143
+ scale: FAHRENHEIT_SCALE,
144
+ offset: CELSIUS_OFFSET_K - 32 * FAHRENHEIT_SCALE,
145
+ symbols: ['degF', '°F'],
146
+ },
147
+ ];
148
+ function affineRow(text) {
149
+ return AFFINE.find((row) => row.symbols.includes(text));
150
+ }
95
151
  const PREFIXES = new Map([
96
152
  ['Y', 1e24], ['Z', 1e21], ['E', 1e18], ['P', 1e15], ['T', 1e12], ['G', 1e9], ['M', 1e6], ['k', 1e3],
97
153
  ['h', 1e2], ['da', 1e1], ['d', 1e-1], ['c', 1e-2], ['m', 1e-3], ['u', 1e-6], ['µ', 1e-6], ['μ', 1e-6],
98
154
  ['n', 1e-9], ['p', 1e-12], ['f', 1e-15], ['a', 1e-18], ['z', 1e-21], ['y', 1e-24],
99
155
  ]);
100
156
  function parseSymbol(sym) {
157
+ const parsed = trySymbol(sym);
158
+ if (parsed !== null)
159
+ return parsed;
160
+ throw new UnitError(`unknown unit '${sym}'`);
161
+ }
162
+ function trySymbol(sym) {
101
163
  const exact = UNITS.get(sym);
102
164
  if (exact !== undefined)
103
165
  return [exact[0], exact[1]];
104
166
  for (const [p, f] of PREFIXES) {
105
- if (!sym.startsWith(p))
167
+ if (!sym.startsWith(p) || sym.length === p.length)
106
168
  continue;
107
169
  const base = UNITS.get(sym.slice(p.length));
108
170
  if (base !== undefined && base[2])
109
171
  return [f * base[0], base[1]];
110
172
  }
111
- throw new UnitError(`unknown unit '${sym}'`);
173
+ return null;
174
+ }
175
+ /** One factor, or null when `token` is not exactly one unit with an optional exponent. */
176
+ function tryOneFactor(token) {
177
+ let base = token;
178
+ let exp = 1;
179
+ const caret = /^(.+)\^([+-]?\d+)$/.exec(token);
180
+ if (caret !== null) {
181
+ base = caret[1];
182
+ exp = Number(caret[2]);
183
+ }
184
+ else {
185
+ const uni = /^(.*?)([¹²³])$/.exec(token);
186
+ const superExp = uni === null ? undefined : SUPERSCRIPT[uni[2]];
187
+ if (uni !== null && superExp !== undefined && uni[1].length > 0) {
188
+ base = uni[1];
189
+ exp = superExp;
190
+ }
191
+ else {
192
+ const glued = /^(.*?)([1-9]\d*)$/.exec(token);
193
+ if (glued !== null && glued[1].length > 0 && trySymbol(glued[1]) !== null) {
194
+ base = glued[1];
195
+ exp = Number(glued[2]);
196
+ }
197
+ }
198
+ }
199
+ const parsed = trySymbol(base);
200
+ if (parsed === null || !Number.isFinite(exp))
201
+ return null;
202
+ return { base, exp, scale: parsed[0], dim: parsed[1] };
203
+ }
204
+ function formatReading(factors) {
205
+ return factors.map((factor) => (factor.exp === 1 ? factor.base : `${factor.base}^${factor.exp}`)).join('·');
206
+ }
207
+ /** The unprefixed unit a prefix spelling attaches to, or null when `symbol` is exact. */
208
+ function attachedUnit(symbol) {
209
+ if (UNITS.has(symbol))
210
+ return null;
211
+ for (const [prefix] of PREFIXES) {
212
+ if (!symbol.startsWith(prefix) || symbol.length === prefix.length)
213
+ continue;
214
+ const base = symbol.slice(prefix.length);
215
+ const row = UNITS.get(base);
216
+ if (row !== undefined && row[2])
217
+ return base;
218
+ }
219
+ return null;
112
220
  }
113
- const SUPERSCRIPT = { '¹': 1, '²': 2, '³': 3 };
114
221
  /**
115
- * A factor is `symbol`, `symbol^n`, `symbol²`, or `symbol` with a glued
116
- * positive exponent (`K2` is K²). The glued form is read only when the
117
- * letters are already a unit, so an unknown token stays unknown.
222
+ * A product of the same unprefixed unit the prefix attaches to (`mm` = m·m,
223
+ * `mm2` = m·m²). Powers are written `m2` / `m^2`, so this reading does not
224
+ * compete with the prefix.
118
225
  */
119
- function factorExponent(factor) {
120
- const caret = /^([^\^]+)(?:\^([+-]?\d+))?$/.exec(factor);
121
- if (caret !== null && caret[2] !== undefined)
122
- return { base: caret[1], exp: Number(caret[2]) };
123
- const uni = /^(.*?)([¹²³])$/.exec(factor);
124
- const superExp = uni === null ? undefined : SUPERSCRIPT[uni[2]];
125
- if (uni !== null && superExp !== undefined && uni[1].length > 0)
126
- return { base: uni[1], exp: superExp };
127
- const glued = /^(.*?)([1-9]\d*)$/.exec(factor);
128
- if (glued !== null && glued[1].length > 0) {
129
- try {
130
- parseSymbol(glued[1]);
131
- return { base: glued[1], exp: Number(glued[2]) };
132
- }
133
- catch (e) {
134
- if (!(e instanceof UnitError))
135
- throw e;
226
+ function homogeneousPower(single, product) {
227
+ const unit = attachedUnit(single.base);
228
+ if (unit === null)
229
+ return false;
230
+ return product.every((factor) => factor.base === unit && attachedUnit(factor.base) === null);
231
+ }
232
+ /** Every way to split `token` into one or more factors. A one-factor token is included. */
233
+ function segmentations(token) {
234
+ const ways = Array.from({ length: token.length + 1 }, () => []);
235
+ ways[0].push([]);
236
+ for (let i = 0; i < token.length; i++) {
237
+ if (ways[i].length === 0)
238
+ continue;
239
+ for (let j = i + 1; j <= token.length; j++) {
240
+ const factor = tryOneFactor(token.slice(i, j));
241
+ if (factor === null)
242
+ continue;
243
+ for (const prev of ways[i])
244
+ ways[j].push([...prev, factor]);
136
245
  }
137
246
  }
138
- if (caret === null)
139
- throw new UnitError(`cannot read unit factor '${factor}'`);
140
- return { base: caret[1], exp: 1 };
247
+ const unique = new Map();
248
+ for (const way of ways[token.length])
249
+ unique.set(formatReading(way), way);
250
+ return [...unique.values()];
251
+ }
252
+ /**
253
+ * Ways to read one token. A bare expression keeps a one-factor reading and
254
+ * does not also split it. Inside a compound, a prefixed factor also competes
255
+ * with each heterogeneous product. A homogeneous power does not.
256
+ */
257
+ function tokenWays(token, compete) {
258
+ const single = tryOneFactor(token);
259
+ if (single !== null && !compete)
260
+ return [[single]];
261
+ const products = segmentations(token).filter((way) => way.length > 1);
262
+ const extra = single === null ? products : products.filter((way) => !homogeneousPower(single, way));
263
+ const ways = [];
264
+ if (single !== null)
265
+ ways.push([single]);
266
+ for (const way of extra)
267
+ ways.push(way);
268
+ const unique = new Map();
269
+ for (const way of ways)
270
+ unique.set(formatReading(way), way);
271
+ const list = [...unique.values()];
272
+ if (list.length === 0)
273
+ throw new UnitError(`unknown unit '${token}'`);
274
+ return list;
275
+ }
276
+ function cartesian(lists) {
277
+ let acc = [[]];
278
+ for (const list of lists) {
279
+ const next = [];
280
+ for (const prev of acc)
281
+ for (const item of list)
282
+ next.push([...prev, item]);
283
+ acc = next;
284
+ }
285
+ return acc;
141
286
  }
142
- function parseFactors(text, sign) {
287
+ function sideTokens(text) {
288
+ return text.split(/[*·\s]+/).filter((part) => part.length > 0);
289
+ }
290
+ function formatSide(tokens) {
291
+ return tokens.map((factors) => formatReading(factors)).join('·');
292
+ }
293
+ function formatExpression(num, den) {
294
+ const numerator = formatSide(num);
295
+ if (den.length === 0)
296
+ return numerator;
297
+ const denominator = formatSide(den);
298
+ return denominator.includes('·') ? `${numerator}/(${denominator})` : `${numerator}/${denominator}`;
299
+ }
300
+ function accumulate(tokens, sign) {
143
301
  let scale = 1;
144
302
  let dim = DIMENSIONLESS;
145
- for (const f of text.split(/[*·\s]+/).filter((x) => x.length > 0)) {
146
- const { base, exp } = factorExponent(f);
147
- const n = sign * exp;
148
- const [s, d] = parseSymbol(base);
149
- scale *= s ** n;
150
- dim = multiply(dim, power(d, n));
303
+ for (const factors of tokens) {
304
+ for (const factor of factors) {
305
+ const n = sign * factor.exp;
306
+ scale *= factor.scale ** n;
307
+ dim = multiply(dim, power(factor.dim, n));
308
+ }
151
309
  }
152
310
  return { scale, dim };
153
311
  }
312
+ /** Every dimensionally distinct spelling of one unit expression. */
313
+ function unitReadings(text) {
314
+ const t = text.trim();
315
+ if (t === '' || t === '1')
316
+ return [{ scale: 1, dim: DIMENSIONLESS, label: '1' }];
317
+ const affine = affineRow(t);
318
+ if (affine !== undefined) {
319
+ return [{ scale: affine.scale, dim: D({ Theta: 1 }), affine: affine.id, label: t }];
320
+ }
321
+ if (AFFINE.some((row) => row.symbols.some((symbol) => t.includes(symbol))) ||
322
+ /deg\s+[CFcf]|°\s*[CFcf]/.test(t)) {
323
+ throw new UnitError('an affine temperature cannot be part of a compound unit; give K');
324
+ }
325
+ const parts = t.split('/');
326
+ if (parts.length > 2)
327
+ throw new UnitError(`'${t}' has more than one '/'; put the whole denominator after one '/'`);
328
+ const compete = /[*·/\s]/.test(t);
329
+ const numerator = sideTokens(parts[0]);
330
+ const denominatorText = parts.length === 1 ? '' : parts[1].replace(/^\((.*)\)$/, '$1');
331
+ const denominator = denominatorText === '' ? [] : sideTokens(denominatorText);
332
+ // `/s` is a dimensionless numerator over seconds. A bare `/` is not a unit.
333
+ if (numerator.length === 0 && denominator.length === 0)
334
+ throw new UnitError(`unknown unit '${t}'`);
335
+ const numWays = numerator.map((token) => tokenWays(token, compete));
336
+ const denWays = denominator.map((token) => tokenWays(token, compete));
337
+ const numCombos = numerator.length === 0 ? [[]] : cartesian(numWays);
338
+ const denCombos = denominator.length === 0 ? [[]] : cartesian(denWays);
339
+ const unique = new Map();
340
+ for (const num of numCombos) {
341
+ for (const den of denCombos) {
342
+ const n = accumulate(num, 1);
343
+ const d = accumulate(den, -1);
344
+ const label = formatExpression(num, den);
345
+ unique.set(label, { scale: n.scale * d.scale, dim: multiply(n.dim, d.dim), label });
346
+ }
347
+ }
348
+ return [...unique.values()];
349
+ }
350
+ function ambiguousMessage(text, readings) {
351
+ return `'${text}' is ambiguous: ${readings.map((reading) => reading.label).join(' or ')}`;
352
+ }
353
+ const SUPERSCRIPT = { '¹': 1, '²': 2, '³': 3 };
154
354
  /**
155
355
  * Spellings that convert correctly and still mean something else to a reader.
156
356
  * `myr` is a milliyear, `Msun` is `M_SUN_SI`, bare `G` is the gauss, bare `T`
@@ -172,27 +372,35 @@ export function unitConventionNotes(given) {
172
372
  notes.push('bare T is the tesla; Ts is a terasecond');
173
373
  if (symbols.includes('A'))
174
374
  notes.push('bare A is the ampere, not the angstrom; write angstrom or Å for 10^-10 m');
375
+ if (symbols.includes('P'))
376
+ notes.push('bare P is the poise (0.1 Pa·s); PV is still a petavolt');
175
377
  return notes;
176
378
  }
177
379
  /** Parse a unit expression; the empty string is dimensionless. @public */
178
380
  export function parseUnit(text) {
179
381
  const t = text.trim();
180
- if (t === '' || t === '1')
181
- return { scale: 1, dim: DIMENSIONLESS };
182
- if (t === 'degC' || t === '°C')
183
- return { scale: 1, dim: D({ Theta: 1 }), affine: 'celsius' };
184
- if (/deg ?F|°F/.test(t))
185
- throw new UnitError('Fahrenheit is not accepted; give K or degC');
186
- if (/degC|°C/.test(t))
187
- throw new UnitError('degC is affine and cannot be part of a compound unit; give K');
188
- const parts = t.split('/');
189
- if (parts.length > 2)
190
- throw new UnitError(`'${t}' has more than one '/'; put the whole denominator after one '/'`);
191
- const num = parseFactors(parts[0], 1);
192
- if (parts.length === 1)
193
- return num;
194
- const den = parseFactors(parts[1].replace(/^\((.*)\)$/, '$1'), -1);
195
- return { scale: num.scale * den.scale, dim: multiply(num.dim, den.dim) };
382
+ const readings = unitReadings(t);
383
+ if (readings.length !== 1)
384
+ throw new UnitError(ambiguousMessage(t, readings));
385
+ const reading = readings[0];
386
+ return {
387
+ scale: reading.scale,
388
+ dim: reading.dim,
389
+ ...(reading.affine !== undefined ? { affine: reading.affine } : {}),
390
+ };
391
+ }
392
+ /** Kelvin added when this affine unit is an absolute point. @internal */
393
+ export function affineAbsoluteOffsetK(id) {
394
+ const row = AFFINE.find((candidate) => candidate.id === id);
395
+ if (row === undefined)
396
+ throw new UnitError(`unknown affine temperature '${id}'`);
397
+ return row.offset;
398
+ }
399
+ /** Kelvin from an affine or proportional reading. A difference drops the offset. */
400
+ function kelvinFrom(value, unit, reading) {
401
+ const row = unit.affine === undefined ? undefined : AFFINE.find((candidate) => candidate.id === unit.affine);
402
+ const offset = row !== undefined && reading === 'absolute' ? row.offset : 0;
403
+ return value * unit.scale + offset;
196
404
  }
197
405
  /**
198
406
  * Convert `raw` (`<number>[unit]`) into `target` (a unit expression). A bare
@@ -211,15 +419,21 @@ export function convertValue(raw, target, reading = 'absolute') {
211
419
  throw new UnitError(`'${raw}' is not a finite number`);
212
420
  if (given === '')
213
421
  return { value: v, given };
214
- const from = parseUnit(given);
422
+ const readings = unitReadings(given);
215
423
  const to = parseUnit(target);
216
424
  if (to.affine !== undefined)
217
425
  throw new UnitError(`a declared unit cannot be affine ('${target}')`);
218
- if (!equals(from.dim, to.dim)) {
426
+ const matched = readings.filter((candidate) => equals(candidate.dim, to.dim));
427
+ if (matched.length !== 1) {
428
+ if (readings.length > 1)
429
+ throw new UnitError(ambiguousMessage(given, readings));
430
+ const from = readings[0];
431
+ if (from === undefined)
432
+ throw new UnitError(`unknown unit '${given}'`);
219
433
  throw new UnitError(`'${given}' is ${format(from.dim)}, but this input is ${format(to.dim)} (${target || 'dimensionless'})`);
220
434
  }
221
- const offset = from.affine === 'celsius' && reading === 'absolute' ? CELSIUS_OFFSET_K : 0;
222
- const local = (v * from.scale + offset) / to.scale;
435
+ const from = matched[0];
436
+ const local = kelvinFrom(v, from, reading) / to.scale;
223
437
  // MathTS `unit` + `toSI` is the conversion when it reads the same quantity.
224
438
  // A temperature difference must not take the absolute offset `toSI` adds.
225
439
  // `bit` is ln 2 nat here; MathTS reads `bit` as 1. Symbols MathTS does not