universal-physics-tensor 8.0.0 → 10.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 +26 -21
- package/data/atlas/atlas.json +75 -64
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +23 -22
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +33 -28
- package/data/bridge-catalog.json +1356 -1791
- package/data/bridge-catalog.schema.json +789 -46
- package/data/quantities.json +280 -234
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +1178 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +14 -3
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +1 -1
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +1 -1
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +5 -16
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +0 -5
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +0 -3
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +1 -1
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +0 -1
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +0 -3
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +0 -2
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +1854 -345
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +151 -117
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +244 -211
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.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/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +0 -3
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +0 -4
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +8 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +27 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +22 -14
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +19 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +233 -14
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +96 -27
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +89 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +136 -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 -24
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +48 -8
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +173 -38
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -7
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +129 -156
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +16 -8
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +130 -236
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- 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/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- 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/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +5 -6
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +9 -38
- package/dist/bridges/relation-eval.js.map +1 -1
- 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 +24 -10
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +11 -1
- 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 +7 -4
- 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 +50 -2
- 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 +32 -2
- 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 +34 -0
- 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 +24 -0
- 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 +42 -24
- 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 +6 -0
- 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 +24 -5
- 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 +15 -0
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -29
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +17 -12
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -0
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +24 -4
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.js +2 -2
- package/dist/cases/damped-resonator.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.js +6 -6
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.js +1 -1
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +3 -3
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +7 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +32 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +3 -3
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +43 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.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 +48 -18
- 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 +7 -12
- 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 +13 -21
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- 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 +22 -14
- 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/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +50 -26
- 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 +18 -13
- 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 +29 -26
- 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 +99 -208
- 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 +57 -45
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -11
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -92
- 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 +53 -15
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.js +4 -4
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +50 -26
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -27
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +22 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +14 -7
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +4 -4
- 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/determination.js.map +1 -1
- package/dist/cli/errors.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/expr-print.d.ts +29 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +46 -2
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.js +7 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/output.d.ts +3 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.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-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +16 -10
- package/dist/cli/record-reach.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/record.d.ts.map +1 -1
- package/dist/cli/record.js +31 -12
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +12 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +57 -18
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +49 -21
- 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/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +12 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +0 -14
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +66 -57
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +12 -2
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +15 -18
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +59 -85
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.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.map +1 -1
- package/dist/composition/catalog-graph.js +6 -20
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +2 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +2 -0
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +154 -36
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +67 -7
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +83 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -22
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +25 -28
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +29 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +100 -72
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -4
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +53 -19
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +9 -39
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +9 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +54 -0
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +9 -5
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -4
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +28 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +56 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +18 -34
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +14 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +2 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +4 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +13 -6
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +8 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +78 -12
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +4 -3
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +5 -3
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/types.d.ts +3 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -4
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +14 -6
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +18 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +37 -7
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts +11 -7
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +24 -26
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/constants.d.ts +35 -12
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +46 -15
- 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/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- 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 +177 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +40 -8
- package/dist/core/tensor.js.map +1 -1
- 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/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +16 -23
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +24 -80
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +21 -98
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +18 -6
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +17 -5
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +5 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +6 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +3 -5
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.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 +115 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +7 -17
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +12 -21
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +21 -6
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +150 -160
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +3 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +2 -2
- package/dist/dimensional/errors.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/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +13 -12
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +28 -51
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +0 -1
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +8 -0
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +23 -1
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +55 -18
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- 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 +114 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.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 +139 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +87 -24
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +290 -295
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +65 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +32 -7
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +218 -209
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +2 -2
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +6 -3
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -5
- package/dist/numerical/errors.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 +134 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +67 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +68 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +17 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +120 -44
- 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 +10 -3
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +44 -45
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +11 -6
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +4 -4
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +20 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +17 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +158 -250
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +9 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +18 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +26 -14
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +26 -6
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +15 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +10 -14
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
* A binding value: a bare number, a number with a unit, or an expression of
|
|
3
3
|
* registered constants and unit literals (`pi/2`, `0.6*c`, `2*1km`).
|
|
4
4
|
*
|
|
5
|
-
* The MathTS parser produces the node this module
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* The MathTS parser produces the node this module reads. The number is the
|
|
6
|
+
* MathTS formula parser's, evaluated over the registered constants and the
|
|
7
|
+
* spliced unit literals; this module walks the same parse tree for the
|
|
8
|
+
* dimension and the cycle count only, so a unit literal keeps its dimension
|
|
9
|
+
* and there is one arithmetic. The scalar functions are the one table in
|
|
10
|
+
* `formula-contract.ts`, read for arity and dimension rule here and for the
|
|
11
|
+
* numeric body there. A bare `e` is the elementary charge. Euler's number is
|
|
12
|
+
* `exp(x)`. A bare number, or an expression whose result is dimensionless
|
|
13
|
+
* and contains no unit literal, is already in the caller's unit. Anything
|
|
14
|
+
* else is an SI quantity: the caller converts it into the declared unit when
|
|
15
|
+
* the dimensions agree.
|
|
11
16
|
*
|
|
12
17
|
* A unit literal is recognized only where it is glued to a number (`1km`,
|
|
13
18
|
* `1h`, `1G`). A bare name is a constant (`h`, `G`, `c`), never that unit.
|
|
@@ -17,16 +22,40 @@
|
|
|
17
22
|
* @module numerical/binding-value
|
|
18
23
|
* @internal
|
|
19
24
|
*/
|
|
20
|
-
import { K_B_SI
|
|
21
|
-
import {
|
|
25
|
+
import { K_B_SI } from '../core/constants.js';
|
|
26
|
+
import { assertSynonymAgreement, isTemperatureName, synonymGroup, temperatureQuantityRole, } from '../dimensional/formula-names.js';
|
|
22
27
|
import { quantityConventionUnit } from '../dimensional/unit-convention.js';
|
|
23
28
|
import { naturalConstantOverrides } from '../dimensional/natural-units.js';
|
|
24
|
-
import {
|
|
29
|
+
import { CONSTANT_REGISTRY, constantRecord } from '../dimensional/symbolic-constants.js';
|
|
25
30
|
import { divide, equals, format, multiply, power } from '../dimensional/algebra.js';
|
|
26
|
-
import { DIMENSIONLESS, ENERGY,
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import { parseFormulaPNode } from './formula-dimension.js';
|
|
31
|
+
import { DIMENSIONLESS, ENERGY, TEMPERATURE } from '../dimensional/types.js';
|
|
32
|
+
import { AmbiguousUnitError, convertValue, parseUnit, readQuantityLiteral, readUnit, unitConventionNotes, UnitError, UnitRefusedError, UnknownUnitError, } from '../dimensional/units.js';
|
|
33
|
+
import { arityMessage, EulerNumberError, FormulaError, SCALAR_FUNCTIONS, unknownFunctionMessage } from './formula-contract.js';
|
|
34
|
+
import { constantExponent, parseFormulaPNode, UnsupportedSyntaxError } from './formula-dimension.js';
|
|
35
|
+
import { mathtsFormulaParser } from './formula-mathts.js';
|
|
36
|
+
/** A value on a temperature slot has a dimension that is neither a temperature nor an energy, or a temperature was read onto a dimensionless slot. @internal */
|
|
37
|
+
export class TemperatureBindingError extends UnitError {
|
|
38
|
+
constructor(message) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.name = 'TemperatureBindingError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** The text is not a number, with or without a unit, or the number is not finite. @internal */
|
|
44
|
+
export class BindingNumberError extends UnitError {
|
|
45
|
+
constructor(message) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.name = 'BindingNumberError';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** An expression names something that is neither a registered constant nor a unit literal. @internal */
|
|
51
|
+
class UnknownNameError extends UnitError {
|
|
52
|
+
symbol;
|
|
53
|
+
constructor(symbol) {
|
|
54
|
+
super(`unknown name '${symbol}'`);
|
|
55
|
+
this.symbol = symbol;
|
|
56
|
+
this.name = 'UnknownNameError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
30
59
|
/**
|
|
31
60
|
* A temperature binding speaks kelvin. An energy is `k_B T` (the joules
|
|
32
61
|
* divided by `kB`). Any other dimension is refused. A bare number, a
|
|
@@ -42,20 +71,21 @@ function alignTemperatureBinding(name, raw, read, kB = K_B_SI, declaredTemperatu
|
|
|
42
71
|
}
|
|
43
72
|
if (equals(read.dimension, ENERGY)) {
|
|
44
73
|
if (!(kB > 0) || !Number.isFinite(kB)) {
|
|
45
|
-
throw new
|
|
74
|
+
throw new TemperatureBindingError(`cannot read '${raw.trim()}' as a temperature: k_B is not a positive finite number`);
|
|
46
75
|
}
|
|
47
76
|
const kelvin = read.value / kB;
|
|
77
|
+
const temperatureNote = `${name}=${raw.trim()} is read as k_B T, so ${name} is ${kelvin.toExponential(6)} K`;
|
|
48
78
|
return {
|
|
49
79
|
value: kelvin,
|
|
50
80
|
dimensioned: true,
|
|
51
81
|
dimension: TEMPERATURE,
|
|
52
|
-
notes: [
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
],
|
|
82
|
+
notes: [...read.notes, temperatureNote],
|
|
83
|
+
cycles: 0,
|
|
84
|
+
temperatureNote,
|
|
56
85
|
};
|
|
57
86
|
}
|
|
58
|
-
|
|
87
|
+
// An energy returned above, so this dimension is neither a temperature nor an energy.
|
|
88
|
+
throw new TemperatureBindingError(`'${raw.trim()}' is ${format(read.dimension)}, but ${name} is a temperature. Give kelvin, degC, or an energy (read as k_B T).`);
|
|
59
89
|
}
|
|
60
90
|
function sameSpelling(a, b) {
|
|
61
91
|
return a === b || a.replace(/_/g, '-') === b.replace(/_/g, '-');
|
|
@@ -68,7 +98,7 @@ function sameSpelling(a, b) {
|
|
|
68
98
|
*/
|
|
69
99
|
function boltzmannBindingScale(pending) {
|
|
70
100
|
const group = synonymGroup('boltzmann-constant') ?? [];
|
|
71
|
-
const dim =
|
|
101
|
+
const dim = constantRecord('k_B').dim;
|
|
72
102
|
const hits = pending.filter((entry) => {
|
|
73
103
|
if (!group.some((member) => sameSpelling(member, entry.name)))
|
|
74
104
|
return false;
|
|
@@ -87,47 +117,29 @@ function boltzmannBindingScale(pending) {
|
|
|
87
117
|
}
|
|
88
118
|
return K_B_SI;
|
|
89
119
|
}
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
const GLUED_NUMBER = /(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;
|
|
120
|
+
/** A number glued to a unit; `spliceUnits` builds its own global copy. */
|
|
121
|
+
const GLUED_NUMBER = /(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/;
|
|
93
122
|
function finite(raw, value) {
|
|
94
123
|
if (!Number.isFinite(value))
|
|
95
|
-
throw new
|
|
124
|
+
throw new BindingNumberError(`'${raw}' is not a finite number`);
|
|
96
125
|
return value;
|
|
97
126
|
}
|
|
98
127
|
function scopeFor(mode) {
|
|
99
128
|
const m = new Map();
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
put(name, c.value, c.dim);
|
|
107
|
-
for (const n of FORMULA_NAMED)
|
|
108
|
-
put(n.name, n.value, n.dim);
|
|
109
|
-
const eps = m.get('epsilon_0');
|
|
110
|
-
if (eps !== undefined)
|
|
111
|
-
put('eps0', eps.value, eps.dim);
|
|
112
|
-
const mu = m.get('mu_0');
|
|
113
|
-
if (mu !== undefined)
|
|
114
|
-
put('mu0', mu.value, mu.dim);
|
|
115
|
-
const kb = m.get('k_B');
|
|
116
|
-
if (kb !== undefined)
|
|
117
|
-
put('kB', kb.value, kb.dim);
|
|
118
|
-
put('M_sun', M_SUN_SI, MASS);
|
|
129
|
+
m.set('pi', { value: Math.PI, dim: DIMENSIONLESS, cycles: 0 });
|
|
130
|
+
m.set('tau', { value: 2 * Math.PI, dim: DIMENSIONLESS, cycles: 0 });
|
|
131
|
+
for (const record of CONSTANT_REGISTRY) {
|
|
132
|
+
for (const spelling of [record.name, ...record.spellings])
|
|
133
|
+
m.set(spelling, { value: record.value, dim: record.dim, cycles: 0 });
|
|
134
|
+
}
|
|
119
135
|
if (mode !== 'si') {
|
|
120
136
|
for (const [name, value] of Object.entries(naturalConstantOverrides(mode)))
|
|
121
|
-
|
|
137
|
+
m.set(name, { value, dim: DIMENSIONLESS, cycles: 0 });
|
|
122
138
|
}
|
|
123
139
|
return m;
|
|
124
140
|
}
|
|
125
|
-
/**
|
|
126
|
-
|
|
127
|
-
if (!(e instanceof UnitError))
|
|
128
|
-
return null;
|
|
129
|
-
return /affine|more than one|ambiguous/.test(e.message) ? e : null;
|
|
130
|
-
}
|
|
141
|
+
/** The text has an operator, so it is an expression rather than a lone word. */
|
|
142
|
+
const hasOperator = (text) => /[+\-*/^()]/.test(text);
|
|
131
143
|
/** The longest unit expression at the start of `rest`, or null. */
|
|
132
144
|
function longestUnit(rest) {
|
|
133
145
|
if (rest.length === 0 || !/[A-Za-zµμ°ÅΩ]/.test(rest[0]))
|
|
@@ -139,19 +151,20 @@ function longestUnit(rest) {
|
|
|
139
151
|
if (/[/*^·+\-(\s]$/.test(prefix))
|
|
140
152
|
continue;
|
|
141
153
|
try {
|
|
142
|
-
|
|
154
|
+
readUnit(prefix);
|
|
143
155
|
// `deg` is a unit, but `degF` is Fahrenheit. Do not keep a prefix whose
|
|
144
156
|
// next character continues the same token.
|
|
145
157
|
const next = rest[n];
|
|
146
|
-
if (next !== undefined && /[A-Za-z0-
|
|
158
|
+
if (next !== undefined && /[A-Za-z0-9_µμ°ÅΩ]/.test(next))
|
|
147
159
|
continue;
|
|
148
160
|
best = prefix;
|
|
149
161
|
}
|
|
150
162
|
catch (e) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
163
|
+
// An unknown unit at this length: a longer prefix may still be one
|
|
164
|
+
// (`m` then `m/s`, `M` then `Msun`). A refused or ambiguous unit, and
|
|
165
|
+
// anything that is not a unit error, propagates.
|
|
166
|
+
if (!(e instanceof UnknownUnitError))
|
|
167
|
+
throw e;
|
|
155
168
|
}
|
|
156
169
|
}
|
|
157
170
|
return best;
|
|
@@ -175,13 +188,12 @@ function spliceUnits(src) {
|
|
|
175
188
|
last = end;
|
|
176
189
|
continue;
|
|
177
190
|
}
|
|
178
|
-
const parsed =
|
|
191
|
+
const parsed = readUnit(unit);
|
|
179
192
|
if (parsed.affine !== undefined) {
|
|
180
|
-
throw new
|
|
193
|
+
throw new UnitRefusedError('an affine temperature cannot be part of an expression; give it alone, or use K');
|
|
181
194
|
}
|
|
182
|
-
const agreed = mathTsAgreedQuantity(1, unit, parsed);
|
|
183
195
|
const name = `__u${slots.size}`;
|
|
184
|
-
slots.set(name, { value:
|
|
196
|
+
slots.set(name, { value: parsed.scale, dim: parsed.dim, cycles: parsed.cycles });
|
|
185
197
|
for (const note of unitConventionNotes(unit)) {
|
|
186
198
|
if (!notes.includes(note))
|
|
187
199
|
notes.push(note);
|
|
@@ -193,147 +205,141 @@ function spliceUnits(src) {
|
|
|
193
205
|
out += src.slice(last);
|
|
194
206
|
return { expr: out, slots, notes };
|
|
195
207
|
}
|
|
196
|
-
|
|
208
|
+
/**
|
|
209
|
+
* An exponent is a dimensionless numeric constant (`2`, `-1`, `1/2`); its
|
|
210
|
+
* value raises the base's dimension. The number of the whole expression is
|
|
211
|
+
* MathTS's, so this is the one place a value is folded here, and it is the
|
|
212
|
+
* same folding the formula dimension checker uses.
|
|
213
|
+
*/
|
|
214
|
+
function exponentValue(node, scope, slots) {
|
|
215
|
+
const exp = dimensionWalk(node, scope, slots);
|
|
216
|
+
const value = constantExponent(node);
|
|
217
|
+
if (!equals(exp.dim, DIMENSIONLESS) || value === undefined) {
|
|
218
|
+
throw new UnitError('an exponent must be a dimensionless number');
|
|
219
|
+
}
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The dimension and cycle count of a parse tree, by the dimensional rules of
|
|
224
|
+
* each node and the one function table. No number is computed here except an
|
|
225
|
+
* exponent's; unknown names, unlike sums and dimensioned transcendental
|
|
226
|
+
* arguments are refused.
|
|
227
|
+
*/
|
|
228
|
+
function dimensionWalk(node, scope, slots) {
|
|
197
229
|
switch (node.kind) {
|
|
198
230
|
case 'num':
|
|
199
|
-
return {
|
|
231
|
+
return { dim: DIMENSIONLESS, cycles: 0 };
|
|
200
232
|
case 'sym': {
|
|
201
233
|
if (node.name === 'euler')
|
|
202
|
-
throw new
|
|
203
|
-
const
|
|
204
|
-
if (
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (known !== undefined)
|
|
208
|
-
return known;
|
|
209
|
-
throw new UnitError(`unknown name '${node.name}'`);
|
|
210
|
-
}
|
|
211
|
-
case 'neg': {
|
|
212
|
-
const a = evalAst(node.arg, scope, slots);
|
|
213
|
-
return { value: -a.value, dim: a.dim };
|
|
234
|
+
throw new EulerNumberError();
|
|
235
|
+
const known = slots.get(node.name) ?? scope.get(node.name);
|
|
236
|
+
if (known === undefined)
|
|
237
|
+
throw new UnknownNameError(node.name);
|
|
238
|
+
return { dim: known.dim, cycles: known.cycles };
|
|
214
239
|
}
|
|
240
|
+
case 'neg':
|
|
241
|
+
return dimensionWalk(node.arg, scope, slots);
|
|
215
242
|
case 'op':
|
|
216
|
-
return
|
|
243
|
+
return dimensionOfOp(node.op, node.args.map((a) => dimensionWalk(a, scope, slots)));
|
|
217
244
|
case 'pow': {
|
|
218
|
-
const base =
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
throw new UnitError('an exponent must be dimensionless');
|
|
222
|
-
return { value: Math.pow(base.value, exp.value), dim: power(base.dim, exp.value) };
|
|
245
|
+
const base = dimensionWalk(node.base, scope, slots);
|
|
246
|
+
const n = exponentValue(node.exp, scope, slots);
|
|
247
|
+
return { dim: power(base.dim, n), cycles: base.cycles * n };
|
|
223
248
|
}
|
|
224
249
|
case 'call':
|
|
225
|
-
|
|
226
|
-
throw new FormulaError(EULER_NUMBER_ERROR);
|
|
227
|
-
return evalCall(node.fn, node.args.map((a) => evalAst(a, scope, slots)));
|
|
250
|
+
return dimensionOfCall(node.fn, node.args, scope, slots);
|
|
228
251
|
}
|
|
229
252
|
}
|
|
230
|
-
function
|
|
231
|
-
|
|
253
|
+
function dimensionOfOp(op, args) {
|
|
254
|
+
const first = args[0];
|
|
255
|
+
if (first === undefined)
|
|
232
256
|
throw new UnitError(`cannot ${op}`);
|
|
233
257
|
if (op === '+' || op === '-') {
|
|
234
|
-
|
|
235
|
-
if (args.length === 1) {
|
|
236
|
-
return op === '-' ? { value: -first.value, dim: first.dim } : first;
|
|
237
|
-
}
|
|
238
|
-
let value = first.value;
|
|
258
|
+
let cycles = first.cycles;
|
|
239
259
|
for (const next of args.slice(1)) {
|
|
240
260
|
if (!equals(first.dim, next.dim)) {
|
|
241
261
|
throw new UnitError(`cannot ${op === '+' ? 'add' : 'subtract'} ${format(first.dim)} and ${format(next.dim)}`);
|
|
242
262
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
if (op === '*') {
|
|
248
|
-
let value = 1;
|
|
249
|
-
let dim = DIMENSIONLESS;
|
|
250
|
-
for (const a of args) {
|
|
251
|
-
value *= a.value;
|
|
252
|
-
dim = multiply(dim, a.dim);
|
|
263
|
+
// A sum of a cycle rate and a plain rate has no single cycle count.
|
|
264
|
+
if (next.cycles !== cycles)
|
|
265
|
+
cycles = Number.NaN;
|
|
253
266
|
}
|
|
254
|
-
return {
|
|
267
|
+
return { dim: first.dim, cycles };
|
|
255
268
|
}
|
|
256
|
-
let
|
|
257
|
-
let
|
|
258
|
-
for (const
|
|
259
|
-
|
|
260
|
-
|
|
269
|
+
let dim = op === '*' ? DIMENSIONLESS : first.dim;
|
|
270
|
+
let cycles = op === '*' ? 0 : first.cycles;
|
|
271
|
+
for (const a of op === '*' ? args : args.slice(1)) {
|
|
272
|
+
dim = op === '*' ? multiply(dim, a.dim) : divide(dim, a.dim);
|
|
273
|
+
cycles = op === '*' ? cycles + a.cycles : cycles - a.cycles;
|
|
261
274
|
}
|
|
262
|
-
return {
|
|
275
|
+
return { dim, cycles };
|
|
263
276
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
277
|
+
/** A call, by the one table's arity and dimension rule. */
|
|
278
|
+
function dimensionOfCall(fn, args, scope, slots) {
|
|
279
|
+
if (fn === 'euler')
|
|
280
|
+
throw new EulerNumberError();
|
|
281
|
+
const spec = SCALAR_FUNCTIONS[fn];
|
|
282
|
+
if (spec === undefined)
|
|
283
|
+
throw new UnitError(unknownFunctionMessage(fn));
|
|
284
|
+
if (args.length !== spec.arity)
|
|
285
|
+
throw new UnitError(arityMessage(fn, spec.arity));
|
|
286
|
+
const rule = spec.dimension;
|
|
287
|
+
const first = dimensionWalk(args[0], scope, slots);
|
|
288
|
+
switch (rule.kind) {
|
|
289
|
+
case 'root':
|
|
290
|
+
return { dim: power(first.dim, rule.power), cycles: first.cycles * rule.power };
|
|
291
|
+
case 'same':
|
|
292
|
+
return first;
|
|
293
|
+
case 'transcendental':
|
|
294
|
+
if (!equals(first.dim, DIMENSIONLESS))
|
|
295
|
+
throw new UnitError(`${fn} expects a dimensionless argument`);
|
|
296
|
+
return { dim: DIMENSIONLESS, cycles: 0 };
|
|
297
|
+
case 'power': {
|
|
298
|
+
const n = exponentValue(args[1], scope, slots);
|
|
299
|
+
return { dim: power(first.dim, n), cycles: first.cycles * n };
|
|
300
|
+
}
|
|
301
|
+
case 'ratio': {
|
|
302
|
+
const second = dimensionWalk(args[1], scope, slots);
|
|
303
|
+
if (!equals(first.dim, second.dim))
|
|
304
|
+
throw new UnitError(`${fn} arguments must have the same dimension`);
|
|
305
|
+
return { dim: DIMENSIONLESS, cycles: 0 };
|
|
306
|
+
}
|
|
294
307
|
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The number of a spliced expression: the MathTS formula parser over the
|
|
311
|
+
* registered constants and the unit slots. The dimension walk has already
|
|
312
|
+
* refused unknown names, so a failure here is a non-finite result.
|
|
313
|
+
*/
|
|
314
|
+
function numberOf(raw, expr, scope, slots) {
|
|
315
|
+
const values = {};
|
|
316
|
+
for (const [name, qty] of scope)
|
|
317
|
+
values[name] = qty.value;
|
|
318
|
+
for (const [name, qty] of slots)
|
|
319
|
+
values[name] = qty.value;
|
|
295
320
|
try {
|
|
296
|
-
return
|
|
321
|
+
return mathtsFormulaParser.parse(expr).evaluate(values);
|
|
297
322
|
}
|
|
298
323
|
catch (e) {
|
|
299
324
|
if (e instanceof FormulaError)
|
|
300
|
-
throw new
|
|
325
|
+
throw new BindingNumberError(`'${raw}' is not a finite number`);
|
|
301
326
|
throw e;
|
|
302
327
|
}
|
|
303
328
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
// (`1/s`) when the remainder parses, and an expression otherwise.
|
|
309
|
-
if (m === null || m[2] === undefined || m[2] === '' || m[2].startsWith('*') || m[2].startsWith('·'))
|
|
310
|
-
return null;
|
|
311
|
-
let unit;
|
|
312
|
-
try {
|
|
313
|
-
unit = parseUnit(m[2]);
|
|
314
|
-
}
|
|
315
|
-
catch (e) {
|
|
316
|
-
const refused = unitRefusal(e);
|
|
317
|
-
if (refused !== null)
|
|
318
|
-
throw refused;
|
|
329
|
+
/** The literal path: a number with an optional unit, read exactly by the one unit reader. */
|
|
330
|
+
function literalBinding(raw, reading) {
|
|
331
|
+
const literal = readQuantityLiteral(raw, reading);
|
|
332
|
+
if (literal === null)
|
|
319
333
|
return null;
|
|
320
|
-
}
|
|
321
|
-
const v = finite(raw, Number(m[1]));
|
|
322
|
-
const offset = unit.affine !== undefined && reading === 'absolute' ? affineAbsoluteOffsetK(unit.affine) : 0;
|
|
323
|
-
const agreed = offset === 0 ? mathTsAgreedQuantity(v, m[2], unit) : undefined;
|
|
324
334
|
return {
|
|
325
|
-
value:
|
|
326
|
-
dimensioned:
|
|
327
|
-
dimension:
|
|
328
|
-
notes: unitConventionNotes(
|
|
335
|
+
value: finite(raw, literal.value),
|
|
336
|
+
dimensioned: literal.unit !== '',
|
|
337
|
+
dimension: literal.dim,
|
|
338
|
+
notes: unitConventionNotes(literal.unit),
|
|
339
|
+
cycles: literal.cycles,
|
|
340
|
+
...(literal.affine === undefined ? {} : { affine: literal.affine }),
|
|
329
341
|
};
|
|
330
342
|
}
|
|
331
|
-
function looksLikeNumberUnit(raw) {
|
|
332
|
-
const matched = NUMBER_UNIT.exec(raw.trim());
|
|
333
|
-
if (matched === null || matched[2] === undefined || matched[2] === '')
|
|
334
|
-
return false;
|
|
335
|
-
return !matched[2].startsWith('*') && !matched[2].startsWith('·');
|
|
336
|
-
}
|
|
337
343
|
/**
|
|
338
344
|
* A number-plus-unit whose dimension matches `target`, including an ambiguous
|
|
339
345
|
* token that has one reading of that dimension. A unique dimension mismatch
|
|
@@ -341,22 +347,25 @@ function looksLikeNumberUnit(raw) {
|
|
|
341
347
|
* An ambiguous expression that matches nothing throws.
|
|
342
348
|
*/
|
|
343
349
|
function declaredUnitReading(raw, target, reading) {
|
|
344
|
-
if (!looksLikeNumberUnit(raw))
|
|
345
|
-
return undefined;
|
|
346
350
|
try {
|
|
347
351
|
const converted = convertValue(raw, target, reading);
|
|
348
352
|
if (converted.given === '')
|
|
349
353
|
return undefined;
|
|
350
|
-
const to = parseUnit(target);
|
|
351
354
|
return {
|
|
352
355
|
value: converted.value,
|
|
353
356
|
dimensioned: true,
|
|
354
|
-
dimension:
|
|
357
|
+
dimension: parseUnit(target).dim,
|
|
355
358
|
notes: unitConventionNotes(converted.given),
|
|
359
|
+
cycles: converted.cycles ?? 0,
|
|
360
|
+
...(converted.affine === undefined ? {} : { affine: converted.affine }),
|
|
356
361
|
};
|
|
357
362
|
}
|
|
358
363
|
catch (error) {
|
|
359
|
-
if (error instanceof
|
|
364
|
+
if (error instanceof AmbiguousUnitError)
|
|
365
|
+
throw error;
|
|
366
|
+
// A unit the reader could not match to the target is the "not this
|
|
367
|
+
// reading" outcome; anything that is not a unit error propagates.
|
|
368
|
+
if (!(error instanceof UnitError))
|
|
360
369
|
throw error;
|
|
361
370
|
return undefined;
|
|
362
371
|
}
|
|
@@ -388,8 +397,11 @@ export function readNamedBinding(name, raw, opts) {
|
|
|
388
397
|
try {
|
|
389
398
|
pending.push({ name: sibling.name, read: readBinding(sibling.raw, { mode, reading }) });
|
|
390
399
|
}
|
|
391
|
-
catch {
|
|
392
|
-
// A sibling that does not
|
|
400
|
+
catch (error) {
|
|
401
|
+
// A sibling that does not read as a value is that sibling's own error,
|
|
402
|
+
// reported where it is read. A programming error propagates.
|
|
403
|
+
if (!(error instanceof UnitError))
|
|
404
|
+
throw error;
|
|
393
405
|
}
|
|
394
406
|
}
|
|
395
407
|
const declaredDim = declared !== undefined && declared !== '' ? parseUnit(declared).dim : undefined;
|
|
@@ -400,7 +412,7 @@ export function readNamedBinding(name, raw, opts) {
|
|
|
400
412
|
const energyBecameTemperature = aligned.dimensioned && equals(aligned.dimension, TEMPERATURE) && !equals(read.dimension, TEMPERATURE);
|
|
401
413
|
if (energyBecameTemperature) {
|
|
402
414
|
if (target === '') {
|
|
403
|
-
throw new
|
|
415
|
+
throw new TemperatureBindingError(`'${raw.trim()}' is a temperature, but this input is dimensionless`);
|
|
404
416
|
}
|
|
405
417
|
const to = parseUnit(target);
|
|
406
418
|
if (to.affine !== undefined)
|
|
@@ -408,12 +420,7 @@ export function readNamedBinding(name, raw, opts) {
|
|
|
408
420
|
if (!equals(aligned.dimension, to.dim)) {
|
|
409
421
|
throw new UnitError(`'${raw.trim()}' is ${format(aligned.dimension)}, but this input is ${format(to.dim)} (${target})`);
|
|
410
422
|
}
|
|
411
|
-
return {
|
|
412
|
-
value: aligned.value / to.scale,
|
|
413
|
-
dimensioned: true,
|
|
414
|
-
dimension: to.dim,
|
|
415
|
-
notes: aligned.notes,
|
|
416
|
-
};
|
|
423
|
+
return { ...aligned, value: aligned.value / to.scale, dimensioned: true, dimension: to.dim };
|
|
417
424
|
}
|
|
418
425
|
const converted = bindingInUnit(raw, target, reading, mode);
|
|
419
426
|
return {
|
|
@@ -421,6 +428,8 @@ export function readNamedBinding(name, raw, opts) {
|
|
|
421
428
|
dimensioned: converted.given !== '',
|
|
422
429
|
dimension: target === '' ? DIMENSIONLESS : parseUnit(target).dim,
|
|
423
430
|
notes: unitConventionNotes(converted.given),
|
|
431
|
+
cycles: converted.cycles ?? 0,
|
|
432
|
+
...(converted.affine === undefined ? {} : { affine: converted.affine }),
|
|
424
433
|
};
|
|
425
434
|
}
|
|
426
435
|
/**
|
|
@@ -433,48 +442,47 @@ export function readBinding(raw, opts) {
|
|
|
433
442
|
const mode = opts?.mode ?? 'si';
|
|
434
443
|
const reading = opts?.reading ?? 'absolute';
|
|
435
444
|
if (trimmed === '')
|
|
436
|
-
throw new
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
const plain = plainUnit(trimmed, reading);
|
|
441
|
-
if (plain !== null)
|
|
442
|
-
return plain;
|
|
445
|
+
throw new BindingNumberError(`'${raw}' is not a finite number`);
|
|
446
|
+
const literal = literalBinding(trimmed, reading);
|
|
447
|
+
if (literal !== null)
|
|
448
|
+
return literal;
|
|
443
449
|
const spliced = spliceUnits(trimmed);
|
|
450
|
+
const notANumber = () => new BindingNumberError(`'${trimmed}' is not a number with an optional unit`);
|
|
444
451
|
let ast;
|
|
445
452
|
try {
|
|
446
453
|
ast = parseFormulaPNode(spliced.expr);
|
|
447
454
|
}
|
|
448
455
|
catch (e) {
|
|
456
|
+
// Syntax the normalized form has no shape for (`1.2.3`, `a.b`) is not a value.
|
|
457
|
+
if (e instanceof UnsupportedSyntaxError)
|
|
458
|
+
throw notANumber();
|
|
459
|
+
// `euler` names the refused constant; keep that sentence.
|
|
460
|
+
if (e instanceof EulerNumberError)
|
|
461
|
+
throw new UnitError(e.message);
|
|
449
462
|
if (e instanceof FormulaError) {
|
|
450
|
-
//
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
throw new UnitError(e.message);
|
|
454
|
-
if (!/[+\-*/^()]/.test(trimmed))
|
|
455
|
-
throw new UnitError(`'${trimmed}' is not a number with an optional unit`);
|
|
463
|
+
// A bare unknown word is not an expression; a token with an operator (`2*`) is.
|
|
464
|
+
if (!hasOperator(trimmed))
|
|
465
|
+
throw notANumber();
|
|
456
466
|
throw new UnitError(e.message);
|
|
457
467
|
}
|
|
458
468
|
throw e;
|
|
459
469
|
}
|
|
460
|
-
|
|
470
|
+
const scope = scopeFor(mode);
|
|
471
|
+
let shape;
|
|
461
472
|
try {
|
|
462
|
-
|
|
473
|
+
shape = dimensionWalk(ast, scope, spliced.slots);
|
|
463
474
|
}
|
|
464
475
|
catch (e) {
|
|
465
|
-
if (e instanceof
|
|
466
|
-
|
|
467
|
-
spliced.slots.size === 0 &&
|
|
468
|
-
!/[+\-*/^()]/.test(trimmed)) {
|
|
469
|
-
throw new UnitError(`'${trimmed}' is not a number with an optional unit`);
|
|
470
|
-
}
|
|
476
|
+
if (e instanceof UnknownNameError && spliced.slots.size === 0 && !hasOperator(trimmed))
|
|
477
|
+
throw notANumber();
|
|
471
478
|
throw e;
|
|
472
479
|
}
|
|
473
480
|
return {
|
|
474
|
-
value: finite(trimmed,
|
|
475
|
-
dimensioned: spliced.slots.size > 0 || !equals(
|
|
476
|
-
dimension:
|
|
481
|
+
value: finite(trimmed, numberOf(trimmed, spliced.expr, scope, spliced.slots)),
|
|
482
|
+
dimensioned: spliced.slots.size > 0 || !equals(shape.dim, DIMENSIONLESS),
|
|
483
|
+
dimension: shape.dim,
|
|
477
484
|
notes: spliced.notes,
|
|
485
|
+
cycles: shape.cycles,
|
|
478
486
|
};
|
|
479
487
|
}
|
|
480
488
|
/**
|
|
@@ -483,9 +491,10 @@ export function readBinding(raw, opts) {
|
|
|
483
491
|
* @internal
|
|
484
492
|
*/
|
|
485
493
|
export function bindingInUnit(raw, target, reading = 'absolute', mode = 'si') {
|
|
486
|
-
|
|
494
|
+
// A literal the one unit reader accepts converts exactly, unit to unit; anything else
|
|
495
|
+
// (an expression such as `1Hz + 1/(1s)`) is read as an expression and converted from SI.
|
|
496
|
+
if (readQuantityLiteral(raw, reading) !== null)
|
|
487
497
|
return convertValue(raw, target, reading);
|
|
488
|
-
}
|
|
489
498
|
const b = readBinding(raw, { reading, mode });
|
|
490
499
|
if (!b.dimensioned)
|
|
491
500
|
return { value: b.value, given: '' };
|
|
@@ -495,7 +504,7 @@ export function bindingInUnit(raw, target, reading = 'absolute', mode = 'si') {
|
|
|
495
504
|
if (!equals(b.dimension, to.dim)) {
|
|
496
505
|
throw new UnitError(`'${raw.trim()}' is ${format(b.dimension)}, but this input is ${format(to.dim)} (${target || 'dimensionless'})`);
|
|
497
506
|
}
|
|
498
|
-
return { value: b.value / to.scale, given: raw.trim() };
|
|
507
|
+
return { value: b.value / to.scale, given: raw.trim(), ...(b.cycles === 0 ? {} : { cycles: b.cycles }) };
|
|
499
508
|
}
|
|
500
509
|
/**
|
|
501
510
|
* A parameter whose unit is the SI base of `expected`. A bare number is
|