universal-physics-tensor 10.0.0 → 12.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 +39 -36
- package/bin/upt.mjs +13 -1
- package/data/applied-cases.json +1892 -0
- package/data/applied-cases.schema.json +194 -0
- package/data/atlas/atlas.json +25 -25
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +6 -6
- package/data/atlas/oscillators.json +7 -7
- package/data/atlas/waves.json +14 -14
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +389 -230
- package/data/bridge-catalog.schema.json +45 -7
- package/data/units.json +6 -25
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +21 -15
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/loader.js +2 -2
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +2 -2
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +9 -15
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.d.ts +26 -3
- package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
- package/dist/atlas/catalog-formal-ref.js +52 -5
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +7 -8
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +8 -12
- 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 +27 -39
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.d.ts +6 -14
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
- package/dist/atlas/diffusion/dimensions.js +8 -16
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/models.d.ts +3 -3
- package/dist/atlas/diffusion/models.d.ts.map +1 -1
- package/dist/atlas/diffusion/models.js +5 -10
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.d.ts +16 -4
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
- package/dist/atlas/diffusion/numerics.js +38 -24
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +106 -3
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js +212 -66
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +7 -11
- 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 +6 -7
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +23 -34
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.d.ts +9 -21
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
- package/dist/atlas/oscillators/dimensions.js +9 -21
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
- package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js +17 -15
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.d.ts.map +1 -1
- package/dist/atlas/oscillators/models.js +2 -6
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
- package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js +60 -40
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
- package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js +3 -4
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.d.ts +68 -7
- package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
- package/dist/atlas/oscillators/position-translation.js +123 -12
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.d.ts +0 -2
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
- package/dist/atlas/oscillators/rejections.js +0 -7
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +35 -25
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +37 -25
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +34 -31
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +55 -53
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +1 -1
- package/dist/atlas/physjs-reviewed.js +15 -15
- package/dist/atlas/physjs-reviewed.js.map +1 -1
- package/dist/atlas/poster/statements.d.ts +0 -19
- package/dist/atlas/poster/statements.d.ts.map +1 -1
- package/dist/atlas/poster/statements.js +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +1 -1
- package/dist/atlas/proof-target.js +1 -1
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/regime.d.ts +1 -1
- package/dist/atlas/regime.d.ts.map +1 -1
- package/dist/atlas/regime.js +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/text-overlap.d.ts +23 -0
- package/dist/atlas/text-overlap.d.ts.map +1 -0
- package/dist/atlas/text-overlap.js +41 -0
- package/dist/atlas/text-overlap.js.map +1 -0
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +2 -6
- 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 +32 -48
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/models.d.ts +5 -6
- package/dist/atlas/waves/models.d.ts.map +1 -1
- package/dist/atlas/waves/models.js +7 -13
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.d.ts.map +1 -1
- package/dist/atlas/waves/numerics.js +10 -3
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +30 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +53 -0
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-specs.d.ts.map +1 -1
- package/dist/atlas/witness-specs.js +19 -0
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.d.ts +75 -3
- package/dist/atlas/witness-symbolic.d.ts.map +1 -1
- package/dist/atlas/witness-symbolic.js +116 -10
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +13 -8
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +26 -2
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js +11 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +31 -1
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +20 -2
- package/dist/bridges/evaluation-errors.js.map +1 -1
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +7 -5
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +27 -12
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +11 -0
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +14 -5
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +35 -3
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +117 -23
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/notices.d.ts.map +1 -1
- package/dist/bridges/notices.js +5 -5
- package/dist/bridges/notices.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +4 -4
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +15 -16
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +3 -3
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/validity.d.ts +33 -0
- package/dist/bridges/validity.d.ts.map +1 -0
- package/dist/bridges/validity.js +67 -0
- package/dist/bridges/validity.js.map +1 -0
- package/dist/canonical/entries/atomic.js +1 -3
- 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 -5
- 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 +3 -4
- 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 +4 -10
- 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 +3 -7
- 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 +4 -6
- 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 +9 -17
- 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 -6
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/fixed-points.d.ts +94 -0
- package/dist/canonical/fixed-points.d.ts.map +1 -0
- package/dist/canonical/fixed-points.js +81 -0
- package/dist/canonical/fixed-points.js.map +1 -0
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +25 -44
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +5 -11
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +40 -19
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/catalog-checks.d.ts +10 -0
- package/dist/cases/catalog-checks.d.ts.map +1 -0
- package/dist/cases/catalog-checks.js +241 -0
- package/dist/cases/catalog-checks.js.map +1 -0
- package/dist/cases/catalog.d.ts +83 -0
- package/dist/cases/catalog.d.ts.map +1 -0
- package/dist/cases/catalog.js +118 -0
- package/dist/cases/catalog.js.map +1 -0
- package/dist/cases/engine.d.ts +13 -0
- package/dist/cases/engine.d.ts.map +1 -0
- package/dist/cases/engine.js +179 -0
- package/dist/cases/engine.js.map +1 -0
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +5 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/methods.d.ts +215 -0
- package/dist/cases/methods.d.ts.map +1 -0
- package/dist/cases/methods.js +743 -0
- package/dist/cases/methods.js.map +1 -0
- package/dist/cases/quadrature.d.ts +7 -9
- package/dist/cases/quadrature.d.ts.map +1 -1
- package/dist/cases/quadrature.js +28 -32
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/types.d.ts +12 -0
- package/dist/cases/types.d.ts.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +25 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +30 -8
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts.map +1 -1
- package/dist/cli/bindings.js +5 -4
- package/dist/cli/bindings.js.map +1 -1
- package/dist/cli/command.d.ts +11 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +0 -9
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +8 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-route.js +6 -2
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +9 -9
- 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 +8 -5
- 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 +8 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.d.ts.map +1 -1
- package/dist/cli/commands/axes.js +20 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +22 -22
- 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 +122 -73
- 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 +1 -0
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +67 -39
- 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 +24 -3
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +7 -1
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +84 -11
- 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 +12 -9
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.d.ts +10 -0
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +25 -3
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -16
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +19 -28
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.d.ts.map +1 -1
- package/dist/cli/commands/testplan.js +4 -2
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/determination.d.ts +1 -0
- package/dist/cli/determination.d.ts.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/expr-print.d.ts +0 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +7 -31
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.d.ts +1 -0
- package/dist/cli/flag-help.d.ts.map +1 -1
- package/dist/cli/flag-help.js +1 -0
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.d.ts +2 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +1 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +8 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +19 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/numeric-flag.d.ts +12 -0
- package/dist/cli/numeric-flag.d.ts.map +1 -0
- package/dist/cli/numeric-flag.js +44 -0
- package/dist/cli/numeric-flag.js.map +1 -0
- package/dist/cli/output.d.ts +28 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +23 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/record-reach.js +2 -2
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +6 -5
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts +1 -5
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +9 -8
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +7 -6
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.d.ts +0 -2
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +12 -9
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/stored-results.d.ts +7 -0
- package/dist/cli/stored-results.d.ts.map +1 -0
- package/dist/cli/stored-results.js +23 -0
- package/dist/cli/stored-results.js.map +1 -0
- package/dist/cli/version.d.ts +1 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +8 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +36 -5
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +30 -4
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/algebraic-equivalence.d.ts +43 -0
- package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
- package/dist/composition/algebraic-equivalence.js +115 -0
- package/dist/composition/algebraic-equivalence.js.map +1 -0
- package/dist/composition/axes.d.ts +0 -6
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +6 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.d.ts +47 -20
- package/dist/composition/axis-audit.d.ts.map +1 -1
- package/dist/composition/axis-audit.js +82 -9
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +17 -0
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +102 -55
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +40 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +122 -24
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +3 -3
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +11 -38
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js +2 -2
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +2 -5
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +8 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +9 -2
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.d.ts +6 -3
- package/dist/composition/chain-match.d.ts.map +1 -1
- package/dist/composition/chain-match.js +4 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-result.d.ts.map +1 -1
- package/dist/composition/chain-result.js +2 -14
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js +3 -2
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +13 -5
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.d.ts.map +1 -1
- package/dist/composition/composition-recovery.js +4 -7
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts +15 -5
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +6 -4
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +129 -9
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +171 -67
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +21 -2
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +23 -1
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js +18 -3
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +35 -11
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +60 -39
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +3 -12
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +7 -20
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +6 -15
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +26 -14
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +64 -72
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +23 -4
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +57 -17
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/graph-structure.d.ts +98 -0
- package/dist/composition/graph-structure.d.ts.map +1 -0
- package/dist/composition/graph-structure.js +167 -0
- package/dist/composition/graph-structure.js.map +1 -0
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz-svg.js +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +8 -37
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +19 -7
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.d.ts +91 -4
- package/dist/composition/identifiability.d.ts.map +1 -1
- package/dist/composition/identifiability.js +363 -6
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +8 -4
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +3 -2
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +7 -8
- package/dist/composition/mathts-quiet.d.ts.map +1 -1
- package/dist/composition/mathts-quiet.js +7 -16
- package/dist/composition/mathts-quiet.js.map +1 -1
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +2 -1
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/own-equation-magnitude.d.ts +95 -0
- package/dist/composition/own-equation-magnitude.d.ts.map +1 -0
- package/dist/composition/own-equation-magnitude.js +270 -0
- package/dist/composition/own-equation-magnitude.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +3 -0
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts +1 -0
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/candidate-store.js +1 -0
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.d.ts +8 -4
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +23 -12
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +18 -0
- package/dist/composition/probe/dataset.d.ts.map +1 -1
- package/dist/composition/probe/dataset.js +95 -50
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.d.ts +7 -1
- package/dist/composition/probe/experiment-design.d.ts.map +1 -1
- package/dist/composition/probe/experiment-design.js +44 -24
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +2 -0
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +2 -0
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +7 -0
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +46 -22
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.d.ts.map +1 -1
- package/dist/composition/probe/frontier.js +33 -15
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +30 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +58 -36
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +14 -0
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +6 -0
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +25 -1
- package/dist/composition/probe/limits.d.ts.map +1 -1
- package/dist/composition/probe/limits.js +53 -11
- package/dist/composition/probe/limits.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 +73 -24
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/power-law.d.ts +121 -0
- package/dist/composition/probe/power-law.d.ts.map +1 -0
- package/dist/composition/probe/power-law.js +251 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +8 -4
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +177 -49
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts +7 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +10 -7
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.d.ts +1 -0
- package/dist/composition/probe/run-manifest.d.ts.map +1 -1
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scalar-search.d.ts +50 -0
- package/dist/composition/probe/scalar-search.d.ts.map +1 -0
- package/dist/composition/probe/scalar-search.js +169 -0
- package/dist/composition/probe/scalar-search.js.map +1 -0
- package/dist/composition/probe/scoring.d.ts +1 -0
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/structure.d.ts +82 -17
- package/dist/composition/probe/structure.d.ts.map +1 -1
- package/dist/composition/probe/structure.js +129 -55
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +31 -9
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +235 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +16 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +29 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +3 -0
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +52 -12
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +107 -60
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantity-clusters.d.ts +48 -0
- package/dist/composition/quantity-clusters.d.ts.map +1 -0
- package/dist/composition/quantity-clusters.js +98 -0
- package/dist/composition/quantity-clusters.js.map +1 -0
- package/dist/composition/rational-exponent.d.ts +40 -0
- package/dist/composition/rational-exponent.d.ts.map +1 -0
- package/dist/composition/rational-exponent.js +65 -0
- package/dist/composition/rational-exponent.js.map +1 -0
- package/dist/composition/representative-values.d.ts +22 -0
- package/dist/composition/representative-values.d.ts.map +1 -1
- package/dist/composition/representative-values.js +29 -0
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +15 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +12 -4
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/user-equation.d.ts +1 -0
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +3 -2
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/assignment.d.ts +19 -0
- package/dist/core/assignment.d.ts.map +1 -0
- package/dist/core/assignment.js +19 -0
- package/dist/core/assignment.js.map +1 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.d.ts.map +1 -0
- package/dist/core/compare.js +46 -0
- package/dist/core/compare.js.map +1 -0
- package/dist/core/constants.d.ts +42 -41
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +71 -51
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +7 -0
- package/dist/core/data-file.d.ts.map +1 -1
- package/dist/core/data-file.js +17 -0
- package/dist/core/data-file.js.map +1 -1
- package/dist/core/format.d.ts +36 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +39 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/hash.d.ts +14 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +17 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/json-schema.d.ts +2 -0
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +14 -13
- package/dist/core/json-schema.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +0 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/mathts-read.d.ts +25 -0
- package/dist/core/mathts-read.d.ts.map +1 -0
- package/dist/core/mathts-read.js +51 -0
- package/dist/core/mathts-read.js.map +1 -0
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +24 -0
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- package/dist/diff/bridge-ast-gradient.d.ts +27 -23
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +75 -173
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +19 -6
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +19 -11
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +3 -0
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.d.ts +18 -0
- package/dist/dimensional/algebra.d.ts.map +1 -1
- package/dist/dimensional/algebra.js +41 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +7 -0
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +11 -0
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-leaves.d.ts +81 -0
- package/dist/dimensional/ast-leaves.d.ts.map +1 -0
- package/dist/dimensional/ast-leaves.js +146 -0
- package/dist/dimensional/ast-leaves.js.map +1 -0
- package/dist/dimensional/ast-types.d.ts +15 -0
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +15 -27
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/constant-rows.js +9 -9
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/dimension-inference.d.ts.map +1 -1
- package/dist/dimensional/dimension-inference.js +1 -2
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/errors.d.ts +1 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +1 -15
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +24 -11
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +122 -130
- package/dist/dimensional/exact-scale.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +2 -2
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts +12 -2
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +44 -19
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/mathts-unit-delegation.d.ts +29 -0
- package/dist/dimensional/mathts-unit-delegation.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-delegation.js +187 -0
- package/dist/dimensional/mathts-unit-delegation.js.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts +33 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.js +190 -0
- package/dist/dimensional/mathts-unit-wrapper.js.map +1 -0
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +0 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/scalar-lowering.d.ts +21 -0
- package/dist/dimensional/scalar-lowering.d.ts.map +1 -0
- package/dist/dimensional/scalar-lowering.js +45 -0
- package/dist/dimensional/scalar-lowering.js.map +1 -0
- package/dist/dimensional/symbolic-constants.d.ts +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +13 -1
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/types.d.ts +36 -0
- package/dist/dimensional/types.d.ts.map +1 -1
- package/dist/dimensional/types.js +45 -7
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +5 -1
- package/dist/dimensional/unit-data.d.ts.map +1 -1
- package/dist/dimensional/unit-data.js +30 -6
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts +2 -0
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +59 -3
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator.d.ts +2 -0
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/numerical/christoffel-flat.d.ts.map +1 -1
- package/dist/numerical/christoffel-flat.js +3 -2
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.d.ts +3 -1
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +11 -15
- 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 +34 -11
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +3 -2
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +0 -3
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/finite-difference.d.ts +22 -0
- package/dist/numerical/finite-difference.d.ts.map +1 -0
- package/dist/numerical/finite-difference.js +27 -0
- package/dist/numerical/finite-difference.js.map +1 -0
- package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
- package/dist/numerical/geodesic-integrator.js +22 -14
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/geometrized.js +0 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +10 -24
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.d.ts.map +1 -1
- package/dist/numerical/metric-inverse.js +83 -46
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ray-integrator.d.ts +2 -1
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +12 -12
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js +2 -2
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +2 -6
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +0 -36
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +41 -87
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +11 -13
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/rk4-trajectory.d.ts +10 -0
- package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
- package/dist/numerical/rk4-trajectory.js +37 -0
- package/dist/numerical/rk4-trajectory.js.map +1 -0
- package/dist/numerical/schwarzschild.d.ts +14 -0
- package/dist/numerical/schwarzschild.d.ts.map +1 -0
- package/dist/numerical/schwarzschild.js +17 -0
- package/dist/numerical/schwarzschild.js.map +1 -0
- package/dist/numerical/spacetime-metrics.d.ts +12 -0
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +72 -56
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/statistics.d.ts +24 -0
- package/dist/numerical/statistics.d.ts.map +1 -0
- package/dist/numerical/statistics.js +52 -0
- package/dist/numerical/statistics.js.map +1 -0
- package/dist/numerical/strides.d.ts +3 -2
- package/dist/numerical/strides.d.ts.map +1 -1
- package/dist/numerical/strides.js +3 -10
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +21 -0
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +12 -0
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/relations/regime.d.ts +10 -0
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +18 -1
- package/dist/relations/regime.js.map +1 -1
- package/package.json +9 -12
- package/dist/cases/brownian-sphere.d.ts +0 -68
- package/dist/cases/brownian-sphere.d.ts.map +0 -1
- package/dist/cases/brownian-sphere.js +0 -354
- package/dist/cases/brownian-sphere.js.map +0 -1
- package/dist/cases/damped-resonator.d.ts +0 -23
- package/dist/cases/damped-resonator.d.ts.map +0 -1
- package/dist/cases/damped-resonator.js +0 -224
- package/dist/cases/damped-resonator.js.map +0 -1
- package/dist/cases/kepler-rv.d.ts +0 -13
- package/dist/cases/kepler-rv.d.ts.map +0 -1
- package/dist/cases/kepler-rv.js +0 -172
- package/dist/cases/kepler-rv.js.map +0 -1
- package/dist/cases/lumped-cooling.d.ts +0 -46
- package/dist/cases/lumped-cooling.d.ts.map +0 -1
- package/dist/cases/lumped-cooling.js +0 -261
- package/dist/cases/lumped-cooling.js.map +0 -1
- package/dist/cases/resistor-noise.d.ts +0 -14
- package/dist/cases/resistor-noise.d.ts.map +0 -1
- package/dist/cases/resistor-noise.js +0 -215
- package/dist/cases/resistor-noise.js.map +0 -1
- package/dist/cases/skin-depth.d.ts +0 -21
- package/dist/cases/skin-depth.d.ts.map +0 -1
- package/dist/cases/skin-depth.js +0 -174
- package/dist/cases/skin-depth.js.map +0 -1
|
@@ -11,7 +11,6 @@ export class UPTError extends Error {
|
|
|
11
11
|
super(message, options);
|
|
12
12
|
this.name = 'UPTError';
|
|
13
13
|
// Restore prototype chain (needed for instanceof after ES5 transpilation).
|
|
14
|
-
Object.setPrototypeOf(this, UPTError.prototype);
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
16
|
/**
|
|
@@ -27,7 +26,6 @@ export class DimensionMismatchError extends UPTError {
|
|
|
27
26
|
this.name = 'DimensionMismatchError';
|
|
28
27
|
this.expected = expected;
|
|
29
28
|
this.actual = actual;
|
|
30
|
-
Object.setPrototypeOf(this, DimensionMismatchError.prototype);
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
@@ -50,7 +48,6 @@ export class DuplicateIndexLabelError extends UPTError {
|
|
|
50
48
|
this.name = 'DuplicateIndexLabelError';
|
|
51
49
|
this.tensorName = tensorName;
|
|
52
50
|
this.label = label;
|
|
53
|
-
Object.setPrototypeOf(this, DuplicateIndexLabelError.prototype);
|
|
54
51
|
}
|
|
55
52
|
}
|
|
56
53
|
/**
|
|
@@ -78,7 +75,6 @@ export class IndexLabelCollisionError extends UPTError {
|
|
|
78
75
|
this.label = label;
|
|
79
76
|
this.totalCount = totalCount;
|
|
80
77
|
this.sources = sources;
|
|
81
|
-
Object.setPrototypeOf(this, IndexLabelCollisionError.prototype);
|
|
82
78
|
}
|
|
83
79
|
}
|
|
84
80
|
/**
|
|
@@ -99,7 +95,6 @@ export class VarianceMismatchError extends UPTError {
|
|
|
99
95
|
this.name = 'VarianceMismatchError';
|
|
100
96
|
this.label = label;
|
|
101
97
|
this.variance = variance;
|
|
102
|
-
Object.setPrototypeOf(this, VarianceMismatchError.prototype);
|
|
103
98
|
}
|
|
104
99
|
}
|
|
105
100
|
/**
|
|
@@ -115,7 +110,6 @@ export class TensorInScalarOpError extends UPTError {
|
|
|
115
110
|
`non-empty freeIndices. Use 'tensor-product' for tensor multiplication.`);
|
|
116
111
|
this.name = 'TensorInScalarOpError';
|
|
117
112
|
this.op = op;
|
|
118
|
-
Object.setPrototypeOf(this, TensorInScalarOpError.prototype);
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
115
|
/**
|
|
@@ -128,7 +122,6 @@ export class FreeIndexMismatchError extends UPTError {
|
|
|
128
122
|
constructor(message) {
|
|
129
123
|
super(message);
|
|
130
124
|
this.name = 'FreeIndexMismatchError';
|
|
131
|
-
Object.setPrototypeOf(this, FreeIndexMismatchError.prototype);
|
|
132
125
|
}
|
|
133
126
|
}
|
|
134
127
|
/**
|
|
@@ -142,7 +135,6 @@ export class TensorProductChildInferenceError extends UPTError {
|
|
|
142
135
|
constructor(message) {
|
|
143
136
|
super(message);
|
|
144
137
|
this.name = 'TensorProductChildInferenceError';
|
|
145
|
-
Object.setPrototypeOf(this, TensorProductChildInferenceError.prototype);
|
|
146
138
|
}
|
|
147
139
|
}
|
|
148
140
|
/**
|
|
@@ -160,7 +152,6 @@ export class InvalidMetricRankError extends UPTError {
|
|
|
160
152
|
this.name = 'InvalidMetricRankError';
|
|
161
153
|
this.tensorName = tensorName;
|
|
162
154
|
this.actualRank = actualRank;
|
|
163
|
-
Object.setPrototypeOf(this, InvalidMetricRankError.prototype);
|
|
164
155
|
}
|
|
165
156
|
}
|
|
166
157
|
/**
|
|
@@ -177,7 +168,6 @@ export class MetricSignatureError extends UPTError {
|
|
|
177
168
|
this.name = 'MetricSignatureError';
|
|
178
169
|
this.tensorName = tensorName;
|
|
179
170
|
this.reason = reason;
|
|
180
|
-
Object.setPrototypeOf(this, MetricSignatureError.prototype);
|
|
181
171
|
}
|
|
182
172
|
}
|
|
183
173
|
/**
|
|
@@ -191,7 +181,6 @@ export class InvalidKroneckerRankError extends UPTError {
|
|
|
191
181
|
`(exactly one upper + one lower index). Per Part-VIII §VIII.3.`);
|
|
192
182
|
this.name = 'InvalidKroneckerRankError';
|
|
193
183
|
this.actualRank = actualRank;
|
|
194
|
-
Object.setPrototypeOf(this, InvalidKroneckerRankError.prototype);
|
|
195
184
|
}
|
|
196
185
|
}
|
|
197
186
|
/**
|
|
@@ -207,7 +196,6 @@ export class KroneckerVarianceError extends UPTError {
|
|
|
207
196
|
`Per Part-VIII §VIII.3.`);
|
|
208
197
|
this.name = 'KroneckerVarianceError';
|
|
209
198
|
this.bothVariance = bothVariance;
|
|
210
|
-
Object.setPrototypeOf(this, KroneckerVarianceError.prototype);
|
|
211
199
|
}
|
|
212
200
|
}
|
|
213
201
|
/**
|
|
@@ -224,7 +212,6 @@ export class PartialDerivativeIndexVarianceError extends UPTError {
|
|
|
224
212
|
`be 'lower'. Per Part-VIII §VIII.4.`);
|
|
225
213
|
this.name = 'PartialDerivativeIndexVarianceError';
|
|
226
214
|
this.label = label;
|
|
227
|
-
Object.setPrototypeOf(this, PartialDerivativeIndexVarianceError.prototype);
|
|
228
215
|
}
|
|
229
216
|
}
|
|
230
217
|
/**
|
|
@@ -238,7 +225,7 @@ export class PartialDerivativeIndexVarianceError extends UPTError {
|
|
|
238
225
|
* a dimensional → numerical import cycle; re-exported from numerical/index.ts
|
|
239
226
|
* for the public API surface per v0.4.0-Implementation-Plan Task 13.
|
|
240
227
|
*
|
|
241
|
-
*
|
|
228
|
+
* A plain `class extends Error` under the ES2022 target: `instanceof` holds without a prototype reset.
|
|
242
229
|
*
|
|
243
230
|
* @public
|
|
244
231
|
*/
|
|
@@ -248,7 +235,6 @@ export class DuplicateCoordinateWarning extends Error {
|
|
|
248
235
|
`'${conflictingIndex}' of the operand; result will silently misbehave. ` +
|
|
249
236
|
`Rename the operand's free index or pick a different wrt label.`);
|
|
250
237
|
this.name = 'DuplicateCoordinateWarning';
|
|
251
|
-
Object.setPrototypeOf(this, DuplicateCoordinateWarning.prototype);
|
|
252
238
|
}
|
|
253
239
|
}
|
|
254
240
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,4CAA4C;AAC5C,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe,EAAE,OAAsC;QACjE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,2EAA2E;QAC3E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,QAAQ,CAAY;IACpB,MAAM,CAAY;IAClC,YAAY,OAAe,EAAE,QAAmB,EAAE,MAAiB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IACpC,UAAU,CAAS;IACnB,KAAK,CAAS;IAC9B,YAAY,UAAkB,EAAE,KAAa;QAC3C,KAAK,CACH,WAAW,UAAU,+BAA+B,KAAK,KAAK;YAC9D,mEAAmE;YACnE,wCAAwC,CACzC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IACpC,KAAK,CAAS;IACd,UAAU,CAAS;IACnC;;;;OAIG;IACa,OAAO,CAAyB;IAChD,YACE,KAAa,EACb,UAAkB,EAClB,OAA+B;QAE/B,MAAM,YAAY,GAChB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACrC,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,CACH,gBAAgB,KAAK,aAAa,UAAU,oBAAoB;YAChE,0BAA0B,YAAY,gCAAgC;YACtE,oDAAoD,CACrD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjC,KAAK,CAAS;IACd,QAAQ,CAAoB;IAC5C,YAAY,KAAa,EAAE,QAA2B;QACpD,KAAK,CACH,gBAAgB,KAAK,2CAA2C,QAAQ,KAAK;YAC7E,yDAAyD;YACzD,yDAAyD,KAAK,QAAQ;YACtE,sBAAsB,KAAK,yCAAyC;YACpE,qBAAqB,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjC,EAAE,CAAS;IAC3B,YAAY,EAAU;QACpB,KAAK,CACH,aAAa,EAAE,oDAAoD;YACnE,wEAAwE,CACzE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gCAAiC,SAAQ,QAAQ;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,UAAU,CAAS;IACnB,UAAU,CAAS;IACnC,YAAY,UAAkB,EAAE,UAAkB;QAChD,KAAK,CACH,kBAAkB,UAAU,cAAc,UAAU,UAAU;YAC9D,qEAAqE,CACtE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChC,UAAU,CAAS;IACnB,MAAM,CAAS;IAC/B,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CACH,kBAAkB,UAAU,MAAM,MAAM,0BAA0B,CACnE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,yBAA0B,SAAQ,QAAQ;IACrC,UAAU,CAAS;IACnC,YAAY,UAAkB;QAC5B,KAAK,CACH,4BAA4B,UAAU,uBAAuB;YAC7D,+DAA+D,CAChE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClC,YAAY,CAAoB;IAChD,YAAY,YAA+B;QACzC,KAAK,CACH,+CAA+C,YAAY,KAAK;YAChE,wDAAwD;YACxD,wBAAwB,CACzB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mCAAoC,SAAQ,QAAQ;IAC/C,KAAK,CAAS;IAC9B,YAAY,KAAa;QACvB,KAAK,CACH,6BAA6B,KAAK,8BAA8B;YAChE,iEAAiE;YACjE,oCAAoC,CACrC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qCAAqC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,KAAa,EAAE,gBAAwB;QACjD,KAAK,CACH,6BAA6B,KAAK,sCAAsC;YACxE,IAAI,gBAAgB,oDAAoD;YACxE,gEAAgE,CACjE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["/**\n * UPT error hierarchy. All UPT-source errors subclass UPTError so\n * downstream consumers (mathjs, threejs, TensorJS) can discriminate\n * with `err instanceof UPTError`.\n *\n * @module dimensional/errors\n */\n\nimport { Dimension } from './types.js';\n\n/** Base class for all UPT-source errors. */\nexport class UPTError extends Error {\n constructor(message: string, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = 'UPTError';\n // Restore prototype chain (needed for instanceof after ES5 transpilation).\n Object.setPrototypeOf(this, UPTError.prototype);\n }\n}\n\n/**\n * Thrown by add/sub and equation-level checks when dimensions disagree.\n * (Moved from src/dimensional/algebra.ts as part of the v0.2.0 UPTError\n * refactor. Behavior unchanged.)\n */\nexport class DimensionMismatchError extends UPTError {\n public readonly expected: Dimension;\n public readonly actual: Dimension;\n constructor(message: string, expected: Dimension, actual: Dimension) {\n super(message);\n this.name = 'DimensionMismatchError';\n this.expected = expected;\n this.actual = actual;\n Object.setPrototypeOf(this, DimensionMismatchError.prototype);\n }\n}\n\n/**\n * Thrown when a tensor-symbol's indices list contains the same label\n * more than once (e.g., T^μ_μ_μ). Per Part-VII §VII.4.\n *\n * NOTE: this error fires on DECLARATION-TIME duplicates within a single\n * tensor-symbol's indices list. Those indices are *free*, not \"dummy\"\n * (a dummy index in tensor calculus is one that is summed over). The\n * earlier name `RepeatedDummyLabelError` was a misnomer; that deprecated\n * alias was removed in v0.4.5.\n */\nexport class DuplicateIndexLabelError extends UPTError {\n public readonly tensorName: string;\n public readonly label: string;\n constructor(tensorName: string, label: string) {\n super(\n `Tensor '${tensorName}' has repeated index label '${label}'. ` +\n `A label may appear at most twice (once upper, once lower) within ` +\n `a single tensor-symbol's indices list.`,\n );\n this.name = 'DuplicateIndexLabelError';\n this.tensorName = tensorName;\n this.label = label;\n Object.setPrototypeOf(this, DuplicateIndexLabelError.prototype);\n }\n}\n\n/**\n * Thrown when an index label appears more than twice across a\n * tensor-product's operands. Einstein contraction requires exactly two\n * occurrences (one upper + one lower) per dummy label. Per Part-VII §VII.4.\n */\nexport class IndexLabelCollisionError extends UPTError {\n public readonly label: string;\n public readonly totalCount: number;\n /**\n * Tensor names that contributed occurrences of the colliding label,\n * if the caller has them available. May be undefined for callers that\n * don't track per-operand provenance.\n */\n public readonly sources?: ReadonlyArray<string>;\n constructor(\n label: string,\n totalCount: number,\n sources?: ReadonlyArray<string>,\n ) {\n const sourceClause =\n sources && sources.length > 0\n ? ` (sources: ${sources.join(', ')})`\n : '';\n super(\n `Index label '${label}' appears ${totalCount} times across the ` +\n `tensor-product operands${sourceClause} (max allowed: 2 for Einstein ` +\n `contraction). Rename one of the offending indices.`,\n );\n this.name = 'IndexLabelCollisionError';\n this.label = label;\n this.totalCount = totalCount;\n this.sources = sources;\n Object.setPrototypeOf(this, IndexLabelCollisionError.prototype);\n }\n}\n\n/**\n * Thrown when an index label appears twice in a tensor-product but both\n * occurrences share the same variance (both upper or both lower). v0.2.0\n * has no metric tensor available to raise/lower indices, so such a\n * contraction is rejected at validation time. Per Part-VII §VII.4.\n */\nexport class VarianceMismatchError extends UPTError {\n public readonly label: string;\n public readonly variance: 'upper' | 'lower';\n constructor(label: string, variance: 'upper' | 'lower') {\n super(\n `Index label '${label}' appears twice but both with variance '${variance}'. ` +\n `Einstein contraction requires one upper and one lower. ` +\n `If this is intentional, use raise(operand, gInverse, '${label}') or ` +\n `lower(operand, g, '${label}') to traverse variance via the metric ` +\n `before contracting.`,\n );\n this.name = 'VarianceMismatchError';\n this.label = label;\n this.variance = variance;\n Object.setPrototypeOf(this, VarianceMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by `op '*'` / `'/'` / `'^'` when an operand carries non-empty\n * freeIndices. Scalar operators in v0.2.0 are strict: any tensor-valued\n * operand must instead pass through `tensor-product`. Per Part-VII §VII.5\n * (op-tensor boundary rules).\n */\nexport class TensorInScalarOpError extends UPTError {\n public readonly op: string;\n constructor(op: string) {\n super(\n `Operator '${op}' is scalar-only; received a tensor argument with ` +\n `non-empty freeIndices. Use 'tensor-product' for tensor multiplication.`,\n );\n this.name = 'TensorInScalarOpError';\n this.op = op;\n Object.setPrototypeOf(this, TensorInScalarOpError.prototype);\n }\n}\n\n/**\n * Thrown by `op '+'` / `'-'` when the operand freeIndices maps differ.\n * Addition / subtraction across tensors requires identical free-index\n * signatures (same labels, same per-label upper/lower counts). Per\n * Part-VII §VII.5.\n */\nexport class FreeIndexMismatchError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'FreeIndexMismatchError';\n Object.setPrototypeOf(this, FreeIndexMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by the validator's tensor-product child resolver when a non-tensor\n * operand to a `tensor-product` fails dimension inference. Subclassing\n * UPTError (rather than throwing a plain `Error`) preserves the §14.7\n * forward-compat invariant that downstream consumers can discriminate\n * UPT-source errors with `err instanceof UPTError`.\n */\nexport class TensorProductChildInferenceError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'TensorProductChildInferenceError';\n Object.setPrototypeOf(this, TensorProductChildInferenceError.prototype);\n }\n}\n\n/**\n * Thrown when a `metric-tensor` node has rank other than 2. Per\n * Part-VIII §VIII.2 (metric-tensor-rank-2-only TENSOR-RULE). The metric\n * is fundamentally a rank-2 object in v0.3.0; higher-rank generalizations\n * are out of scope.\n */\nexport class InvalidMetricRankError extends UPTError {\n public readonly tensorName: string;\n public readonly actualRank: number;\n constructor(tensorName: string, actualRank: number) {\n super(\n `Metric tensor '${tensorName}' has rank ${actualRank}, but a ` +\n `metric must be rank-2 (exactly two indices). Per Part-VIII §VIII.2.`,\n );\n this.name = 'InvalidMetricRankError';\n this.tensorName = tensorName;\n this.actualRank = actualRank;\n Object.setPrototypeOf(this, InvalidMetricRankError.prototype);\n }\n}\n\n/**\n * Thrown when a `metric-tensor` has mixed-variance indices, an empty\n * signature, an invalid signature string, or other structural problem\n * orthogonal to rank. Per Part-VIII §VIII.2 and §VIII.5 (raise/lower\n * variance requirements).\n */\nexport class MetricSignatureError extends UPTError {\n public readonly tensorName: string;\n public readonly reason: string;\n constructor(tensorName: string, reason: string) {\n super(\n `Metric tensor '${tensorName}': ${reason}. Per Part-VIII §VIII.2.`,\n );\n this.name = 'MetricSignatureError';\n this.tensorName = tensorName;\n this.reason = reason;\n Object.setPrototypeOf(this, MetricSignatureError.prototype);\n }\n}\n\n/**\n * Thrown when a `kronecker-delta` node has rank other than 2.\n * Per Part-VIII §VIII.3.\n */\nexport class InvalidKroneckerRankError extends UPTError {\n public readonly actualRank: number;\n constructor(actualRank: number) {\n super(\n `Kronecker delta has rank ${actualRank}, but must be rank-2 ` +\n `(exactly one upper + one lower index). Per Part-VIII §VIII.3.`,\n );\n this.name = 'InvalidKroneckerRankError';\n this.actualRank = actualRank;\n Object.setPrototypeOf(this, InvalidKroneckerRankError.prototype);\n }\n}\n\n/**\n * Thrown when a `kronecker-delta`'s two indices share the same variance\n * (both upper or both lower). Per Part-VIII §VIII.3, the canonical\n * δ^μ_ν requires mixed variance.\n */\nexport class KroneckerVarianceError extends UPTError {\n public readonly bothVariance: 'upper' | 'lower';\n constructor(bothVariance: 'upper' | 'lower') {\n super(\n `Kronecker delta indices both have variance '${bothVariance}'; ` +\n `must be one upper + one lower (canonical δ^μ_ν form). ` +\n `Per Part-VIII §VIII.3.`,\n );\n this.name = 'KroneckerVarianceError';\n this.bothVariance = bothVariance;\n Object.setPrototypeOf(this, KroneckerVarianceError.prototype);\n }\n}\n\n/**\n * Thrown when a `tensor-partial-derivative` node's `wrtIndex.variance`\n * is `'upper'`. The differentiation operator ∂/∂x^μ is fundamentally\n * covariant (lower) regardless of the variance of the coordinate. Per\n * Part-VIII §VIII.4 (pderiv-wrtIndex-always-lower TENSOR-RULE).\n */\nexport class PartialDerivativeIndexVarianceError extends UPTError {\n public readonly label: string;\n constructor(label: string) {\n super(\n `Partial-derivative index '${label}' has variance 'upper', but ` +\n `∂_μ is fundamentally covariant — wrtIndex.variance must always ` +\n `be 'lower'. Per Part-VIII §VIII.4.`,\n );\n this.name = 'PartialDerivativeIndexVarianceError';\n this.label = label;\n Object.setPrototypeOf(this, PartialDerivativeIndexVarianceError.prototype);\n }\n}\n\n/**\n * Emitted (not thrown) via `process.emitWarning` when a covariant-derivative's\n * `wrt` coordinate label collides with an existing free index of the operand\n * and the env var `UPT_ALLOW_COORD_SHADOW=1` has opted in to downgraded\n * handling. By default the collision throws `MetricSignatureError` (soundness\n * over friendliness — silent wrong results are the worst failure mode).\n *\n * Lives here (dimensional/errors.ts) rather than numerical/index.ts to avoid\n * a dimensional → numerical import cycle; re-exported from numerical/index.ts\n * for the public API surface per v0.4.0-Implementation-Plan Task 13.\n *\n * Uses `Object.setPrototypeOf` for correct `instanceof` after ES5 transpilation.\n *\n * @public\n */\nexport class DuplicateCoordinateWarning extends Error {\n constructor(coord: string, conflictingIndex: string) {\n super(\n `Covariant-derivative wrt='${coord}' collides with existing free index ` +\n `'${conflictingIndex}' of the operand; result will silently misbehave. ` +\n `Rename the operand's free index or pick a different wrt label.`,\n );\n this.name = 'DuplicateCoordinateWarning';\n Object.setPrototypeOf(this, DuplicateCoordinateWarning.prototype);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/dimensional/errors.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UPT error hierarchy. All UPT-source errors subclass UPTError so\n * downstream consumers (mathjs, threejs, TensorJS) can discriminate\n * with `err instanceof UPTError`.\n *\n * @module dimensional/errors\n */\n\nimport { Dimension } from './types.js';\n\n/** Base class for all UPT-source errors. */\nexport class UPTError extends Error {\n constructor(message: string, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = 'UPTError';\n // Restore prototype chain (needed for instanceof after ES5 transpilation).\n }\n}\n\n/**\n * Thrown by add/sub and equation-level checks when dimensions disagree.\n * (Moved from src/dimensional/algebra.ts as part of the v0.2.0 UPTError\n * refactor. Behavior unchanged.)\n */\nexport class DimensionMismatchError extends UPTError {\n public readonly expected: Dimension;\n public readonly actual: Dimension;\n constructor(message: string, expected: Dimension, actual: Dimension) {\n super(message);\n this.name = 'DimensionMismatchError';\n this.expected = expected;\n this.actual = actual;\n }\n}\n\n/**\n * Thrown when a tensor-symbol's indices list contains the same label\n * more than once (e.g., T^μ_μ_μ). Per Part-VII §VII.4.\n *\n * NOTE: this error fires on DECLARATION-TIME duplicates within a single\n * tensor-symbol's indices list. Those indices are *free*, not \"dummy\"\n * (a dummy index in tensor calculus is one that is summed over). The\n * earlier name `RepeatedDummyLabelError` was a misnomer; that deprecated\n * alias was removed in v0.4.5.\n */\nexport class DuplicateIndexLabelError extends UPTError {\n public readonly tensorName: string;\n public readonly label: string;\n constructor(tensorName: string, label: string) {\n super(\n `Tensor '${tensorName}' has repeated index label '${label}'. ` +\n `A label may appear at most twice (once upper, once lower) within ` +\n `a single tensor-symbol's indices list.`,\n );\n this.name = 'DuplicateIndexLabelError';\n this.tensorName = tensorName;\n this.label = label;\n }\n}\n\n/**\n * Thrown when an index label appears more than twice across a\n * tensor-product's operands. Einstein contraction requires exactly two\n * occurrences (one upper + one lower) per dummy label. Per Part-VII §VII.4.\n */\nexport class IndexLabelCollisionError extends UPTError {\n public readonly label: string;\n public readonly totalCount: number;\n /**\n * Tensor names that contributed occurrences of the colliding label,\n * if the caller has them available. May be undefined for callers that\n * don't track per-operand provenance.\n */\n public readonly sources?: ReadonlyArray<string>;\n constructor(\n label: string,\n totalCount: number,\n sources?: ReadonlyArray<string>,\n ) {\n const sourceClause =\n sources && sources.length > 0\n ? ` (sources: ${sources.join(', ')})`\n : '';\n super(\n `Index label '${label}' appears ${totalCount} times across the ` +\n `tensor-product operands${sourceClause} (max allowed: 2 for Einstein ` +\n `contraction). Rename one of the offending indices.`,\n );\n this.name = 'IndexLabelCollisionError';\n this.label = label;\n this.totalCount = totalCount;\n this.sources = sources;\n }\n}\n\n/**\n * Thrown when an index label appears twice in a tensor-product but both\n * occurrences share the same variance (both upper or both lower). v0.2.0\n * has no metric tensor available to raise/lower indices, so such a\n * contraction is rejected at validation time. Per Part-VII §VII.4.\n */\nexport class VarianceMismatchError extends UPTError {\n public readonly label: string;\n public readonly variance: 'upper' | 'lower';\n constructor(label: string, variance: 'upper' | 'lower') {\n super(\n `Index label '${label}' appears twice but both with variance '${variance}'. ` +\n `Einstein contraction requires one upper and one lower. ` +\n `If this is intentional, use raise(operand, gInverse, '${label}') or ` +\n `lower(operand, g, '${label}') to traverse variance via the metric ` +\n `before contracting.`,\n );\n this.name = 'VarianceMismatchError';\n this.label = label;\n this.variance = variance;\n }\n}\n\n/**\n * Thrown by `op '*'` / `'/'` / `'^'` when an operand carries non-empty\n * freeIndices. Scalar operators in v0.2.0 are strict: any tensor-valued\n * operand must instead pass through `tensor-product`. Per Part-VII §VII.5\n * (op-tensor boundary rules).\n */\nexport class TensorInScalarOpError extends UPTError {\n public readonly op: string;\n constructor(op: string) {\n super(\n `Operator '${op}' is scalar-only; received a tensor argument with ` +\n `non-empty freeIndices. Use 'tensor-product' for tensor multiplication.`,\n );\n this.name = 'TensorInScalarOpError';\n this.op = op;\n }\n}\n\n/**\n * Thrown by `op '+'` / `'-'` when the operand freeIndices maps differ.\n * Addition / subtraction across tensors requires identical free-index\n * signatures (same labels, same per-label upper/lower counts). Per\n * Part-VII §VII.5.\n */\nexport class FreeIndexMismatchError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'FreeIndexMismatchError';\n }\n}\n\n/**\n * Thrown by the validator's tensor-product child resolver when a non-tensor\n * operand to a `tensor-product` fails dimension inference. Subclassing\n * UPTError (rather than throwing a plain `Error`) preserves the §14.7\n * forward-compat invariant that downstream consumers can discriminate\n * UPT-source errors with `err instanceof UPTError`.\n */\nexport class TensorProductChildInferenceError extends UPTError {\n constructor(message: string) {\n super(message);\n this.name = 'TensorProductChildInferenceError';\n }\n}\n\n/**\n * Thrown when a `metric-tensor` node has rank other than 2. Per\n * Part-VIII §VIII.2 (metric-tensor-rank-2-only TENSOR-RULE). The metric\n * is fundamentally a rank-2 object in v0.3.0; higher-rank generalizations\n * are out of scope.\n */\nexport class InvalidMetricRankError extends UPTError {\n public readonly tensorName: string;\n public readonly actualRank: number;\n constructor(tensorName: string, actualRank: number) {\n super(\n `Metric tensor '${tensorName}' has rank ${actualRank}, but a ` +\n `metric must be rank-2 (exactly two indices). Per Part-VIII §VIII.2.`,\n );\n this.name = 'InvalidMetricRankError';\n this.tensorName = tensorName;\n this.actualRank = actualRank;\n }\n}\n\n/**\n * Thrown when a `metric-tensor` has mixed-variance indices, an empty\n * signature, an invalid signature string, or other structural problem\n * orthogonal to rank. Per Part-VIII §VIII.2 and §VIII.5 (raise/lower\n * variance requirements).\n */\nexport class MetricSignatureError extends UPTError {\n public readonly tensorName: string;\n public readonly reason: string;\n constructor(tensorName: string, reason: string) {\n super(\n `Metric tensor '${tensorName}': ${reason}. Per Part-VIII §VIII.2.`,\n );\n this.name = 'MetricSignatureError';\n this.tensorName = tensorName;\n this.reason = reason;\n }\n}\n\n/**\n * Thrown when a `kronecker-delta` node has rank other than 2.\n * Per Part-VIII §VIII.3.\n */\nexport class InvalidKroneckerRankError extends UPTError {\n public readonly actualRank: number;\n constructor(actualRank: number) {\n super(\n `Kronecker delta has rank ${actualRank}, but must be rank-2 ` +\n `(exactly one upper + one lower index). Per Part-VIII §VIII.3.`,\n );\n this.name = 'InvalidKroneckerRankError';\n this.actualRank = actualRank;\n }\n}\n\n/**\n * Thrown when a `kronecker-delta`'s two indices share the same variance\n * (both upper or both lower). Per Part-VIII §VIII.3, the canonical\n * δ^μ_ν requires mixed variance.\n */\nexport class KroneckerVarianceError extends UPTError {\n public readonly bothVariance: 'upper' | 'lower';\n constructor(bothVariance: 'upper' | 'lower') {\n super(\n `Kronecker delta indices both have variance '${bothVariance}'; ` +\n `must be one upper + one lower (canonical δ^μ_ν form). ` +\n `Per Part-VIII §VIII.3.`,\n );\n this.name = 'KroneckerVarianceError';\n this.bothVariance = bothVariance;\n }\n}\n\n/**\n * Thrown when a `tensor-partial-derivative` node's `wrtIndex.variance`\n * is `'upper'`. The differentiation operator ∂/∂x^μ is fundamentally\n * covariant (lower) regardless of the variance of the coordinate. Per\n * Part-VIII §VIII.4 (pderiv-wrtIndex-always-lower TENSOR-RULE).\n */\nexport class PartialDerivativeIndexVarianceError extends UPTError {\n public readonly label: string;\n constructor(label: string) {\n super(\n `Partial-derivative index '${label}' has variance 'upper', but ` +\n `∂_μ is fundamentally covariant — wrtIndex.variance must always ` +\n `be 'lower'. Per Part-VIII §VIII.4.`,\n );\n this.name = 'PartialDerivativeIndexVarianceError';\n this.label = label;\n }\n}\n\n/**\n * Emitted (not thrown) via `process.emitWarning` when a covariant-derivative's\n * `wrt` coordinate label collides with an existing free index of the operand\n * and the env var `UPT_ALLOW_COORD_SHADOW=1` has opted in to downgraded\n * handling. By default the collision throws `MetricSignatureError` (soundness\n * over friendliness — silent wrong results are the worst failure mode).\n *\n * Lives here (dimensional/errors.ts) rather than numerical/index.ts to avoid\n * a dimensional → numerical import cycle; re-exported from numerical/index.ts\n * for the public API surface per v0.4.0-Implementation-Plan Task 13.\n *\n * A plain `class extends Error` under the ES2022 target: `instanceof` holds without a prototype reset.\n *\n * @public\n */\nexport class DuplicateCoordinateWarning extends Error {\n constructor(coord: string, conflictingIndex: string) {\n super(\n `Covariant-derivative wrt='${coord}' collides with existing free index ` +\n `'${conflictingIndex}' of the operand; result will silently misbehave. ` +\n `Rename the operand's free index or pick a different wrt label.`,\n );\n this.name = 'DuplicateCoordinateWarning';\n }\n}\n"]}
|
|
@@ -12,9 +12,15 @@
|
|
|
12
12
|
* through its shortest round-trip decimal (`String(x)`), which is the
|
|
13
13
|
* literal a constant was written with.
|
|
14
14
|
*
|
|
15
|
+
* The arithmetic is MathTS's (`@danielsimonjr/mathts-core`); the UPT
|
|
16
|
+
* {@link ExactScale} shape and function names are the thin layer over it, and
|
|
17
|
+
* a scale expression (`data/units.json`) reads through MathTS
|
|
18
|
+
* `readScaleExpression` under this module's UPT-facing signature.
|
|
19
|
+
*
|
|
15
20
|
* @module dimensional/exact-scale
|
|
16
21
|
* @internal
|
|
17
22
|
*/
|
|
23
|
+
import { type ExactScale as CoreExactScale } from '@danielsimonjr/mathts-core';
|
|
18
24
|
/** `num / den × irrational`, with `den > 0` and the fraction in lowest terms. @internal */
|
|
19
25
|
export interface ExactScale {
|
|
20
26
|
readonly num: bigint;
|
|
@@ -22,6 +28,10 @@ export interface ExactScale {
|
|
|
22
28
|
/** The factor no rational states (π, ln 2). 1 for a rational scale. */
|
|
23
29
|
readonly irrational: number;
|
|
24
30
|
}
|
|
31
|
+
/** UPT {@link ExactScale} to the MathTS core shape. @internal */
|
|
32
|
+
export declare function coreExactScaleFromUpt(s: ExactScale): CoreExactScale;
|
|
33
|
+
/** MathTS core exact scale to UPT {@link ExactScale}. @internal */
|
|
34
|
+
export declare function uptExactScaleFromCore(s: CoreExactScale): ExactScale;
|
|
25
35
|
/** The scale 1. @internal */
|
|
26
36
|
export declare const UNIT_SCALE: ExactScale;
|
|
27
37
|
/**
|
|
@@ -42,7 +52,7 @@ export declare function multiplyScales(...factors: readonly ExactScale[]): Exact
|
|
|
42
52
|
export declare function divideScales(a: ExactScale, b: ExactScale): ExactScale;
|
|
43
53
|
/**
|
|
44
54
|
* `a ^ n`. An integer power stays exact. A fractional power has no exact
|
|
45
|
-
* rational in general
|
|
55
|
+
* rational in general and throws.
|
|
46
56
|
* @internal
|
|
47
57
|
*/
|
|
48
58
|
export declare function powerScale(a: ExactScale, n: number): ExactScale;
|
|
@@ -51,13 +61,13 @@ export declare function addScales(a: ExactScale, b: ExactScale): ExactScale;
|
|
|
51
61
|
/** The scale as a double: the rational rounded once, times the irrational factor. @internal */
|
|
52
62
|
export declare function scaleToNumber(s: ExactScale): number;
|
|
53
63
|
/**
|
|
54
|
-
* The two sides of a unit text
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
64
|
+
* The two sides of a unit text under the single-solidus convention of
|
|
65
|
+
* ISO 80000-1: everything after the first `/` is the denominator, so a chain
|
|
66
|
+
* is one denominator (`km/s/Mpc` is km/(s·Mpc), and `W/m*K` is W/(m·K), not
|
|
67
|
+
* (W/m)·K). The denominator comes back as one `*`-joined product, each
|
|
68
|
+
* `/`-part's outer parentheses dropped. `units.ts` splits here, so a unit text
|
|
69
|
+
* reads a `/` the same way a scale expression does. MathTS states the same
|
|
70
|
+
* rule inside its `readScaleExpression` and does not export the split.
|
|
61
71
|
* @internal
|
|
62
72
|
*/
|
|
63
73
|
export declare function solidusSides(text: string): {
|
|
@@ -70,9 +80,12 @@ export declare function solidusSides(text: string): {
|
|
|
70
80
|
* each a decimal literal or a name with an optional integer power
|
|
71
81
|
* (`4.1868*453.59237/1.8`, `pi/180`, `lbf/inch^2`). A `/` follows the unit
|
|
72
82
|
* grammar ({@link solidusSides}): `a/b*c` is a/(b·c). `resolve` gives a name
|
|
73
|
-
* its scale and returns undefined for a name it does not know, which throws
|
|
74
|
-
*
|
|
75
|
-
*
|
|
83
|
+
* its scale and returns undefined for a name it does not know, which throws.
|
|
84
|
+
* A decimal literal is read digit for digit, so the result is the rational the
|
|
85
|
+
* text states.
|
|
86
|
+
*
|
|
87
|
+
* MathTS's `readScaleExpression` is the reader; this is the UPT-facing
|
|
88
|
+
* signature over it, the one adapter between its exact scale and UPT's.
|
|
76
89
|
* @internal
|
|
77
90
|
*/
|
|
78
91
|
export declare function readScaleExpression(text: string, resolve: (name: string) => ExactScale | undefined): ExactScale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exact-scale.d.ts","sourceRoot":"","sources":["../../src/dimensional/exact-scale.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exact-scale.d.ts","sourceRoot":"","sources":["../../src/dimensional/exact-scale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAYL,KAAK,UAAU,IAAI,cAAc,EAClC,MAAM,4BAA4B,CAAC;AAKpC,2FAA2F;AAC3F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AA+BD,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,UAAU,GAAG,cAAc,CAEnE;AAED,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,cAAc,GAAG,UAAU,CAEnE;AAgDD,6BAA6B;AAC7B,eAAO,MAAM,UAAU,EAAE,UAAgD,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG5D;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAG7C;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAEjF;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAGrD;AAED,6BAA6B;AAC7B,wBAAgB,cAAc,CAAC,GAAG,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAG5E;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAErE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAG/D;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAIlE;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CASvG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,GAAG,UAAU,CAO/G"}
|
|
@@ -12,15 +12,21 @@
|
|
|
12
12
|
* through its shortest round-trip decimal (`String(x)`), which is the
|
|
13
13
|
* literal a constant was written with.
|
|
14
14
|
*
|
|
15
|
+
* The arithmetic is MathTS's (`@danielsimonjr/mathts-core`); the UPT
|
|
16
|
+
* {@link ExactScale} shape and function names are the thin layer over it, and
|
|
17
|
+
* a scale expression (`data/units.json`) reads through MathTS
|
|
18
|
+
* `readScaleExpression` under this module's UPT-facing signature.
|
|
19
|
+
*
|
|
15
20
|
* @module dimensional/exact-scale
|
|
16
21
|
* @internal
|
|
17
22
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
import { addExactScales, decimalExactScale, divideExactScales, exactScaleOf, exactScaleToNumber, LN2_EXACT_SCALE, multiplyExactScales, PI_EXACT_SCALE, powerExactScale, ratioExactScale, readScaleExpression as mathtsReadScaleExpression, } from '@danielsimonjr/mathts-core';
|
|
24
|
+
import { gcd } from '@danielsimonjr/mathts-functions';
|
|
25
|
+
import { bigintFrom } from '../core/mathts-read.js';
|
|
26
|
+
/** The bigint gcd, MathTS `gcd` on its `bigint, bigint` signature, read back as the bigint it is. */
|
|
27
|
+
function bigGcd(a, b) {
|
|
28
|
+
const g = bigintFrom('gcd', gcd(a, b));
|
|
29
|
+
return g < 0n ? -g : g;
|
|
24
30
|
}
|
|
25
31
|
function make(num, den, irrational) {
|
|
26
32
|
if (den === 0n)
|
|
@@ -29,42 +35,104 @@ function make(num, den, irrational) {
|
|
|
29
35
|
num = -num;
|
|
30
36
|
den = -den;
|
|
31
37
|
}
|
|
32
|
-
const g =
|
|
38
|
+
const g = bigGcd(num, den);
|
|
33
39
|
return g > 1n ? { num: num / g, den: den / g, irrational } : { num, den, irrational };
|
|
34
40
|
}
|
|
41
|
+
function irrationalFactor(irrationals) {
|
|
42
|
+
let factor = 1;
|
|
43
|
+
const pi = irrationals.pi ?? 0;
|
|
44
|
+
const ln2 = irrationals.ln2 ?? 0;
|
|
45
|
+
if (pi !== 0)
|
|
46
|
+
factor *= Math.PI ** pi;
|
|
47
|
+
if (ln2 !== 0)
|
|
48
|
+
factor *= Math.LN2 ** ln2;
|
|
49
|
+
return factor;
|
|
50
|
+
}
|
|
51
|
+
function fromCore(s) {
|
|
52
|
+
return make(s.num, s.den, irrationalFactor(s.irrationals));
|
|
53
|
+
}
|
|
54
|
+
/** UPT {@link ExactScale} to the MathTS core shape. @internal */
|
|
55
|
+
export function coreExactScaleFromUpt(s) {
|
|
56
|
+
return toCore(s);
|
|
57
|
+
}
|
|
58
|
+
/** MathTS core exact scale to UPT {@link ExactScale}. @internal */
|
|
59
|
+
export function uptExactScaleFromCore(s) {
|
|
60
|
+
return fromCore(s);
|
|
61
|
+
}
|
|
62
|
+
/** When `x / base` is a nonzero integer, that integer; otherwise null. */
|
|
63
|
+
function integerMultiple(x, base) {
|
|
64
|
+
if (!Number.isFinite(x) || !Number.isFinite(base) || base === 0 || x === 0)
|
|
65
|
+
return null;
|
|
66
|
+
const q = x / base;
|
|
67
|
+
if (!Number.isFinite(q))
|
|
68
|
+
return null;
|
|
69
|
+
const n = Math.trunc(q);
|
|
70
|
+
if (n === 0 || q !== n)
|
|
71
|
+
return null;
|
|
72
|
+
if (Math.abs(n * base - x) > Math.max(1e-12, Math.abs(x) * 1e-14))
|
|
73
|
+
return null;
|
|
74
|
+
return BigInt(n);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* When `x` is `base` raised to a small integer power (π⁻¹ for a parsec-scale,
|
|
78
|
+
* ln 2 for a bit), that integer; otherwise null. The factor is compared
|
|
79
|
+
* exactly: `irrationalFactor` built it as `base ** n`, so the same expression
|
|
80
|
+
* reads it back.
|
|
81
|
+
*/
|
|
82
|
+
function irrationalExponent(x, base) {
|
|
83
|
+
if (!Number.isFinite(x) || x <= 0 || !Number.isFinite(base) || base <= 0)
|
|
84
|
+
return null;
|
|
85
|
+
for (let n = -8; n <= 8; n++) {
|
|
86
|
+
if (x === base ** n)
|
|
87
|
+
return n;
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
function toCore(s) {
|
|
92
|
+
let core = ratioExactScale(s.num, s.den);
|
|
93
|
+
const ir = s.irrational;
|
|
94
|
+
if (ir === 1)
|
|
95
|
+
return core;
|
|
96
|
+
const piPower = irrationalExponent(ir, Math.PI);
|
|
97
|
+
if (piPower !== null)
|
|
98
|
+
return multiplyExactScales(core, powerExactScale(PI_EXACT_SCALE, piPower));
|
|
99
|
+
const ln2Power = irrationalExponent(ir, Math.LN2);
|
|
100
|
+
if (ln2Power !== null)
|
|
101
|
+
return multiplyExactScales(core, powerExactScale(LN2_EXACT_SCALE, ln2Power));
|
|
102
|
+
const piMultiple = integerMultiple(ir, Math.PI);
|
|
103
|
+
if (piMultiple !== null) {
|
|
104
|
+
if (piMultiple !== 1n)
|
|
105
|
+
core = multiplyExactScales(core, ratioExactScale(piMultiple, 1n));
|
|
106
|
+
return multiplyExactScales(core, PI_EXACT_SCALE);
|
|
107
|
+
}
|
|
108
|
+
const ln2Multiple = integerMultiple(ir, Math.LN2);
|
|
109
|
+
if (ln2Multiple !== null) {
|
|
110
|
+
if (ln2Multiple !== 1n)
|
|
111
|
+
core = multiplyExactScales(core, ratioExactScale(ln2Multiple, 1n));
|
|
112
|
+
return multiplyExactScales(core, LN2_EXACT_SCALE);
|
|
113
|
+
}
|
|
114
|
+
return multiplyExactScales(core, exactScaleOf(ir));
|
|
115
|
+
}
|
|
35
116
|
/** The scale 1. @internal */
|
|
36
117
|
export const UNIT_SCALE = { num: 1n, den: 1n, irrational: 1 };
|
|
37
|
-
const DECIMAL = /^([+-]?)(\d*)(?:\.(\d*))?(?:[eE]([+-]?\d+))?$/;
|
|
38
118
|
/**
|
|
39
119
|
* The exact value of a decimal literal (`72`, `0.45359237`, `1.602176634e-19`),
|
|
40
120
|
* or null when `text` is not one.
|
|
41
121
|
* @internal
|
|
42
122
|
*/
|
|
43
123
|
export function decimalScale(text) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
return null;
|
|
47
|
-
const whole = m[2] ?? '';
|
|
48
|
-
const fraction = m[3] ?? '';
|
|
49
|
-
if (whole === '' && fraction === '')
|
|
50
|
-
return null;
|
|
51
|
-
const exponent = Number(m[4] ?? '0') - fraction.length;
|
|
52
|
-
if (!Number.isSafeInteger(exponent) || Math.abs(exponent) > 10_000)
|
|
53
|
-
return null;
|
|
54
|
-
let num = BigInt(whole + fraction);
|
|
55
|
-
if (m[1] === '-')
|
|
56
|
-
num = -num;
|
|
57
|
-
return exponent >= 0 ? make(num * 10n ** BigInt(exponent), 1n, 1) : make(num, 10n ** BigInt(-exponent), 1);
|
|
124
|
+
const scaled = decimalExactScale(text.trim());
|
|
125
|
+
return scaled === null ? null : fromCore(scaled);
|
|
58
126
|
}
|
|
59
127
|
/** The exact scale a finite JavaScript number was written as. @internal */
|
|
60
128
|
export function scaleOf(x) {
|
|
61
129
|
if (!Number.isFinite(x))
|
|
62
130
|
throw new RangeError(`exact scale: ${x} is not finite`);
|
|
63
|
-
return
|
|
131
|
+
return fromCore(exactScaleOf(x));
|
|
64
132
|
}
|
|
65
133
|
/** `num / den`, exactly. @internal */
|
|
66
134
|
export function ratioScale(num, den) {
|
|
67
|
-
return
|
|
135
|
+
return fromCore(ratioExactScale(num, den));
|
|
68
136
|
}
|
|
69
137
|
/** A factor no rational states, such as π or ln 2. @internal */
|
|
70
138
|
export function irrationalScale(x) {
|
|
@@ -74,108 +142,43 @@ export function irrationalScale(x) {
|
|
|
74
142
|
}
|
|
75
143
|
/** `a × b × …`. @internal */
|
|
76
144
|
export function multiplyScales(...factors) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
for (const f of factors) {
|
|
81
|
-
num *= f.num;
|
|
82
|
-
den *= f.den;
|
|
83
|
-
irrational *= f.irrational;
|
|
84
|
-
}
|
|
85
|
-
return make(num, den, irrational);
|
|
145
|
+
if (factors.length === 0)
|
|
146
|
+
return UNIT_SCALE;
|
|
147
|
+
return fromCore(multiplyExactScales(...factors.map(toCore)));
|
|
86
148
|
}
|
|
87
149
|
/** `a / b`. @internal */
|
|
88
150
|
export function divideScales(a, b) {
|
|
89
|
-
|
|
90
|
-
throw new RangeError('exact scale: division by zero');
|
|
91
|
-
return make(a.num * b.den, a.den * b.num, a.irrational / b.irrational);
|
|
151
|
+
return fromCore(divideExactScales(toCore(a), toCore(b)));
|
|
92
152
|
}
|
|
93
153
|
/**
|
|
94
154
|
* `a ^ n`. An integer power stays exact. A fractional power has no exact
|
|
95
|
-
* rational in general
|
|
155
|
+
* rational in general and throws.
|
|
96
156
|
* @internal
|
|
97
157
|
*/
|
|
98
158
|
export function powerScale(a, n) {
|
|
99
|
-
if (Number.isInteger(n))
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return n >= 0 ? up : divideScales(UNIT_SCALE, up);
|
|
103
|
-
}
|
|
104
|
-
return irrationalScale(scaleToNumber(a) ** n);
|
|
159
|
+
if (!Number.isInteger(n))
|
|
160
|
+
throw new RangeError(`exact scale: power ${n} is not an integer`);
|
|
161
|
+
return fromCore(powerExactScale(toCore(a), n));
|
|
105
162
|
}
|
|
106
163
|
/** `a + b`: exact when both are rational multiples of the same irrational factor. @internal */
|
|
107
164
|
export function addScales(a, b) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
/** The fewest significant digits kept before the sticky digit; far beyond a double's 17. */
|
|
113
|
-
const MIN_DIGITS = 40;
|
|
114
|
-
/** Decimal places of `1 / den` when it terminates (`den` = 2^a·5^b): max(a, b). Null otherwise. */
|
|
115
|
-
function terminatingPlaces(den) {
|
|
116
|
-
let d = den;
|
|
117
|
-
let twos = 0;
|
|
118
|
-
let fives = 0;
|
|
119
|
-
while (d % 2n === 0n) {
|
|
120
|
-
d /= 2n;
|
|
121
|
-
twos++;
|
|
122
|
-
}
|
|
123
|
-
while (d % 5n === 0n) {
|
|
124
|
-
d /= 5n;
|
|
125
|
-
fives++;
|
|
126
|
-
}
|
|
127
|
-
return d === 1n ? Math.max(twos, fives) : null;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* The rational `num / den` (`den > 0`), reduced, rounded once to the nearest double.
|
|
131
|
-
*
|
|
132
|
-
* A terminating quotient (`den` = 2^a·5^b) is written out exactly, every digit,
|
|
133
|
-
* and parsed: a tie between two doubles is a dyadic rational, so it always
|
|
134
|
-
* lands here and rounds half to even. Any other quotient is not a tie, and it
|
|
135
|
-
* is at least `1 / (den·2^54)` of its magnitude away from every tie; truncating
|
|
136
|
-
* it to `max(40, digits(den) + 20)` significant digits stays closer than that,
|
|
137
|
-
* and a sticky `1` puts the string strictly inside the truncation interval, so
|
|
138
|
-
* the string rounds the way the quotient does for any denominator.
|
|
139
|
-
*/
|
|
140
|
-
function rationalToNumber(num, den) {
|
|
141
|
-
if (num === 0n)
|
|
142
|
-
return 0;
|
|
143
|
-
const negative = num < 0n;
|
|
144
|
-
const g = gcd(num, den);
|
|
145
|
-
const a = (negative ? -num : num) / g;
|
|
146
|
-
den /= g;
|
|
147
|
-
const places = terminatingPlaces(den);
|
|
148
|
-
if (places !== null) {
|
|
149
|
-
const value = Number(`${(a * 10n ** BigInt(places)) / den}e-${places}`);
|
|
150
|
-
return negative ? -value : value;
|
|
151
|
-
}
|
|
152
|
-
const digits = Math.max(MIN_DIGITS, den.toString().length + 20);
|
|
153
|
-
const shift = digits - (a.toString().length - den.toString().length);
|
|
154
|
-
let q;
|
|
155
|
-
if (shift >= 0) {
|
|
156
|
-
q = (a * 10n ** BigInt(shift)) / den;
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
q = a / (den * 10n ** BigInt(-shift));
|
|
160
|
-
}
|
|
161
|
-
// Not terminating, so the remainder is never zero: the sticky digit is always due.
|
|
162
|
-
const value = Number(`${q.toString()}1e${-(shift + 1)}`);
|
|
163
|
-
return negative ? -value : value;
|
|
165
|
+
const sum = addExactScales(toCore(a), toCore(b));
|
|
166
|
+
if (sum === null)
|
|
167
|
+
throw new RangeError('exact scale: unlike irrational factors');
|
|
168
|
+
return fromCore(sum);
|
|
164
169
|
}
|
|
165
170
|
/** The scale as a double: the rational rounded once, times the irrational factor. @internal */
|
|
166
171
|
export function scaleToNumber(s) {
|
|
167
|
-
|
|
168
|
-
return s.irrational === 1 ? rational : rational * s.irrational;
|
|
172
|
+
return exactScaleToNumber(toCore(s));
|
|
169
173
|
}
|
|
170
|
-
const FACTOR = /^([^*/^\s]+)(?:\^([+-]?\d+))?$/;
|
|
171
174
|
/**
|
|
172
|
-
* The two sides of a unit text
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
175
|
+
* The two sides of a unit text under the single-solidus convention of
|
|
176
|
+
* ISO 80000-1: everything after the first `/` is the denominator, so a chain
|
|
177
|
+
* is one denominator (`km/s/Mpc` is km/(s·Mpc), and `W/m*K` is W/(m·K), not
|
|
178
|
+
* (W/m)·K). The denominator comes back as one `*`-joined product, each
|
|
179
|
+
* `/`-part's outer parentheses dropped. `units.ts` splits here, so a unit text
|
|
180
|
+
* reads a `/` the same way a scale expression does. MathTS states the same
|
|
181
|
+
* rule inside its `readScaleExpression` and does not export the split.
|
|
179
182
|
* @internal
|
|
180
183
|
*/
|
|
181
184
|
export function solidusSides(text) {
|
|
@@ -194,29 +197,18 @@ export function solidusSides(text) {
|
|
|
194
197
|
* each a decimal literal or a name with an optional integer power
|
|
195
198
|
* (`4.1868*453.59237/1.8`, `pi/180`, `lbf/inch^2`). A `/` follows the unit
|
|
196
199
|
* grammar ({@link solidusSides}): `a/b*c` is a/(b·c). `resolve` gives a name
|
|
197
|
-
* its scale and returns undefined for a name it does not know, which throws
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
+
* its scale and returns undefined for a name it does not know, which throws.
|
|
201
|
+
* A decimal literal is read digit for digit, so the result is the rational the
|
|
202
|
+
* text states.
|
|
203
|
+
*
|
|
204
|
+
* MathTS's `readScaleExpression` is the reader; this is the UPT-facing
|
|
205
|
+
* signature over it, the one adapter between its exact scale and UPT's.
|
|
200
206
|
* @internal
|
|
201
207
|
*/
|
|
202
208
|
export function readScaleExpression(text, resolve) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (m === null)
|
|
208
|
-
throw new RangeError(`exact scale: '${text}' is not a product of factors`);
|
|
209
|
-
const atom = m[1];
|
|
210
|
-
const base = decimalScale(atom) ?? resolve(atom);
|
|
211
|
-
if (base === undefined)
|
|
212
|
-
throw new RangeError(`exact scale: '${text}' names '${atom}', which is not a known scale`);
|
|
213
|
-
scale = multiplyScales(scale, m[2] === undefined ? base : powerScale(base, Number(m[2])));
|
|
214
|
-
}
|
|
215
|
-
return scale;
|
|
216
|
-
};
|
|
217
|
-
const trimmed = text.trim();
|
|
218
|
-
const { numerator, denominator } = solidusSides(trimmed);
|
|
219
|
-
const top = product(numerator);
|
|
220
|
-
return trimmed.includes('/') ? divideScales(top, product(denominator)) : top;
|
|
209
|
+
return uptExactScaleFromCore(mathtsReadScaleExpression(text.trim(), (name) => {
|
|
210
|
+
const scale = resolve(name);
|
|
211
|
+
return scale === undefined ? undefined : coreExactScaleFromUpt(scale);
|
|
212
|
+
}));
|
|
221
213
|
}
|
|
222
214
|
//# sourceMappingURL=exact-scale.js.map
|