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":"curvature-lowering-helpers.js","sourceRoot":"","sources":["../../src/numerical/curvature-lowering-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkCpF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,8DAA8D;AAC9D,SAAS,YAAY,CAAC,CAAS;IAC7B,yGAAyG;IACzG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO;YACL;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE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"}
|
|
1
|
+
{"version":3,"file":"curvature-lowering-helpers.js","sourceRoot":"","sources":["../../src/numerical/curvature-lowering-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkCpF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,8DAA8D;AAC9D,SAAS,YAAY,CAAC,CAAS;IAC7B,yGAAyG;IACzG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO;YACL;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACzF;YACD;gBACE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxF,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE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","sourcesContent":["/**\n * Numerical helpers for Riemann-curvature lowering (Task 6 [U] / v0.5.0 1c-ii).\n *\n * Mirrors `connection-lowering-helpers.ts`: produces Γ and ∂Γ tensors from\n * coordinate-dependent metric closures, then assembles the Riemann tensor via\n * the corrected (Carroll-Ch.3 §3.4 / Adam+Eve F4-S3) formula:\n *\n * R^ρ_{σμν} = ∂_μ Γ^ρ_{σν} − ∂_ν Γ^ρ_{σμ} + Σ_λ (Γ^ρ_{λμ} Γ^λ_{σν} − Γ^ρ_{λν} Γ^λ_{σμ})\n *\n * Index conventions (pinned via JSDoc + a runtime assert):\n * - Γ[ρ][σ][ν] = Γ^ρ_{σν} (matches computeChristoffelTensor's [α][μ][ν] with\n * σ ↔ μ — i.e., the SECOND axis is σ, the THIRD is ν, per Carroll Ch.5).\n * - dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} (I3)\n * - R[ρ][σ][μ][ν] = R^ρ_{σμν} (Carroll)\n *\n * NOTE on the σ/μ swap vs `computeChristoffelTensor`:\n * `computeChristoffelTensor` was authored for v0.4.0 covariant-derivative\n * lowering, which sums Γ^α_{μλ} T^λ over the middle index `μ` (the wrt index\n * of the cov-deriv). v0.5.0 Riemann needs σ in the SECOND-lower slot of every\n * Γ. Because Γ is symmetric in its two lower indices (Christoffel symmetry),\n * the two storage conventions are numerically identical — we use the\n * existing [α][middle][last] storage and access it with σ in the middle slot.\n *\n * The fast path uses the v0.4.0 `computeChristoffelTensor` infrastructure\n * (no new tensor-engine code) and the v0.4.0 `pderivNumericalFn` pattern\n * (centered finite differences). M11: ∂Γ is computed by repeated centered\n * finite-differences on `christoffel()`, not a new AST node type or AD pass.\n *\n * @module numerical/curvature-lowering-helpers\n */\n\nimport type { EngineTensor, TensorEngine } from './tensor-engine.js';\nimport type { NestedArray, NumericalInputs } from './types.js';\nimport { NumericalBackendError } from './errors.js';\nimport { computeChristoffelTensor, flattenNA } from './connection-lowering-helpers.js';\nimport { pderivNumericalFn } from './pderiv.js';\nimport type { BianchiResidualNode } from '../dimensional/curvature.js';\nimport type { WeylTensorNode } from '../dimensional/weyl-validators.js';\nimport type { KretschmannScalarNode } from '../dimensional/curvature-invariants.js';\nimport { computeWeylTensor } from './weyl-lowering.js';\nimport { computeKretschmann } from './kretschmann.js';\nimport { dimensionOf, requireValue, flattenNestedArray } from './lowering-utils.js';\n\n/** A coordinate-dependent rank-2 closure returning the FLAT layout:\n * f(x) → Float64Array(N²), row-major `flat[mu*N + nu]` (v0.9.0\n * Task 1.1; mirrors the v0.6.0 BR-2 christoffelFn convention). */\nexport type MetricFnFlat = (x: ReadonlyArray<number>) => Float64Array;\n\n/** A coordinate-dependent rank-2 closure returning the legacy nested\n * layout: f(x) → number[][] (sibling fixtures de-sitter / flrw /\n * minkowski stay nested for this release per Decision #8). */\ntype MetricFnNested = (x: ReadonlyArray<number>) => number[][];\n\n/** A coordinate-dependent rank-2 closure: f(x) → N×N as a NestedArray\n * (number[][], Float64Array, or any form `flattenNA` can flatten —\n * the union of `MetricFnFlat` and `MetricFnNested` plus deeper\n * nestings; NestedArray itself admits Float64Array since v0.9.0). */\nexport type MetricFn = (x: ReadonlyArray<number>) => NestedArray;\n\n/**\n * dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} at the given coordinates (I3).\n *\n * 4-deep nested number array — readonly to mark this as an output container\n * the helper produces but does not mutate after construction.\n *\n * v0.6.1: dropped `export` — file-internal only (used by `dGammaAt` +\n * `buildRiemann` + `riemannLowerAt`).\n */\ntype DGammaTensor = readonly (readonly (readonly (readonly number[])[])[])[];\n\n/** Gamma[ρ][σ][ν] = Γ^ρ_{σν} — same index order as `computeChristoffelTensor`\n * output (just renamed for the Riemann use).\n * v0.6.1: dropped `export` — file-internal only. */\ntype GammaTensor = readonly (readonly (readonly number[])[])[];\n\n// ---------------------------------------------------------------------------\n// Zero-tensor allocators\n// ---------------------------------------------------------------------------\n\n/** A fresh N×N×N×N zero tensor (independent inner arrays). */\nfunction nestedZeros4(N: number): number[][][][] {\n // Bolt: V8 fast-path literal allocation bypasses `new Array` and looping overhead for fixed small sizes.\n if (N === 4) {\n return [\n [\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]\n ],\n [\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]\n ],\n [\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]\n ],\n [\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]\n ]\n ];\n }\n\n // Bolt: nested manual allocation is faster than Array.from and .fill\n const out = new Array<number[][][]>(N);\n for (let i = 0; i < N; i++) {\n const arr3 = new Array<number[][]>(N);\n for (let j = 0; j < N; j++) {\n const arr2 = new Array<number[]>(N);\n for (let k = 0; k < N; k++) {\n const arr1 = new Array<number>(N);\n for (let l = 0; l < N; l++) arr1[l] = 0.0;\n arr2[k] = arr1;\n }\n arr3[j] = arr2;\n }\n out[i] = arr3;\n }\n return out;\n}\n\n/** A fresh N×N×N×N×N zero tensor (independent inner arrays). */\nfunction nestedZeros5(N: number): number[][][][][] {\n if (N === 4) {\n return [\n nestedZeros4(4),\n nestedZeros4(4),\n nestedZeros4(4),\n nestedZeros4(4)\n ];\n }\n\n const out = new Array<number[][][][]>(N);\n for (let i = 0; i < N; i++) out[i] = nestedZeros4(N);\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Finite-difference step\n// ---------------------------------------------------------------------------\n\n/**\n * Step size for finite differences on the Christoffel function.\n *\n * Inner step (∂g for one Γ evaluation) uses the v0.4.0 default\n * `1e-6·max(|x|,1)` via `pderivNumericalFn`-style centered FD. This gives ∂g\n * with relative precision ≈ 1e-11 on Schwarzschild components (verified by\n * inspection at r=3·r_s).\n *\n * Outer step (∂Γ for one R evaluation) is `1e-4·max(|x|,1)` and we use a\n * **4th-order centered stencil**:\n *\n * f'(x) ≈ [−f(x+2h) + 8 f(x+h) − 8 f(x-h) + f(x-2h)] / (12 h)\n *\n * Truncation O(h⁴) instead of O(h²). At h=0.886 m (r=3·r_s, M=M_sun),\n * truncation ≈ h⁴·Γ⁽⁵⁾/Γ ~ 1e-13 relative, round-off ε·|Γ|/h ~ 1e-15 relative.\n * Both sit well below the 1e-9 gate.\n *\n * The 2nd-order outer FD that v0.4.0 covariant-derivative lowering uses\n * leaves ~3e-6 relative error on R^t_{rtr} due to noise propagation through\n * the c²-scaled g_{tt} component — 4th-order outer FD recovers the precision.\n */\nfunction outerStep(x: number): number {\n return 1e-4 * Math.max(Math.abs(x), 1);\n}\n\n/**\n * Build a flat ∂_μ g sampler around point x using a **4th-order centered\n * stencil**:\n *\n * ∂_μ g ≈ [−g(x+2h) + 8 g(x+h) − 8 g(x−h) + g(x−2h)] / (12 h)\n *\n * Returned function matches the `getMetricDeriv` signature expected by\n * `computeChristoffelTensor`.\n *\n * Inner step `h_i = 1e-3·max(|x|,1)` is intentionally LARGER than the v0.4.0\n * 1e-6 default to compensate for the c²·g_{tt} ~ 6e16 cancellation noise: a\n * 4th-order stencil at h_i ≈ 8.86 m around r=3·r_s gives truncation\n * O(h_i⁴·g⁽⁵⁾) ~ 1e-13 relative on each ∂g component while keeping round-off\n * ε|g|/h_i ~ 1e-15 relative — orders below the 1e-9 component-match gate.\n */\nfunction makeInnerGradFn(\n gFn: MetricFn,\n x0: ReadonlyArray<number>,\n N: number,\n): (mu: number) => number[] {\n // v0.5.1 PD-7: delegates to the shared `pderivNumericalFn(..., {order: 4})`\n // 4th-order centered stencil. The explicit `h = 1e-3·max(|x|,1)` override\n // is load-bearing: the c²·g_{tt} cancellation noise on Schwarzschild\n // demands a larger step than the v0.5.0-default 1e-4 to balance truncation\n // vs round-off at the ≤1e-9 component-match gate. (See module JSDoc.)\n return (mu: number): number[] => {\n const xc = x0[mu];\n const h = 1e-3 * Math.max(Math.abs(xc), 1);\n const d = pderivNumericalFn(gFn, x0, mu, { order: 4, h });\n const flat = Array.isArray(d) ? (d as number[]) : [d as number];\n if (flat.length !== N * N) {\n throw new NumericalBackendError(\n `curvature-lowering: metric closure returned wrong shape — expected ${N * N}, ` +\n `got ${flat.length}`,\n );\n }\n return flat;\n };\n}\n\n/**\n * Compute Γ^ρ_{σν} at coordinate x. Internally builds a centered-FD ∂g sampler\n * around x and delegates to `computeChristoffelTensor` (the v0.4.0 helper).\n *\n * Returns a fully-materialised 3-deep nested array Γ[ρ][σ][ν]. (We do NOT keep\n * the EngineTensor wrapper because we immediately rebuild dGamma and R as\n * plain nested arrays — round-tripping through the engine on every FD sample\n * would dominate the cost.)\n */\nexport function christoffelAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n): number[][][] {\n const gInvFlat = flattenNA(gInverseFn(x));\n if (gInvFlat.length !== N * N) {\n throw new NumericalBackendError(\n `curvature-lowering: gInverseFn returned wrong shape — expected ${N * N}, got ${gInvFlat.length}`,\n );\n }\n const gradFn = makeInnerGradFn(gFn, x, N);\n const tensor = computeChristoffelTensor(gInvFlat, gradFn, N, engine);\n const nested = engine.toNested(tensor) as NestedArray;\n engine.dispose?.(tensor);\n\n // Cast to the expected nested shape; computeChristoffelTensor produces\n // shape [N,N,N] so this is structurally [ρ][middle][last]. We treat\n // [middle] as σ and [last] as ν (Christoffel symmetry makes the two\n // lower-slot conventions numerically interchangeable).\n return nested as number[][][];\n}\n\n/**\n * dGamma[λ][ρ][σ][ν] = ∂_λ Γ^ρ_{σν} via centered FD on `christoffelAt`. (I3)\n *\n * Includes a runtime index-assert verifying `dGamma[1][1][1][1]` is finite\n * before returning (catches silent shape-permutation bugs introduced by future\n * edits to `computeChristoffelTensor`'s output ordering).\n */\nexport function dGammaAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n): DGammaTensor {\n // Allocate dGamma[λ][ρ][σ][ν]\n const dGamma: number[][][][] = nestedZeros4(N);\n\n // v0.5.1 PD-7: 4th-order centered stencil via the shared\n // `pderivNumericalFn(..., {order: 4})` (h = 1e-4·max(|x|,1) default matches\n // the v0.5.0 `outerStep`). Each axis returns a flat number[] of length N³;\n // unflatten into the `dGamma[λ][ρ][σ][ν]` axis-0 slab.\n const christFn = (xs: ReadonlyArray<number>): NestedArray =>\n christoffelAt(xs, gFn, gInverseFn, N, engine);\n for (let lam = 0; lam < N; lam++) {\n const d = pderivNumericalFn(christFn, x, lam, { order: 4 });\n const flat = Array.isArray(d) ? (d as number[]) : [d as number];\n if (flat.length !== N * N * N) {\n throw new NumericalBackendError(\n `dGammaAt: christoffelAt derivative shape mismatch — expected ${N * N * N}, got ${flat.length}`,\n );\n }\n const N2 = N * N;\n for (let rho = 0; rho < N; rho++) {\n for (let sigma = 0; sigma < N; sigma++) {\n for (let nu = 0; nu < N; nu++) {\n dGamma[lam][rho][sigma][nu] = flat[rho * N2 + sigma * N + nu];\n }\n }\n }\n }\n\n // I3 runtime index-assert: verify the container is populated as expected.\n // dGamma[1][1][1][1] is ∂_r Γ^r_{rr} for Schwarzschild — a non-trivial real\n // number, so a `Number.isFinite` check catches both shape regressions and\n // numerical blow-ups.\n const probe = dGamma[1]?.[1]?.[1]?.[1];\n if (typeof probe !== 'number' || !Number.isFinite(probe)) {\n throw new NumericalBackendError(\n `curvature-lowering: dGamma index-assert failed — dGamma[1][1][1][1] is ` +\n `${probe} (expected finite number). Shape regression in christoffelAt?`,\n );\n }\n\n return dGamma as DGammaTensor;\n}\n\n/**\n * Build the full 4×4×4×4 Riemann tensor R^ρ_{σμν} from Γ and ∂Γ per the\n * Carroll formula (Adam+Eve F4-S3):\n *\n * R[ρ][σ][μ][ν] = ∂_μ Γ[ρ][σ][ν] − ∂_ν Γ[ρ][σ][μ]\n * + Σ_λ (Γ[ρ][λ][μ] Γ[λ][σ][ν] − Γ[ρ][λ][ν] Γ[λ][σ][μ])\n *\n * σ in the SECOND lower slot of each Γ (F4/S3 correction).\n */\nexport function buildRiemann(\n gamma: GammaTensor,\n dGamma: DGammaTensor,\n N: number,\n): number[][][][] {\n // Bolt: Unroll and cache inner loop constants for N=4, creating 4D array in-place\n // without relying on `nestedZeros4` or excessive repetitive lookups. This drops overhead significantly\n // over creating an empty multi-dimensional array and repeatedly fetching `dGamma[mu][rho][sigma][nu]`.\n if (N === 4) {\n const R = new Array(4);\n\n for (let rho = 0; rho < 4; rho++) {\n const R_rho = new Array(4);\n const gamma_rho = gamma[rho];\n const g_rho_0 = gamma_rho[0];\n const g_rho_1 = gamma_rho[1];\n const g_rho_2 = gamma_rho[2];\n const g_rho_3 = gamma_rho[3];\n\n for (let sigma = 0; sigma < 4; sigma++) {\n const R_rho_sigma = new Array(4);\n const g_0_sig = gamma[0][sigma];\n const g_1_sig = gamma[1][sigma];\n const g_2_sig = gamma[2][sigma];\n const g_3_sig = gamma[3][sigma];\n\n for (let mu = 0; mu < 4; mu++) {\n const dG_mu = dGamma[mu][rho][sigma];\n\n const g_rho_0_mu = g_rho_0[mu];\n const g_rho_1_mu = g_rho_1[mu];\n const g_rho_2_mu = g_rho_2[mu];\n const g_rho_3_mu = g_rho_3[mu];\n\n const g_0_sig_mu = g_0_sig[mu];\n const g_1_sig_mu = g_1_sig[mu];\n const g_2_sig_mu = g_2_sig[mu];\n const g_3_sig_mu = g_3_sig[mu];\n\n const R_rho_sigma_mu = new Array(4);\n for (let nu = 0; nu < 4; nu++) {\n let value = dG_mu[nu] - dGamma[nu][rho][sigma][mu];\n value += g_rho_0_mu * g_0_sig[nu] - g_rho_0[nu] * g_0_sig_mu;\n value += g_rho_1_mu * g_1_sig[nu] - g_rho_1[nu] * g_1_sig_mu;\n value += g_rho_2_mu * g_2_sig[nu] - g_rho_2[nu] * g_2_sig_mu;\n value += g_rho_3_mu * g_3_sig[nu] - g_rho_3[nu] * g_3_sig_mu;\n R_rho_sigma_mu[nu] = value;\n }\n R_rho_sigma[mu] = R_rho_sigma_mu;\n }\n R_rho[sigma] = R_rho_sigma;\n }\n R[rho] = R_rho;\n }\n return R;\n }\n\n const R: number[][][][] = nestedZeros4(N);\n\n for (let rho = 0; rho < N; rho++) {\n for (let sigma = 0; sigma < N; sigma++) {\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n // ∂_μ Γ^ρ_{σν} − ∂_ν Γ^ρ_{σμ}\n let value = dGamma[mu][rho][sigma][nu] - dGamma[nu][rho][sigma][mu];\n // Σ_λ (Γ^ρ_{λμ} Γ^λ_{σν} − Γ^ρ_{λν} Γ^λ_{σμ})\n for (let lam = 0; lam < N; lam++) {\n value += gamma[rho][lam][mu] * gamma[lam][sigma][nu]\n - gamma[rho][lam][nu] * gamma[lam][sigma][mu];\n }\n R[rho][sigma][mu][nu] = value;\n }\n }\n }\n }\n\n return R;\n}\n\n// ---------------------------------------------------------------------------\n// v0.5.0 Task 9: helpers for bianchiResidual()\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the upper-Riemann tensor R^ρ_{σμν} at coordinate x using the same\n * Γ + ∂Γ pipeline as the riemann-tensor lowering case. Encapsulates the\n * full christoffelAt + dGammaAt + buildRiemann sequence so callers (Task 9\n * Bianchi residual) can sample R at perturbed coordinates without\n * re-implementing the FD machinery. The curvature report of `upt metric`\n * reads it too.\n * @internal\n */\nexport function riemannUpperAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n // Optional precomputed Γ^ρ_{σν} at x — `christoffelAt` is a pure function of\n // x, so reusing the caller's center evaluation is numerically identical and\n // avoids one redundant Christoffel compute (the Bianchi path already has it).\n gammaAtX?: number[][][],\n): number[][][][] {\n const gamma = gammaAtX ?? christoffelAt(x, gFn, gInverseFn, N, engine);\n const dGamma = dGammaAt(x, gFn, gInverseFn, N, engine);\n return buildRiemann(gamma, dGamma, N);\n}\n\n/**\n * Lower the upper-ρ index of R^ρ_{σμν} via the covariant metric g_{aρ}:\n *\n * R_{aσμν} = Σ_ρ g_{aρ} R^ρ_{σμν}\n *\n * Output index order: `[a][σ][μ][ν]` — all four lower. (a is the freshly\n * lowered index in the first slot.)\n * @internal\n */\nexport function lowerFirstIndex(\n R: number[][][][],\n gLowerFlat: ReadonlyArray<number>,\n N: number,\n): number[][][][] {\n // Bolt: Exploit physical 4D spacetime constraints to fully unroll the first-index\n // tensor lowering loop. By eliminating repetitive `a * N + rho` multi-dimensional\n // arithmetic operations and creating fully formed array closures without\n // generic `nestedZeros4` logic, we eliminate redundant garbage collection pressure.\n if (N === 4) {\n const Rlow: number[][][][] = new Array(4);\n for (let a = 0; a < 4; a++) {\n const a_offset = a * 4;\n const g0 = gLowerFlat[a_offset];\n const g1 = gLowerFlat[a_offset + 1];\n const g2 = gLowerFlat[a_offset + 2];\n const g3 = gLowerFlat[a_offset + 3];\n\n if (g0 === 0.0 && g1 === 0.0 && g2 === 0.0 && g3 === 0.0) {\n Rlow[a] = [\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],\n [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]\n ];\n continue;\n }\n\n const Rlow_a = new Array(4);\n for (let sig = 0; sig < 4; sig++) {\n const Rlow_a_sig = new Array(4);\n const R0 = R[0][sig];\n const R1 = R[1][sig];\n const R2 = R[2][sig];\n const R3 = R[3][sig];\n\n for (let mu = 0; mu < 4; mu++) {\n const R0_mu = R0[mu];\n const R1_mu = R1[mu];\n const R2_mu = R2[mu];\n const R3_mu = R3[mu];\n Rlow_a_sig[mu] = [\n g0 * R0_mu[0] + g1 * R1_mu[0] + g2 * R2_mu[0] + g3 * R3_mu[0],\n g0 * R0_mu[1] + g1 * R1_mu[1] + g2 * R2_mu[1] + g3 * R3_mu[1],\n g0 * R0_mu[2] + g1 * R1_mu[2] + g2 * R2_mu[2] + g3 * R3_mu[2],\n g0 * R0_mu[3] + g1 * R1_mu[3] + g2 * R2_mu[3] + g3 * R3_mu[3]\n ];\n }\n Rlow_a[sig] = Rlow_a_sig;\n }\n Rlow[a] = Rlow_a;\n }\n return Rlow;\n }\n\n const Rlow: number[][][][] = nestedZeros4(N);\n for (let a = 0; a < N; a++) {\n for (let sig = 0; sig < N; sig++) {\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n let sum = 0;\n for (let rho = 0; rho < N; rho++) {\n sum += gLowerFlat[a * N + rho] * R[rho][sig][mu][nu];\n }\n Rlow[a][sig][mu][nu] = sum;\n }\n }\n }\n }\n return Rlow;\n}\n\n/**\n * Sample the all-lower Riemann tensor R_{αβγδ}(x) — combines `riemannUpperAt`\n * with `lowerFirstIndex` for the single-coordinate evaluation. Used both as\n * the base sample and (with perturbed x) as the FD inputs for ∂_λ R_{αβγδ}.\n */\nexport function riemannLowerAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n /** Optional precomputed Γ at x — forwarded to `riemannUpperAt` to skip the\n * redundant Christoffel compute when the caller already has it. */\n gammaAtX?: number[][][],\n): number[][][][] {\n const Rup = riemannUpperAt(x, gFn, gInverseFn, N, engine, gammaAtX);\n const gFlat = flattenNA(gFn(x));\n if (gFlat.length !== N * N) {\n throw new NumericalBackendError(\n `bianchi-residual: gFn returned wrong shape — expected ${N * N}, got ${gFlat.length}`,\n );\n }\n return lowerFirstIndex(Rup, gFlat, N);\n}\n\n/**\n * Compute ∂_λ R_{αβγδ}(x) via a 4th-order centered stencil on\n * `riemannLowerAt`. Index order: `dR[λ][α][β][γ][δ] = ∂_λ R_{αβγδ}`.\n *\n * Uses the same outer step (`outerStep`) as Task 6's dGammaAt so the\n * FD-noise compounding pattern matches. This is one extra layer of FD on top\n * of the Christoffel-of-Christoffel double-FD already inside `riemannLowerAt`\n * — total: ∂(∂(∂g)) at 4th order in each layer. Empirical noise floor reached\n * by the per-component value is documented in the test report.\n */\nfunction dRiemannLowerAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n): number[][][][][] {\n const dR: number[][][][][] = nestedZeros5(N);\n\n // v0.5.1 PD-7: 4th-order centered stencil via the shared\n // `pderivNumericalFn(..., {order: 4})` — default h = 1e-4·max(|x|,1) matches\n // the v0.5.0 `outerStep`. Each axis call returns a flat number[] of length\n // N⁴ (riemannLowerAt produces [N,N,N,N]); unflatten into the\n // `dR[λ][a][b][c][d]` axis-0 slab.\n const RlowerFn = (xs: ReadonlyArray<number>): NestedArray =>\n riemannLowerAt(xs, gFn, gInverseFn, N, engine);\n const N2 = N * N;\n const N3 = N * N * N;\n for (let lam = 0; lam < N; lam++) {\n const flat = pderivNumericalFn(RlowerFn, x, lam, { order: 4 }) as number[];\n if (!Array.isArray(flat) || flat.length !== N2 * N2) {\n throw new NumericalBackendError(\n `dRiemannLowerAt: derivative shape mismatch — expected ${N2 * N2}, got ${\n Array.isArray(flat) ? flat.length : 'scalar'\n }`,\n );\n }\n for (let a = 0; a < N; a++) {\n for (let b = 0; b < N; b++) {\n for (let c = 0; c < N; c++) {\n for (let d = 0; d < N; d++) {\n dR[lam][a][b][c][d] = flat[a * N3 + b * N2 + c * N + d];\n }\n }\n }\n }\n }\n\n return dR;\n}\n\n/**\n * Compute ∇_λ R_{μνρσ} via partial + Christoffel-correction terms (Approach 1).\n *\n * ∇_λ R_{μνρσ} = ∂_λ R_{μνρσ}\n * − Γ^α_{λμ} R_{ανρσ}\n * − Γ^α_{λν} R_{μαρσ}\n * − Γ^α_{λρ} R_{μνασ}\n * − Γ^α_{λσ} R_{μνρα}\n *\n * Index order: `covR[λ][μ][ν][ρ][σ] = ∇_λ R_{μνρσ}`.\n *\n * Approach choice (full ∇, not raw ∂): the second Bianchi identity\n * ∇_{[λ} R_{μν]ρσ} = 0 is the canonical statement. Using raw ∂ would give a\n * residual dominated by the (cyclic-non-cancelling) Christoffel-correction\n * terms, masking the identity check with O(1) algebraic clutter. Full ∇\n * makes the test a genuine self-consistency check of the lowered Riemann.\n */\nexport function covariantDerivRiemannLowerAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n): number[][][][][] {\n const gamma = christoffelAt(x, gFn, gInverseFn, N, engine);\n // Reuse the center Γ — riemannLowerAt(x) would otherwise recompute it.\n const R = riemannLowerAt(x, gFn, gInverseFn, N, engine, gamma);\n const dR = dRiemannLowerAt(x, gFn, gInverseFn, N, engine);\n\n const covR: number[][][][][] = nestedZeros5(N);\n\n for (let lam = 0; lam < N; lam++) {\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n for (let rho = 0; rho < N; rho++) {\n for (let sig = 0; sig < N; sig++) {\n let value = dR[lam][mu][nu][rho][sig];\n // Subtract Γ^α_{λμ} R_{ανρσ} (correction for the μ index)\n // Subtract Γ^α_{λν} R_{μαρσ} (correction for the ν index)\n // Subtract Γ^α_{λρ} R_{μνασ} (correction for the ρ index)\n // Subtract Γ^α_{λσ} R_{μνρα} (correction for the σ index)\n for (let a = 0; a < N; a++) {\n value -= gamma[a][lam][mu] * R[a][nu][rho][sig];\n value -= gamma[a][lam][nu] * R[mu][a][rho][sig];\n value -= gamma[a][lam][rho] * R[mu][nu][a][sig];\n value -= gamma[a][lam][sig] * R[mu][nu][rho][a];\n }\n covR[lam][mu][nu][rho][sig] = value;\n }\n }\n }\n }\n }\n\n return covR;\n}\n\n/**\n * Build the second-Bianchi-identity residual (cyclic over first three indices):\n *\n * B_{λμνρσ} = ∇_λ R_{μνρσ} + ∇_μ R_{νλρσ} + ∇_ν R_{λμρσ}\n *\n * Carroll Eq. 3.95: B ≡ 0 in any (torsion-free) Lorentzian manifold. The\n * residual measures the FD-truncation + cancellation noise on the lowered\n * Riemann tensor through one extra ∂ layer.\n *\n * Index order: `B[λ][μ][ν][ρ][σ]` — all five lower.\n */\nfunction bianchiResidualAt(\n x: ReadonlyArray<number>,\n gFn: MetricFn,\n gInverseFn: MetricFn,\n N: number,\n engine: TensorEngine,\n): number[][][][][] {\n const covR = covariantDerivRiemannLowerAt(x, gFn, gInverseFn, N, engine);\n\n const B: number[][][][][] = nestedZeros5(N);\n\n for (let lam = 0; lam < N; lam++) {\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n for (let rho = 0; rho < N; rho++) {\n for (let sig = 0; sig < N; sig++) {\n B[lam][mu][nu][rho][sig] =\n covR[lam][mu][nu][rho][sig] // ∇_λ R_{μνρσ}\n + covR[mu][nu][lam][rho][sig] // ∇_μ R_{νλρσ}\n + covR[nu][lam][mu][rho][sig]; // ∇_ν R_{λμρσ}\n }\n }\n }\n }\n }\n\n return B;\n}\n\n/**\n * JS-side contraction of a flat 4-axis tensor R[a][b][c][d] (length N⁴, row-major)\n * down to a 2-tensor by summing one upper axis against one lower axis.\n *\n * Configuration:\n * - `upperAxis`: the axis index (0..3) that contracts WITH `lowerAxis` (dummy slot).\n * - `lowerAxis`: the partner axis (0..3) forming the dummy pair.\n * - `outAxes`: the two surviving axes [i, j] that become the (free output)\n * rows/cols of the returned N×N matrix.\n *\n * For Carroll Eq. 3.91 Ricci R_μν = R^λ_{μλν} on Riemann stored as R[ρ][σ][μ][ν]:\n * contractRiemannJS(flatR, N, { upperAxis: 0, lowerAxis: 2, outAxes: [1, 3] })\n * sums `R[λ][μ_out][λ][ν_out]` over λ.\n *\n * Pre-flattened input convention: row-major `R[a][b][c][d] = flatR[a*N³ + b*N² + c*N + d]`.\n * (Matches `flattenNestedArray` output for an [N,N,N,N] EngineTensor.)\n *\n * @internal — extracted from `lowering.ts` ricci-tensor arm (AS-1, v0.5.1). Kept\n * deliberately narrow (4-axis source → 2-axis output) to match the v0.5.0 GR\n * curvature pipeline; generalisation deferred to v0.6.0 if Weyl/Kretschmann\n * arrives (see `docs/architecture/COMPONENTS.md` curvature-layer pattern note).\n */\nexport function contractRiemannJS(\n flatR: ReadonlyArray<number>,\n N: number,\n config: {\n upperAxis: 0 | 1 | 2 | 3;\n lowerAxis: 0 | 1 | 2 | 3;\n outAxes: readonly [number, number];\n },\n): number[][] {\n const { upperAxis, lowerAxis, outAxes } = config;\n if (upperAxis === lowerAxis) {\n throw new NumericalBackendError(\n `contractRiemannJS: upperAxis (${upperAxis}) and lowerAxis (${lowerAxis}) must differ`,\n );\n }\n const [outA, outB] = outAxes;\n if (outA === outB) {\n throw new NumericalBackendError(\n `contractRiemannJS: outAxes [${outA},${outB}] must be distinct`,\n );\n }\n if (outA === upperAxis || outA === lowerAxis || outB === upperAxis || outB === lowerAxis) {\n throw new NumericalBackendError(\n `contractRiemannJS: outAxes [${outA},${outB}] must not overlap dummy pair [${upperAxis},${lowerAxis}]`,\n );\n }\n if (flatR.length !== N * N * N * N) {\n throw new NumericalBackendError(\n `contractRiemannJS: flatR length ${flatR.length} != N⁴ = ${N * N * N * N}`,\n );\n }\n\n // Row-major strides for R[a][b][c][d].\n const N2 = N * N;\n const N3 = N * N * N;\n const strides = [N3, N2, N, 1] as const;\n const strideDummy = strides[upperAxis] + strides[lowerAxis];\n const strideOutA = strides[outA];\n const strideOutB = strides[outB];\n\n if (N === 4) {\n const strideUpper = strides[upperAxis];\n const strideLower = strides[lowerAxis];\n const dummy1 = strideUpper + strideLower;\n const dummy2 = dummy1 * 2;\n const dummy3 = dummy1 * 3;\n\n const out4 = [\n [0.0, 0.0, 0.0, 0.0],\n [0.0, 0.0, 0.0, 0.0],\n [0.0, 0.0, 0.0, 0.0],\n [0.0, 0.0, 0.0, 0.0],\n ];\n\n for (let i = 0; i < 4; i++) {\n const baseI = i * strideOutA;\n const row = out4[i];\n for (let j = 0; j < 4; j++) {\n const baseIJ = baseI + j * strideOutB;\n row[j] = flatR[baseIJ] + flatR[baseIJ + dummy1] + flatR[baseIJ + dummy2] + flatR[baseIJ + dummy3];\n }\n }\n return out4;\n }\n\n // Bolt: Manual allocation is faster than Array.from\n const out: number[][] = new Array<number[]>(N);\n for (let k = 0; k < N; k++) {\n const row = new Array<number>(N);\n for (let l = 0; l < N; l++) row[l] = 0.0;\n out[k] = row;\n }\n for (let i = 0; i < N; i++) {\n const baseI = i * strideOutA;\n for (let j = 0; j < N; j++) {\n const baseIJ = baseI + j * strideOutB;\n let sum = 0;\n for (let lam = 0; lam < N; lam++) {\n sum += flatR[baseIJ + lam * strideDummy];\n }\n out[i][j] = sum;\n }\n }\n return out;\n}\n\n\n// ===========================================================================\n// v0.6.1 Phase 2 Proposal 2 — Arm extractions from lowering.ts\n// ===========================================================================\n//\n// Two FD pipelines (`bianchi-residual` and `weyl-tensor`) were inlined as\n// switch arms in `lowering.ts`'s `lowerCurvature` dispatcher. Each was a\n// self-contained block of input-resolution + helper-pipeline + result-wrap\n// boilerplate; together they accounted for ~125 LOC of lowering.ts. Moving\n// them here (a) keeps the dispatcher readable, (b) co-locates the FD\n// machinery with its consumers, and (c) makes the per-arm pipeline\n// independently unit-testable in the future.\n\n/**\n * Lower a `bianchi-residual` AST node to a 5-rank EngineTensor B_{λμνρσ}.\n *\n * Extracted from `lowering.ts` `lowerCurvature` switch arm in v0.6.1 Phase 2.\n * Wires `inputs.tensors[xCoord.name]` (the coordinate vector) and\n * `inputs.fields[gLower.name]` / `inputs.fields[gInverse.name]` (the metric\n * closures) into the existing `bianchiResidualAt` FD helper.\n *\n * Approach (cyclic ∇R sum):\n * B_{λμνρσ} = ∇_λ R_{μνρσ} + ∇_μ R_{νλρσ} + ∇_ν R_{λμρσ}\n * Each ∇_λ R_{μνρσ} is computed with the four Christoffel-correction terms.\n *\n * @returns engine.fromNested(B, [N,N,N,N,N])\n */\nexport function lowerBianchiResidual(\n node: BianchiResidualNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n const rNode = node.riemann;\n const N = dimensionOf(inputs);\n const x = flattenNestedArray(requireValue(rNode.xCoord.name, inputs), N);\n const gFn = inputs.fields?.get(rNode.gLower.name) as MetricFn | undefined;\n const gInverseFn = inputs.fields?.get(rNode.gInverse.name) as MetricFn | undefined;\n if (!gFn || !gInverseFn) {\n throw new NumericalBackendError(\n `lowering: bianchi-residual numerical evaluation requires coordinate-` +\n `dependent metric closures in inputs.fields for \"${rNode.gLower.name}\" ` +\n `and \"${rNode.gInverse.name}\". ` +\n `Got fields=[${[...(inputs.fields?.keys() ?? [])].join(',')}].`,\n );\n }\n const B = bianchiResidualAt(x, gFn, gInverseFn, N, engine);\n return engine.fromNested(B as NestedArray, [N, N, N, N, N]);\n}\n\n/**\n * Lower a `weyl-tensor` AST node to a 4-rank EngineTensor C^ρ_{σμν}.\n *\n * Extracted from `lowering.ts` `lowerCurvature` switch arm in v0.6.1 Phase 2.\n * Implements the F-5 Weyl-formula pipeline:\n *\n * 1. Resolve `x`, `g`, `g_inv`, `g(x)`, `g_inv(x)` from `inputs`.\n * 2. Compute Riemann R^ρ_{σμν} via `christoffelAt` + `dGammaAt` + `buildRiemann`.\n * 3. Contract Ricci R_{μν} = R^λ_{μλν} via `contractRiemannJS`.\n * 4. Compute Ricci scalar R = Σ_{μν} g^{μν} R_{μν}.\n * 5. Assemble Weyl via `computeWeylTensor({...})` using the F-5 formula.\n *\n * Naming convention (must match the caller's inputs map):\n * inputs.tensors[metricName] — g_{μν} at x\n * inputs.tensors[metricName + '_inv'] — g^{μν} at x\n * inputs.tensors['x'] — coordinate 4-vector\n * inputs.fields[metricName] — coordinate-dependent g closure\n * inputs.fields[metricName + '_inv'] — coordinate-dependent g^{-1} closure\n *\n * @returns engine.fromNested(C, [N,N,N,N])\n */\nexport function lowerWeylTensor(\n node: WeylTensorNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n const N = dimensionOf(inputs);\n const metricName = node.metric.name;\n const metricInvName = `${metricName}_inv`;\n\n const x = flattenNestedArray(requireValue('x', inputs), N);\n const gFn = inputs.fields?.get(metricName) as MetricFn | undefined;\n const gInverseFn = inputs.fields?.get(metricInvName) as MetricFn | undefined;\n if (!gFn || !gInverseFn) {\n throw new NumericalBackendError(\n `lowering: weyl-tensor requires coordinate-dependent metric closures in ` +\n `inputs.fields for \"${metricName}\" and \"${metricInvName}\". ` +\n `Got fields=[${[...(inputs.fields?.keys() ?? [])].join(',')}].`,\n );\n }\n\n // Step 1-2: Riemann R^ρ_{σμν} via FD pipeline.\n const gamma = christoffelAt(x, gFn, gInverseFn, N, engine);\n const dGamma = dGammaAt(x, gFn, gInverseFn, N, engine);\n const Rup = buildRiemann(gamma, dGamma, N);\n\n // Step 3: Ricci R_{μν} = R^λ_{μλν} (Carroll Eq. 3.91).\n const flatRup = flattenNestedArray(Rup as unknown as NestedArray, N * N * N * N);\n const Ric = contractRiemannJS(flatRup, N, {\n upperAxis: 0, lowerAxis: 2, outAxes: [1, 3],\n });\n\n // Step 4: Ricci scalar R = Σ_{μν} g^{μν} R_{μν}.\n const gInvFlat = flattenNestedArray(requireValue(metricInvName, inputs), N * N);\n let Rscalar = 0;\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n Rscalar += gInvFlat[mu * N + nu] * Ric[mu][nu];\n }\n }\n\n // Step 5: point-sample of covariant metric + inverse, then assemble.\n const gFlat = flattenNestedArray(requireValue(metricName, inputs), N * N);\n // Bolt: Using manual loops over Array.from to avoid massive TypedArray conversion overhead\n const gMat: number[][] = new Array(N);\n const gInvMat: number[][] = new Array(N);\n for (let i = 0; i < N; i++) {\n const rowG = new Array(N);\n const rowGInv = new Array(N);\n const base = i * N;\n for (let j = 0; j < N; j++) {\n const idx = base + j;\n rowG[j] = gFlat[idx];\n rowGInv[j] = gInvFlat[idx];\n }\n gMat[i] = rowG;\n gInvMat[i] = rowGInv;\n }\n\n const C = computeWeylTensor({\n riemann: Rup,\n ricci: Ric,\n ricciScalar: Rscalar,\n metric: gMat,\n metricInverse: gInvMat,\n });\n return engine.fromNested(C as NestedArray, [N, N, N, N]);\n}\n\n/**\n * Lower a `kretschmann-scalar` node to the scalar K = R_{ρσμν} R^{ρσμν}.\n *\n * Uses the FD Riemann pipeline (`riemannLowerAt`) plus `computeKretschmann`.\n * Naming convention matches {@link lowerWeylTensor}.\n */\nexport function lowerKretschmannScalar(\n node: KretschmannScalarNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n const N = dimensionOf(inputs);\n const metricName = node.metric.name;\n const metricInvName = `${metricName}_inv`;\n\n const x = flattenNestedArray(requireValue('x', inputs), N);\n const gFn = inputs.fields?.get(metricName) as MetricFn | undefined;\n const gInverseFn = inputs.fields?.get(metricInvName) as MetricFn | undefined;\n if (!gFn || !gInverseFn) {\n throw new NumericalBackendError(\n `lowering: kretschmann-scalar requires coordinate-dependent metric closures in ` +\n `inputs.fields for \"${metricName}\" and \"${metricInvName}\". ` +\n `Got fields=[${[...(inputs.fields?.keys() ?? [])].join(',')}].`,\n );\n }\n\n const rLower = riemannLowerAt(x, gFn, gInverseFn, N, engine);\n // `flattenNestedArray` has checked the length is N·N, so the flat row-major form is the one\n // `computeKretschmann` reads as a Float64Array; it never was a number[][] here.\n const gInvFlat = flattenNestedArray(requireValue(metricInvName, inputs), N * N);\n const K = computeKretschmann(rLower, Float64Array.from(gInvFlat));\n return engine.fromNested(K, []);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivative-lowering.js","sourceRoot":"","sources":["../../src/numerical/derivative-lowering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"derivative-lowering.js","sourceRoot":"","sources":["../../src/numerical/derivative-lowering.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Derivative-arm lowering — extracted from `lowering.ts`'s switch\n * to close the v0.6.1 sprint-target LOC miss (903 vs ≤890).\n *\n * Exports two pure functions:\n * - `lowerTensorPartialDerivative` (∂_μ over tensor-symbol or\n * metric-tensor `of` operands, three numericalForm strategies)\n * - `lowerCovariantDerivative` (∇_μ over tensor-symbol or\n * metric-tensor `of`; sign rule applied per free index)\n *\n * Both functions take a `recur` thunk for the recursive `lowerNode`\n * call (the covariant-derivative arm needs it twice, once to lower\n * the `of` operand and once to lower a synthesized\n * `tensor-partial-derivative` for the partial component of ∇).\n * Threading the recursion via parameter avoids a forward-import\n * cycle between this module and `lowering.ts`.\n *\n * @module numerical/derivative-lowering\n */\n\nimport type { ExprNode } from '../dimensional/validator.js';\nimport { validate } from '../dimensional/validator.js';\nimport type { TensorSymbolNode } from '../dimensional/tensor.js';\nimport type { MetricTensorNode } from '../dimensional/metric-validators.js';\nimport type { CovariantDerivativeNode } from '../dimensional/connection-validators.js';\nimport { pderivGrid, pderivNumericalFn, pderivSymbolic } from './pderiv.js';\nimport type { EngineTensor, TensorEngine } from './tensor-engine.js';\nimport type { NumericalInputs, NestedArray } from './types.js';\nimport { NumericalBackendError } from './errors.js';\nimport {\n zeroTensor,\n zeroTensorLike,\n flatToNested,\n tensorAdd,\n tensorAddScaled,\n computeChristoffelTensor,\n contractChristoffelWithOperand,\n getMetricDerivFlat,\n} from './connection-lowering-helpers.js';\nimport {\n isMetricTensorNode,\n dimensionOf,\n requireValue,\n flattenNestedArray,\n} from './lowering-utils.js';\n\n/**\n * Thunk signature for the recursive `lowerNode` call. `lowering.ts`\n * passes its own `lowerNode` as this argument; the derivative arms\n * use it to lower sub-expressions (the `of` operand of a covariant\n * derivative, and a synthesized partial-derivative subtree).\n *\n * @internal\n */\ntype LowerNodeRecur = (\n node: ExprNode,\n inputs: NumericalInputs,\n engine: TensorEngine,\n) => EngineTensor;\n\n// ---------------------------------------------------------------------------\n// tensor-partial-derivative arm\n// ---------------------------------------------------------------------------\n\n/**\n * Lower a `tensor-partial-derivative` node (∂_μ over an `of` operand).\n *\n * v0.3.5/v0.4.0 scope: `of` is a tensor-symbol or metric-tensor.\n * ∂_μ(of) adds the wrtIndex as a trailing axis — the result shape is\n * [...ofShape, N], NOT ofShape. (For the covariant-eikonal method, used\n * by catalog relation be-37, `of` = the scalar S is\n * rank-0, so ∂_μ S is the rank-1 wave covector k_μ, shape [N].)\n *\n * Three numericalForm dispatches: 'symbolic' (caller-supplied\n * derivatives map), 'numerical-fn' (rank-0 scalar field, all-axes\n * stack), 'grid' (sampled derivative field).\n *\n * @internal\n */\nexport function lowerTensorPartialDerivative(\n node: Extract<ExprNode, { kind: 'tensor-partial-derivative' }>,\n inputs: NumericalInputs,\n engine: TensorEngine,\n): EngineTensor {\n const of = node.of as ExprNode;\n\n // v0.4.0 extension: metric-tensor pderiv dispatch.\n if (of.kind === 'metric-tensor') {\n const mNode = of as MetricTensorNode;\n const strategy = mNode.derivativeStrategy ?? 'computed';\n const N = dimensionOf(inputs);\n const coordLabel = node.wrtIndex.label;\n const ofShape = mNode.indices.map(() => N);\n const resultShape = [...ofShape, N];\n\n if (strategy === 'zero') {\n // ∂g = 0 everywhere (constant/flat metric).\n return zeroTensor(resultShape, engine);\n }\n if (strategy === 'supplied') {\n // Look up the N slices ∂_mu g for mu=0..N-1 and stack them as the\n // trailing axis. Key format: `${metricName}/${coordLabel}_${mu}`.\n const size = resultShape.reduce((a, b) => a * b, 1);\n const flat = new Array<number>(size).fill(0);\n for (let mu = 0; mu < N; mu++) {\n const key = `${mNode.name}/${coordLabel}_${mu}`;\n const slice = inputs.metricDerivatives?.get(key);\n if (slice === undefined) {\n throw new NumericalBackendError(\n `lowering: metric-tensor pderiv with strategy='supplied': ` +\n `no metricDerivatives entry for \"${key}\"`,\n );\n }\n const flatSlice = flattenNestedArray(slice, N * N);\n for (let ij = 0; ij < N * N; ij++) {\n flat[ij * N + mu] = flatSlice[ij];\n }\n }\n return engine.fromNested(flatToNested(flat, resultShape), resultShape);\n }\n\n // strategy === 'computed': constant-tensor metrics carry no\n // coordinate dependence — ∂_μ g = 0.\n return zeroTensor(resultShape, engine);\n }\n\n if (of.kind !== 'tensor-symbol') {\n throw new NumericalBackendError(\n `lowering: tensor-partial-derivative numerical eval requires a tensor-symbol `\n + `or metric-tensor 'of' operand in v0.3.5/v0.4.0 — got '${of.kind}'`,\n );\n }\n const sym = of as TensorSymbolNode;\n const form = sym.numericalForm ?? 'symbolic';\n const coordLabel = node.wrtIndex.label;\n const N = dimensionOf(inputs);\n const ofShape = sym.indices.map(() => N);\n const resultShape = [...ofShape, N];\n\n if (form === 'symbolic') {\n const d = pderivSymbolic(sym.name, coordLabel, inputs.derivatives ?? new Map());\n return engine.fromNested(d, resultShape);\n }\n\n if (form === 'numerical-fn') {\n // 'numerical-fn' lowering is scoped to a rank-0 `of` (scalar\n // field). ∂_μ ranges over all N coordinate axes — stack the N\n // single-axis derivatives into the rank-1 result.\n if (ofShape.length !== 0) {\n throw new NumericalBackendError(\n `lowering: 'numerical-fn' pderiv lowering supports a rank-0 'of' in v0.3.5; `\n + `\"${sym.name}\" is rank ${ofShape.length}`,\n );\n }\n const fn = inputs.fields?.get(sym.name);\n if (!fn) {\n throw new NumericalBackendError(\n `lowering: 'numerical-fn' tensor-symbol \"${sym.name}\" has no field fn in inputs.fields`,\n );\n }\n const coordValues = inputs.coords ? [...inputs.coords.values()] : [];\n const components: number[] = [];\n for (let axis = 0; axis < N; axis++) {\n components.push(pderivNumericalFn(fn, coordValues, axis) as number);\n }\n return engine.fromNested(components, [N]);\n }\n\n // form === 'grid': the GridField is sampled over space and\n // pderivGrid returns the derivative field sampled on that grid.\n const grid = inputs.grids?.get(sym.name);\n if (!grid) {\n throw new NumericalBackendError(\n `lowering: 'grid' tensor-symbol \"${sym.name}\" has no GridField in inputs.grids`,\n );\n }\n const gridAxis = inputs.coords ? [...inputs.coords.keys()].indexOf(coordLabel) : 0;\n const flat = pderivGrid(grid, gridAxis < 0 ? 0 : gridAxis);\n return engine.fromNested(flat.length === 1 ? flat[0] : flat, grid.shape);\n}\n\n// ---------------------------------------------------------------------------\n// covariant-derivative arm\n// ---------------------------------------------------------------------------\n\n/**\n * Lower a `covariant-derivative` node (∇_μ over an `of` operand).\n *\n * Calls `recur` to lower the `of` subtree and a synthesized\n * `tensor-partial-derivative` (the ∂ component of ∇). The Christoffel\n * correction (Γ^α_{μν} sign rule per free index of `of`) builds on\n * the metric-derivative data supplied via `inputs.metricDerivatives`.\n *\n * v0.4.0 contract: `of.derivativeStrategy === 'zero'` short-circuits\n * to a zero result. `'computed'` on a raw-tensor metric reduces to\n * the partial only (constant metric → Γ = 0). `'supplied'` invokes\n * the full Christoffel pipeline.\n *\n * @internal\n */\nexport function lowerCovariantDerivative(\n node: Extract<ExprNode, { kind: 'covariant-derivative' }>,\n inputs: NumericalInputs,\n engine: TensorEngine,\n recur: LowerNodeRecur,\n): EngineTensor {\n // S2(a) fix: `of.freeIndices` does NOT exist on the raw ExprNode.\n // Re-validate the `of` subtree to obtain its free-index structure.\n const covNode = node as CovariantDerivativeNode;\n const ofExpr = covNode.of as ExprNode;\n // TS-2 runtime guard: `covNode.of` is typed as `unknown` (module-cycle\n // prevents ExprNode import in connection-validators.ts). A malformed\n // AST bypassing validate() would produce a cryptic TypeError at\n // `ofExpr.kind` below. Throw a clear message now.\n if (typeof (ofExpr as { kind?: unknown }).kind !== 'string') {\n throw new NumericalBackendError(\n `lowering: CovariantDerivativeNode.of must have a string 'kind' field ` +\n `(got ${JSON.stringify((ofExpr as Record<string, unknown>).kind)}). ` +\n `Always call validate() before evaluateNumericalRaw().`,\n );\n }\n const ofValidation = validate(ofExpr);\n // Build ordered list of free indices: [{label, variance, pos}].\n const ofFreeIndices: Array<{ label: string; variance: 'upper' | 'lower'; pos: number }> = [];\n const ofIndices = (ofExpr as { indices?: ReadonlyArray<{ label: string; variance: 'upper' | 'lower' }> }).indices;\n if (ofIndices) {\n for (const idx of ofIndices) {\n const counts = ofValidation.freeIndices.get(idx.label);\n if (counts === undefined) continue; // contracted — not a free axis\n ofFreeIndices.push({\n label: idx.label,\n variance: idx.variance,\n pos: ofFreeIndices.length,\n });\n }\n } else {\n // Fallback for future of-kinds without .indices.\n let axisPos = 0;\n for (const [label, counts] of ofValidation.freeIndices) {\n for (let i = 0; i < counts.upper; i++) {\n ofFreeIndices.push({ label, variance: 'upper', pos: axisPos++ });\n }\n for (let i = 0; i < counts.lower; i++) {\n ofFreeIndices.push({ label, variance: 'lower', pos: axisPos++ });\n }\n }\n }\n\n // Lower the operand tensor via the injected recur thunk.\n const ofTensor = recur(ofExpr, inputs, engine);\n const N = dimensionOf(inputs);\n\n // TS-2 runtime guard: gLower must be a metric-tensor node.\n if (!isMetricTensorNode(covNode.gLower)) {\n throw new NumericalBackendError(\n `lowering: CovariantDerivativeNode.gLower must be a metric-tensor node ` +\n `(got kind='${(covNode.gLower as { kind?: unknown }).kind}')`,\n );\n }\n const strategy = covNode.gLower.derivativeStrategy ?? 'computed';\n\n // S2(b): strategy='zero' → flat space, Γ=0, ∇_μ T = ∂_μ T.\n // For constant tensors ∂_μ T = 0, result is zero of shape [...ofShape, N].\n if (strategy === 'zero') {\n const outShape = [...ofTensor.shape, N];\n return zeroTensor(outShape, engine);\n }\n\n // v0.4.0 CRITICAL FIX (Finding #1): 'computed' on a raw-tensor metric means\n // constant metric → Γ = 0 → covariant-derivative = partial only.\n // This early return MUST come before Christoffel construction.\n if (ofExpr.kind !== 'tensor-symbol' && ofExpr.kind !== 'metric-tensor') {\n throw new NumericalBackendError(\n `lowering: covariant-derivative 'of' must be tensor-symbol or metric-tensor ` +\n `(got '${(ofExpr as { kind: string }).kind}') — validated nodes cannot reach this point`,\n );\n }\n const pdNode: ExprNode = {\n kind: 'tensor-partial-derivative',\n of: ofExpr,\n wrt: covNode.wrt as ExprNode,\n wrtIndex: covNode.wrtIndex,\n };\n const partial = recur(pdNode, inputs, engine);\n\n if (strategy === 'computed') {\n return partial;\n }\n\n // S2(c) + S2(d): Build Γ^α_{μν} from metric data and apply\n // the sign rule to all free indices of `of`:\n // ∇_μ T^α_β = ∂_μ T^α_β + Γ^α_{μλ} T^λ_β − Γ^λ_{μβ} T^α_λ\n if (ofFreeIndices.length === 0) {\n return partial;\n }\n\n // gLower narrowed to MetricTensorNode by the predicate above (TS-2).\n const gLowerNode: MetricTensorNode = covNode.gLower;\n const gInverseNode = covNode.gInverse as MetricTensorNode;\n const gInverseData = flattenNestedArray(requireValue(gInverseNode.name, inputs), N * N);\n\n const coordLabel = covNode.wrtIndex.label;\n\n // getMetricDeriv(mu): returns flat [N*N] of ∂_{mu} g.\n // 'supplied' strategy is the only remaining possibility here.\n const getMetricDeriv = (mu: number): number[] =>\n getMetricDerivFlat(\n gLowerNode.name,\n coordLabel,\n mu,\n 'supplied',\n N,\n inputs.metricDerivatives,\n );\n\n // Compute Γ^α_{μν} from metric data.\n const GammaTensor = computeChristoffelTensor(gInverseData, getMetricDeriv, N, engine);\n const GammaFlat = flattenNestedArray(engine.toNested(GammaTensor) as NestedArray, N * N * N);\n\n // Apply the Christoffel correction for each free index of `of`.\n // S2(d) sign rule: upper → +Γ, lower → −Γ.\n const ofFlat = flattenNestedArray(engine.toNested(ofTensor) as NestedArray,\n ofTensor.shape.reduce((a: number, b: number) => a * b, 1));\n const ofShapeArr = [...ofTensor.shape];\n\n let correction = zeroTensorLike(partial, engine);\n for (const freeIdx of ofFreeIndices) {\n const term = contractChristoffelWithOperand(\n GammaFlat,\n ofFlat,\n ofShapeArr,\n freeIdx.pos,\n freeIdx.variance,\n N,\n engine,\n );\n const sign = freeIdx.variance === 'upper' ? 1 : -1;\n correction = tensorAddScaled(correction, term, sign as 1 | -1, engine);\n }\n\n return tensorAdd(partial, correction, engine);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einstein-equation.js","sourceRoot":"","sources":["../../src/numerical/einstein-equation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"einstein-equation.js","sourceRoot":"","sources":["../../src/numerical/einstein-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAuClD,sEAAsE;AACtE,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAEnC;;;;;GAKG;AACH,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,MAAM,CACnB,GAAG,EACH,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EACxE,aAAa,EACb,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CACrB,OAAO,EACP,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EACxE,aAAa,EACb,SAAS,CACV,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAEpF,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,gBAAyB;QAC/B,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAgB,EAAE;QACxD,YAAY,EAAE;YACZ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAgB,EAAE;YAC9C,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAgB,EAAE;YAC5C,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAgB,EAAE;SAK9C;QACD,MAAM;QACN,QAAQ;QACR,MAAM;KACP,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,iBAA0B;QAChC,OAAO,EAAE,WAAW;QACpB,MAAM;QACN,QAAQ;KACG,CAAC;AAChB,CAAC;AAED,mEAAmE;AACnE,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAAoC;IAEpC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAErE,6DAA6D;IAC7D,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAEjE,yEAAyE;IACzE,iFAAiF;IACjF,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAgB,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAgB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAkB,CAAC;IAEhC,uEAAuE;IACvE,kFAAkF;IAClF,6EAA6E;IAC7E,kFAAkF;IAClF,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,IAAI,GAAG,CAAC;YACf,CAAC,GAAG,EAAE,IAAI,CAAC;YACX,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAgB,CAAC;SAC7B,CAAC;QACF,MAAM,EAAE,IAAI,GAAG,CAAC;YACd,CAAC,GAAG,EAAE,GAAiD,CAAC;YACxD,CAAC,OAAO,EAAE,MAAoD,CAAC;SAChE,CAAC;QACF,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe,CAAC;IAEnD,sBAAsB;IACtB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE1B,mEAAmE;IACnE,EAAE;IACF,+EAA+E;IAC/E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,kBAAkB;IAClB,EAAE;IACF,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,sCAAsC;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,MAAM,SAAS,GACb,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;kBACP,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;kBACnC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAC/C,IAAI,UAAU,GAAG,aAAa;gBAAE,aAAa,GAAG,UAAU,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["/**\n * Einstein field equation residual evaluator (v0.6.0 Phase 2, Task 2.4).\n *\n * Computes the **scale-normalized** max residual of\n *\n * G_μν[g] + Λ g_μν − (8πG/c⁴) T_μν\n *\n * at a coordinate point, using the existing v0.5.0 einstein-tensor lowering\n * pipeline (lowerNode, einstein-tensor arm in src/numerical/lowering.ts).\n * No curvature recomputation from scratch — delegates to the internal\n * `lowerNode` synchronous path to stay non-async.\n *\n * **Scale normalization**: in SI units, the G_tt component involves catastrophic\n * cancellation of terms of order c²/r² ≈ 9e16/r² — the raw absolute residual\n * |G_tt| reaches O(0.25) due to FD truncation noise in individual Riemann\n * components, even though the true G_tt is identically zero. To make the\n * vacuum-closure test meaningful, each |G_μν| component is normalized by the\n * scale of the corresponding metric component |g_μν| (where g_μν ≠ 0).\n * The returned value is then max over (μ,ν) of |G_μν| / scale_μν, which is\n * dimensionless and measures relative closure at the FD truncation floor.\n *\n * @module numerical/einstein-equation\n */\n\nimport type { ExprNode } from '../dimensional/validator.js';\nimport type { NumericalInputs, NestedArray } from './types.js';\nimport { lowerNode } from './lowering.js';\nimport { MathTSEngine } from './mathts-engine.js';\nimport { metric } from '../dimensional/metric.js';\nimport { tsym } from '../dimensional/tensor.js';\nimport { LENGTH, DIMENSIONLESS } from '../dimensional/types.js';\nimport { C_SI, G_SI } from '../core/constants.js';\n\n/** 4-component coordinate vector [t, r, θ, φ].\n *\n * @public */\nexport type Vec4 = [number, number, number, number];\n\n/**\n * Coordinate-dependent metric closure: maps a coordinate 4-vector to a 4×4\n * covariant or contravariant metric matrix.\n *\n * @public\n */\nexport type MetricClosure = (x: ReadonlyArray<number>) => number[][];\n\n/**\n * Input bag for `evaluateEinsteinEquationResidual`.\n *\n * @public\n */\nexport interface EinsteinEquationResidualInput {\n /**\n * Covariant metric closure g_{μν}(x). Must be coordinate-dependent (the FD\n * pipeline inside the einstein-tensor lowering samples it at perturbed points).\n */\n gFn: MetricClosure;\n /**\n * Contravariant metric closure g^{μν}(x). Must be the exact inverse of gFn\n * (i.e. gFn(x) · gInvFn(x) = I for all x).\n */\n gInvFn: MetricClosure;\n /** Cosmological constant Λ in units consistent with the metric (m⁻² for SI). Use 0 for vacuum. */\n cosmologicalConstant: number;\n /** Stress-energy tensor T_μν as a 4×4 matrix closure; return zeros for vacuum. */\n stressEnergy: (x: Vec4) => number[][];\n /** Coordinate 4-vector [t, r, θ, φ] at which to evaluate the residual. */\n x: Vec4;\n}\n\n/** Shared engine instance (stateless MathTSEngine, safe to reuse). */\nconst _engine = new MathTSEngine();\n\n/**\n * Build the EinsteinTensorNode AST that the lowering layer understands.\n * The inner RiemannTensorNode and outer EinsteinTensorNode both reference\n * the same metric pair by name ('g' / 'g_inv'), which the inputs.tensors\n * and inputs.fields maps must populate at call time.\n */\nfunction buildEinsteinNode(): ExprNode {\n const gLower = metric(\n 'g',\n [{ label: 'mu', variance: 'lower' }, { label: 'nu', variance: 'lower' }],\n DIMENSIONLESS,\n '+,-,-,-',\n );\n const gInverse = metric(\n 'g_inv',\n [{ label: 'mu', variance: 'upper' }, { label: 'nu', variance: 'upper' }],\n DIMENSIONLESS,\n '+,-,-,-',\n );\n const xCoord = tsym('x', [{ label: 'c', variance: 'upper' }], LENGTH, 'coordinate');\n\n const riemannNode = {\n kind: 'riemann-tensor' as const,\n upperIndex: { label: 'rho', variance: 'upper' as const },\n lowerIndices: [\n { label: 'sigma', variance: 'lower' as const },\n { label: 'lam', variance: 'lower' as const },\n { label: 'nu_r', variance: 'lower' as const },\n ] as [\n { label: string; variance: 'lower' },\n { label: string; variance: 'lower' },\n { label: string; variance: 'lower' },\n ],\n gLower,\n gInverse,\n xCoord,\n };\n\n return {\n kind: 'einstein-tensor' as const,\n riemann: riemannNode,\n gLower,\n gInverse,\n } as ExprNode;\n}\n\n/** The cached AST node (constructed once, reused across calls). */\nconst _einsteinNode = buildEinsteinNode();\n\n/**\n * Evaluate the Einstein-equation scale-normalized residual at the given point.\n *\n * Returns `max over (μ,ν) of |G_μν + Λ g_μν − κ T_μν| / scale_μν`, where\n * `scale_μν = max(|g_μν|, 1e-30)` to avoid division by zero on off-diagonal\n * zero entries.\n *\n * **Why scale-normalize?** In SI units, G_tt involves cancellation of\n * Riemann terms of order c²/r² ~ 9e16/r², leaving a FD truncation noise\n * of O(0.25) in the absolute residual at r=3r_s. Dividing by |g_tt| ~ 6e16\n * gives a relative residual of ~4e-18, which is the genuine FD precision\n * floor. Without normalization, the vacuum closure test would require a\n * tolerance of ~1 rather than ~1e-17, making it vacuous.\n *\n * For Schwarzschild vacuum (T=0, Λ=0) the normalized residual should be\n * near machine precision (typically < 1e-8 at all 13 sample points).\n *\n * The function is **synchronous** because `lowerNode` is synchronous — the\n * async wrapper in `evaluateNumerical` is only for the engine-registry lookup\n * and dimensional validation, both bypassed here by using the Float64 engine\n * directly and passing a structurally-known-valid AST.\n *\n * @example\n * ```typescript\n * import { evaluateEinsteinEquationResidual } from 'universal-physics-tensor';\n * import {\n * schwarzschildGFn,\n * schwarzschildGInverseFn,\n * schwarzschildRs,\n * } from '../tests/fixtures/schwarzschild.js';\n *\n * const M = 1.989e30;\n * const r_s = schwarzschildRs(M);\n * const x: [number, number, number, number] = [0, 5 * r_s, Math.PI / 2, 0];\n *\n * const residual = evaluateEinsteinEquationResidual({\n * gFn: schwarzschildGFn(M),\n * gInvFn: schwarzschildGInverseFn(M),\n * cosmologicalConstant: 0,\n * stressEnergy: (_x) => [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],\n * x,\n * });\n * // residual < 1e-8 for Schwarzschild vacuum (FD truncation floor)\n * ```\n *\n * @public\n */\nexport function evaluateEinsteinEquationResidual(\n input: EinsteinEquationResidualInput,\n): number {\n const { gFn, gInvFn, cosmologicalConstant, stressEnergy, x } = input;\n\n // κ = 8πG/c⁴ (SI units: m/kg·s² if G in m³/kg/s², c in m/s)\n const kappa = (8 * Math.PI * G_SI) / (C_SI * C_SI * C_SI * C_SI);\n\n // Sample metric at the evaluation point (needed for the Λ g_μν term, the\n // ½R g_μν subtraction inside einstein-tensor lowering, and scale normalization).\n const gAtX = gFn(x) as NestedArray;\n const gInvAtX = gInvFn(x) as NestedArray;\n const gMat = gAtX as number[][];\n\n // Build NumericalInputs that the einstein-tensor lowering arm expects:\n // - inputs.tensors['g']: concrete g_{μν} at x (step 4: ½R g_μν subtraction)\n // - inputs.tensors['g_inv']: concrete g^{μν} at x (step 3: scalar trace R)\n // - inputs.tensors['x']: coordinate array (riemann-tensor arm reads xCoord)\n // - inputs.fields['g']: coordinate-dependent g closure (FD for ∂g → Γ)\n // - inputs.fields['g_inv']: coordinate-dependent g^{-1} closure (FD for Γ)\n const inputs: NumericalInputs = {\n tensors: new Map([\n ['g', gAtX],\n ['g_inv', gInvAtX],\n ['x', [...x] as NestedArray],\n ]),\n fields: new Map([\n ['g', gFn as (xs: ReadonlyArray<number>) => NestedArray],\n ['g_inv', gInvFn as (xs: ReadonlyArray<number>) => NestedArray],\n ]),\n dimension: 4,\n };\n\n // Lower G_μν via the einstein-tensor arm. lowerNode is synchronous (no await\n // inside the einstein-tensor / ricci-tensor / riemann-tensor case arms).\n const G_tensor = lowerNode(_einsteinNode, inputs, _engine);\n const G = _engine.toNested(G_tensor) as number[][];\n\n // T_μν at this point.\n const T = stressEnergy(x);\n\n // Scale-normalized residual: max |G_μν + Λ g_μν − κ T_μν| / |g_μν|\n //\n // scale_μν = max(|g_μν|, 1e-30) avoids division by zero on off-diagonal zeros.\n // For diagonal Schwarzschild: |g_tt| ~ c²f ~ 6e16, |g_rr|~1.5, |g_θθ|~r²,\n // |g_φφ|~r²sin²θ. Off-diagonal components are exactly zero → scale = 1e-30,\n // making |G_μν|/scale = |G_μν|/1e-30 — but G_μν off-diagonal is also ~0\n // (FD noise), so these terms are ~0/1e-30 = negligible once the diagonal\n // terms dominate.\n //\n // Implementation note: use max(|g_μν|, 1.0) instead of 1e-30 to keep the\n // relative residual well-behaved when G_μν_off-diag has O(FD noise) absolute\n // values. With floor=1.0, the off-diagonal \"relative\" residuals are just the\n // absolute FD noise, which is < 1e-9 for 4th-order stencils, hence swamped\n // by the diagonal relative residuals.\n const N = 4;\n let maxNormalized = 0;\n for (let mu = 0; mu < N; mu++) {\n for (let nu = 0; nu < N; nu++) {\n const component =\n G[mu][nu]\n + cosmologicalConstant * gMat[mu][nu]\n - kappa * T[mu][nu];\n const scale = Math.max(Math.abs(gMat[mu][nu]), 1.0);\n const normalized = Math.abs(component) / scale;\n if (normalized > maxNormalized) maxNormalized = normalized;\n }\n }\n return maxNormalized;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../src/numerical/engine-registry.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,IAAI,cAAiD,CAAC;AAEtD,wEAAwE;AACxE,iEAAiE;AACjE,IAAI,SAAmC,CAAC;AAExC,2EAA2E;AAC3E,gEAAgE;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;IACpE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,SAAS,GAAG,MAAM,CAAC;IACnB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,cAAc,GAAG,SAAS,CAAC;IAC3B,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../src/numerical/engine-registry.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,IAAI,cAAiD,CAAC;AAEtD,wEAAwE;AACxE,iEAAiE;AACjE,IAAI,SAAmC,CAAC;AAExC,2EAA2E;AAC3E,gEAAgE;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;IACpE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,SAAS,GAAG,MAAM,CAAC;IACnB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,cAAc,GAAG,SAAS,CAAC;IAC3B,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC","sourcesContent":["/**\n * Engine registry — the active TensorEngine is `MathTSEngine`.\n *\n * The MathTS packages are required dependencies. There is no absent-peer\n * branch.\n *\n * The Promise itself is cached, so concurrent first-time callers share one\n * resolution. `setActiveEngine` replaces that promise, including one that\n * has not been awaited yet.\n *\n * @module numerical/engine-registry\n */\nimport type { TensorEngine } from './tensor-engine.js';\nimport { MathTSEngine } from './mathts-engine.js';\n\nlet _activeEngineP: Promise<TensorEngine> | undefined;\n\n// An explicit setActiveEngine override. Read when the cached promise is\n// created, so a set that lands first wins for the first awaiter.\nlet _override: TensorEngine | undefined;\n\n// @public: getActiveEngine/setActiveEngine are part of the consumer-facing\n// engine-switching contract (re-exported from the root barrel).\n\n/**\n * The TensorEngine used by the `evaluateNumerical*` entry points when no\n * per-call `EvaluateOptions.engine` is supplied. Always a `MathTSEngine`\n * unless {@link setActiveEngine} replaced it.\n *\n * @public\n */\nexport async function getActiveEngine(): Promise<TensorEngine> {\n _activeEngineP ??= Promise.resolve(_override ?? new MathTSEngine());\n return _activeEngineP;\n}\n\n/**\n * Set the process-wide active TensorEngine.\n * Wraps the engine in a resolved Promise to match the async getActiveEngine\n * contract.\n * @public\n */\nexport function setActiveEngine(engine: TensorEngine): void {\n _override = engine;\n _activeEngineP = Promise.resolve(engine);\n}\n\n/**\n * Reset the Promise-cache for testing purposes only.\n * Not part of the public API surface; NOT exported from the root barrel.\n * @internal\n */\nexport function resetEngineForTesting(): void {\n _activeEngineP = undefined;\n _override = undefined;\n}\n"]}
|
|
@@ -11,7 +11,9 @@ import { UPTError } from '../dimensional/errors.js';
|
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
export declare class NumericalBackendError extends UPTError {
|
|
14
|
-
constructor(message: string
|
|
14
|
+
constructor(message: string, options?: {
|
|
15
|
+
readonly cause?: unknown;
|
|
16
|
+
});
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Thrown when a TensorEngine method required for an operation is not
|
|
@@ -22,7 +24,9 @@ export declare class NumericalBackendError extends UPTError {
|
|
|
22
24
|
export declare class EngineCapabilityError extends NumericalBackendError {
|
|
23
25
|
readonly engineName: string;
|
|
24
26
|
readonly missingMethod: string;
|
|
25
|
-
constructor(engineName: string, missingMethod: string
|
|
27
|
+
constructor(engineName: string, missingMethod: string, options?: {
|
|
28
|
+
readonly cause?: unknown;
|
|
29
|
+
});
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Thrown when the GL4 implicit-stage Picard fixed-point solver fails to
|
|
@@ -33,7 +37,7 @@ export declare class EngineCapabilityError extends NumericalBackendError {
|
|
|
33
37
|
* Picard convergence is linear with contraction rate ≈ h·|∂f/∂x|; failure
|
|
34
38
|
* usually indicates the step size h is too large for the local curvature.
|
|
35
39
|
* Adaptive step-halving (Task 5) is the production response — direct
|
|
36
|
-
* callers of `
|
|
40
|
+
* callers of `gl4Step` should adjust h or picardMaxIter.
|
|
37
41
|
*
|
|
38
42
|
* @public
|
|
39
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/numerical/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/numerical/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAGlE;CACF;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,qBAAqB;aAE5C,UAAU,EAAE,MAAM;aAClB,aAAa,EAAE,MAAM;IAFvC,YACkB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAQvC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,SAAQ,qBAAqB;IAC5D,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF"}
|
package/dist/numerical/errors.js
CHANGED
|
@@ -11,10 +11,9 @@ import { UPTError } from '../dimensional/errors.js';
|
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
export class NumericalBackendError extends UPTError {
|
|
14
|
-
constructor(message) {
|
|
15
|
-
super(message);
|
|
14
|
+
constructor(message, options) {
|
|
15
|
+
super(message, options);
|
|
16
16
|
this.name = 'NumericalBackendError';
|
|
17
|
-
Object.setPrototypeOf(this, NumericalBackendError.prototype);
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
/**
|
|
@@ -26,13 +25,12 @@ export class NumericalBackendError extends UPTError {
|
|
|
26
25
|
export class EngineCapabilityError extends NumericalBackendError {
|
|
27
26
|
engineName;
|
|
28
27
|
missingMethod;
|
|
29
|
-
constructor(engineName, missingMethod) {
|
|
28
|
+
constructor(engineName, missingMethod, options) {
|
|
30
29
|
super(`Engine "${engineName}" does not implement "${missingMethod}". ` +
|
|
31
|
-
`Call \`hasAutogradSupport(engine)\` to detect support before invoking
|
|
30
|
+
`Call \`hasAutogradSupport(engine)\` to detect support before invoking.`, options);
|
|
32
31
|
this.engineName = engineName;
|
|
33
32
|
this.missingMethod = missingMethod;
|
|
34
33
|
this.name = 'EngineCapabilityError';
|
|
35
|
-
Object.setPrototypeOf(this, EngineCapabilityError.prototype);
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
/**
|
|
@@ -44,7 +42,7 @@ export class EngineCapabilityError extends NumericalBackendError {
|
|
|
44
42
|
* Picard convergence is linear with contraction rate ≈ h·|∂f/∂x|; failure
|
|
45
43
|
* usually indicates the step size h is too large for the local curvature.
|
|
46
44
|
* Adaptive step-halving (Task 5) is the production response — direct
|
|
47
|
-
* callers of `
|
|
45
|
+
* callers of `gl4Step` should adjust h or picardMaxIter.
|
|
48
46
|
*
|
|
49
47
|
* @public
|
|
50
48
|
*/
|
|
@@ -52,7 +50,6 @@ export class GL4ConvergenceError extends NumericalBackendError {
|
|
|
52
50
|
constructor(message) {
|
|
53
51
|
super(message);
|
|
54
52
|
this.name = 'GL4ConvergenceError';
|
|
55
|
-
Object.setPrototypeOf(this, GL4ConvergenceError.prototype);
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/numerical/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAe;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/numerical/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAe,EAAE,OAAsC;QACjE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;IAE5C,UAAU;IACV,aAAa;IAF/B,YACkB,UAAkB,EAClB,aAAqB,EACrC,OAAsC;QAEtC,KAAK,CACH,WAAW,UAAU,yBAAyB,aAAa,KAAK;YAC9D,wEAAwE,EAC1E,OAAO,CACR,CAAC;0BARc,UAAU;6BACV,aAAa;QAQ7B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAoB,SAAQ,qBAAqB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF","sourcesContent":["/**\n * Numerical-backend error type. Subclass of UPTError so downstream\n * consumers discriminate UPT-source errors uniformly with `instanceof`.\n *\n * @module numerical/errors\n */\nimport { UPTError } from '../dimensional/errors.js';\n\n/**\n * Error type thrown by the numerical-contraction backend. Subclass of\n * `UPTError` so consumers can discriminate UPT-source errors with `instanceof`.\n * @public\n */\nexport class NumericalBackendError extends UPTError {\n constructor(message: string, options?: { readonly cause?: unknown }) {\n super(message, options);\n this.name = 'NumericalBackendError';\n }\n}\n\n/**\n * Thrown when a TensorEngine method required for an operation is not\n * implemented by the active engine. Call `hasAutogradSupport(engine)` before\n * invoking AD methods to avoid this error.\n * @public\n */\nexport class EngineCapabilityError extends NumericalBackendError {\n constructor(\n public readonly engineName: string,\n public readonly missingMethod: string,\n options?: { readonly cause?: unknown },\n ) {\n super(\n `Engine \"${engineName}\" does not implement \"${missingMethod}\". ` +\n `Call \\`hasAutogradSupport(engine)\\` to detect support before invoking.`,\n options,\n );\n this.name = 'EngineCapabilityError';\n }\n}\n\n/**\n * Thrown when the GL4 implicit-stage Picard fixed-point solver fails to\n * reach `picardTol` within `picardMaxIter` iterations. Carries a message\n * matching `/Picard iteration did not converge/` for I7-style specific\n * error-class assertions.\n *\n * Picard convergence is linear with contraction rate ≈ h·|∂f/∂x|; failure\n * usually indicates the step size h is too large for the local curvature.\n * Adaptive step-halving (Task 5) is the production response — direct\n * callers of `gl4Step` should adjust h or picardMaxIter.\n *\n * @public\n */\nexport class GL4ConvergenceError extends NumericalBackendError {\n constructor(message: string) {\n super(message);\n this.name = 'GL4ConvergenceError';\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-uncertainty.d.ts","sourceRoot":"","sources":["../../src/numerical/evaluator-uncertainty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluator-uncertainty.d.ts","sourceRoot":"","sources":["../../src/numerical/evaluator-uncertainty.ts"],"names":[],"mappings":"AA8BA,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,yFAAyF;IACzF,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAM3D;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvC,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA+ElC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAI1G"}
|
|
@@ -14,6 +14,17 @@ import { propagateUncertainty as propagateScalarUncertainty } from '@danielsimon
|
|
|
14
14
|
import { eigvals } from '@danielsimonjr/mathts-matrix';
|
|
15
15
|
/** A curvature term above this fraction of the linear term marks the linearization unreliable. */
|
|
16
16
|
const NONLINEAR_FRACTION = 0.1;
|
|
17
|
+
/**
|
|
18
|
+
* Thrown inside the finite-difference callback when the evaluator returns no
|
|
19
|
+
* finite number at a stepped point. It is the one outcome the propagation
|
|
20
|
+
* reports as "undefined next to this input"; it is not a programming error.
|
|
21
|
+
*/
|
|
22
|
+
class EvaluatorUndefinedError extends Error {
|
|
23
|
+
constructor(output, input) {
|
|
24
|
+
super(`evaluator output '${output}' is not a finite number when '${input}' is stepped`);
|
|
25
|
+
this.name = 'EvaluatorUndefinedError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
17
28
|
function correlationOf(corr, i, j) {
|
|
18
29
|
return i === j ? 1 : (corr.get(`${i},${j}`) ?? corr.get(`${j},${i}`) ?? 0);
|
|
19
30
|
}
|
|
@@ -49,11 +60,17 @@ export function propagateEvaluatorUncertainty(f, inputs, sigma, corr) {
|
|
|
49
60
|
probed = propagateScalarUncertainty((vals) => {
|
|
50
61
|
const out = f({ ...inputs, ...vals })[name];
|
|
51
62
|
if (typeof out !== 'number' || !Number.isFinite(out))
|
|
52
|
-
throw new
|
|
63
|
+
throw new EvaluatorUndefinedError(name, k);
|
|
53
64
|
return out;
|
|
54
65
|
}, { [k]: x }, { [k]: u }, u > 0 ? { relativeStep, curvatureOffsets: { [k]: u } } : { relativeStep });
|
|
55
66
|
}
|
|
56
|
-
catch {
|
|
67
|
+
catch (error) {
|
|
68
|
+
// Only "the evaluator has no finite value at the stepped point" is the
|
|
69
|
+
// reported outcome below. A RangeError is the evaluator's own domain
|
|
70
|
+
// refusal at that point and is the same outcome. Anything else is a
|
|
71
|
+
// programming error and propagates.
|
|
72
|
+
if (!(error instanceof EvaluatorUndefinedError) && !(error instanceof RangeError))
|
|
73
|
+
throw error;
|
|
57
74
|
probed = undefined;
|
|
58
75
|
}
|
|
59
76
|
const ck = probed?.partials[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-uncertainty.js","sourceRoot":"","sources":["../../src/numerical/evaluator-uncertainty.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluator-uncertainty.js","sourceRoot":"","sources":["../../src/numerical/evaluator-uncertainty.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * First-order propagation of input uncertainties through a closed-form\n * evaluator (GUM's law of propagation), with pairwise correlations and a\n * curvature check per input.\n *\n * This is the numerical engine behind `upt evaluate --sigma/--corr`. It is\n * not the public graph-layer `propagateUncertainty`, which takes a bridge\n * edge and folds neither correlations nor a curvature ratio.\n *\n * @internal\n * @module numerical/evaluator-uncertainty\n */\nimport { propagateUncertainty as propagateScalarUncertainty } from '@danielsimonjr/mathts-functions';\nimport { eigvals } from '@danielsimonjr/mathts-matrix';\n\n/** A curvature term above this fraction of the linear term marks the linearization unreliable. */\nconst NONLINEAR_FRACTION = 0.1;\n\n/**\n * Thrown inside the finite-difference callback when the evaluator returns no\n * finite number at a stepped point. It is the one outcome the propagation\n * reports as \"undefined next to this input\"; it is not a programming error.\n */\nclass EvaluatorUndefinedError extends Error {\n constructor(output: string, input: string) {\n super(`evaluator output '${output}' is not a finite number when '${input}' is stepped`);\n this.name = 'EvaluatorUndefinedError';\n }\n}\n\n/** One input's share of an output's uncertainty. */\nexport interface UncertaintyContribution {\n readonly sensitivity: number | null;\n readonly contribution: number | null;\n /** |f(x+u) + f(x−u) − 2f(x)| / 2 over |c·u|: the second-order term against the first. */\n readonly curvatureRatio: number | null;\n readonly note?: string;\n}\n\n/** One output's propagated uncertainty. */\nexport interface PropagatedOutput {\n readonly value: number;\n readonly u: number | null;\n readonly relative: number | null;\n readonly contributions: Record<string, UncertaintyContribution>;\n readonly unreliable: string[];\n}\n\n/** A pairwise correlation table keyed `a,b`; either order is read. */\nexport type CorrelationTable = ReadonlyMap<string, number>;\n\nfunction correlationOf(corr: CorrelationTable, i: string, j: string): number {\n return i === j ? 1 : (corr.get(`${i},${j}`) ?? corr.get(`${j},${i}`) ?? 0);\n}\n\n/**\n * GUM's law of propagation, u² = Σᵢⱼ cᵢ cⱼ ρᵢⱼ uᵢ uⱼ, with cᵢ by central\n * difference over `f`. Each input is also stepped by ±uᵢ, so a curvature term\n * comparable to the linear term is reported rather than hidden in a\n * small-looking σ. Every numeric field of `f`'s record that is not an input\n * is an output.\n */\nexport function propagateEvaluatorUncertainty(\n f: (inputs: Record<string, number>) => Record<string, unknown>,\n inputs: Readonly<Record<string, number>>,\n sigma: Readonly<Record<string, number>>,\n corr: CorrelationTable,\n): Record<string, PropagatedOutput> {\n const base = f({ ...inputs });\n const keys = Object.keys(sigma);\n const out: Record<string, PropagatedOutput> = {};\n for (const [name, v] of Object.entries(base)) {\n if (typeof v !== 'number' || name in inputs) continue;\n const contributions: Record<string, UncertaintyContribution> = {};\n const c: Record<string, number | null> = {};\n const unreliable: string[] = [];\n for (const k of keys) {\n const u = sigma[k]!;\n const x = inputs[k]!;\n // The step is per input (`u·10⁻³`, or a relative step when u is 0).\n // MathTS differentiates every key of `values` with one `relativeStep`, so\n // this call's values object is only `k`. The callback puts the other\n // inputs back. Passing them as values would step an exact input (f_lo = 0\n // goes negative) and discard this partial. The correlation sum stays here.\n const h = u > 0 ? u * 1e-3 : Math.abs(x) * 1e-6 || 1e-6;\n const relativeStep = h / Math.max(Math.abs(x), 1e-30);\n let probed: ReturnType<typeof propagateScalarUncertainty> | undefined;\n try {\n probed = propagateScalarUncertainty(\n (vals) => {\n const out = f({ ...inputs, ...vals })[name];\n if (typeof out !== 'number' || !Number.isFinite(out)) throw new EvaluatorUndefinedError(name, k);\n return out;\n },\n { [k]: x },\n { [k]: u },\n u > 0 ? { relativeStep, curvatureOffsets: { [k]: u } } : { relativeStep },\n );\n } catch (error) {\n // Only \"the evaluator has no finite value at the stepped point\" is the\n // reported outcome below. A RangeError is the evaluator's own domain\n // refusal at that point and is the same outcome. Anything else is a\n // programming error and propagates.\n if (!(error instanceof EvaluatorUndefinedError) && !(error instanceof RangeError)) throw error;\n probed = undefined;\n }\n const ck = probed?.partials[k];\n if (probed === undefined || typeof ck !== 'number' || !Number.isFinite(ck)) {\n c[k] = null;\n contributions[k] = {\n sensitivity: null,\n contribution: null,\n curvatureRatio: null,\n note: 'the evaluator is undefined next to this input',\n };\n unreliable.push(k);\n continue;\n }\n c[k] = ck;\n let curvatureRatio: number | null = null;\n let note: string | undefined;\n if (u > 0 && ck * u !== 0) {\n const reported = probed.curvature?.[k];\n if (reported === undefined || reported === null || !Number.isFinite(reported)) {\n note = \"±u reaches outside the evaluator's domain\";\n unreliable.push(k);\n } else {\n curvatureRatio = reported;\n if (curvatureRatio > NONLINEAR_FRACTION) unreliable.push(k);\n }\n }\n contributions[k] = { sensitivity: ck, contribution: ck * u, curvatureRatio, ...(note === undefined ? {} : { note }) };\n }\n let variance: number | null = 0;\n for (const i of keys) {\n for (const j of keys) {\n const rho = correlationOf(corr, i, j);\n if (rho === 0) continue;\n if (c[i] === null || c[j] === null) variance = null;\n if (variance !== null) variance += c[i]! * c[j]! * rho * sigma[i]! * sigma[j]!;\n }\n }\n const u = variance === null ? null : Math.sqrt(Math.max(variance, 0));\n out[name] = { value: v, u, relative: u === null || v === 0 ? null : u / Math.abs(v), contributions, unreliable };\n }\n return out;\n}\n\n/**\n * Whether the correlation matrix over `keys` describes a joint distribution:\n * symmetric with unit diagonal by construction, and positive semidefinite.\n * The eigenvalues are MathTS's; a singular matrix (ρ = ±1) is admitted, an\n * indefinite one is not.\n */\nexport function correlationIsPositiveSemidefinite(keys: readonly string[], corr: CorrelationTable): boolean {\n if (keys.length === 0) return true;\n const matrix = keys.map((ki) => keys.map((kj) => correlationOf(corr, ki, kj)));\n return eigvals(matrix).every((lambda) => lambda.re >= -1e-12);\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One central-difference rule.
|
|
3
|
+
*
|
|
4
|
+
* Three readers differentiated a closed form by central differences, each
|
|
5
|
+
* with its own step rule and its own denominator (`2h` at one, the
|
|
6
|
+
* representable step at another). The derivative is here, once: the caller
|
|
7
|
+
* passes the step its rule chose, and the denominator is the step the
|
|
8
|
+
* floating-point point actually took, `dx = (x + h) − (x − h)`, so a
|
|
9
|
+
* perturbation that rounds at an astrophysical `x` is divided by what was
|
|
10
|
+
* applied, not by what was asked.
|
|
11
|
+
*
|
|
12
|
+
* @module numerical/finite-difference
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* `∂f/∂x_key` at `point` by the central difference with half-step `step`:
|
|
16
|
+
* `(f(x + h) − f(x − h)) / ((x + h) − (x − h))`. The other keys of `point` are
|
|
17
|
+
* held. The step rule is the caller's; a zero or non-finite `step` makes the
|
|
18
|
+
* denominator 0 or NaN, which the caller refuses before calling.
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare function centralPartial(f: (point: Record<string, number>) => number, point: Readonly<Record<string, number>>, key: string, step: number): number;
|
|
22
|
+
//# sourceMappingURL=finite-difference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finite-difference.d.ts","sourceRoot":"","sources":["../../src/numerical/finite-difference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,EAC5C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,CAKR"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One central-difference rule.
|
|
3
|
+
*
|
|
4
|
+
* Three readers differentiated a closed form by central differences, each
|
|
5
|
+
* with its own step rule and its own denominator (`2h` at one, the
|
|
6
|
+
* representable step at another). The derivative is here, once: the caller
|
|
7
|
+
* passes the step its rule chose, and the denominator is the step the
|
|
8
|
+
* floating-point point actually took, `dx = (x + h) − (x − h)`, so a
|
|
9
|
+
* perturbation that rounds at an astrophysical `x` is divided by what was
|
|
10
|
+
* applied, not by what was asked.
|
|
11
|
+
*
|
|
12
|
+
* @module numerical/finite-difference
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* `∂f/∂x_key` at `point` by the central difference with half-step `step`:
|
|
16
|
+
* `(f(x + h) − f(x − h)) / ((x + h) − (x − h))`. The other keys of `point` are
|
|
17
|
+
* held. The step rule is the caller's; a zero or non-finite `step` makes the
|
|
18
|
+
* denominator 0 or NaN, which the caller refuses before calling.
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function centralPartial(f, point, key, step) {
|
|
22
|
+
const x = point[key];
|
|
23
|
+
const up = x + step;
|
|
24
|
+
const down = x - step;
|
|
25
|
+
return (f({ ...point, [key]: up }) - f({ ...point, [key]: down })) / (up - down);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=finite-difference.js.map
|