universal-physics-tensor 7.0.0 → 9.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.
- package/README.md +11 -9
- package/data/atlas/atlas.json +3044 -0
- package/data/atlas/atlas.jsonld +1819 -0
- package/data/atlas/diffusion.json +1084 -0
- package/data/atlas/oscillators.json +1041 -0
- package/data/atlas/qudt-resolution.json +60 -0
- package/data/atlas/waves.json +916 -0
- package/data/atlas/witness-results.json +249 -0
- package/data/bridge-catalog.json +15425 -0
- package/data/bridge-catalog.schema.json +642 -0
- package/data/confrontation-sources.md +137 -0
- package/data/quantities.json +9755 -0
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +236 -0
- package/data/schemas/discovery-run.v0.json +203 -0
- package/data/units.json +1149 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +2 -5
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.d.ts +6 -12
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +15 -25
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1769 -196
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +2046 -321
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +89 -89
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +128 -269
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +16 -8
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +34 -31
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +56 -0
- package/dist/bridges/caller-table.d.ts.map +1 -0
- package/dist/bridges/{be53-yang-mills-confrontation.js → caller-table.js} +13 -15
- package/dist/bridges/caller-table.js.map +1 -0
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +5 -5
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +41 -0
- package/dist/bridges/catalog-load.d.ts.map +1 -0
- package/dist/bridges/catalog-load.js +145 -0
- package/dist/bridges/catalog-load.js.map +1 -0
- package/dist/bridges/catalog-types.d.ts +164 -0
- package/dist/bridges/catalog-types.d.ts.map +1 -0
- package/dist/bridges/catalog-types.js +8 -0
- package/dist/bridges/catalog-types.js.map +1 -0
- package/dist/bridges/coefficient-statement.d.ts +27 -0
- package/dist/bridges/coefficient-statement.d.ts.map +1 -0
- package/dist/bridges/coefficient-statement.js +33 -0
- package/dist/bridges/coefficient-statement.js.map +1 -0
- package/dist/bridges/confrontations.d.ts +8 -25
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +26 -714
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +76 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +118 -0
- package/dist/bridges/evaluation-errors.js.map +1 -0
- package/dist/bridges/evaluator-inputs.d.ts +5 -3
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +24 -14
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +40 -28
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +183 -413
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +27 -0
- package/dist/bridges/expr-parse.d.ts.map +1 -0
- package/dist/bridges/expr-parse.js +162 -0
- package/dist/bridges/expr-parse.js.map +1 -0
- package/dist/bridges/holds.d.ts +26 -0
- package/dist/bridges/holds.d.ts.map +1 -0
- package/dist/bridges/holds.js +145 -0
- package/dist/bridges/holds.js.map +1 -0
- package/dist/bridges/index.d.ts +18 -354
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +17 -3312
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.d.ts +65 -0
- package/dist/bridges/input-contract.d.ts.map +1 -0
- package/dist/bridges/input-contract.js +97 -0
- package/dist/bridges/input-contract.js.map +1 -0
- package/dist/bridges/notices.d.ts +11 -0
- package/dist/bridges/notices.d.ts.map +1 -0
- package/dist/bridges/notices.js +22 -0
- package/dist/bridges/notices.js.map +1 -0
- package/dist/bridges/relation-eval.d.ts +23 -0
- package/dist/bridges/relation-eval.d.ts.map +1 -0
- package/dist/bridges/relation-eval.js +136 -0
- package/dist/bridges/relation-eval.js.map +1 -0
- package/dist/bridges/rhs-registry.d.ts +7 -21
- package/dist/bridges/rhs-registry.d.ts.map +1 -1
- package/dist/bridges/rhs-registry.js +13 -123
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +20 -36
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/types.d.ts +52 -0
- package/dist/bridges/types.d.ts.map +1 -0
- package/dist/bridges/types.js +10 -0
- package/dist/bridges/types.js.map +1 -0
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +12 -2
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +4 -1
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +48 -0
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +31 -1
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +35 -1
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +25 -1
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +16 -5
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +7 -1
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +20 -1
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +17 -2
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +9 -4
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/cases/index.d.ts +9 -2
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +26 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.d.ts.map +1 -1
- package/dist/cases/kepler-rv.js +13 -9
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/resistor-noise.d.ts.map +1 -1
- package/dist/cases/resistor-noise.js +10 -5
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +2 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +7 -12
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +6 -9
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +1 -2
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/chain.js +2 -2
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +17 -17
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +8 -9
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/derive.js +9 -10
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +3 -4
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +18 -16
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +1 -35
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +67 -193
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +44 -37
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/ground.js +1 -1
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/map.js +3 -4
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +3 -0
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/regime.js +1 -1
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +10 -6
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +3 -3
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.d.ts +6 -7
- package/dist/cli/conventions.d.ts.map +1 -1
- package/dist/cli/conventions.js +19 -28
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/euler-guard.d.ts +13 -2
- package/dist/cli/euler-guard.d.ts.map +1 -1
- package/dist/cli/euler-guard.js +17 -3
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +4 -9
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -41
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/published-url.d.ts +2 -0
- package/dist/cli/published-url.d.ts.map +1 -1
- package/dist/cli/published-url.js +5 -0
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-tables.d.ts +2 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +8 -3
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli-api.d.ts +50 -12
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +43 -11
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.d.ts +8 -30
- package/dist/composition/adjudication.d.ts.map +1 -1
- package/dist/composition/adjudication.js +15 -67
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/aliases.d.ts +1 -1
- package/dist/composition/aliases.d.ts.map +1 -1
- package/dist/composition/aliases.js +10 -20
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +4 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +13 -14
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +12 -12
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +96 -25
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +10 -29
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +15 -202
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts +11 -4
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +78 -47
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/compose.js +2 -1
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/discovery.d.ts +50 -0
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +28 -24
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +0 -14
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +1 -17
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +31 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +111 -60
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +5 -0
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +9 -8
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +8 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +1 -1
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/index.d.ts +6 -15
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +6 -15
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +3 -2
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +11 -27
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +29 -29
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +8 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +5 -0
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/user-equation.d.ts +13 -16
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +26 -53
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/constants.d.ts +41 -4
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +54 -5
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +27 -0
- package/dist/core/data-file.d.ts.map +1 -0
- package/dist/core/data-file.js +48 -0
- package/dist/core/data-file.js.map +1 -0
- package/dist/core/json-schema.d.ts +27 -0
- package/dist/core/json-schema.d.ts.map +1 -0
- package/dist/core/json-schema.js +153 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/types.d.ts +3 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -14
- package/dist/core/types.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +6 -16
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +1 -1
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-specs.d.ts +33 -62
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +56 -77
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +9 -26
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +20 -227
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts +54 -0
- package/dist/dimensional/constant-rows.d.ts.map +1 -0
- package/dist/dimensional/constant-rows.js +111 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +4 -13
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +11 -19
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +12 -3
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +114 -150
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +79 -0
- package/dist/dimensional/exact-scale.d.ts.map +1 -0
- package/dist/dimensional/exact-scale.js +222 -0
- package/dist/dimensional/exact-scale.js.map +1 -0
- package/dist/dimensional/formula-names.d.ts +30 -13
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +56 -48
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts +13 -0
- package/dist/dimensional/hyphen-names.d.ts.map +1 -0
- package/dist/dimensional/hyphen-names.js +27 -0
- package/dist/dimensional/hyphen-names.js.map +1 -0
- package/dist/dimensional/quantity-registry.d.ts +42 -0
- package/dist/dimensional/quantity-registry.d.ts.map +1 -0
- package/dist/dimensional/quantity-registry.js +78 -0
- package/dist/dimensional/quantity-registry.js.map +1 -0
- package/dist/dimensional/symbolic-constants.d.ts +63 -19
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +109 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +70 -0
- package/dist/dimensional/unit-data.d.ts.map +1 -0
- package/dist/dimensional/unit-data.js +135 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +88 -23
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +365 -230
- package/dist/dimensional/units.js.map +1 -1
- package/dist/index.d.ts +29 -69
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -50
- package/dist/index.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +21 -1
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +177 -121
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/{be37-covariant-eikonal.d.ts → covariant-eikonal.d.ts} +13 -13
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -0
- package/dist/numerical/{be37-covariant-eikonal.js → covariant-eikonal.js} +18 -18
- package/dist/numerical/covariant-eikonal.js.map +1 -0
- package/dist/numerical/derivative-lowering.d.ts +2 -1
- package/dist/numerical/derivative-lowering.d.ts.map +1 -1
- package/dist/numerical/derivative-lowering.js +2 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
- package/dist/numerical/evaluator-uncertainty.js +117 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +4 -0
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +7 -0
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +9 -0
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +64 -10
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +6 -2
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +6 -3
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +9 -6
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/index.d.ts +4 -3
- package/dist/numerical/index.d.ts.map +1 -1
- package/dist/numerical/index.js +2 -2
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/null-ic.d.ts +6 -5
- package/dist/numerical/null-ic.d.ts.map +1 -1
- package/dist/numerical/null-ic.js +6 -5
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +1 -1
- package/dist/numerical/perihelion-finder.d.ts +5 -4
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +5 -4
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +4 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +34 -4
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/relations/types.d.ts +8 -1
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +10 -0
- package/dist/relations/types.js.map +1 -1
- package/package.json +2 -1
- package/dist/bridges/be100-lyddane-sachs-teller.d.ts +0 -41
- package/dist/bridges/be100-lyddane-sachs-teller.d.ts.map +0 -1
- package/dist/bridges/be100-lyddane-sachs-teller.js +0 -30
- package/dist/bridges/be100-lyddane-sachs-teller.js.map +0 -1
- package/dist/bridges/be101-bkt-jump.d.ts +0 -24
- package/dist/bridges/be101-bkt-jump.d.ts.map +0 -1
- package/dist/bridges/be101-bkt-jump.js +0 -29
- package/dist/bridges/be101-bkt-jump.js.map +0 -1
- package/dist/bridges/be102-landauer-conductance.d.ts +0 -24
- package/dist/bridges/be102-landauer-conductance.d.ts.map +0 -1
- package/dist/bridges/be102-landauer-conductance.js +0 -28
- package/dist/bridges/be102-landauer-conductance.js.map +0 -1
- package/dist/bridges/be11-decoherence-confrontation.d.ts +0 -63
- package/dist/bridges/be11-decoherence-confrontation.d.ts.map +0 -1
- package/dist/bridges/be11-decoherence-confrontation.js +0 -39
- package/dist/bridges/be11-decoherence-confrontation.js.map +0 -1
- package/dist/bridges/be21-kss-confrontation.d.ts +0 -52
- package/dist/bridges/be21-kss-confrontation.d.ts.map +0 -1
- package/dist/bridges/be21-kss-confrontation.js +0 -38
- package/dist/bridges/be21-kss-confrontation.js.map +0 -1
- package/dist/bridges/be23-planckian-confrontation.d.ts +0 -162
- package/dist/bridges/be23-planckian-confrontation.d.ts.map +0 -1
- package/dist/bridges/be23-planckian-confrontation.js +0 -196
- package/dist/bridges/be23-planckian-confrontation.js.map +0 -1
- package/dist/bridges/be35-bootstrap-confrontation.d.ts +0 -59
- package/dist/bridges/be35-bootstrap-confrontation.d.ts.map +0 -1
- package/dist/bridges/be35-bootstrap-confrontation.js +0 -39
- package/dist/bridges/be35-bootstrap-confrontation.js.map +0 -1
- package/dist/bridges/be36-gw170817-confrontation.d.ts +0 -111
- package/dist/bridges/be36-gw170817-confrontation.d.ts.map +0 -1
- package/dist/bridges/be36-gw170817-confrontation.js +0 -100
- package/dist/bridges/be36-gw170817-confrontation.js.map +0 -1
- package/dist/bridges/be37-cassini-confrontation.d.ts +0 -43
- package/dist/bridges/be37-cassini-confrontation.d.ts.map +0 -1
- package/dist/bridges/be37-cassini-confrontation.js +0 -34
- package/dist/bridges/be37-cassini-confrontation.js.map +0 -1
- package/dist/bridges/be48-collapse-confrontation.d.ts +0 -52
- package/dist/bridges/be48-collapse-confrontation.d.ts.map +0 -1
- package/dist/bridges/be48-collapse-confrontation.js +0 -37
- package/dist/bridges/be48-collapse-confrontation.js.map +0 -1
- package/dist/bridges/be51-lensing-confrontation.d.ts +0 -53
- package/dist/bridges/be51-lensing-confrontation.d.ts.map +0 -1
- package/dist/bridges/be51-lensing-confrontation.js +0 -52
- package/dist/bridges/be51-lensing-confrontation.js.map +0 -1
- package/dist/bridges/be52-mercury-confrontation.d.ts +0 -72
- package/dist/bridges/be52-mercury-confrontation.d.ts.map +0 -1
- package/dist/bridges/be52-mercury-confrontation.js +0 -70
- package/dist/bridges/be52-mercury-confrontation.js.map +0 -1
- package/dist/bridges/be53-yang-mills-confrontation.d.ts +0 -81
- package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +0 -1
- package/dist/bridges/be53-yang-mills-confrontation.js.map +0 -1
- package/dist/bridges/be55-quantum-hall-confrontation.d.ts +0 -51
- package/dist/bridges/be55-quantum-hall-confrontation.d.ts.map +0 -1
- package/dist/bridges/be55-quantum-hall-confrontation.js +0 -32
- package/dist/bridges/be55-quantum-hall-confrontation.js.map +0 -1
- package/dist/bridges/be55-quantum-hall.d.ts +0 -24
- package/dist/bridges/be55-quantum-hall.d.ts.map +0 -1
- package/dist/bridges/be55-quantum-hall.js +0 -46
- package/dist/bridges/be55-quantum-hall.js.map +0 -1
- package/dist/bridges/be56-casimir-confrontation.d.ts +0 -52
- package/dist/bridges/be56-casimir-confrontation.d.ts.map +0 -1
- package/dist/bridges/be56-casimir-confrontation.js +0 -31
- package/dist/bridges/be56-casimir-confrontation.js.map +0 -1
- package/dist/bridges/be56-casimir.d.ts +0 -18
- package/dist/bridges/be56-casimir.d.ts.map +0 -1
- package/dist/bridges/be56-casimir.js +0 -36
- package/dist/bridges/be56-casimir.js.map +0 -1
- package/dist/bridges/be57-unruh.d.ts +0 -18
- package/dist/bridges/be57-unruh.d.ts.map +0 -1
- package/dist/bridges/be57-unruh.js +0 -38
- package/dist/bridges/be57-unruh.js.map +0 -1
- package/dist/bridges/be58-johnson-nyquist-confrontation.d.ts +0 -57
- package/dist/bridges/be58-johnson-nyquist-confrontation.d.ts.map +0 -1
- package/dist/bridges/be58-johnson-nyquist-confrontation.js +0 -38
- package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +0 -1
- package/dist/bridges/be58-johnson-nyquist.d.ts +0 -22
- package/dist/bridges/be58-johnson-nyquist.d.ts.map +0 -1
- package/dist/bridges/be58-johnson-nyquist.js +0 -36
- package/dist/bridges/be58-johnson-nyquist.js.map +0 -1
- package/dist/bridges/be59-ac-josephson-confrontation.d.ts +0 -46
- package/dist/bridges/be59-ac-josephson-confrontation.d.ts.map +0 -1
- package/dist/bridges/be59-ac-josephson-confrontation.js +0 -32
- package/dist/bridges/be59-ac-josephson-confrontation.js.map +0 -1
- package/dist/bridges/be59-ac-josephson.d.ts +0 -22
- package/dist/bridges/be59-ac-josephson.d.ts.map +0 -1
- package/dist/bridges/be59-ac-josephson.js +0 -35
- package/dist/bridges/be59-ac-josephson.js.map +0 -1
- package/dist/bridges/be60-fractional-qh-confrontation.d.ts +0 -45
- package/dist/bridges/be60-fractional-qh-confrontation.d.ts.map +0 -1
- package/dist/bridges/be60-fractional-qh-confrontation.js +0 -31
- package/dist/bridges/be60-fractional-qh-confrontation.js.map +0 -1
- package/dist/bridges/be60-fractional-qh.d.ts +0 -20
- package/dist/bridges/be60-fractional-qh.d.ts.map +0 -1
- package/dist/bridges/be60-fractional-qh.js +0 -33
- package/dist/bridges/be60-fractional-qh.js.map +0 -1
- package/dist/bridges/be61-wiedemann-franz-confrontation.d.ts +0 -35
- package/dist/bridges/be61-wiedemann-franz-confrontation.d.ts.map +0 -1
- package/dist/bridges/be61-wiedemann-franz-confrontation.js +0 -49
- package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +0 -1
- package/dist/bridges/be61-wiedemann-franz.d.ts +0 -25
- package/dist/bridges/be61-wiedemann-franz.d.ts.map +0 -1
- package/dist/bridges/be61-wiedemann-franz.js +0 -41
- package/dist/bridges/be61-wiedemann-franz.js.map +0 -1
- package/dist/bridges/be62-bcs-gap-confrontation.d.ts +0 -35
- package/dist/bridges/be62-bcs-gap-confrontation.d.ts.map +0 -1
- package/dist/bridges/be62-bcs-gap-confrontation.js +0 -46
- package/dist/bridges/be62-bcs-gap-confrontation.js.map +0 -1
- package/dist/bridges/be62-bcs-gap.d.ts +0 -22
- package/dist/bridges/be62-bcs-gap.d.ts.map +0 -1
- package/dist/bridges/be62-bcs-gap.js +0 -38
- package/dist/bridges/be62-bcs-gap.js.map +0 -1
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.d.ts +0 -32
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.d.ts.map +0 -1
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.js +0 -46
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +0 -1
- package/dist/bridges/be63-chandrasekhar-mass.d.ts +0 -22
- package/dist/bridges/be63-chandrasekhar-mass.d.ts.map +0 -1
- package/dist/bridges/be63-chandrasekhar-mass.js +0 -34
- package/dist/bridges/be63-chandrasekhar-mass.js.map +0 -1
- package/dist/bridges/be64-eddington-luminosity-confrontation.d.ts +0 -48
- package/dist/bridges/be64-eddington-luminosity-confrontation.d.ts.map +0 -1
- package/dist/bridges/be64-eddington-luminosity-confrontation.js +0 -31
- package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +0 -1
- package/dist/bridges/be64-eddington-luminosity.d.ts +0 -22
- package/dist/bridges/be64-eddington-luminosity.d.ts.map +0 -1
- package/dist/bridges/be64-eddington-luminosity.js +0 -35
- package/dist/bridges/be64-eddington-luminosity.js.map +0 -1
- package/dist/bridges/be65-jeans-mass-confrontation.d.ts +0 -36
- package/dist/bridges/be65-jeans-mass-confrontation.d.ts.map +0 -1
- package/dist/bridges/be65-jeans-mass-confrontation.js +0 -58
- package/dist/bridges/be65-jeans-mass-confrontation.js.map +0 -1
- package/dist/bridges/be65-jeans-mass.d.ts +0 -24
- package/dist/bridges/be65-jeans-mass.d.ts.map +0 -1
- package/dist/bridges/be65-jeans-mass.js +0 -38
- package/dist/bridges/be65-jeans-mass.js.map +0 -1
- package/dist/bridges/be66-radiation-pressure.d.ts +0 -30
- package/dist/bridges/be66-radiation-pressure.d.ts.map +0 -1
- package/dist/bridges/be66-radiation-pressure.js +0 -37
- package/dist/bridges/be66-radiation-pressure.js.map +0 -1
- package/dist/bridges/be67-alfven-speed.d.ts +0 -41
- package/dist/bridges/be67-alfven-speed.d.ts.map +0 -1
- package/dist/bridges/be67-alfven-speed.js +0 -50
- package/dist/bridges/be67-alfven-speed.js.map +0 -1
- package/dist/bridges/be68-tolman-ehrenfest.d.ts +0 -49
- package/dist/bridges/be68-tolman-ehrenfest.d.ts.map +0 -1
- package/dist/bridges/be68-tolman-ehrenfest.js +0 -46
- package/dist/bridges/be68-tolman-ehrenfest.js.map +0 -1
- package/dist/bridges/be69-fast-magnetosonic.d.ts +0 -30
- package/dist/bridges/be69-fast-magnetosonic.d.ts.map +0 -1
- package/dist/bridges/be69-fast-magnetosonic.js +0 -33
- package/dist/bridges/be69-fast-magnetosonic.js.map +0 -1
- package/dist/bridges/be70-einstein-relation.d.ts +0 -30
- package/dist/bridges/be70-einstein-relation.d.ts.map +0 -1
- package/dist/bridges/be70-einstein-relation.js +0 -41
- package/dist/bridges/be70-einstein-relation.js.map +0 -1
- package/dist/bridges/be71-clapeyron.d.ts +0 -43
- package/dist/bridges/be71-clapeyron.d.ts.map +0 -1
- package/dist/bridges/be71-clapeyron.js +0 -32
- package/dist/bridges/be71-clapeyron.js.map +0 -1
- package/dist/bridges/be72-gravitational-redshift.d.ts +0 -43
- package/dist/bridges/be72-gravitational-redshift.d.ts.map +0 -1
- package/dist/bridges/be72-gravitational-redshift.js +0 -32
- package/dist/bridges/be72-gravitational-redshift.js.map +0 -1
- package/dist/bridges/be73-kelvin-peltier.d.ts +0 -42
- package/dist/bridges/be73-kelvin-peltier.d.ts.map +0 -1
- package/dist/bridges/be73-kelvin-peltier.js +0 -31
- package/dist/bridges/be73-kelvin-peltier.js.map +0 -1
- package/dist/bridges/be74-magnetic-pressure.d.ts +0 -27
- package/dist/bridges/be74-magnetic-pressure.d.ts.map +0 -1
- package/dist/bridges/be74-magnetic-pressure.js +0 -29
- package/dist/bridges/be74-magnetic-pressure.js.map +0 -1
- package/dist/bridges/be75-london-penetration.d.ts +0 -27
- package/dist/bridges/be75-london-penetration.d.ts.map +0 -1
- package/dist/bridges/be75-london-penetration.js +0 -31
- package/dist/bridges/be75-london-penetration.js.map +0 -1
- package/dist/bridges/be76-plasma-beta.d.ts +0 -32
- package/dist/bridges/be76-plasma-beta.d.ts.map +0 -1
- package/dist/bridges/be76-plasma-beta.js +0 -34
- package/dist/bridges/be76-plasma-beta.js.map +0 -1
- package/dist/bridges/be77-hagen-poiseuille.d.ts +0 -50
- package/dist/bridges/be77-hagen-poiseuille.d.ts.map +0 -1
- package/dist/bridges/be77-hagen-poiseuille.js +0 -39
- package/dist/bridges/be77-hagen-poiseuille.js.map +0 -1
- package/dist/bridges/be78-euler-buckling.d.ts +0 -44
- package/dist/bridges/be78-euler-buckling.d.ts.map +0 -1
- package/dist/bridges/be78-euler-buckling.js +0 -33
- package/dist/bridges/be78-euler-buckling.js.map +0 -1
- package/dist/bridges/be79-pull-in.d.ts +0 -33
- package/dist/bridges/be79-pull-in.d.ts.map +0 -1
- package/dist/bridges/be79-pull-in.js +0 -35
- package/dist/bridges/be79-pull-in.js.map +0 -1
- package/dist/bridges/be80-mott-gurney.d.ts +0 -52
- package/dist/bridges/be80-mott-gurney.d.ts.map +0 -1
- package/dist/bridges/be80-mott-gurney.js +0 -38
- package/dist/bridges/be80-mott-gurney.js.map +0 -1
- package/dist/bridges/be81-child-langmuir.d.ts +0 -33
- package/dist/bridges/be81-child-langmuir.d.ts.map +0 -1
- package/dist/bridges/be81-child-langmuir.js +0 -38
- package/dist/bridges/be81-child-langmuir.js.map +0 -1
- package/dist/bridges/be82-shockley-diode.d.ts +0 -32
- package/dist/bridges/be82-shockley-diode.d.ts.map +0 -1
- package/dist/bridges/be82-shockley-diode.js +0 -37
- package/dist/bridges/be82-shockley-diode.js.map +0 -1
- package/dist/bridges/be83-thomson.d.ts +0 -46
- package/dist/bridges/be83-thomson.d.ts.map +0 -1
- package/dist/bridges/be83-thomson.js +0 -32
- package/dist/bridges/be83-thomson.js.map +0 -1
- package/dist/bridges/be84-four-point.d.ts +0 -45
- package/dist/bridges/be84-four-point.d.ts.map +0 -1
- package/dist/bridges/be84-four-point.js +0 -34
- package/dist/bridges/be84-four-point.js.map +0 -1
- package/dist/bridges/be85-shot-noise.d.ts +0 -30
- package/dist/bridges/be85-shot-noise.d.ts.map +0 -1
- package/dist/bridges/be85-shot-noise.js +0 -32
- package/dist/bridges/be85-shot-noise.js.map +0 -1
- package/dist/bridges/be86-reynolds-analogy.d.ts +0 -45
- package/dist/bridges/be86-reynolds-analogy.d.ts.map +0 -1
- package/dist/bridges/be86-reynolds-analogy.js +0 -30
- package/dist/bridges/be86-reynolds-analogy.js.map +0 -1
- package/dist/bridges/be87-capacitor-noise.d.ts +0 -27
- package/dist/bridges/be87-capacitor-noise.d.ts.map +0 -1
- package/dist/bridges/be87-capacitor-noise.js +0 -32
- package/dist/bridges/be87-capacitor-noise.js.map +0 -1
- package/dist/bridges/be88-fermi-sea.d.ts +0 -31
- package/dist/bridges/be88-fermi-sea.d.ts.map +0 -1
- package/dist/bridges/be88-fermi-sea.js +0 -35
- package/dist/bridges/be88-fermi-sea.js.map +0 -1
- package/dist/bridges/be89-debye-cutoff.d.ts +0 -39
- package/dist/bridges/be89-debye-cutoff.d.ts.map +0 -1
- package/dist/bridges/be89-debye-cutoff.js +0 -28
- package/dist/bridges/be89-debye-cutoff.js.map +0 -1
- package/dist/bridges/be90-debye-heat.d.ts +0 -30
- package/dist/bridges/be90-debye-heat.d.ts.map +0 -1
- package/dist/bridges/be90-debye-heat.js +0 -35
- package/dist/bridges/be90-debye-heat.js.map +0 -1
- package/dist/bridges/be91-einstein-solid.d.ts +0 -30
- package/dist/bridges/be91-einstein-solid.d.ts.map +0 -1
- package/dist/bridges/be91-einstein-solid.js +0 -37
- package/dist/bridges/be91-einstein-solid.js.map +0 -1
- package/dist/bridges/be92-sommerfeld-heat.d.ts +0 -30
- package/dist/bridges/be92-sommerfeld-heat.d.ts.map +0 -1
- package/dist/bridges/be92-sommerfeld-heat.js +0 -34
- package/dist/bridges/be92-sommerfeld-heat.js.map +0 -1
- package/dist/bridges/be93-curie-weiss.d.ts +0 -41
- package/dist/bridges/be93-curie-weiss.d.ts.map +0 -1
- package/dist/bridges/be93-curie-weiss.js +0 -45
- package/dist/bridges/be93-curie-weiss.js.map +0 -1
- package/dist/bridges/be94-pauli-paramagnetism.d.ts +0 -30
- package/dist/bridges/be94-pauli-paramagnetism.d.ts.map +0 -1
- package/dist/bridges/be94-pauli-paramagnetism.js +0 -33
- package/dist/bridges/be94-pauli-paramagnetism.js.map +0 -1
- package/dist/bridges/be95-ginzburg-landau.d.ts +0 -46
- package/dist/bridges/be95-ginzburg-landau.d.ts.map +0 -1
- package/dist/bridges/be95-ginzburg-landau.js +0 -32
- package/dist/bridges/be95-ginzburg-landau.js.map +0 -1
- package/dist/bridges/be96-upper-critical.d.ts +0 -24
- package/dist/bridges/be96-upper-critical.d.ts.map +0 -1
- package/dist/bridges/be96-upper-critical.js +0 -27
- package/dist/bridges/be96-upper-critical.js.map +0 -1
- package/dist/bridges/be97-ambegaokar-baratoff.d.ts +0 -24
- package/dist/bridges/be97-ambegaokar-baratoff.d.ts.map +0 -1
- package/dist/bridges/be97-ambegaokar-baratoff.js +0 -30
- package/dist/bridges/be97-ambegaokar-baratoff.js.map +0 -1
- package/dist/bridges/be98-bcs-jump.d.ts +0 -40
- package/dist/bridges/be98-bcs-jump.d.ts.map +0 -1
- package/dist/bridges/be98-bcs-jump.js +0 -29
- package/dist/bridges/be98-bcs-jump.js.map +0 -1
- package/dist/bridges/be99-mass-action.d.ts +0 -33
- package/dist/bridges/be99-mass-action.d.ts.map +0 -1
- package/dist/bridges/be99-mass-action.js +0 -37
- package/dist/bridges/be99-mass-action.js.map +0 -1
- package/dist/bridges/bridge-equations.d.ts +0 -225
- package/dist/bridges/bridge-equations.d.ts.map +0 -1
- package/dist/bridges/bridge-equations.js +0 -226
- package/dist/bridges/bridge-equations.js.map +0 -1
- package/dist/bridges/condensed-r8-catalog.d.ts +0 -28
- package/dist/bridges/condensed-r8-catalog.d.ts.map +0 -1
- package/dist/bridges/condensed-r8-catalog.js +0 -272
- package/dist/bridges/condensed-r8-catalog.js.map +0 -1
- package/dist/bridges/condensed-r8.d.ts +0 -260
- package/dist/bridges/condensed-r8.d.ts.map +0 -1
- package/dist/bridges/condensed-r8.js +0 -329
- package/dist/bridges/condensed-r8.js.map +0 -1
- package/dist/bridges/engineering-r7-catalog.d.ts +0 -28
- package/dist/bridges/engineering-r7-catalog.d.ts.map +0 -1
- package/dist/bridges/engineering-r7-catalog.js +0 -172
- package/dist/bridges/engineering-r7-catalog.js.map +0 -1
- package/dist/bridges/engineering-r7.d.ts +0 -152
- package/dist/bridges/engineering-r7.d.ts.map +0 -1
- package/dist/bridges/engineering-r7.js +0 -208
- package/dist/bridges/engineering-r7.js.map +0 -1
- package/dist/bridges/equations/_be-helpers.d.ts +0 -80
- package/dist/bridges/equations/_be-helpers.d.ts.map +0 -1
- package/dist/bridges/equations/_be-helpers.js +0 -103
- package/dist/bridges/equations/_be-helpers.js.map +0 -1
- package/dist/bridges/equations/be-11-decoherence-master.d.ts +0 -82
- package/dist/bridges/equations/be-11-decoherence-master.d.ts.map +0 -1
- package/dist/bridges/equations/be-11-decoherence-master.js +0 -105
- package/dist/bridges/equations/be-11-decoherence-master.js.map +0 -1
- package/dist/bridges/equations/be-12-coherence-length.d.ts +0 -86
- package/dist/bridges/equations/be-12-coherence-length.d.ts.map +0 -1
- package/dist/bridges/equations/be-12-coherence-length.js +0 -120
- package/dist/bridges/equations/be-12-coherence-length.js.map +0 -1
- package/dist/bridges/equations/be-13-einstein-trace.d.ts +0 -136
- package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +0 -1
- package/dist/bridges/equations/be-13-einstein-trace.js +0 -199
- package/dist/bridges/equations/be-13-einstein-trace.js.map +0 -1
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts +0 -73
- package/dist/bridges/equations/be-14-ryu-takayanagi.d.ts.map +0 -1
- package/dist/bridges/equations/be-14-ryu-takayanagi.js +0 -101
- package/dist/bridges/equations/be-14-ryu-takayanagi.js.map +0 -1
- package/dist/bridges/equations/be-15-emergence.d.ts +0 -184
- package/dist/bridges/equations/be-15-emergence.d.ts.map +0 -1
- package/dist/bridges/equations/be-15-emergence.js +0 -208
- package/dist/bridges/equations/be-15-emergence.js.map +0 -1
- package/dist/bridges/equations/be-16-landauer.d.ts +0 -186
- package/dist/bridges/equations/be-16-landauer.d.ts.map +0 -1
- package/dist/bridges/equations/be-16-landauer.js +0 -198
- package/dist/bridges/equations/be-16-landauer.js.map +0 -1
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts +0 -258
- package/dist/bridges/equations/be-17-einstein-cartan.d.ts.map +0 -1
- package/dist/bridges/equations/be-17-einstein-cartan.js +0 -301
- package/dist/bridges/equations/be-17-einstein-cartan.js.map +0 -1
- package/dist/bridges/equations/be-18-higgs-mass.d.ts +0 -71
- package/dist/bridges/equations/be-18-higgs-mass.d.ts.map +0 -1
- package/dist/bridges/equations/be-18-higgs-mass.js +0 -75
- package/dist/bridges/equations/be-18-higgs-mass.js.map +0 -1
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts +0 -107
- package/dist/bridges/equations/be-19-quantum-bounce.d.ts.map +0 -1
- package/dist/bridges/equations/be-19-quantum-bounce.js +0 -196
- package/dist/bridges/equations/be-19-quantum-bounce.js.map +0 -1
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts +0 -93
- package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +0 -1
- package/dist/bridges/equations/be-20-vacuum-energy.js +0 -142
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +0 -1
- package/dist/bridges/equations/be-21-kss-bound.d.ts +0 -74
- package/dist/bridges/equations/be-21-kss-bound.d.ts.map +0 -1
- package/dist/bridges/equations/be-21-kss-bound.js +0 -97
- package/dist/bridges/equations/be-21-kss-bound.js.map +0 -1
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts +0 -87
- package/dist/bridges/equations/be-22-topological-entanglement.d.ts.map +0 -1
- package/dist/bridges/equations/be-22-topological-entanglement.js +0 -111
- package/dist/bridges/equations/be-22-topological-entanglement.js.map +0 -1
- package/dist/bridges/equations/be-23-syk-planckian.d.ts +0 -95
- package/dist/bridges/equations/be-23-syk-planckian.d.ts.map +0 -1
- package/dist/bridges/equations/be-23-syk-planckian.js +0 -141
- package/dist/bridges/equations/be-23-syk-planckian.js.map +0 -1
- package/dist/bridges/equations/be-24-foerster-fret.d.ts +0 -87
- package/dist/bridges/equations/be-24-foerster-fret.d.ts.map +0 -1
- package/dist/bridges/equations/be-24-foerster-fret.js +0 -113
- package/dist/bridges/equations/be-24-foerster-fret.js.map +0 -1
- package/dist/bridges/equations/be-25-iit-phi.d.ts +0 -222
- package/dist/bridges/equations/be-25-iit-phi.d.ts.map +0 -1
- package/dist/bridges/equations/be-25-iit-phi.js +0 -255
- package/dist/bridges/equations/be-25-iit-phi.js.map +0 -1
- package/dist/bridges/equations/be-25-orch-or.d.ts +0 -93
- package/dist/bridges/equations/be-25-orch-or.d.ts.map +0 -1
- package/dist/bridges/equations/be-25-orch-or.js +0 -124
- package/dist/bridges/equations/be-25-orch-or.js.map +0 -1
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts +0 -88
- package/dist/bridges/equations/be-26-dna-tunneling.d.ts.map +0 -1
- package/dist/bridges/equations/be-26-dna-tunneling.js +0 -142
- package/dist/bridges/equations/be-26-dna-tunneling.js.map +0 -1
- package/dist/bridges/equations/be-27-effective-temperature.d.ts +0 -87
- package/dist/bridges/equations/be-27-effective-temperature.d.ts.map +0 -1
- package/dist/bridges/equations/be-27-effective-temperature.js +0 -112
- package/dist/bridges/equations/be-27-effective-temperature.js.map +0 -1
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts +0 -181
- package/dist/bridges/equations/be-28-onsager-entropy-production.d.ts.map +0 -1
- package/dist/bridges/equations/be-28-onsager-entropy-production.js +0 -199
- package/dist/bridges/equations/be-28-onsager-entropy-production.js.map +0 -1
- package/dist/bridges/equations/be-29-jarzynski.d.ts +0 -92
- package/dist/bridges/equations/be-29-jarzynski.d.ts.map +0 -1
- package/dist/bridges/equations/be-29-jarzynski.js +0 -127
- package/dist/bridges/equations/be-29-jarzynski.js.map +0 -1
- package/dist/bridges/equations/be-30-flm-first-law.d.ts +0 -102
- package/dist/bridges/equations/be-30-flm-first-law.d.ts.map +0 -1
- package/dist/bridges/equations/be-30-flm-first-law.js +0 -98
- package/dist/bridges/equations/be-30-flm-first-law.js.map +0 -1
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts +0 -102
- package/dist/bridges/equations/be-31-causal-set-bd.d.ts.map +0 -1
- package/dist/bridges/equations/be-31-causal-set-bd.js +0 -119
- package/dist/bridges/equations/be-31-causal-set-bd.js.map +0 -1
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts +0 -110
- package/dist/bridges/equations/be-32-quantum-reference-frame.d.ts.map +0 -1
- package/dist/bridges/equations/be-32-quantum-reference-frame.js +0 -145
- package/dist/bridges/equations/be-32-quantum-reference-frame.js.map +0 -1
- package/dist/bridges/equations/be-33-hertz-millis.d.ts +0 -102
- package/dist/bridges/equations/be-33-hertz-millis.d.ts.map +0 -1
- package/dist/bridges/equations/be-33-hertz-millis.js +0 -117
- package/dist/bridges/equations/be-33-hertz-millis.js.map +0 -1
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts +0 -83
- package/dist/bridges/equations/be-34-kibble-zurek.d.ts.map +0 -1
- package/dist/bridges/equations/be-34-kibble-zurek.js +0 -139
- package/dist/bridges/equations/be-34-kibble-zurek.js.map +0 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +0 -101
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +0 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +0 -123
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +0 -1
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts +0 -90
- package/dist/bridges/equations/be-36-gw-speed-bound.d.ts.map +0 -1
- package/dist/bridges/equations/be-36-gw-speed-bound.js +0 -106
- package/dist/bridges/equations/be-36-gw-speed-bound.js.map +0 -1
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts +0 -264
- package/dist/bridges/equations/be-37-shapiro-delay.d.ts.map +0 -1
- package/dist/bridges/equations/be-37-shapiro-delay.js +0 -420
- package/dist/bridges/equations/be-37-shapiro-delay.js.map +0 -1
- package/dist/bridges/equations/be-38-mond.d.ts +0 -94
- package/dist/bridges/equations/be-38-mond.d.ts.map +0 -1
- package/dist/bridges/equations/be-38-mond.js +0 -114
- package/dist/bridges/equations/be-38-mond.js.map +0 -1
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts +0 -170
- package/dist/bridges/equations/be-39-asymptotic-safety.d.ts.map +0 -1
- package/dist/bridges/equations/be-39-asymptotic-safety.js +0 -263
- package/dist/bridges/equations/be-39-asymptotic-safety.js.map +0 -1
- package/dist/bridges/equations/be-40-composite-higgs.d.ts +0 -89
- package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +0 -1
- package/dist/bridges/equations/be-40-composite-higgs.js +0 -149
- package/dist/bridges/equations/be-40-composite-higgs.js.map +0 -1
- package/dist/bridges/equations/be-41-swampland.d.ts +0 -73
- package/dist/bridges/equations/be-41-swampland.d.ts.map +0 -1
- package/dist/bridges/equations/be-41-swampland.js +0 -108
- package/dist/bridges/equations/be-41-swampland.js.map +0 -1
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts +0 -72
- package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +0 -1
- package/dist/bridges/equations/be-42-hawking-temperature.js +0 -108
- package/dist/bridges/equations/be-42-hawking-temperature.js.map +0 -1
- package/dist/bridges/equations/be-43-er-epr.d.ts +0 -79
- package/dist/bridges/equations/be-43-er-epr.d.ts.map +0 -1
- package/dist/bridges/equations/be-43-er-epr.js +0 -106
- package/dist/bridges/equations/be-43-er-epr.js.map +0 -1
- package/dist/bridges/equations/be-44-soft-hair.d.ts +0 -157
- package/dist/bridges/equations/be-44-soft-hair.d.ts.map +0 -1
- package/dist/bridges/equations/be-44-soft-hair.js +0 -177
- package/dist/bridges/equations/be-44-soft-hair.js.map +0 -1
- package/dist/bridges/equations/be-45-tcc.d.ts +0 -122
- package/dist/bridges/equations/be-45-tcc.d.ts.map +0 -1
- package/dist/bridges/equations/be-45-tcc.js +0 -149
- package/dist/bridges/equations/be-45-tcc.js.map +0 -1
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts +0 -169
- package/dist/bridges/equations/be-46-multiverse-measure.d.ts.map +0 -1
- package/dist/bridges/equations/be-46-multiverse-measure.js +0 -192
- package/dist/bridges/equations/be-46-multiverse-measure.js.map +0 -1
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts +0 -78
- package/dist/bridges/equations/be-47-bbn-dark-sector.d.ts.map +0 -1
- package/dist/bridges/equations/be-47-bbn-dark-sector.js +0 -119
- package/dist/bridges/equations/be-47-bbn-dark-sector.js.map +0 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts +0 -91
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +0 -1
- package/dist/bridges/equations/be-48-grw-localization.js +0 -103
- package/dist/bridges/equations/be-48-grw-localization.js.map +0 -1
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts +0 -103
- package/dist/bridges/equations/be-49-quantum-darwinism.d.ts.map +0 -1
- package/dist/bridges/equations/be-49-quantum-darwinism.js +0 -117
- package/dist/bridges/equations/be-49-quantum-darwinism.js.map +0 -1
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +0 -116
- package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +0 -1
- package/dist/bridges/equations/be-50-wheeler-feynman.js +0 -215
- package/dist/bridges/equations/be-50-wheeler-feynman.js.map +0 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +0 -179
- package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +0 -1
- package/dist/bridges/equations/be-53-yang-mills-beta.js +0 -187
- package/dist/bridges/equations/be-53-yang-mills-beta.js.map +0 -1
- package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts +0 -117
- package/dist/bridges/equations/be-54-randall-sundrum-brane.d.ts.map +0 -1
- package/dist/bridges/equations/be-54-randall-sundrum-brane.js +0 -209
- package/dist/bridges/equations/be-54-randall-sundrum-brane.js.map +0 -1
- package/dist/bridges/gravitational-lensing.d.ts +0 -73
- package/dist/bridges/gravitational-lensing.d.ts.map +0 -1
- package/dist/bridges/gravitational-lensing.js +0 -59
- package/dist/bridges/gravitational-lensing.js.map +0 -1
- package/dist/bridges/perihelion-precession-labeled.d.ts +0 -46
- package/dist/bridges/perihelion-precession-labeled.d.ts.map +0 -1
- package/dist/bridges/perihelion-precession-labeled.js +0 -54
- package/dist/bridges/perihelion-precession-labeled.js.map +0 -1
- package/dist/bridges/perihelion-precession.d.ts +0 -87
- package/dist/bridges/perihelion-precession.d.ts.map +0 -1
- package/dist/bridges/perihelion-precession.js +0 -82
- package/dist/bridges/perihelion-precession.js.map +0 -1
- package/dist/bridges/plasma-catalog.d.ts +0 -29
- package/dist/bridges/plasma-catalog.d.ts.map +0 -1
- package/dist/bridges/plasma-catalog.js +0 -427
- package/dist/bridges/plasma-catalog.js.map +0 -1
- package/dist/bridges/plasma-space.d.ts +0 -310
- package/dist/bridges/plasma-space.d.ts.map +0 -1
- package/dist/bridges/plasma-space.js +0 -262
- package/dist/bridges/plasma-space.js.map +0 -1
- package/dist/composition/edges/_catalog-helpers.d.ts +0 -38
- package/dist/composition/edges/_catalog-helpers.d.ts.map +0 -1
- package/dist/composition/edges/_catalog-helpers.js +0 -90
- package/dist/composition/edges/_catalog-helpers.js.map +0 -1
- package/dist/composition/edges/applied-physicist.d.ts +0 -181
- package/dist/composition/edges/applied-physicist.d.ts.map +0 -1
- package/dist/composition/edges/applied-physicist.js +0 -843
- package/dist/composition/edges/applied-physicist.js.map +0 -1
- package/dist/composition/edges/calibration.d.ts +0 -107
- package/dist/composition/edges/calibration.d.ts.map +0 -1
- package/dist/composition/edges/calibration.js +0 -559
- package/dist/composition/edges/calibration.js.map +0 -1
- package/dist/composition/edges/catalog-condensed-matter.d.ts +0 -65
- package/dist/composition/edges/catalog-condensed-matter.d.ts.map +0 -1
- package/dist/composition/edges/catalog-condensed-matter.js +0 -257
- package/dist/composition/edges/catalog-condensed-matter.js.map +0 -1
- package/dist/composition/edges/catalog-fields.d.ts +0 -68
- package/dist/composition/edges/catalog-fields.d.ts.map +0 -1
- package/dist/composition/edges/catalog-fields.js +0 -207
- package/dist/composition/edges/catalog-fields.js.map +0 -1
- package/dist/composition/edges/catalog-full.d.ts +0 -43
- package/dist/composition/edges/catalog-full.d.ts.map +0 -1
- package/dist/composition/edges/catalog-full.js +0 -73
- package/dist/composition/edges/catalog-full.js.map +0 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +0 -81
- package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +0 -1
- package/dist/composition/edges/catalog-gravitation-cosmology.js +0 -275
- package/dist/composition/edges/catalog-gravitation-cosmology.js.map +0 -1
- package/dist/composition/edges/catalog-quantum.d.ts +0 -85
- package/dist/composition/edges/catalog-quantum.d.ts.map +0 -1
- package/dist/composition/edges/catalog-quantum.js +0 -297
- package/dist/composition/edges/catalog-quantum.js.map +0 -1
- package/dist/composition/edges/catalog-tranche.d.ts +0 -108
- package/dist/composition/edges/catalog-tranche.d.ts.map +0 -1
- package/dist/composition/edges/catalog-tranche.js +0 -304
- package/dist/composition/edges/catalog-tranche.js.map +0 -1
- package/dist/composition/edges/condensed-r5.d.ts +0 -105
- package/dist/composition/edges/condensed-r5.d.ts.map +0 -1
- package/dist/composition/edges/condensed-r5.js +0 -505
- package/dist/composition/edges/condensed-r5.js.map +0 -1
- package/dist/composition/edges/condensed-r8.d.ts +0 -30
- package/dist/composition/edges/condensed-r8.d.ts.map +0 -1
- package/dist/composition/edges/condensed-r8.js +0 -325
- package/dist/composition/edges/condensed-r8.js.map +0 -1
- package/dist/composition/edges/engineering-r7.d.ts +0 -20
- package/dist/composition/edges/engineering-r7.d.ts.map +0 -1
- package/dist/composition/edges/engineering-r7.js +0 -262
- package/dist/composition/edges/engineering-r7.js.map +0 -1
- package/dist/composition/edges/plasma-space.d.ts +0 -50
- package/dist/composition/edges/plasma-space.d.ts.map +0 -1
- package/dist/composition/edges/plasma-space.js +0 -481
- package/dist/composition/edges/plasma-space.js.map +0 -1
- package/dist/composition/edges/proved-seeds.d.ts +0 -39
- package/dist/composition/edges/proved-seeds.d.ts.map +0 -1
- package/dist/composition/edges/proved-seeds.js +0 -197
- package/dist/composition/edges/proved-seeds.js.map +0 -1
- package/dist/composition/quantities/_dims.d.ts +0 -45
- package/dist/composition/quantities/_dims.d.ts.map +0 -1
- package/dist/composition/quantities/_dims.js +0 -55
- package/dist/composition/quantities/_dims.js.map +0 -1
- package/dist/composition/quantities/applied-physicist.d.ts +0 -166
- package/dist/composition/quantities/applied-physicist.d.ts.map +0 -1
- package/dist/composition/quantities/applied-physicist.js +0 -543
- package/dist/composition/quantities/applied-physicist.js.map +0 -1
- package/dist/composition/quantities/common.d.ts +0 -69
- package/dist/composition/quantities/common.d.ts.map +0 -1
- package/dist/composition/quantities/common.js +0 -210
- package/dist/composition/quantities/common.js.map +0 -1
- package/dist/composition/quantities/condensed-matter.d.ts +0 -79
- package/dist/composition/quantities/condensed-matter.d.ts.map +0 -1
- package/dist/composition/quantities/condensed-matter.js +0 -238
- package/dist/composition/quantities/condensed-matter.js.map +0 -1
- package/dist/composition/quantities/condensed-r5.d.ts +0 -110
- package/dist/composition/quantities/condensed-r5.d.ts.map +0 -1
- package/dist/composition/quantities/condensed-r5.js +0 -359
- package/dist/composition/quantities/condensed-r5.js.map +0 -1
- package/dist/composition/quantities/condensed-r8.d.ts +0 -96
- package/dist/composition/quantities/condensed-r8.d.ts.map +0 -1
- package/dist/composition/quantities/condensed-r8.js +0 -107
- package/dist/composition/quantities/condensed-r8.js.map +0 -1
- package/dist/composition/quantities/engineering-r7.d.ts +0 -82
- package/dist/composition/quantities/engineering-r7.d.ts.map +0 -1
- package/dist/composition/quantities/engineering-r7.js +0 -92
- package/dist/composition/quantities/engineering-r7.js.map +0 -1
- package/dist/composition/quantities/fields.d.ts +0 -69
- package/dist/composition/quantities/fields.d.ts.map +0 -1
- package/dist/composition/quantities/fields.js +0 -210
- package/dist/composition/quantities/fields.js.map +0 -1
- package/dist/composition/quantities/gravitation-cosmology.d.ts +0 -71
- package/dist/composition/quantities/gravitation-cosmology.d.ts.map +0 -1
- package/dist/composition/quantities/gravitation-cosmology.js +0 -215
- package/dist/composition/quantities/gravitation-cosmology.js.map +0 -1
- package/dist/composition/quantities/plasma-space.d.ts +0 -178
- package/dist/composition/quantities/plasma-space.d.ts.map +0 -1
- package/dist/composition/quantities/plasma-space.js +0 -185
- package/dist/composition/quantities/plasma-space.js.map +0 -1
- package/dist/composition/quantities/quantum.d.ts +0 -63
- package/dist/composition/quantities/quantum.d.ts.map +0 -1
- package/dist/composition/quantities/quantum.js +0 -190
- package/dist/composition/quantities/quantum.js.map +0 -1
- package/dist/numerical/be37-covariant-eikonal.d.ts.map +0 -1
- package/dist/numerical/be37-covariant-eikonal.js.map +0 -1
|
@@ -6,37 +6,41 @@
|
|
|
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
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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
|
|
16
|
-
*
|
|
17
|
-
* `K²` are `K^2`.
|
|
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
18
|
*
|
|
19
19
|
* A token with no separator is one factor when the whole token is an exact
|
|
20
20
|
* unit or a prefix plus a unit, with an optional exponent. That reading
|
|
21
|
-
* wins, so `ms` stays a millisecond, `mm` a millimetre,
|
|
22
|
-
* and `Ts` a terasecond.
|
|
23
|
-
*
|
|
24
|
-
* `
|
|
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
|
|
25
30
|
* splits name each reading and are refused (`mAs` is milliampere·second or
|
|
26
31
|
* metre·ampere·second). An unknown token that ends in a digit stays unknown
|
|
27
32
|
* when it is not that product.
|
|
28
|
-
*
|
|
29
|
-
* `
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* prefix.
|
|
33
|
+
* The table is data: `data/units.json`, loaded and validated by
|
|
34
|
+
* `unit-data.ts`. Every row, prefix, refused spelling, prefix letter, affine
|
|
35
|
+
* scale and spelling note is a row there, with the reason as its `comment`;
|
|
36
|
+
* this module holds the grammar. `myr` is a milliyear because `m` is the SI
|
|
37
|
+
* prefix, and `eV` takes one, so `GeV` is 10⁹ eV in joules.
|
|
33
38
|
*
|
|
34
39
|
* @module dimensional/units
|
|
35
40
|
*/
|
|
36
|
-
import { toSiDimensionVector } from '@danielsimonjr/mathts-core';
|
|
37
|
-
import { unit } from '@danielsimonjr/mathts-functions';
|
|
38
41
|
import { equals, format, multiply, power } from './algebra.js';
|
|
39
|
-
import {
|
|
42
|
+
import { addScales, decimalScale, divideScales, multiplyScales, powerScale, ratioScale, scaleToNumber, solidusSides, UNIT_SCALE, } from './exact-scale.js';
|
|
43
|
+
import { UNIT_DATA } from './unit-data.js';
|
|
40
44
|
/** Thrown for any input that does not parse as a value with a known unit. @public */
|
|
41
45
|
export class UnitError extends Error {
|
|
42
46
|
constructor(message) {
|
|
@@ -44,85 +48,93 @@ export class UnitError extends Error {
|
|
|
44
48
|
this.name = 'UnitError';
|
|
45
49
|
}
|
|
46
50
|
}
|
|
51
|
+
/** A symbol no table row and no prefix spells. @public */
|
|
52
|
+
export class UnknownUnitError extends UnitError {
|
|
53
|
+
symbol;
|
|
54
|
+
constructor(symbol) {
|
|
55
|
+
super(`unknown unit '${symbol}'`);
|
|
56
|
+
this.symbol = symbol;
|
|
57
|
+
this.name = 'UnknownUnitError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A unit the reader recognizes and refuses: a logarithmic or ratio unit, an
|
|
62
|
+
* ambiguous name such as `ton`, or an affine temperature inside a compound.
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
export class UnitRefusedError extends UnitError {
|
|
66
|
+
constructor(message) {
|
|
67
|
+
super(message);
|
|
68
|
+
this.name = 'UnitRefusedError';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** A unit expression with more than one dimensionally distinct reading. @public */
|
|
72
|
+
export class AmbiguousUnitError extends UnitError {
|
|
73
|
+
text;
|
|
74
|
+
readings;
|
|
75
|
+
constructor(text, readings) {
|
|
76
|
+
super(`'${text}' is ambiguous: ${readings.join(' or ')}`);
|
|
77
|
+
this.text = text;
|
|
78
|
+
this.readings = readings;
|
|
79
|
+
this.name = 'AmbiguousUnitError';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
47
82
|
const D = (p) => ({ L: 0, M: 0, T: 0, I: 0, Theta: 0, N: 0, J: 0, ...p });
|
|
48
|
-
const JOULE = D({ L: 2, M: 1, T: -2 });
|
|
49
83
|
const DIMENSIONLESS = D({});
|
|
50
|
-
/** symbol →
|
|
51
|
-
const UNITS =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// Exact, so neither takes a prefix (`kbit` is not a kilobit).
|
|
72
|
-
['nat', [1, DIMENSIONLESS, false]],
|
|
73
|
-
['bit', [Math.LN2, DIMENSIONLESS, false]],
|
|
74
|
-
['rad', [1, DIMENSIONLESS, true]],
|
|
75
|
-
['deg', [Math.PI / 180, DIMENSIONLESS, false]],
|
|
76
|
-
['min', [60, D({ T: 1 }), false]],
|
|
77
|
-
['h', [3600, D({ T: 1 }), false]],
|
|
78
|
-
['d', [86400, D({ T: 1 }), false]],
|
|
79
|
-
// The Julian year, the year the orbital evaluators take.
|
|
80
|
-
['yr', [365.25 * 86400, D({ T: 1 }), true]],
|
|
81
|
-
['au', [149597870700, D({ L: 1 }), false]],
|
|
82
|
-
['AU', [149597870700, D({ L: 1 }), false]],
|
|
83
|
-
// The solar mass the evaluators use, not the IAU nominal value.
|
|
84
|
-
['Msun', [M_SUN_SI, D({ M: 1 }), false]],
|
|
85
|
-
// GM☉/G, so G × Msun_iau is the IAU solar mass parameter.
|
|
86
|
-
['Msun_iau', [GM_SUN_SI / G_SI, D({ M: 1 }), false]],
|
|
87
|
-
// Tesla. An exact `T` still wins over the tera prefix, so `Ts` is a
|
|
88
|
-
// terasecond. The prefix flag is what lets `nT` and `uT` parse.
|
|
89
|
-
['T', [1, D({ M: 1, T: -2, I: -1 }), true]],
|
|
90
|
-
// Gauss = 10⁻⁴ T. Exact, so `GPa` stays gigapascal (prefix G + Pa) and bare `G` is gauss.
|
|
91
|
-
// The spelled name is the same unit. It does not take a prefix (`kgauss` is not a kilogauss).
|
|
92
|
-
['G', [1e-4, D({ M: 1, T: -2, I: -1 }), false]],
|
|
93
|
-
['gauss', [1e-4, D({ M: 1, T: -2, I: -1 }), false]],
|
|
94
|
-
['Gauss', [1e-4, D({ M: 1, T: -2, I: -1 }), false]],
|
|
95
|
-
['bar', [1e5, D({ L: -1, M: 1, T: -2 }), true]],
|
|
96
|
-
['atm', [101325, D({ L: -1, M: 1, T: -2 }), false]],
|
|
97
|
-
['angstrom', [1e-10, D({ L: 1 }), false]],
|
|
98
|
-
['Angstrom', [1e-10, D({ L: 1 }), false]],
|
|
99
|
-
['Å', [1e-10, D({ L: 1 }), false]],
|
|
100
|
-
// IAU-style parsec; the prefix applies, so `Mpc` is a megaparsec.
|
|
101
|
-
['pc', [3.0856775814913673e16, D({ L: 1 }), true]],
|
|
102
|
-
['ly', [C_SI * 365.25 * 86400, D({ L: 1 }), false]],
|
|
103
|
-
]);
|
|
104
|
-
const CELSIUS_OFFSET_K = 273.15;
|
|
105
|
-
const PREFIXES = new Map([
|
|
106
|
-
['Y', 1e24], ['Z', 1e21], ['E', 1e18], ['P', 1e15], ['T', 1e12], ['G', 1e9], ['M', 1e6], ['k', 1e3],
|
|
107
|
-
['h', 1e2], ['da', 1e1], ['d', 1e-1], ['c', 1e-2], ['m', 1e-3], ['u', 1e-6], ['µ', 1e-6], ['μ', 1e-6],
|
|
108
|
-
['n', 1e-9], ['p', 1e-12], ['f', 1e-15], ['a', 1e-18], ['z', 1e-21], ['y', 1e-24],
|
|
109
|
-
]);
|
|
110
|
-
function parseSymbol(sym) {
|
|
111
|
-
const parsed = trySymbol(sym);
|
|
112
|
-
if (parsed !== null)
|
|
113
|
-
return parsed;
|
|
114
|
-
throw new UnitError(`unknown unit '${sym}'`);
|
|
84
|
+
/** symbol → exact scale to SI base, dimension, prefixability, cycle count. Rows are `data/units.json`. */
|
|
85
|
+
const UNITS = UNIT_DATA.units;
|
|
86
|
+
/** Units that are a ratio or a log scale, and the reason each is not a plain factor. */
|
|
87
|
+
const REFUSED_UNITS = UNIT_DATA.refused;
|
|
88
|
+
/**
|
|
89
|
+
* Letters that are both an SI prefix and a unit of their own. Such a token
|
|
90
|
+
* reads as the prefix reading and not as the unit times the rest: `Gyr` is a
|
|
91
|
+
* gigayear. The file's `prefixLetterUnits.comment` says why `m` is not one.
|
|
92
|
+
*/
|
|
93
|
+
const PREFIX_LETTER_UNITS = UNIT_DATA.prefixLetterUnits;
|
|
94
|
+
/** Kelvin at 0 °C, exactly. */
|
|
95
|
+
const CELSIUS_OFFSET_K = UNIT_DATA.iceKelvin;
|
|
96
|
+
/**
|
|
97
|
+
* Lone spellings. A compound that contains one is refused. The schema's `id`
|
|
98
|
+
* enum is {@link AffineTemperature}, held equal by a test: the public type
|
|
99
|
+
* promises callers these ids, so a new affine scale is an API change.
|
|
100
|
+
*/
|
|
101
|
+
const AFFINE = UNIT_DATA.affine;
|
|
102
|
+
/** Kelvin at a reading of zero, exactly: 273.15 − icePoint × scale. */
|
|
103
|
+
function affineOffset(row) {
|
|
104
|
+
return addScales(CELSIUS_OFFSET_K, multiplyScales(ratioScale(-1, 1), row.icePoint, row.scale));
|
|
115
105
|
}
|
|
106
|
+
const fractionText = (s) => (s.den === 1n ? String(s.num) : `${s.num}/${s.den}`);
|
|
107
|
+
/**
|
|
108
|
+
* How a reading on an affine scale becomes kelvin, from the row's scale and
|
|
109
|
+
* ice point: `absolute: (degF − 32) × 5/9 + 273.15`, `a difference: × 5/9, no offset`.
|
|
110
|
+
* @internal
|
|
111
|
+
*/
|
|
112
|
+
export function affineReadingNote(affine, reading) {
|
|
113
|
+
const row = AFFINE.find((candidate) => candidate.id === affine);
|
|
114
|
+
const unitScale = row.scale.num === row.scale.den;
|
|
115
|
+
if (reading === 'difference')
|
|
116
|
+
return unitScale ? 'a difference: no offset' : `a difference: × ${fractionText(row.scale)}, no offset`;
|
|
117
|
+
const kelvin = String(scaleToNumber(CELSIUS_OFFSET_K));
|
|
118
|
+
if (unitScale && row.icePoint.num === 0n)
|
|
119
|
+
return `absolute: + ${kelvin}`;
|
|
120
|
+
const shifted = row.icePoint.num === 0n ? row.symbols[0] : `(${row.symbols[0]} − ${fractionText(row.icePoint)})`;
|
|
121
|
+
return `absolute: ${unitScale ? shifted : `${shifted} × ${fractionText(row.scale)}`} + ${kelvin}`;
|
|
122
|
+
}
|
|
123
|
+
function affineRow(text) {
|
|
124
|
+
return AFFINE.find((candidate) => candidate.symbols.includes(text));
|
|
125
|
+
}
|
|
126
|
+
const PREFIXES = UNIT_DATA.prefixes;
|
|
116
127
|
function trySymbol(sym) {
|
|
117
128
|
const exact = UNITS.get(sym);
|
|
118
129
|
if (exact !== undefined)
|
|
119
|
-
return
|
|
130
|
+
return { scale: exact.scale, dim: exact.dim, cycles: exact.cycles === true ? 1 : 0 };
|
|
120
131
|
for (const [p, f] of PREFIXES) {
|
|
121
132
|
if (!sym.startsWith(p) || sym.length === p.length)
|
|
122
133
|
continue;
|
|
123
134
|
const base = UNITS.get(sym.slice(p.length));
|
|
124
|
-
if (base !== undefined && base
|
|
125
|
-
return
|
|
135
|
+
if (base !== undefined && base.prefixable) {
|
|
136
|
+
return { scale: multiplyScales(f, base.scale), dim: base.dim, cycles: base.cycles === true ? 1 : 0 };
|
|
137
|
+
}
|
|
126
138
|
}
|
|
127
139
|
return null;
|
|
128
140
|
}
|
|
@@ -153,11 +165,36 @@ function tryOneFactor(token) {
|
|
|
153
165
|
const parsed = trySymbol(base);
|
|
154
166
|
if (parsed === null || !Number.isFinite(exp))
|
|
155
167
|
return null;
|
|
156
|
-
return { base, exp, scale: parsed
|
|
168
|
+
return { base, exp, scale: parsed.scale, dim: parsed.dim, cycles: parsed.cycles };
|
|
157
169
|
}
|
|
158
170
|
function formatReading(factors) {
|
|
159
171
|
return factors.map((factor) => (factor.exp === 1 ? factor.base : `${factor.base}^${factor.exp}`)).join('·');
|
|
160
172
|
}
|
|
173
|
+
/** The unprefixed unit a prefix spelling attaches to, or null when `symbol` is exact. */
|
|
174
|
+
function attachedUnit(symbol) {
|
|
175
|
+
if (UNITS.has(symbol))
|
|
176
|
+
return null;
|
|
177
|
+
for (const [prefix] of PREFIXES) {
|
|
178
|
+
if (!symbol.startsWith(prefix) || symbol.length === prefix.length)
|
|
179
|
+
continue;
|
|
180
|
+
const base = symbol.slice(prefix.length);
|
|
181
|
+
const unitRow = UNITS.get(base);
|
|
182
|
+
if (unitRow !== undefined && unitRow.prefixable)
|
|
183
|
+
return base;
|
|
184
|
+
}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* A product of the same unprefixed unit the prefix attaches to (`mm` = m·m,
|
|
189
|
+
* `mm2` = m·m²). Powers are written `m2` / `m^2`, so this reading does not
|
|
190
|
+
* compete with the prefix.
|
|
191
|
+
*/
|
|
192
|
+
function homogeneousPower(single, product) {
|
|
193
|
+
const unit = attachedUnit(single.base);
|
|
194
|
+
if (unit === null)
|
|
195
|
+
return false;
|
|
196
|
+
return product.every((factor) => factor.base === unit && attachedUnit(factor.base) === null);
|
|
197
|
+
}
|
|
161
198
|
/** Every way to split `token` into one or more factors. A one-factor token is included. */
|
|
162
199
|
function segmentations(token) {
|
|
163
200
|
const ways = Array.from({ length: token.length + 1 }, () => []);
|
|
@@ -179,185 +216,283 @@ function segmentations(token) {
|
|
|
179
216
|
return [...unique.values()];
|
|
180
217
|
}
|
|
181
218
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
219
|
+
* Ways to read one token. A bare expression keeps a one-factor reading and
|
|
220
|
+
* does not also split it. Inside a compound, a prefixed factor also competes
|
|
221
|
+
* with each heterogeneous product. A homogeneous power does not.
|
|
184
222
|
*/
|
|
185
|
-
function
|
|
223
|
+
function tokenWays(token, compete, side) {
|
|
224
|
+
const refused = REFUSED_UNITS.get(token);
|
|
225
|
+
if (refused !== undefined)
|
|
226
|
+
throw new UnitRefusedError(refused);
|
|
186
227
|
const single = tryOneFactor(token);
|
|
228
|
+
if (single !== null && !compete)
|
|
229
|
+
return [[single]];
|
|
230
|
+
// A prefixed numerator token is the prefix reading: `mN/m` is millinewton per metre.
|
|
231
|
+
// A denominator keeps the product readings (`W/mK`), and a target dimension chooses.
|
|
232
|
+
if (single !== null && side === 'numerator')
|
|
233
|
+
return [[single]];
|
|
234
|
+
const prefixWins = single !== null && PREFIX_LETTER_UNITS.has(token[0]) && attachedUnit(single.base) !== null;
|
|
235
|
+
const products = segmentations(token)
|
|
236
|
+
.filter((way) => way.length > 1)
|
|
237
|
+
.filter(() => !prefixWins);
|
|
238
|
+
const extra = single === null ? products : products.filter((way) => !homogeneousPower(single, way));
|
|
239
|
+
const ways = [];
|
|
187
240
|
if (single !== null)
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
241
|
+
ways.push([single]);
|
|
242
|
+
for (const way of extra)
|
|
243
|
+
ways.push(way);
|
|
244
|
+
const unique = new Map();
|
|
245
|
+
for (const way of ways)
|
|
246
|
+
unique.set(formatReading(way), way);
|
|
247
|
+
const list = [...unique.values()];
|
|
248
|
+
if (list.length === 0)
|
|
249
|
+
throw new UnknownUnitError(token);
|
|
250
|
+
return list;
|
|
251
|
+
}
|
|
252
|
+
function cartesian(lists) {
|
|
253
|
+
let acc = [[]];
|
|
254
|
+
for (const list of lists) {
|
|
255
|
+
const next = [];
|
|
256
|
+
for (const prev of acc)
|
|
257
|
+
for (const item of list)
|
|
258
|
+
next.push([...prev, item]);
|
|
259
|
+
acc = next;
|
|
194
260
|
}
|
|
195
|
-
return
|
|
261
|
+
return acc;
|
|
196
262
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
263
|
+
function sideTokens(text) {
|
|
264
|
+
return text.split(/[*·\s]+|(?<=[A-Za-zµμΩ])\.(?=[A-Za-zµμΩ])/).filter((part) => part.length > 0);
|
|
265
|
+
}
|
|
266
|
+
function formatSide(tokens) {
|
|
267
|
+
return tokens.map((factors) => formatReading(factors)).join('·');
|
|
268
|
+
}
|
|
269
|
+
function formatExpression(num, den) {
|
|
270
|
+
const numerator = formatSide(num);
|
|
271
|
+
if (den.length === 0)
|
|
272
|
+
return numerator;
|
|
273
|
+
const denominator = formatSide(den);
|
|
274
|
+
return denominator.includes('·') ? `${numerator}/(${denominator})` : `${numerator}/${denominator}`;
|
|
275
|
+
}
|
|
276
|
+
function accumulate(tokens, sign) {
|
|
277
|
+
let scale = UNIT_SCALE;
|
|
200
278
|
let dim = DIMENSIONLESS;
|
|
201
|
-
|
|
202
|
-
|
|
279
|
+
let cycles = 0;
|
|
280
|
+
for (const factors of tokens) {
|
|
281
|
+
for (const factor of factors) {
|
|
203
282
|
const n = sign * factor.exp;
|
|
204
|
-
scale
|
|
283
|
+
scale = multiplyScales(scale, powerScale(factor.scale, n));
|
|
205
284
|
dim = multiply(dim, power(factor.dim, n));
|
|
285
|
+
cycles += factor.cycles * n;
|
|
206
286
|
}
|
|
207
287
|
}
|
|
208
|
-
return { scale, dim };
|
|
288
|
+
return { scale, dim, cycles };
|
|
289
|
+
}
|
|
290
|
+
function reading(exact, dim, label, cycles, affine) {
|
|
291
|
+
return {
|
|
292
|
+
scale: scaleToNumber(exact),
|
|
293
|
+
exact,
|
|
294
|
+
dim,
|
|
295
|
+
label,
|
|
296
|
+
cycles,
|
|
297
|
+
...(affine === undefined ? {} : { affine }),
|
|
298
|
+
};
|
|
209
299
|
}
|
|
210
300
|
/**
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
301
|
+
* Every dimensionally distinct reading of one unit expression.
|
|
302
|
+
*
|
|
303
|
+
* The unit grammar is not the formula grammar, and the difference is
|
|
304
|
+
* deliberate: a unit symbol is not an identifier (a prefix, a glued product
|
|
305
|
+
* or a glued power lives inside one token: `mN`, `m2K`, `Vs`, `K²`, `°C`,
|
|
306
|
+
* `%`), and everything after the first `/` is the denominator, the
|
|
307
|
+
* single-solidus convention of ISO 80000-1 (`W/m*K` is W·m⁻¹·K⁻¹), where the
|
|
308
|
+
* formula grammar would read `(W/m)·K`.
|
|
214
309
|
* @internal
|
|
215
310
|
*/
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
311
|
+
function unitReadings(text) {
|
|
312
|
+
const t = text.trim();
|
|
313
|
+
if (t === '' || t === '1')
|
|
314
|
+
return [reading(UNIT_SCALE, DIMENSIONLESS, '1', 0)];
|
|
315
|
+
const affine = affineRow(t);
|
|
316
|
+
if (affine !== undefined)
|
|
317
|
+
return [reading(affine.scale, D({ Theta: 1 }), t, 0, affine.id)];
|
|
318
|
+
if (AFFINE.some((candidate) => candidate.symbols.some((symbol) => t.includes(symbol))) ||
|
|
319
|
+
/deg\s+[CFcf]|°\s*[CFcf]/.test(t)) {
|
|
320
|
+
throw new UnitRefusedError('an affine temperature cannot be part of a compound unit; give K');
|
|
221
321
|
}
|
|
222
|
-
|
|
223
|
-
|
|
322
|
+
// A chain is one denominator: `km/s/Mpc` is km/(s·Mpc), the way the Hubble constant is written.
|
|
323
|
+
const sides = solidusSides(t);
|
|
324
|
+
const compete = /[*·/\s]/.test(t);
|
|
325
|
+
const numerator = sideTokens(sides.numerator);
|
|
326
|
+
const denominator = sides.denominator === '' ? [] : sideTokens(sides.denominator);
|
|
327
|
+
// `/s` is a dimensionless numerator over seconds. A bare `/` is not a unit.
|
|
328
|
+
if (numerator.length === 0 && denominator.length === 0)
|
|
329
|
+
throw new UnknownUnitError(t);
|
|
330
|
+
const numWays = numerator.map((token) => tokenWays(token, compete, 'numerator'));
|
|
331
|
+
const denWays = denominator.map((token) => tokenWays(token, compete, 'denominator'));
|
|
332
|
+
const numCombos = numerator.length === 0 ? [[]] : cartesian(numWays);
|
|
333
|
+
const denCombos = denominator.length === 0 ? [[]] : cartesian(denWays);
|
|
334
|
+
const unique = new Map();
|
|
335
|
+
for (const num of numCombos) {
|
|
336
|
+
for (const den of denCombos) {
|
|
337
|
+
const n = accumulate(num, 1);
|
|
338
|
+
const d = accumulate(den, -1);
|
|
339
|
+
const label = formatExpression(num, den);
|
|
340
|
+
unique.set(label, reading(multiplyScales(n.scale, d.scale), multiply(n.dim, d.dim), label, n.cycles + d.cycles));
|
|
341
|
+
}
|
|
224
342
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
343
|
+
return [...unique.values()];
|
|
344
|
+
}
|
|
345
|
+
const SUPERSCRIPT = { '¹': 1, '²': 2, '³': 3 };
|
|
346
|
+
/**
|
|
347
|
+
* Spellings that convert correctly and still mean something else to a reader:
|
|
348
|
+
* the `spellingNotes` of `data/units.json` for each symbol in `given`, in file
|
|
349
|
+
* order. `myr` is a milliyear, bare `G` is the gauss, bare `A` the ampere.
|
|
350
|
+
* @internal
|
|
351
|
+
*/
|
|
352
|
+
export function unitConventionNotes(given) {
|
|
353
|
+
const symbols = new Set(given.split(/[*·/\s^0-9()+-]+/).filter((s) => s.length > 0));
|
|
354
|
+
return [...UNIT_DATA.spellingNotes].filter(([spelling]) => symbols.has(spelling)).map(([, note]) => note);
|
|
355
|
+
}
|
|
356
|
+
/** The one reading of a unit expression; more than one is refused. @internal */
|
|
357
|
+
export function readUnit(text) {
|
|
358
|
+
const t = text.trim();
|
|
359
|
+
const readings = unitReadings(t);
|
|
360
|
+
if (readings.length !== 1)
|
|
361
|
+
throw new AmbiguousUnitError(t, readings.map((r) => r.label));
|
|
362
|
+
return readings[0];
|
|
232
363
|
}
|
|
233
364
|
/** Parse a unit expression; the empty string is dimensionless. @public */
|
|
234
365
|
export function parseUnit(text) {
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
throw new UnitError('degC is affine and cannot be part of a compound unit; give K');
|
|
244
|
-
const parts = t.split('/');
|
|
245
|
-
if (parts.length > 2)
|
|
246
|
-
throw new UnitError(`'${t}' has more than one '/'; put the whole denominator after one '/'`);
|
|
247
|
-
const num = parseFactors(parts[0], 1);
|
|
248
|
-
if (parts.length === 1)
|
|
249
|
-
return num;
|
|
250
|
-
const den = parseFactors(parts[1].replace(/^\((.*)\)$/, '$1'), -1);
|
|
251
|
-
return { scale: num.scale * den.scale, dim: multiply(num.dim, den.dim) };
|
|
366
|
+
const r = readUnit(text);
|
|
367
|
+
return { scale: r.scale, dim: r.dim, ...(r.affine !== undefined ? { affine: r.affine } : {}) };
|
|
368
|
+
}
|
|
369
|
+
/** The SI magnitude of `magnitude` in `unit`, exactly. An absolute affine reading adds its offset. */
|
|
370
|
+
function siMagnitude(magnitude, unit, temperature) {
|
|
371
|
+
const scaled = multiplyScales(magnitude, unit.exact);
|
|
372
|
+
const row = unit.affine === undefined ? undefined : AFFINE.find((candidate) => candidate.id === unit.affine);
|
|
373
|
+
return row !== undefined && temperature === 'absolute' ? addScales(scaled, affineOffset(row)) : scaled;
|
|
252
374
|
}
|
|
375
|
+
const FRACTION = /^\s*([+-]?(?:\d+\.?\d*|\.\d+))\s*\/\s*((?:\d+\.?\d*|\.\d+))\s*$/;
|
|
376
|
+
const NUMBER_THEN_REST = /^\s*([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)\s*(.*?)\s*$/;
|
|
253
377
|
/**
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
* @
|
|
378
|
+
* `raw` split into an exact decimal magnitude and the unit text after it, or
|
|
379
|
+
* null when `raw` is not a number followed by an optional unit. A plain
|
|
380
|
+
* fraction (`1/3`) is a number. Text that begins with an operator (`*h`,
|
|
381
|
+
* `·c`) is an expression, not a unit.
|
|
382
|
+
* @internal
|
|
259
383
|
*/
|
|
260
|
-
|
|
261
|
-
const
|
|
384
|
+
function splitQuantityLiteral(raw) {
|
|
385
|
+
const fraction = FRACTION.exec(raw);
|
|
386
|
+
if (fraction !== null) {
|
|
387
|
+
const den = decimalScale(fraction[2]);
|
|
388
|
+
if (den.num !== 0n)
|
|
389
|
+
return { magnitude: divideScales(decimalScale(fraction[1]), den), unit: '' };
|
|
390
|
+
}
|
|
391
|
+
const m = NUMBER_THEN_REST.exec(raw);
|
|
262
392
|
if (m === null)
|
|
263
|
-
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
393
|
+
return null;
|
|
394
|
+
const unit = m[2];
|
|
395
|
+
if (unit.startsWith('*') || unit.startsWith('·'))
|
|
396
|
+
return null;
|
|
397
|
+
const magnitude = decimalScale(m[1]);
|
|
398
|
+
return magnitude === null ? null : { magnitude, unit };
|
|
399
|
+
}
|
|
400
|
+
function finiteLiteral(raw, value) {
|
|
401
|
+
if (!Number.isFinite(value))
|
|
267
402
|
throw new UnitError(`'${raw}' is not a finite number`);
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
403
|
+
return value;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Read `raw` as one number with an optional unit, in SI. Null when `raw` is
|
|
407
|
+
* not that form or names a unit no row spells, so the caller can read it as
|
|
408
|
+
* an expression. A refused unit and an ambiguous one throw. The value may be
|
|
409
|
+
* non-finite (`1e999`); the caller owns that refusal and its error class.
|
|
410
|
+
* @internal
|
|
411
|
+
*/
|
|
412
|
+
export function readQuantityLiteral(raw, temperature = 'absolute') {
|
|
413
|
+
const literal = splitQuantityLiteral(raw);
|
|
414
|
+
if (literal === null)
|
|
415
|
+
return null;
|
|
416
|
+
if (literal.unit === '') {
|
|
417
|
+
return { value: scaleToNumber(literal.magnitude), dim: DIMENSIONLESS, unit: '', cycles: 0 };
|
|
276
418
|
}
|
|
277
|
-
|
|
278
|
-
const local = (v * from.scale + offset) / to.scale;
|
|
279
|
-
// MathTS `unit` + `toSI` is the conversion when it reads the same quantity.
|
|
280
|
-
// A temperature difference must not take the absolute offset `toSI` adds.
|
|
281
|
-
// `bit` is ln 2 nat here; MathTS reads `bit` as 1. Symbols MathTS does not
|
|
282
|
-
// have (a solar mass, a Julian year, the gauss) stay on the table above.
|
|
283
|
-
const via = mathTsRatio(v, given, target);
|
|
284
|
-
if (via !== undefined && sameQuantity(via, local))
|
|
285
|
-
return { value: via, given };
|
|
286
|
-
return { value: local, given };
|
|
287
|
-
}
|
|
288
|
-
/** Spellings MathTS's unit parser accepts for the same UPT symbol. */
|
|
289
|
-
function mathTsSpelling(text) {
|
|
290
|
-
return text
|
|
291
|
-
.replaceAll('µ', 'u')
|
|
292
|
-
.replaceAll('μ', 'u')
|
|
293
|
-
.replaceAll('Ω', 'ohm')
|
|
294
|
-
.replaceAll('Å', 'angstrom')
|
|
295
|
-
.replaceAll('°C', 'degC');
|
|
296
|
-
}
|
|
297
|
-
/** The 7-base record for a MathTS length-10 exponent vector. Angle, bit, and solid angle are dropped. */
|
|
298
|
-
function dimensionFromUnitVector(vector) {
|
|
299
|
-
const v = toSiDimensionVector(vector, { ignoreExtra: true });
|
|
300
|
-
return { L: v[0], M: v[1], T: v[2], I: v[3], Theta: v[4], N: v[5], J: v[6] };
|
|
301
|
-
}
|
|
302
|
-
function mathTsReading(value, unitText) {
|
|
303
|
-
// `unit` is a typed-function; its declared return is `unknown`.
|
|
304
|
-
const created = unit(value, mathTsSpelling(unitText));
|
|
305
|
-
const n = Number(created.toSI().value);
|
|
306
|
-
if (!Number.isFinite(n))
|
|
307
|
-
throw new Error('non-finite SI magnitude');
|
|
308
|
-
return { si: n, dim: dimensionFromUnitVector(created.dimensions) };
|
|
309
|
-
}
|
|
310
|
-
function mathTsRatio(value, given, target) {
|
|
419
|
+
let unit;
|
|
311
420
|
try {
|
|
312
|
-
|
|
313
|
-
const to = mathTsReading(1, target);
|
|
314
|
-
if (to.si === 0)
|
|
315
|
-
return undefined;
|
|
316
|
-
// A scale match is not enough when the 7-base dimensions differ.
|
|
317
|
-
if (!equals(from.dim, parseUnit(given).dim))
|
|
318
|
-
return undefined;
|
|
319
|
-
if (!equals(to.dim, parseUnit(target).dim))
|
|
320
|
-
return undefined;
|
|
321
|
-
return from.si / to.si;
|
|
421
|
+
unit = readUnit(literal.unit);
|
|
322
422
|
}
|
|
323
|
-
catch {
|
|
324
|
-
|
|
423
|
+
catch (error) {
|
|
424
|
+
if (error instanceof UnknownUnitError)
|
|
425
|
+
return null;
|
|
426
|
+
throw error;
|
|
325
427
|
}
|
|
428
|
+
return {
|
|
429
|
+
value: scaleToNumber(siMagnitude(literal.magnitude, unit, temperature)),
|
|
430
|
+
dim: unit.dim,
|
|
431
|
+
unit: literal.unit,
|
|
432
|
+
cycles: unit.cycles,
|
|
433
|
+
...(unit.affine === undefined ? {} : { affine: unit.affine }),
|
|
434
|
+
};
|
|
326
435
|
}
|
|
327
436
|
/**
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
* A symbol MathTS lacks, or a scale it disagrees with (`bit` is 1 there and
|
|
331
|
-
* ln 2 here; a solar mass, a Julian year, and the gauss are absent), returns
|
|
332
|
-
* undefined so the caller keeps the local table.
|
|
437
|
+
* Convert `raw` (`<number>[unit]`) into `target` (a unit expression). A bare
|
|
438
|
+
* number is taken to be in `target` already. The dimensions must agree.
|
|
333
439
|
*
|
|
334
|
-
*
|
|
440
|
+
* The magnitude, the unit scales and the target scale are multiplied as
|
|
441
|
+
* exact rationals and rounded once, so `1 g/cm^3` in `kg/m^3` is 1000.
|
|
442
|
+
*
|
|
443
|
+
* @returns the value in `target`, and the unit the user gave (`''` for none).
|
|
444
|
+
* @public
|
|
335
445
|
*/
|
|
336
|
-
export function
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
446
|
+
export function convertValue(raw, target, temperature = 'absolute') {
|
|
447
|
+
const literal = splitQuantityLiteral(raw);
|
|
448
|
+
if (literal === null)
|
|
449
|
+
throw new UnitError(`'${raw}' is not a number with an optional unit`);
|
|
450
|
+
if (literal.unit === '')
|
|
451
|
+
return { value: finiteLiteral(raw, scaleToNumber(literal.magnitude)), given: '' };
|
|
452
|
+
const given = literal.unit;
|
|
453
|
+
const readings = unitReadings(given);
|
|
454
|
+
const to = readUnit(target);
|
|
455
|
+
if (to.affine !== undefined)
|
|
456
|
+
throw new UnitError(`a declared unit cannot be affine ('${target}')`);
|
|
457
|
+
const matched = readings.filter((candidate) => equals(candidate.dim, to.dim));
|
|
458
|
+
if (matched.length !== 1) {
|
|
459
|
+
if (readings.length > 1)
|
|
460
|
+
throw new AmbiguousUnitError(given, readings.map((r) => r.label));
|
|
461
|
+
const from = readings[0];
|
|
462
|
+
if (from === undefined)
|
|
463
|
+
throw new UnknownUnitError(given);
|
|
464
|
+
throw new UnitError(`'${given}' is ${format(from.dim)}, but this input is ${format(to.dim)} (${target || 'dimensionless'})`);
|
|
349
465
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
466
|
+
const from = matched[0];
|
|
467
|
+
const value = scaleToNumber(divideScales(siMagnitude(literal.magnitude, from, temperature), to.exact));
|
|
468
|
+
return {
|
|
469
|
+
value: finiteLiteral(raw, value),
|
|
470
|
+
given,
|
|
471
|
+
...(from.cycles === 0 ? {} : { cycles: from.cycles }),
|
|
472
|
+
...(from.affine === undefined ? {} : { affine: from.affine }),
|
|
473
|
+
};
|
|
354
474
|
}
|
|
355
475
|
/** The dimension of a declared unit expression. @internal */
|
|
356
476
|
export function unitDimension(unit) {
|
|
357
477
|
return parseUnit(unit).dim;
|
|
358
478
|
}
|
|
359
|
-
/** The
|
|
479
|
+
/** The symbols the unit table spells, with their exact scales, for the agreement test against MathTS. @internal */
|
|
480
|
+
export function unitRows() {
|
|
481
|
+
return UNITS;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* The tables conversion reads, for the CLI record's fingerprint (`src/cli/record-tables.ts`):
|
|
485
|
+
* each row's scale, dimension, prefixability and `cycles` flag (which multiplies an angular
|
|
486
|
+
* input by 2π), the prefixes, the Celsius offset, and the SHA-256 of `data/units.json`, so a
|
|
487
|
+
* refused spelling, a prefix letter, an affine row or a note that changes changes the fingerprint too.
|
|
488
|
+
* @internal
|
|
489
|
+
*/
|
|
360
490
|
export function unitTables() {
|
|
361
|
-
return {
|
|
491
|
+
return {
|
|
492
|
+
units: new Map([...UNITS].map(([symbol, r]) => [symbol, [scaleToNumber(r.scale), r.dim, r.prefixable, r.cycles === true]])),
|
|
493
|
+
prefixes: new Map([...PREFIXES].map(([prefix, f]) => [prefix, scaleToNumber(f)])),
|
|
494
|
+
celsiusOffsetK: scaleToNumber(CELSIUS_OFFSET_K),
|
|
495
|
+
sourceSha256: UNIT_DATA.sha256,
|
|
496
|
+
};
|
|
362
497
|
}
|
|
363
498
|
//# sourceMappingURL=units.js.map
|