universal-physics-tensor 9.0.0 → 11.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 +21 -17
- package/bin/upt.mjs +13 -1
- package/data/atlas/atlas.json +79 -68
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +24 -23
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +36 -31
- package/data/atlas/witness-results.json +11 -11
- package/data/bridge-catalog.json +1192 -1636
- package/data/bridge-catalog.schema.json +390 -135
- package/data/quantities.json +53 -19
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +33 -4
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +35 -18
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +12 -3
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +30 -21
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js +2 -2
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +3 -3
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +16 -8
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.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 +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +12 -24
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +8 -17
- 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 -42
- 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/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.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/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +107 -4
- 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/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +7 -12
- 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 -10
- 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 -36
- 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/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.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/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.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-carriage.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/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +25 -24
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +25 -24
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +107 -70
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +184 -101
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.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/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.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/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/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/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +2 -9
- 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 -52
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.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-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +38 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +80 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.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/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +17 -9
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +12 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +181 -13
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +74 -26
- 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/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +46 -3
- package/dist/bridges/evaluation-errors.d.ts.map +1 -1
- package/dist/bridges/evaluation-errors.js +40 -4
- 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 +17 -2
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +76 -28
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -4
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +101 -12
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +40 -4
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +128 -19
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.js.map +1 -1
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts.map +1 -1
- package/dist/bridges/notices.js +5 -5
- package/dist/bridges/notices.js.map +1 -1
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +6 -7
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +20 -50
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +27 -13
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/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/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.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 +8 -9
- 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 +5 -6
- 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 +6 -12
- 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 +38 -39
- 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/statistical-mechanics.js +5 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +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 +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +47 -64
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +22 -23
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +42 -21
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +64 -23
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.d.ts +3 -3
- package/dist/cases/brownian-sphere.d.ts.map +1 -1
- package/dist/cases/brownian-sphere.js +10 -9
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.d.ts.map +1 -1
- package/dist/cases/damped-resonator.js +8 -11
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.d.ts +1 -1
- package/dist/cases/kepler-rv.d.ts.map +1 -1
- package/dist/cases/kepler-rv.js +3 -2
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.d.ts +8 -3
- package/dist/cases/lumped-cooling.d.ts.map +1 -1
- package/dist/cases/lumped-cooling.js +22 -24
- package/dist/cases/lumped-cooling.js.map +1 -1
- 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/resistor-noise.js +7 -7
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.d.ts +0 -4
- package/dist/cases/skin-depth.d.ts.map +1 -1
- package/dist/cases/skin-depth.js +3 -7
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +30 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +47 -9
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +33 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.d.ts +8 -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 +2 -11
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +50 -35
- 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.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -14
- 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 +9 -8
- 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 +20 -20
- 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/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -20
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +60 -35
- 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 +20 -10
- 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 +14 -10
- 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 +108 -58
- 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 +16 -8
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -10
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +155 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +58 -20
- 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 +29 -7
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +105 -38
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -26
- 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 +23 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +9 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.js +31 -36
- 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 +5 -3
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +28 -3
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +42 -22
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +25 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.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 +23 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +15 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +17 -11
- 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 +7 -6
- 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 +40 -20
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +19 -7
- 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 +0 -7
- 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/top-level-help.js.map +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +7 -5
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +49 -14
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +42 -17
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.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/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +6 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.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 +14 -15
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +148 -91
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +40 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +134 -26
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +9 -10
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +33 -102
- 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/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +8 -25
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +10 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +11 -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-regime.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-surface.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 +166 -41
- 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.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +77 -11
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +194 -80
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +40 -10
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +47 -12
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js +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 +5 -9
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +38 -18
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -11
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +16 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +24 -59
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +28 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +96 -2
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-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.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 +14 -8
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -5
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +29 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +57 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +20 -35
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.d.ts +4 -2
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +20 -9
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +17 -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 +5 -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/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +16 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +7 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +48 -23
- 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 +27 -1
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +53 -30
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +18 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +10 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +24 -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/metadata.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +22 -9
- 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 +255 -0
- package/dist/composition/probe/power-law.js.map +1 -0
- package/dist/composition/probe/problem.d.ts +12 -1
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +242 -48
- 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 +6 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +9 -7
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.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 +35 -12
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +241 -184
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +17 -0
- package/dist/composition/probe/t-tail.d.ts.map +1 -0
- package/dist/composition/probe/t-tail.js +32 -0
- package/dist/composition/probe/t-tail.js.map +1 -0
- package/dist/composition/probe/types.d.ts +6 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +51 -13
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +110 -58
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity-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/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/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 +23 -0
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +16 -6
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +36 -10
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +2 -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/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/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 +35 -35
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +52 -37
- 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/flux-rules.js +1 -1
- package/dist/core/flux-rules.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 +3 -1
- package/dist/core/json-schema.d.ts.map +1 -1
- package/dist/core/json-schema.js +41 -16
- package/dist/core/json-schema.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -16
- 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/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +64 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +5 -5
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +10 -6
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +43 -86
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +40 -109
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +16 -5
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +19 -4
- 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 +12 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +17 -5
- 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.js.map +1 -1
- package/dist/dimensional/bridge-check.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/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts.map +1 -1
- package/dist/dimensional/constant-rows.js +17 -13
- package/dist/dimensional/constant-rows.js.map +1 -1
- package/dist/dimensional/constants.d.ts +5 -6
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +5 -6
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.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/dimension-spec.d.ts +13 -7
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +49 -23
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +4 -2
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +3 -17
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +0 -17
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +8 -8
- package/dist/dimensional/exact-scale.js.map +1 -1
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +2 -3
- 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 +45 -12
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +0 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +13 -0
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +14 -6
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +9 -0
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +20 -3
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.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-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts.map +1 -1
- package/dist/dimensional/unit-data.js +11 -7
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +38 -20
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +59 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +11 -6
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +126 -122
- package/dist/numerical/binding-value.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.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +36 -13
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +9 -5
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -8
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
- package/dist/numerical/evaluator-uncertainty.js +19 -2
- package/dist/numerical/evaluator-uncertainty.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/formula-contract.d.ts +63 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +61 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +8 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +58 -36
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +5 -2
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.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/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +41 -42
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +16 -25
- 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-ic.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 +9 -2
- 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 +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +19 -4
- 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 +25 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +180 -286
- 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.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +30 -5
- 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/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +28 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +44 -15
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +18 -5
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +5 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +16 -20
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"norm-transport-witness.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"norm-transport-witness.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport-witness.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The measurement behind W1τ, `ab-spring-lc`'s relative-period norm transport\n * (`./norm-transport.ts`).\n *\n * The pendulum is pushed through the bridge's map q(t_LC) = (q0/θ0)·θ(t),\n * t_LC = t·ω_s/ω_LC, and integrated as its OWN equation in circuit time,\n * q'' = −ω_LC² (q0/θ0) sin(θ0 q/q0). Its period is measured by RK4 and compared\n * with the LC circuit's period 2π√(LC). Nothing here multiplies a pendulum\n * period by a factor: the image is solved where the circuit lives.\n *\n * @module atlas/oscillators/norm-transport-witness\n * @internal\n */\n\nimport { rk4Step } from './pendulum-motion.js';\nimport { W1TAU_FIXTURE } from './norm-transport.js';\n\n/** The circuit and release a measurement uses. @internal */\nexport interface TransportCircuit {\n readonly L: number;\n readonly C: number;\n /** Release charge, > 0. */\n readonly q0: number;\n}\n\n/**\n * First downward zero crossing of the release from rest at `q0 > 0`, by cubic\n * Hermite interpolation of the bracketing RK4 step (values and derivatives at\n * both ends), refined by Newton. Released from rest, it is a quarter period.\n *\n * @internal\n */\nexport function quarterPeriod(accel: (q: number) => number, q0: number, h: number, maxSteps: number): number {\n let x = q0;\n let v = 0;\n for (let i = 0; i < maxSteps; i++) {\n const [nx, nv] = rk4Step(x, v, h, accel);\n if (x > 0 && nx <= 0) {\n const [p0, m0, p1, m1] = [x, v * h, nx, nv * h];\n const p = (s: number): number =>\n (2 * s ** 3 - 3 * s ** 2 + 1) * p0 + (s ** 3 - 2 * s ** 2 + s) * m0 + (-2 * s ** 3 + 3 * s ** 2) * p1 + (s ** 3 - s ** 2) * m1;\n const dp = (s: number): number =>\n (6 * s ** 2 - 6 * s) * p0 + (3 * s ** 2 - 4 * s + 1) * m0 + (-6 * s ** 2 + 6 * s) * p1 + (3 * s ** 2 - 2 * s) * m1;\n let s = p0 / (p0 - p1);\n for (let k = 0; k < 8; k++) s -= p(s) / dp(s);\n return (i + s) * h;\n }\n x = nx;\n v = nv;\n }\n return Number.NaN;\n}\n\n/**\n * T_image / T_LC − 1: the relative period error of the pendulum's image against\n * the circuit, with `stepsPerPeriod` RK4 steps per LC period.\n *\n * @returns NaN when `theta0` is not in (0, π) or no crossing is found.\n * @internal\n */\nexport function measureTransportedPeriodError(\n theta0: number,\n stepsPerPeriod: number,\n circuit: TransportCircuit = W1TAU_FIXTURE,\n): number {\n if (!(theta0 > 0 && theta0 < Math.PI) || !(circuit.q0 > 0)) return Number.NaN;\n const omegaLC = 1 / Math.sqrt(circuit.L * circuit.C);\n const tLC = (2 * Math.PI) / omegaLC;\n const accel = (q: number): number => -(omegaLC ** 2) * (circuit.q0 / theta0) * Math.sin((theta0 * q) / circuit.q0);\n const quarter = quarterPeriod(accel, circuit.q0, tLC / stepsPerPeriod, 2 * stepsPerPeriod);\n return (4 * quarter) / tLC - 1;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"norm-transport.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAE5F,gBAAgB;AAChB,MAAM,CAAC,MAAM,mCAAmC,GAAkB;IAChE,EAAE,EAAE,8BAA8B;IAClC,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,uGAAuG;IAC/G,UAAU,EACR,4GAA4G;QAC5G,yEAAyE;IAC3E,OAAO,EAAE;QACP,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,IAAI;QACb,OAAO,EACL,mGAAmG;YACnG,0DAA0D;QAC5D,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KACjC;IACD,UAAU,EAAE,wGAAwG;IACpH,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EACP,4GAA4G;YAC5G,yGAAyG;YACzG,sFAAsF;KACzF;IACD,KAAK,EAAE,uBAAuB;CAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"norm-transport.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norm-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW,CAAC;AAE5F,gBAAgB;AAChB,MAAM,CAAC,MAAM,mCAAmC,GAAkB;IAChE,EAAE,EAAE,8BAA8B;IAClC,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,uGAAuG;IAC/G,UAAU,EACR,4GAA4G;QAC5G,yEAAyE;IAC3E,OAAO,EAAE;QACP,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,IAAI;QACb,OAAO,EACL,mGAAmG;YACnG,0DAA0D;QAC5D,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KACjC;IACD,UAAU,EAAE,wGAAwG;IACpH,OAAO,EAAE;QACP,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EACP,4GAA4G;YAC5G,yGAAyG;YACzG,sFAAsF;KACzF;IACD,KAAK,EAAE,uBAAuB;CAC/B,CAAC","sourcesContent":["/**\n * `ab-spring-lc`'s declared norm transport: the spring → LC map carries a bound\n * in RELATIVE PERIOD ERROR unchanged. Design:\n * `docs/planning/ADR-transported-norm-composition.md`.\n *\n * The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC:\n * an amplitude scale and a uniform time scale. A period is a time, so every\n * period on the spring side is multiplied by the same ω_s/ω_LC on the circuit\n * side, and the ratio T_full/T_reduced − 1 is unchanged. K = 1, with no\n * additive term.\n *\n * Declared in ONE direction and ONE norm:\n *\n * - LC → spring is not declared. The same algebra gives K = 1 there too, but no\n * witness checks it and no route in the atlas uses it, and a declaration\n * without its own witness is what the ADR forbids.\n * - The absolute period error (factor ω_s/ω_LC) and the trajectory error\n * (factor q0/x0, metres to coulombs) are not declared: the map is not an\n * isometry of either, and a route in those norms stays refused.\n *\n * @module atlas/oscillators/norm-transport\n * @internal\n */\n\nimport type { NormTransport } from '../types.js';\nimport { RELATIVE_PERIOD_NORM } from './norms.js';\n\n/** @internal */\nexport const SPRING_LC_TRANSPORT_TEST = 'tests/atlas/spring-lc-norm-transport.test.ts';\n\n/**\n * The circuit W1τ integrates in: L = 0.5, C = 0.25 (W1a's circuit), so\n * ω_LC = 2√2 while the spring side's ω_s = 2 — the time map is not the identity.\n * q0 > 0 is the release charge, and θ0 = 0.5 is the edge of ab-pendulum-linear's\n * domain, where its error is largest.\n *\n * @internal\n */\nexport const W1TAU_FIXTURE = { L: 0.5, C: 0.25, q0: 1e-3, theta0: 0.5, omegaS: 2 } as const;\n\n/** @internal */\nexport const SPRING_LC_RELATIVE_PERIOD_TRANSPORT: NormTransport = {\n id: 'nt-spring-lc-relative-period',\n fromModel: 'model-spring',\n toModel: 'model-lc',\n from: RELATIVE_PERIOD_NORM,\n to: RELATIVE_PERIOD_NORM,\n K: 1,\n KAt: () => 1,\n domain: \"every m, k, L, C > 0 and x0, q0 ≠ 0 (the bridge's side conditions); K is the same constant throughout\",\n derivation:\n 'q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC scales every period by the same ω_s/ω_LC, so a ratio of two ' +\n 'periods, T_full/T_reduced − 1, is unchanged: K = 1 and nothing is added',\n timeMap: {\n map: 't_LC = t·ω_s/ω_LC, one constant factor for every t',\n uniform: true,\n horizon:\n 'a horizon that reads time only through t/T0 holds unchanged with t read on the circuit clock and ' +\n 'T0 = 2π√(LC): a uniform time scale leaves t/T0 invariant',\n restateHorizon: (holds) => holds,\n },\n uniformity: \"preserved: K is one constant over the whole domain, so the incoming bound's uniformity holds unchanged\",\n witness: {\n id: 'W1τ',\n kind: 'numeric',\n test: SPRING_LC_TRANSPORT_TEST,\n tolerance:\n \"RK4 relative period error of the pendulum's image q'' = −ω_LC²(q0/θ0) sin(θ0 q/q0) against the LC period, \" +\n 'in circuit time (L = 0.5, C = 0.25, ω_LC = 2√2 ≠ ω_s = 2), at 640 steps per LC period within 1e-9 of K ' +\n 'times the closed-form elliptic error at θ0 = 0.5; 160 steps is the coarse resolution',\n },\n basis: 'numerically-supported',\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"norms.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qEAAqE,CAAC"}
|
|
1
|
+
{"version":3,"file":"norms.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/norms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qEAAqE,CAAC","sourcesContent":["/**\n * Norm names the oscillator records share, so a bound and the transport that\n * carries it name the same norm by the same string. `boundPath` compares norms\n * verbatim, and a norm spelled twice is a norm that can drift.\n *\n * @module atlas/oscillators/norms\n * @internal\n */\n\n/** The norm `ab-pendulum-linear` states its bound in. @internal */\nexport const RELATIVE_PERIOD_NORM = 'relative period error, normalized by the value of the reduced model';\n"]}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* @module atlas/oscillators/pendulum-motion
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
|
+
/** 2π: one period of the angle variable, the T0 = 1 time unit's ω0. @internal */
|
|
13
|
+
export declare const TWO_PI: number;
|
|
12
14
|
/** ω0² at T0 = 1. @internal */
|
|
13
15
|
export declare const W2: number;
|
|
14
16
|
/** @internal */
|
|
@@ -16,8 +18,8 @@ export declare const pendulumAccel: (x: number) => number;
|
|
|
16
18
|
/** @internal */
|
|
17
19
|
export declare const linearAccel: (x: number) => number;
|
|
18
20
|
/**
|
|
19
|
-
* One fixed step of x″ = accel(x)
|
|
20
|
-
* classical RK4 step
|
|
21
|
+
* One fixed step of x″ = accel(x): `integrateRK4` (MathTS `solveODESystem`
|
|
22
|
+
* with `dt`, the classical RK4 step) over one step of length `h`.
|
|
21
23
|
*
|
|
22
24
|
* @internal
|
|
23
25
|
*/
|
|
@@ -27,17 +29,38 @@ export declare function crossingTimes(accel: (x: number) => number, theta0: numb
|
|
|
27
29
|
/** The phase at `t`, interpolated through the anchors (0, 0) and (c_k, π/2 + kπ). @internal */
|
|
28
30
|
export declare function phaseAt(crossings: readonly number[], t: number): number;
|
|
29
31
|
/**
|
|
30
|
-
* θ0 in [0, π) whose exact relative period error is `eps`, by
|
|
31
|
-
* strictly increasing `pendulumPeriodErrorAt`.
|
|
32
|
+
* θ0 in [0, π) whose exact relative period error is `eps`, by MathTS
|
|
33
|
+
* `findRoot` (Brent) on the strictly increasing `pendulumPeriodErrorAt`.
|
|
34
|
+
*
|
|
35
|
+
* The residual is solved as `err/eps − 1`, of order 1, so `findRoot`'s one
|
|
36
|
+
* `tol` (it stops on the residual AND on the bracket width) cannot stop on a
|
|
37
|
+
* residual that is small only because `eps` is. The upper end is just below
|
|
38
|
+
* π, where the error is finite; at π it is `Infinity`, which Brent's
|
|
39
|
+
* interpolation cannot take.
|
|
32
40
|
*
|
|
33
41
|
* @returns NaN for a negative or non-finite `eps`.
|
|
34
42
|
* @internal
|
|
35
43
|
*/
|
|
36
44
|
export declare function theta0OfPeriodError(eps: number): number;
|
|
37
45
|
/**
|
|
38
|
-
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2)
|
|
39
|
-
* K
|
|
46
|
+
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2): K = K(m) and
|
|
47
|
+
* K′ = K(1 − m) at the parameter m = k², both MathTS `ellipticK` (whose
|
|
48
|
+
* route is the AGM, so K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2))).
|
|
40
49
|
* @internal
|
|
41
50
|
*/
|
|
42
51
|
export declare function pendulumNome(theta0: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* The exact pendulum released from rest at `theta0`, in units of T0 = 1
|
|
54
|
+
* (ω0 = 2π): θ(t) = 2 asin(k sn(K − ω0 t, m)), with k = sin(θ0/2), the
|
|
55
|
+
* parameter m = k², and K = K(m) the quarter period in the sn argument, read
|
|
56
|
+
* from `pendulumPeriodErrorAt` as (π/2)(1 + ε) so one `ellipticK` read
|
|
57
|
+
* serves both. At t = 0, sn K = 1 and θ = θ0; the period is T = 4K/ω0 =
|
|
58
|
+
* (1 + ε) T0. MathTS `jacobiSN` is a plain number function of (u, m). A
|
|
59
|
+
* closed form, independent of every integrator: `tests/atlas/pendulum-exact.test.ts`
|
|
60
|
+
* checks it against the cn·dn identities (θ″ = −2ω0² k sn u dn u, sin θ =
|
|
61
|
+
* 2k sn u dn u) and against RK4.
|
|
62
|
+
*
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
export declare function exactPendulumAngle(theta0: number, t: number): number;
|
|
43
66
|
//# sourceMappingURL=pendulum-motion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendulum-motion.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"pendulum-motion.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,iFAAiF;AACjF,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,+BAA+B;AAC/B,eAAO,MAAM,EAAE,QAAc,CAAC;AAC9B,gBAAgB;AAChB,eAAO,MAAM,aAAa,MAAO,MAAM,KAAG,MAA2B,CAAC;AACtE,gBAAgB;AAChB,eAAO,MAAM,WAAW,MAAO,MAAM,KAAG,MAAiB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGvG;AAqBD,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAY7H;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKpE"}
|
|
@@ -9,50 +9,46 @@
|
|
|
9
9
|
* @module atlas/oscillators/pendulum-motion
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { ellipticK, findRoot, jacobiSN } from '@danielsimonjr/mathts-functions';
|
|
13
|
+
import { numberFrom } from '../../core/mathts-read.js';
|
|
14
|
+
import { integrateRK4 } from '../../numerical/null-ray-integrator.js';
|
|
15
|
+
import { pendulumPeriodErrorAt } from './bridges-limits.js';
|
|
16
|
+
/** 2π: one period of the angle variable, the T0 = 1 time unit's ω0. @internal */
|
|
17
|
+
export const TWO_PI = 2 * Math.PI;
|
|
14
18
|
/** ω0² at T0 = 1. @internal */
|
|
15
|
-
export const W2 =
|
|
19
|
+
export const W2 = TWO_PI ** 2;
|
|
16
20
|
/** @internal */
|
|
17
21
|
export const pendulumAccel = (x) => -W2 * Math.sin(x);
|
|
18
22
|
/** @internal */
|
|
19
23
|
export const linearAccel = (x) => -W2 * x;
|
|
20
24
|
/**
|
|
21
|
-
* One fixed step of x″ = accel(x)
|
|
22
|
-
* classical RK4 step
|
|
25
|
+
* One fixed step of x″ = accel(x): `integrateRK4` (MathTS `solveODESystem`
|
|
26
|
+
* with `dt`, the classical RK4 step) over one step of length `h`.
|
|
23
27
|
*
|
|
24
28
|
* @internal
|
|
25
29
|
*/
|
|
26
30
|
export function rk4Step(x, v, h, accel) {
|
|
27
|
-
const
|
|
28
|
-
const end = sol.y[sol.y.length - 1] ?? [x, v];
|
|
31
|
+
const end = integrateRK4((_t, y) => [y[1], accel(y[0])], [x, v], 0, h, 1);
|
|
29
32
|
return [end[0], end[1]];
|
|
30
33
|
}
|
|
31
34
|
/**
|
|
32
35
|
* The root in (0, h] of x(τ), the position one partial RK4 step of length τ
|
|
33
|
-
* from (x, v), by
|
|
36
|
+
* from (x, v), by MathTS `findRoot` (Brent) on the bracket (0, x), (h, nx).
|
|
34
37
|
*
|
|
35
38
|
* The crossing is then located to the integrator's own truncation error,
|
|
36
39
|
* rather than to the O(h³) error of a straight line between the two steps.
|
|
37
40
|
* That truncation error is nearly the same for the pendulum and the linear
|
|
38
41
|
* oscillator at small θ0, so it cancels in their phase difference; the
|
|
39
|
-
* interpolation error does not.
|
|
42
|
+
* interpolation error does not. `findRoot` evaluates both ends, and a step
|
|
43
|
+
* of length 0 is the start itself (`solveODESystem` cannot take `dt = 0`).
|
|
44
|
+
* Its `tol` stops on the residual (an angle) and on the bracket width (a
|
|
45
|
+
* time in T0), both at 1e-12, below the integrator's error either way.
|
|
40
46
|
*/
|
|
41
47
|
function refineCrossing(x, v, nx, h, accel) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
for (let k = 0; k < 50 && fb !== 0 && fb !== fa; k++) {
|
|
47
|
-
const c = b - (fb * (b - a)) / (fb - fa);
|
|
48
|
-
if (!(c >= -h && c <= 2 * h) || c === b)
|
|
49
|
-
break;
|
|
50
|
-
a = b;
|
|
51
|
-
fa = fb;
|
|
52
|
-
b = c;
|
|
53
|
-
fb = rk4Step(x, v, c, accel)[0];
|
|
54
|
-
}
|
|
55
|
-
return b;
|
|
48
|
+
if (nx === 0)
|
|
49
|
+
return h;
|
|
50
|
+
const position = (tau) => (tau === 0 ? x : tau === h ? nx : rk4Step(x, v, tau, accel)[0]);
|
|
51
|
+
return findRoot(position, 0, h, { tol: 1e-12, maxIter: 200 });
|
|
56
52
|
}
|
|
57
53
|
/** Zero-crossing times of a release from rest at `theta0`, over `periods` of T0 = 1. @internal */
|
|
58
54
|
export function crossingTimes(accel, theta0, stepsPerPeriod, periods) {
|
|
@@ -84,8 +80,14 @@ export function phaseAt(crossings, t) {
|
|
|
84
80
|
return Number.NaN;
|
|
85
81
|
}
|
|
86
82
|
/**
|
|
87
|
-
* θ0 in [0, π) whose exact relative period error is `eps`, by
|
|
88
|
-
* strictly increasing `pendulumPeriodErrorAt`.
|
|
83
|
+
* θ0 in [0, π) whose exact relative period error is `eps`, by MathTS
|
|
84
|
+
* `findRoot` (Brent) on the strictly increasing `pendulumPeriodErrorAt`.
|
|
85
|
+
*
|
|
86
|
+
* The residual is solved as `err/eps − 1`, of order 1, so `findRoot`'s one
|
|
87
|
+
* `tol` (it stops on the residual AND on the bracket width) cannot stop on a
|
|
88
|
+
* residual that is small only because `eps` is. The upper end is just below
|
|
89
|
+
* π, where the error is finite; at π it is `Infinity`, which Brent's
|
|
90
|
+
* interpolation cannot take.
|
|
89
91
|
*
|
|
90
92
|
* @returns NaN for a negative or non-finite `eps`.
|
|
91
93
|
* @internal
|
|
@@ -95,28 +97,46 @@ export function theta0OfPeriodError(eps) {
|
|
|
95
97
|
return Number.NaN;
|
|
96
98
|
if (eps === 0)
|
|
97
99
|
return 0;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
lo = mid;
|
|
106
|
-
else
|
|
107
|
-
hi = mid;
|
|
108
|
-
}
|
|
109
|
-
return (lo + hi) / 2;
|
|
100
|
+
const hi = Math.PI * (1 - Number.EPSILON);
|
|
101
|
+
if (pendulumPeriodErrorAt({ theta0: hi }) <= eps)
|
|
102
|
+
return hi;
|
|
103
|
+
return findRoot((theta0) => pendulumPeriodErrorAt({ theta0 }) / eps - 1, 0, hi, {
|
|
104
|
+
tol: 4 * Number.EPSILON,
|
|
105
|
+
maxIter: 200,
|
|
106
|
+
});
|
|
110
107
|
}
|
|
111
108
|
/**
|
|
112
|
-
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2)
|
|
113
|
-
* K
|
|
109
|
+
* The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2): K = K(m) and
|
|
110
|
+
* K′ = K(1 − m) at the parameter m = k², both MathTS `ellipticK` (whose
|
|
111
|
+
* route is the AGM, so K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2))).
|
|
114
112
|
* @internal
|
|
115
113
|
*/
|
|
116
114
|
export function pendulumNome(theta0) {
|
|
117
115
|
const k = Math.sin(Math.abs(theta0) / 2);
|
|
118
116
|
if (k === 0)
|
|
119
117
|
return 0;
|
|
120
|
-
|
|
118
|
+
const K = numberFrom('ellipticK', ellipticK(k * k));
|
|
119
|
+
const Kp = numberFrom('ellipticK', ellipticK(Math.cos(theta0 / 2) ** 2));
|
|
120
|
+
return Math.exp((-Math.PI * Kp) / K);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The exact pendulum released from rest at `theta0`, in units of T0 = 1
|
|
124
|
+
* (ω0 = 2π): θ(t) = 2 asin(k sn(K − ω0 t, m)), with k = sin(θ0/2), the
|
|
125
|
+
* parameter m = k², and K = K(m) the quarter period in the sn argument, read
|
|
126
|
+
* from `pendulumPeriodErrorAt` as (π/2)(1 + ε) so one `ellipticK` read
|
|
127
|
+
* serves both. At t = 0, sn K = 1 and θ = θ0; the period is T = 4K/ω0 =
|
|
128
|
+
* (1 + ε) T0. MathTS `jacobiSN` is a plain number function of (u, m). A
|
|
129
|
+
* closed form, independent of every integrator: `tests/atlas/pendulum-exact.test.ts`
|
|
130
|
+
* checks it against the cn·dn identities (θ″ = −2ω0² k sn u dn u, sin θ =
|
|
131
|
+
* 2k sn u dn u) and against RK4.
|
|
132
|
+
*
|
|
133
|
+
* @internal
|
|
134
|
+
*/
|
|
135
|
+
export function exactPendulumAngle(theta0, t) {
|
|
136
|
+
const k = Math.sin(theta0 / 2);
|
|
137
|
+
if (k === 0)
|
|
138
|
+
return 0;
|
|
139
|
+
const K = (Math.PI / 2) * (1 + pendulumPeriodErrorAt({ theta0 }));
|
|
140
|
+
return 2 * Math.asin(k * jacobiSN(K - TWO_PI * t, k * k));
|
|
121
141
|
}
|
|
122
142
|
//# sourceMappingURL=pendulum-motion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendulum-motion.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pendulum-motion.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/pendulum-motion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The pendulum and its linear oscillator, integrated and read off, for the\n * witnesses of `ab-pendulum-linear`'s declared translations. Time is in units\n * of T0 (ω0 = 2π); both motions are released from rest at θ0.\n *\n * Also the closed forms those translations are built from: θ0 recovered from\n * the bound's ε, and the nome q of the pendulum's elliptic modulus.\n *\n * @module atlas/oscillators/pendulum-motion\n * @internal\n */\n\nimport { ellipticK, findRoot, jacobiSN } from '@danielsimonjr/mathts-functions';\nimport { numberFrom } from '../../core/mathts-read.js';\nimport { integrateRK4 } from '../../numerical/null-ray-integrator.js';\nimport { pendulumPeriodErrorAt } from './bridges-limits.js';\n\n/** 2π: one period of the angle variable, the T0 = 1 time unit's ω0. @internal */\nexport const TWO_PI = 2 * Math.PI;\n/** ω0² at T0 = 1. @internal */\nexport const W2 = TWO_PI ** 2;\n/** @internal */\nexport const pendulumAccel = (x: number): number => -W2 * Math.sin(x);\n/** @internal */\nexport const linearAccel = (x: number): number => -W2 * x;\n\n/**\n * One fixed step of x″ = accel(x): `integrateRK4` (MathTS `solveODESystem`\n * with `dt`, the classical RK4 step) over one step of length `h`.\n *\n * @internal\n */\nexport function rk4Step(x: number, v: number, h: number, accel: (x: number) => number): [number, number] {\n const end = integrateRK4((_t, y) => [y[1]!, accel(y[0]!)], [x, v], 0, h, 1);\n return [end[0]!, end[1]!];\n}\n\n/**\n * The root in (0, h] of x(τ), the position one partial RK4 step of length τ\n * from (x, v), by MathTS `findRoot` (Brent) on the bracket (0, x), (h, nx).\n *\n * The crossing is then located to the integrator's own truncation error,\n * rather than to the O(h³) error of a straight line between the two steps.\n * That truncation error is nearly the same for the pendulum and the linear\n * oscillator at small θ0, so it cancels in their phase difference; the\n * interpolation error does not. `findRoot` evaluates both ends, and a step\n * of length 0 is the start itself (`solveODESystem` cannot take `dt = 0`).\n * Its `tol` stops on the residual (an angle) and on the bracket width (a\n * time in T0), both at 1e-12, below the integrator's error either way.\n */\nfunction refineCrossing(x: number, v: number, nx: number, h: number, accel: (x: number) => number): number {\n if (nx === 0) return h;\n const position = (tau: number): number => (tau === 0 ? x : tau === h ? nx : rk4Step(x, v, tau, accel)[0]);\n return findRoot(position, 0, h, { tol: 1e-12, maxIter: 200 });\n}\n\n/** Zero-crossing times of a release from rest at `theta0`, over `periods` of T0 = 1. @internal */\nexport function crossingTimes(accel: (x: number) => number, theta0: number, stepsPerPeriod: number, periods: number): number[] {\n const h = 1 / stepsPerPeriod;\n const out: number[] = [];\n let x = theta0;\n let v = 0;\n for (let i = 0; i < stepsPerPeriod * periods; i++) {\n const [nx, nv] = rk4Step(x, v, h, accel);\n if (nx === 0 || x > 0 !== nx > 0) out.push(i * h + refineCrossing(x, v, nx, h, accel));\n x = nx;\n v = nv;\n }\n return out;\n}\n\n/** The phase at `t`, interpolated through the anchors (0, 0) and (c_k, π/2 + kπ). @internal */\nexport function phaseAt(crossings: readonly number[], t: number): number {\n let prevT = 0;\n let prevPhase = 0;\n for (let k = 0; k < crossings.length; k++) {\n const c = crossings[k]!;\n const phase = Math.PI / 2 + k * Math.PI;\n if (t <= c) return prevPhase + ((phase - prevPhase) * (t - prevT)) / (c - prevT);\n prevT = c;\n prevPhase = phase;\n }\n return Number.NaN;\n}\n\n/**\n * θ0 in [0, π) whose exact relative period error is `eps`, by MathTS\n * `findRoot` (Brent) on the strictly increasing `pendulumPeriodErrorAt`.\n *\n * The residual is solved as `err/eps − 1`, of order 1, so `findRoot`'s one\n * `tol` (it stops on the residual AND on the bracket width) cannot stop on a\n * residual that is small only because `eps` is. The upper end is just below\n * π, where the error is finite; at π it is `Infinity`, which Brent's\n * interpolation cannot take.\n *\n * @returns NaN for a negative or non-finite `eps`.\n * @internal\n */\nexport function theta0OfPeriodError(eps: number): number {\n if (!Number.isFinite(eps) || eps < 0) return Number.NaN;\n if (eps === 0) return 0;\n const hi = Math.PI * (1 - Number.EPSILON);\n if (pendulumPeriodErrorAt({ theta0: hi }) <= eps) return hi;\n return findRoot((theta0) => pendulumPeriodErrorAt({ theta0 }) / eps - 1, 0, hi, {\n tol: 4 * Number.EPSILON,\n maxIter: 200,\n });\n}\n\n/**\n * The nome q = exp(−π K′/K) of the modulus k = sin(θ0/2): K = K(m) and\n * K′ = K(1 − m) at the parameter m = k², both MathTS `ellipticK` (whose\n * route is the AGM, so K′/K = AGM(1, cos(θ0/2)) / AGM(1, sin(θ0/2))).\n * @internal\n */\nexport function pendulumNome(theta0: number): number {\n const k = Math.sin(Math.abs(theta0) / 2);\n if (k === 0) return 0;\n const K = numberFrom('ellipticK', ellipticK(k * k));\n const Kp = numberFrom('ellipticK', ellipticK(Math.cos(theta0 / 2) ** 2));\n return Math.exp((-Math.PI * Kp) / K);\n}\n\n/**\n * The exact pendulum released from rest at `theta0`, in units of T0 = 1\n * (ω0 = 2π): θ(t) = 2 asin(k sn(K − ω0 t, m)), with k = sin(θ0/2), the\n * parameter m = k², and K = K(m) the quarter period in the sn argument, read\n * from `pendulumPeriodErrorAt` as (π/2)(1 + ε) so one `ellipticK` read\n * serves both. At t = 0, sn K = 1 and θ = θ0; the period is T = 4K/ω0 =\n * (1 + ε) T0. MathTS `jacobiSN` is a plain number function of (u, m). A\n * closed form, independent of every integrator: `tests/atlas/pendulum-exact.test.ts`\n * checks it against the cn·dn identities (θ″ = −2ω0² k sn u dn u, sin θ =\n * 2k sn u dn u) and against RK4.\n *\n * @internal\n */\nexport function exactPendulumAngle(theta0: number, t: number): number {\n const k = Math.sin(theta0 / 2);\n if (k === 0) return 0;\n const K = (Math.PI / 2) * (1 + pendulumPeriodErrorAt({ theta0 }));\n return 2 * Math.asin(k * jacobiSN(K - TWO_PI * t, k * k));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-carriage.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"phase-carriage.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-carriage.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ab-spring-lc`'s declaration that its map carries the PHASE unchanged, so\n * `ab-pendulum-linear`'s phase translation holds on the path\n * pendulum → spring → LC.\n *\n * The bridge's composed map is q(t_LC) = (q0/x0)·x(t) with t_LC = t·ω_s/ω_LC.\n * The charge is a fixed nonzero multiple of the displacement at the mapped\n * time, so the two share every zero crossing and turning point, and the angle\n * variable (0 at release from rest, 2π per period, uniform in time) of the\n * circuit at t_LC equals the spring's at t. A phase error against the spring\n * at t is therefore the same phase error against the circuit at t_LC: nothing\n * is added and nothing truncated.\n *\n * This is a claim about the phase only. It says nothing about the position\n * error — x and q are different quantities in different units, and a bound in\n * rad on the angle does not become one on the charge — so `ab-spring-lc`\n * declares no carriage for `position`.\n *\n * The witness W1φ integrates the two oscillators of W1a (m = 2, k = 8,\n * x0 = 0.37 and L = 0.5, C = 0.25, q0 = −1.9: ω_s = 2, ω_LC = 2√2, and a\n * NEGATIVE ratio q0/x0) by RK4 at the same step in physical time, and\n * compares the circuit's phase at the mapped time with the spring's at every\n * spring zero crossing. The angle variable of each motion is measured from its\n * own release, so the sign of q0/x0 does not enter.\n *\n * @module atlas/oscillators/phase-carriage\n * @internal\n */\n\nimport type { ObservableCarriage } from '../translation.js';\nimport type { NumericWitnessSpec } from '../witness-numeric.js';\nimport { phaseAt, rk4Step } from './pendulum-motion.js';\n\nconst [M, K, L, C, X0, Q0] = [2, 8, 0.5, 0.25, 0.37, -1.9];\nconst OMEGA_S = Math.sqrt(K / M);\nconst OMEGA_LC = Math.sqrt(1 / (L * C));\nconst SPRING_PERIODS = 20;\n\n/** Zero crossings of u″ = −ω²u from rest at `u0`, stepping `h` in the oscillator's own time. */\nfunction crossings(omega: number, u0: number, h: number, tEnd: number): number[] {\n const out: number[] = [];\n let x = u0;\n let v = 0;\n const w2 = omega * omega;\n for (let i = 0; i * h < tEnd; i++) {\n const [nx, nv] = rk4Step(x, v, h, (s) => -w2 * s);\n if (nx === 0 || x > 0 !== nx > 0) out.push(i * h + (h * x) / (x - nx));\n x = nx;\n v = nv;\n }\n return out;\n}\n\n/**\n * max over the spring's zero crossings c_k of |φ_LC(timeScale · c_k) − (π/2 + kπ)|,\n * both integrated at `stepsPerSpringPeriod` steps of the spring's period.\n * @internal\n */\nexport function measureCarriedPhaseError(stepsPerSpringPeriod: number, timeScale: number): number {\n const tSpring = SPRING_PERIODS * ((2 * Math.PI) / OMEGA_S);\n const h = (2 * Math.PI) / OMEGA_S / stepsPerSpringPeriod;\n const spring = crossings(OMEGA_S, X0, h, tSpring);\n const lc = crossings(OMEGA_LC, Q0, h, tSpring * Math.max(1, timeScale) + 1);\n let worst = 0;\n for (let k = 0; k < spring.length; k++) {\n worst = Math.max(worst, Math.abs(phaseAt(lc, timeScale * spring[k]!) - (Math.PI / 2 + k * Math.PI)));\n }\n return worst;\n}\n\nconst W1PHI: NumericWitnessSpec = {\n id: 'W1φ',\n evaluate: (steps) => measureCarriedPhaseError(steps, OMEGA_S / OMEGA_LC),\n target: 0,\n coarseResolution: 100,\n fineResolution: 400,\n tolerance: 1e-6,\n};\n\n/** @internal */\nexport const SPRING_LC_PHASE_CARRIAGE: ObservableCarriage = {\n bridgeId: 'ab-spring-lc',\n observable: 'phase',\n map: 'the circuit\\'s angle variable at t_LC = t·ω_s/ω_LC is the spring\\'s at t, because q(t_LC) = (q0/x0)·x(t)',\n derivation:\n 'a fixed nonzero multiple of the displacement at the mapped time shares its zero crossings and turning points, so the ' +\n 'angle variable is the same function of the mapped time; a phase error against the spring at t is the same ' +\n 'error against the circuit at t_LC, exactly',\n premises: [\n 'the circuit is released from rest: q(0) = q0, i(0) = 0 (either sign of q0/x0: each phase is measured from its own release)',\n 'lossless and unforced (the bridge\\'s own side conditions)',\n ],\n timeMap: 't is read on the spring\\'s clock (the unit of T0); the circuit is read at t·ω_s/ω_LC, the same t when LC = m/k',\n witnesses: [\n {\n id: 'W1φ',\n kind: 'numeric',\n test: 'tests/atlas/spring-lc-phase-carriage.test.ts',\n tolerance: `RK4 circuit phase at the mapped time within 1e-6 rad of the spring's at every crossing over ${SPRING_PERIODS} spring periods (W1a's m = 2, k = 8, x0 = 0.37; L = 0.5, C = 0.25, q0 = −1.9)`,\n },\n ],\n checks: [W1PHI],\n};\n"]}
|
|
@@ -28,17 +28,6 @@
|
|
|
28
28
|
* @internal
|
|
29
29
|
*/
|
|
30
30
|
import type { ObservableTranslation } from '../translation.js';
|
|
31
|
-
/**
|
|
32
|
-
* The time, in units of T0, at which the MEASURED phase lead of the linear
|
|
33
|
-
* oscillator over the pendulum first reaches `tolerance` rad, both integrated
|
|
34
|
-
* by RK4 at `stepsPerPeriod` steps of T0.
|
|
35
|
-
*
|
|
36
|
-
* @returns NaN if the drift does not reach `tolerance` within 2^16 periods.
|
|
37
|
-
* @internal
|
|
38
|
-
*/
|
|
39
|
-
export declare function measurePhaseHorizon(theta0: number, tolerance: number, stepsPerPeriod: number): number;
|
|
40
|
-
/** As `measurePhaseHorizon`, over exactly `periods` of T0; NaN if the drift does not reach `tolerance` in them. @internal */
|
|
41
|
-
export declare function measurePhaseHorizonWithin(theta0: number, tolerance: number, stepsPerPeriod: number, periods: number): number;
|
|
42
31
|
/** The point witness integrates at most this many periods of T0, so its cost is bounded. */
|
|
43
32
|
export declare const PHASE_POINT_MAX_PERIODS = 512;
|
|
44
33
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-translation.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"phase-translation.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AA8C/D,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAyD3C,gBAAgB;AAChB,eAAO,MAAM,0BAA0B,EAAE,qBA+CxC,CAAC"}
|
|
@@ -28,8 +28,7 @@
|
|
|
28
28
|
* @internal
|
|
29
29
|
*/
|
|
30
30
|
import { pendulumPeriodErrorAt } from './bridges-limits.js';
|
|
31
|
-
import { crossingTimes, linearAccel, pendulumAccel, phaseAt, theta0OfPeriodError } from './pendulum-motion.js';
|
|
32
|
-
const TWO_PI = 2 * Math.PI;
|
|
31
|
+
import { crossingTimes, linearAccel, pendulumAccel, phaseAt, theta0OfPeriodError, TWO_PI } from './pendulum-motion.js';
|
|
33
32
|
/**
|
|
34
33
|
* The time, in units of T0, at which the MEASURED phase lead of the linear
|
|
35
34
|
* oscillator over the pendulum first reaches `tolerance` rad, both integrated
|
|
@@ -38,7 +37,7 @@ const TWO_PI = 2 * Math.PI;
|
|
|
38
37
|
* @returns NaN if the drift does not reach `tolerance` within 2^16 periods.
|
|
39
38
|
* @internal
|
|
40
39
|
*/
|
|
41
|
-
|
|
40
|
+
function measurePhaseHorizon(theta0, tolerance, stepsPerPeriod) {
|
|
42
41
|
for (let periods = 16; periods <= 2 ** 16; periods *= 2) {
|
|
43
42
|
const t = measurePhaseHorizonWithin(theta0, tolerance, stepsPerPeriod, periods);
|
|
44
43
|
if (!Number.isNaN(t))
|
|
@@ -47,7 +46,7 @@ export function measurePhaseHorizon(theta0, tolerance, stepsPerPeriod) {
|
|
|
47
46
|
return Number.NaN;
|
|
48
47
|
}
|
|
49
48
|
/** As `measurePhaseHorizon`, over exactly `periods` of T0; NaN if the drift does not reach `tolerance` in them. @internal */
|
|
50
|
-
|
|
49
|
+
function measurePhaseHorizonWithin(theta0, tolerance, stepsPerPeriod, periods) {
|
|
51
50
|
const pend = crossingTimes(pendulumAccel, theta0, stepsPerPeriod, periods);
|
|
52
51
|
const lin = crossingTimes(linearAccel, theta0, stepsPerPeriod, periods);
|
|
53
52
|
let prevT = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"phase-translation.js","sourceRoot":"","sources":["../../../src/atlas/oscillators/phase-translation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ab-pendulum-linear`'s declared translation from its bound's quantity, the\n * relative period error, into the accumulated PHASE error.\n *\n * Both motions start from rest at θ0 at t = 0. The phase is the angle\n * variable: 0 at release and advancing by 2π per period, uniformly in time,\n * so the pendulum's is 2π t/T and the linear oscillator's 2π t/T0. With the\n * bound's `ε = T/T0 − 1` (normalised by the reduced model's period),\n *\n * Δφ(t) = 2π t/T0 − 2π t/T = 2π (t/T0) · ε/(1 + ε),\n *\n * which reaches a tolerance Δ at `t* = Δ · T0 · (1 + ε)/(2π ε)`. Nothing is\n * truncated: the map is exact in ε, and ε itself is the bound's closed form.\n *\n * It is NOT a bound on the pointwise position error |θ(t) − θ_lin(t)|: the\n * pendulum's waveform carries a third harmonic of amplitude ≈ θ0³/192, which\n * is not a phase, and the position error at a given phase error depends on\n * where in the cycle the observation falls.\n *\n * The witness W7p integrates BOTH equations of motion and reads each phase off\n * its zero crossings — crossing k is at phase π/2 + kπ by the symmetry of a\n * release from rest, and the angle variable is linear in time between them —\n * so it measures the drift without using ε or the elliptic integral. It runs\n * at the fixture θ0 = 0.2 as the regression anchor, and again at the caller's\n * point, bounded to 512 T0 of integration (`phasePointCheck`).\n *\n * @module atlas/oscillators/phase-translation\n * @internal\n */\n\nimport type { ObservableTranslation } from '../translation.js';\nimport { pendulumPeriodErrorAt } from './bridges-limits.js';\nimport { crossingTimes, linearAccel, pendulumAccel, phaseAt, theta0OfPeriodError, TWO_PI } from './pendulum-motion.js';\n\n/**\n * The time, in units of T0, at which the MEASURED phase lead of the linear\n * oscillator over the pendulum first reaches `tolerance` rad, both integrated\n * by RK4 at `stepsPerPeriod` steps of T0.\n *\n * @returns NaN if the drift does not reach `tolerance` within 2^16 periods.\n * @internal\n */\nfunction measurePhaseHorizon(theta0: number, tolerance: number, stepsPerPeriod: number): number {\n for (let periods = 16; periods <= 2 ** 16; periods *= 2) {\n const t = measurePhaseHorizonWithin(theta0, tolerance, stepsPerPeriod, periods);\n if (!Number.isNaN(t)) return t;\n }\n return Number.NaN;\n}\n\n/** As `measurePhaseHorizon`, over exactly `periods` of T0; NaN if the drift does not reach `tolerance` in them. @internal */\nfunction measurePhaseHorizonWithin(theta0: number, tolerance: number, stepsPerPeriod: number, periods: number): number {\n const pend = crossingTimes(pendulumAccel, theta0, stepsPerPeriod, periods);\n const lin = crossingTimes(linearAccel, theta0, stepsPerPeriod, periods);\n let prevT = 0;\n let prevDrift = 0;\n for (let k = 0; k < pend.length; k++) {\n const c = pend[k]!;\n const drift = phaseAt(lin, c) - (Math.PI / 2 + k * Math.PI);\n if (!Number.isFinite(drift)) break;\n if (drift >= tolerance) return prevT + ((tolerance - prevDrift) * (c - prevT)) / (drift - prevDrift);\n prevT = c;\n prevDrift = drift;\n }\n return Number.NaN;\n}\n\n/** `t* = Δ T0 (1+ε)/(2π ε)`; `Infinity` at ε = 0, where no phase accumulates. */\nfunction phaseHorizon(eps: number, tolerance: number, T0: number | undefined): number {\n if (T0 === undefined || !Number.isFinite(T0) || T0 <= 0 || !Number.isFinite(eps) || eps < 0) return Number.NaN;\n return eps === 0 ? Infinity : (tolerance * T0 * (1 + eps)) / (TWO_PI * eps);\n}\n\nconst W7P_THETA0 = 0.2;\nconst W7P_TOLERANCE = 1;\n\n/** The point witness integrates at most this many periods of T0, so its cost is bounded. */\nexport const PHASE_POINT_MAX_PERIODS = 512;\n/**\n * The point witness measures the time to this much drift, or to the drift\n * reached at the cap if less: the map is linear in t, so its slope is what is\n * checked, whatever tolerance the caller asked about.\n */\nconst PHASE_POINT_DRIFT = 1;\n/**\n * Below this measured drift the rounding noise of the two motions' crossing\n * times comes within a factor of ten of the witness tolerance. With the\n * crossings located by `crossingTimes`' secant refinement, the fine error was\n * measured at 800 steps per T0 as 1.5e-8 relative at 1.1e-5 rad of drift,\n * 7.4e-9 at 7.2e-5 rad, 2.5e-9 at 2.0e-4 rad and 2.4e-10 to 9.2e-10 from\n * 2e-2 rad up. With the straight-line crossings it replaced, the same error\n * was 9.5e-6 relative at 2e-4 rad and 1.2e-7 at 2e-2 rad.\n */\nconst PHASE_POINT_MIN_DRIFT = 1e-4;\n/**\n * The (1+ε) control differs from the target by ε/(1+ε) relative, so it can be\n * refuted only where ε exceeds this tolerance (θ0 above about 9e-4).\n */\nconst PHASE_POINT_RELATIVE_TOLERANCE = 5e-8;\n\n/**\n * W7p at the caller's θ0 (recovered from ε) instead of the fixture: the time\n * the measured drift reaches min(1 rad, the drift at the cap), within\n * PHASE_POINT_RELATIVE_TOLERANCE of the closed form. Its control is the same measurement against\n * the horizon without the (1+ε) factor, which differs from the target by\n * ε/(1+ε) relative — so the control can fail only where that exceeds the\n * witness tolerance, and the caller is told when it does not.\n */\nfunction phasePointCheck(eps: number): ReturnType<ObservableTranslation['pointCheck']> {\n if (!Number.isFinite(eps) || eps <= 0) return { unavailable: `no phase drift accumulates at ε = ${eps}` };\n const theta0 = theta0OfPeriodError(eps);\n const measured = Math.min(PHASE_POINT_DRIFT, (TWO_PI * PHASE_POINT_MAX_PERIODS * eps) / (1 + eps));\n if (measured < PHASE_POINT_MIN_DRIFT) {\n return {\n unavailable:\n `the drift within ${PHASE_POINT_MAX_PERIODS} T0 at θ0 = ${Number(theta0.toPrecision(8))} is ${measured} rad, below the ` +\n `${PHASE_POINT_MIN_DRIFT} rad this witness resolves; not run`,\n };\n }\n const target = phaseHorizon(eps, measured, 1);\n const periods = Math.ceil(target) + 2;\n const evaluate = (stepsPerPeriod: number): number => measurePhaseHorizonWithin(theta0, measured, stepsPerPeriod, periods);\n const spec = { evaluate, coarseResolution: 200, fineResolution: 800, tolerance: PHASE_POINT_RELATIVE_TOLERANCE * target };\n const capped = measured < PHASE_POINT_DRIFT ? ` (the drift reached in ${PHASE_POINT_MAX_PERIODS} T0)` : '';\n return {\n claim:\n `RK4-measured time to ${measured} rad${capped} of phase drift at θ0 = ${Number(theta0.toPrecision(8))} (recovered from ε) ` +\n `within ${PHASE_POINT_RELATIVE_TOLERANCE} relative of t* = ${target} T0; 200 and 800 steps per T0, ${periods} T0 integrated`,\n check: { id: 'W7p@point', ...spec, target },\n control: { id: 'W7p@point-control', ...spec, target: measured / (TWO_PI * eps) },\n controlClaim: 'the same measurement against the horizon without the (1+ε) factor, Δ T0/(2π ε)',\n };\n}\n\n/** @internal */\nexport const PENDULUM_PHASE_TRANSLATION: ObservableTranslation = {\n bridgeId: 'ab-pendulum-linear',\n observable: 'phase',\n unit: 'rad',\n fromNorm: 'relative period error, normalized by the value of the reduced model',\n errorKind: 'exact',\n definition:\n 'the angle variable of each motion (0 at release from rest at θ0, 2π per period); the error is the ' +\n \"linear oscillator's lead over the pendulum, Δφ(t) = 2πt/T0 − 2πt/T\",\n derivation:\n 'with ε = T/T0 − 1, Δφ(t) = 2π (t/T0) ε/(1+ε), exact in ε; it reaches Δ at t* = Δ T0 (1+ε)/(2π ε). ' +\n 'ε/(1+ε) increases with ε, so the domain supremum of ε gives the shortest horizon over the domain',\n premises: [\n 'both motions are released from rest at the same θ0 at t = 0',\n 'T0 = 2π √(ℓ/g) is the linear period, in the unit t is given in',\n ],\n parameters: ['T0'],\n timeUnit: 'the unit of T0',\n errorAt: (eps, t, { T0 }) => {\n if (T0 === undefined || !Number.isFinite(T0) || T0 <= 0 || !Number.isFinite(eps) || !Number.isFinite(t)) return Number.NaN;\n return (TWO_PI * (t / T0) * eps) / (1 + eps);\n },\n horizonFor: (eps, tolerance, { T0 }) => phaseHorizon(eps, tolerance, T0),\n boundary: 'inclusive: adequate iff t ≤ t*, i.e. Δφ(t) ≤ the tolerance',\n notCovered: [\n 'the pointwise position error |θ(t) − θ_lin(t)| (the waveform carries a third harmonic ≈ θ0³/192 that is not a phase)',\n 'the amplitude',\n ],\n witnesses: [\n {\n id: 'W7p',\n kind: 'numeric',\n test: 'tests/atlas/pendulum-phase-translation.test.ts',\n tolerance: `RK4-measured time to ${W7P_TOLERANCE} rad of phase drift at θ0 = ${W7P_THETA0} within 1e-4 T0 of t*`,\n },\n ],\n checks: [\n {\n id: 'W7p',\n evaluate: (stepsPerPeriod) => measurePhaseHorizon(W7P_THETA0, W7P_TOLERANCE, stepsPerPeriod),\n target: phaseHorizon(pendulumPeriodErrorAt({ theta0: W7P_THETA0 }), W7P_TOLERANCE, 1),\n coarseResolution: 50,\n fineResolution: 200,\n tolerance: 1e-4,\n },\n ],\n pointCheck: phasePointCheck,\n};\n"]}
|
|
@@ -23,9 +23,16 @@
|
|
|
23
23
|
*
|
|
24
24
|
* bounds the error at every t; the clamp at π keeps B non-decreasing in t and
|
|
25
25
|
* is still a bound, since |cos a − cos b| ≤ 2. It is rigorous GIVEN the
|
|
26
|
-
* Fourier series, which is quoted, not derived here.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* Fourier series, which is quoted, not derived here. The exact check
|
|
27
|
+
* (`fourierSeriesExactDeviation`, run by `tests/atlas/pendulum-exact.test.ts`;
|
|
28
|
+
* not a registered witness, because it has no resolution for a runner to
|
|
29
|
+
* refine) compares the series with the EXACT solution θ = 2 asin(k sn(K − ω0t, k²))
|
|
30
|
+
* (`exactPendulumAngle`) over a dense grid of amplitudes and phases at
|
|
31
|
+
* 1e-12 rad (1e-13 above θ0 = 0.002; the floor below that is the nome's, see
|
|
32
|
+
* `FOURIER_SERIES_EXACT_TOLERANCE`), and W7xs against RK4 over one period at
|
|
33
|
+
* six amplitudes at 1e-9;
|
|
34
|
+
* both are checks at grid points, not a derivation. The coefficients also
|
|
35
|
+
* have a second route, the FFT of one exact period (`fourierCoefficientsByFft`).
|
|
29
36
|
*
|
|
30
37
|
* B is an upper bound, not the error: past its horizon the BOUND exceeds the
|
|
31
38
|
* tolerance, and the error may not. It is near-sharp where Δφ → π (the
|
|
@@ -37,17 +44,71 @@
|
|
|
37
44
|
* @internal
|
|
38
45
|
*/
|
|
39
46
|
import type { ObservableTranslation } from '../translation.js';
|
|
47
|
+
import type { DominanceWitnessSpec } from '../witness-dominance.js';
|
|
40
48
|
import type { NumericWitnessSpec } from '../witness-numeric.js';
|
|
41
49
|
/** W̄ = (16/3) q^{3/2}/(1 − q): the bound on the waveform distortion |F(φ) − θ0 cos φ|. @internal */
|
|
42
50
|
export declare function waveformBound(theta0: number): number;
|
|
43
51
|
/** The pendulum's fundamental Fourier coefficient a₀ = 8√q/(1 + q). @internal */
|
|
44
52
|
export declare function fundamentalCoefficient(theta0: number): number;
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
53
|
+
/**
|
|
54
|
+
* The exact route to W7x's measured value: |θ_exact(t) − θ0 cos(2πt)| from the
|
|
55
|
+
* closed forms, at the same 200 samples per T0 as {@link dominanceSamples},
|
|
56
|
+
* against B(t) at θ0 recovered from `eps`. The resolution is ignored, so the
|
|
57
|
+
* runner's coarse-to-fine uncertainty u is exactly 0 here and its rule
|
|
58
|
+
* `bound − measured > u` is `bound > measured`: u is a property of the RK4
|
|
59
|
+
* route, not of the claim. The registered W7x keeps the RK4 route.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export declare function exactDominanceSpec(id: string, eps: number): DominanceWitnessSpec;
|
|
49
64
|
/** The θ0 at which W7xs checks the Fourier series: a grid across the bridge's domain θ0 ≤ 0.5. @internal */
|
|
50
65
|
export declare const FOURIER_SERIES_THETA0S: readonly number[];
|
|
66
|
+
/** The pendulum's Fourier coefficient aₙ at amplitude θ0 (the closed form, from the nome). @internal */
|
|
67
|
+
export declare function fourierCoefficient(theta0: number, n: number, variant?: 'plus' | 'minus'): number;
|
|
68
|
+
/** The grid the exact check runs on: amplitudes θ0 = 0.5 j/500, j = 1..500, and phases φ = 2π i/256. @internal */
|
|
69
|
+
export declare const FOURIER_SERIES_EXACT_GRID: {
|
|
70
|
+
readonly amplitudes: 500;
|
|
71
|
+
readonly phases: 256;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* The exact check's tolerance over the whole grid, in rad. The measured deviation is
|
|
75
|
+
* 2.3e-13, all of it at the smallest amplitude θ0 = 0.001 and on the SERIES
|
|
76
|
+
* side: the nome's K′ = K(cos²(θ0/2)) is read from a complementary parameter
|
|
77
|
+
* that rounds at 1e-16 absolute, 4e-10 relative at m = 2.5e-7, so a₀ is low
|
|
78
|
+
* by 2.3e-10 of θ0 there. The exact solution agrees with an independent AGM
|
|
79
|
+
* sn to the bit at that point.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export declare const FOURIER_SERIES_EXACT_TOLERANCE = 1e-12;
|
|
83
|
+
/** Above θ0 = 0.002 the same check holds at 1e-13 rad (measured 3.8e-14 at θ0 = 0.002, below 1.5e-14 from θ0 = 0.01). @internal */
|
|
84
|
+
export declare const FOURIER_SERIES_EXACT_TIGHT: {
|
|
85
|
+
readonly theta0Min: 0.002;
|
|
86
|
+
readonly tolerance: 1e-13;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* The exact check, or its control: max over the grid of |θ_exact(t) − F(φ)|, t = φT/2π,
|
|
90
|
+
* with θ_exact the elliptic solution (`exactPendulumAngle`) and F the 20-term
|
|
91
|
+
* series, over the amplitudes at or above `theta0Min`. A closed form against
|
|
92
|
+
* a closed form, so no resolution and no convergence ratio: the number is the
|
|
93
|
+
* deviation itself, held to {@link FOURIER_SERIES_EXACT_TOLERANCE} over the
|
|
94
|
+
* whole grid and to {@link FOURIER_SERIES_EXACT_TIGHT} above its floor by the
|
|
95
|
+
* test.
|
|
96
|
+
*
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export declare function fourierSeriesExactDeviation(variant?: 'plus' | 'minus', grid?: {
|
|
100
|
+
readonly amplitudes: number;
|
|
101
|
+
readonly phases: number;
|
|
102
|
+
}, theta0Min?: number): number;
|
|
103
|
+
/**
|
|
104
|
+
* The first `count` coefficients aₙ from the FFT of one exact period sampled
|
|
105
|
+
* at `samples` points, MathTS `rfft`: aₙ = (−1)ⁿ 2 re[2n+1]/N. A second
|
|
106
|
+
* route to the series, independent of the nome. `samples` must exceed
|
|
107
|
+
* 2·count + 1.
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
export declare function fourierCoefficientsByFft(theta0: number, samples: number, count: number): number[];
|
|
51
112
|
/**
|
|
52
113
|
* W7xs, or its control: the Fourier series against RK4 of the pendulum, at 200
|
|
53
114
|
* and 800 steps per period, within 1e-9 rad at every step and every grid θ0.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position-translation.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/position-translation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"position-translation.d.ts","sourceRoot":"","sources":["../../../src/atlas/oscillators/position-translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAYhE,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7D;AA2DD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAqBhF;AA4BD,4GAA4G;AAC5G,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAoC,CAAC;AAUzF,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,GAAG,OAAgB,GAAG,MAAM,CAExG;AAgBD,kHAAkH;AAClH,eAAO,MAAM,yBAAyB;aAAK,UAAU,EAAE,GAAG;aAAE,MAAM,EAAE,GAAG;CAAW,CAAC;AACnF;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AACpD,mIAAmI;AACnI,eAAO,MAAM,0BAA0B;aAAK,SAAS,EAAE,KAAK;aAAE,SAAS,EAAE,KAAK;CAAW,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,MAAM,GAAG,OAAgB,EAClC,IAAI,GAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAA8B,EAC1F,SAAS,SAAI,GACZ,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjG;AAkBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,GAAG,OAAgB,GAAG,kBAAkB,CASrG;AA6BD,gBAAgB;AAChB,eAAO,MAAM,6BAA6B,EAAE,qBAuD3C,CAAC"}
|