universal-physics-tensor 1.0.4 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -13
- package/dist/atlas/catalog-formal-ref.js +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +37 -0
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +95 -79
- package/dist/atlas/chain-pipeline.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 +12 -4
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +2 -2
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +33 -3
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +28 -2
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +25 -16
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/bridges/be64-eddington-luminosity.d.ts.map +1 -1
- package/dist/bridges/be64-eddington-luminosity.js +1 -3
- package/dist/bridges/be64-eddington-luminosity.js.map +1 -1
- package/dist/bridges/be66-radiation-pressure.d.ts +30 -0
- package/dist/bridges/be66-radiation-pressure.d.ts.map +1 -0
- package/dist/bridges/be66-radiation-pressure.js +37 -0
- package/dist/bridges/be66-radiation-pressure.js.map +1 -0
- package/dist/bridges/be67-alfven-speed.d.ts +54 -0
- package/dist/bridges/be67-alfven-speed.d.ts.map +1 -0
- package/dist/bridges/be67-alfven-speed.js +49 -0
- package/dist/bridges/be67-alfven-speed.js.map +1 -0
- package/dist/bridges/be68-tolman-ehrenfest.d.ts +49 -0
- package/dist/bridges/be68-tolman-ehrenfest.d.ts.map +1 -0
- package/dist/bridges/be68-tolman-ehrenfest.js +46 -0
- package/dist/bridges/be68-tolman-ehrenfest.js.map +1 -0
- package/dist/bridges/bridge-equations.d.ts +6 -0
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +6 -0
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +3 -3
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +25 -4
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/index.d.ts +10 -4
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +74 -4
- package/dist/bridges/index.js.map +1 -1
- package/dist/cli/commands/_atlas-route.d.ts +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +6 -2
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/chain.d.ts.map +1 -1
- package/dist/cli/commands/chain.js +8 -3
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/derive.js +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +31 -15
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +7 -3
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +53 -32
- 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 +119 -15
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/map.d.ts +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- 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 +10 -11
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.d.ts +2 -2
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +10 -11
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +1 -2
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +2 -2
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +3 -4
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -3
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +5 -0
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +6 -4
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -5
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/map-evidence.d.ts +2 -1
- package/dist/cli/map-evidence.d.ts.map +1 -1
- package/dist/cli/map-evidence.js +2 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/search-index.d.ts +8 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +18 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/version.d.ts +6 -2
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +11 -3
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +52 -0
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +44 -0
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +18 -1
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +9 -4
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +113 -8
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts +5 -4
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +7 -4
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-result.d.ts +55 -0
- package/dist/composition/chain-result.d.ts.map +1 -0
- package/dist/composition/chain-result.js +57 -0
- package/dist/composition/chain-result.js.map +1 -0
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js +4 -39
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +11 -4
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/edges/applied-physicist.d.ts +43 -0
- package/dist/composition/edges/applied-physicist.d.ts.map +1 -0
- package/dist/composition/edges/applied-physicist.js +128 -0
- package/dist/composition/edges/applied-physicist.js.map +1 -0
- package/dist/composition/enumerate.d.ts +46 -5
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js +37 -8
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +3 -11
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +2 -0
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-scalar-symbols.d.ts +48 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -0
- package/dist/composition/mathts-scalar-symbols.js +150 -0
- package/dist/composition/mathts-scalar-symbols.js.map +1 -0
- package/dist/composition/probe/study.js +1 -1
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/quantities/applied-physicist.d.ts +34 -0
- package/dist/composition/quantities/applied-physicist.d.ts.map +1 -0
- package/dist/composition/quantities/applied-physicist.js +82 -0
- package/dist/composition/quantities/applied-physicist.js.map +1 -0
- package/dist/composition/quantities.d.ts +1 -0
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +1 -0
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +2 -2
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/uncertainty.js +14 -13
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/core/constants.d.ts +16 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +16 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +5 -8
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +5 -8
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +5 -2
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/buckingham.js +19 -91
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +1 -0
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +9 -1
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/units.d.ts +13 -0
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +81 -3
- package/dist/dimensional/units.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +21 -3
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +106 -33
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/einstein-equation.js +3 -3
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.d.ts +12 -27
- package/dist/numerical/engine-registry.d.ts.map +1 -1
- package/dist/numerical/engine-registry.js +10 -65
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +1 -2
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +1 -2
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/formula-contract.d.ts +60 -0
- package/dist/numerical/formula-contract.d.ts.map +1 -0
- package/dist/numerical/formula-contract.js +107 -0
- package/dist/numerical/formula-contract.js.map +1 -0
- package/dist/numerical/formula-dimension.d.ts +33 -10
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +48 -35
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts +15 -17
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +34 -36
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +11 -19
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +16 -79
- 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 +19 -31
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +12 -51
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +103 -565
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/index.d.ts +0 -2
- package/dist/numerical/index.d.ts.map +1 -1
- package/dist/numerical/index.js +0 -2
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/kretschmann.d.ts +2 -2
- package/dist/numerical/kretschmann.js +2 -2
- package/dist/numerical/mathts-engine.d.ts +7 -8
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +19 -27
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
- package/dist/numerical/null-ray-integrator.js +11 -28
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +2 -17
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +9 -20
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/strides.d.ts +1 -2
- package/dist/numerical/strides.d.ts.map +1 -1
- package/dist/numerical/strides.js +1 -2
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +2 -3
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js +1 -2
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/relations/category.d.ts +8 -2
- package/dist/relations/category.d.ts.map +1 -1
- package/dist/relations/category.js +10 -2
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/regime-vocabularies.d.ts +40 -0
- package/dist/relations/regime-vocabularies.d.ts.map +1 -0
- package/dist/relations/regime-vocabularies.js +19 -0
- package/dist/relations/regime-vocabularies.js.map +1 -0
- package/package.json +12 -46
- package/dist/numerical/float64-engine.d.ts +0 -55
- package/dist/numerical/float64-engine.d.ts.map +0 -1
- package/dist/numerical/float64-engine.js +0 -675
- package/dist/numerical/float64-engine.js.map +0 -1
- package/dist/numerical/formula.d.ts +0 -106
- package/dist/numerical/formula.d.ts.map +0 -1
- package/dist/numerical/formula.js +0 -348
- package/dist/numerical/formula.js.map +0 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { DIMENSIONLESS, TEMPERATURE, VELOCITY } from '../../dimensional/types.js';
|
|
2
|
+
import { ENERGY_DENSITY, MASS_DENSITY } from './_dims.js';
|
|
3
|
+
/** Intensity [M T⁻³] (W/m²). */
|
|
4
|
+
const INTENSITY = { L: 0, M: 1, T: -3, I: 0, Theta: 0, N: 0, J: 0 };
|
|
5
|
+
/** Magnetic flux density [M T⁻² I⁻¹] (tesla). */
|
|
6
|
+
const MAGNETIC_FLUX_DENSITY = { L: 0, M: 1, T: -2, I: -1, Theta: 0, N: 0, J: 0 };
|
|
7
|
+
const CLASSICAL_EM = { scale: 'classical', force: 'electromagnetic' };
|
|
8
|
+
const CLASSICAL_GRAV = { scale: 'classical', force: 'gravitational' };
|
|
9
|
+
/** Time-averaged Poynting-flux magnitude. Not the canonical `CE-poynting-flux` node. */
|
|
10
|
+
export const poyntingFluxQ = {
|
|
11
|
+
name: 'poynting-flux',
|
|
12
|
+
symbol: 'I',
|
|
13
|
+
dim: INTENSITY,
|
|
14
|
+
attributes: CLASSICAL_EM,
|
|
15
|
+
};
|
|
16
|
+
/** Intensity reflectance of an opaque surface. */
|
|
17
|
+
export const reflectanceQ = {
|
|
18
|
+
name: 'reflectance',
|
|
19
|
+
symbol: 'R',
|
|
20
|
+
dim: DIMENSIONLESS,
|
|
21
|
+
attributes: CLASSICAL_EM,
|
|
22
|
+
};
|
|
23
|
+
/** Angle from the outward normal, radians. */
|
|
24
|
+
export const incidenceAngleQ = {
|
|
25
|
+
name: 'incidence-angle',
|
|
26
|
+
symbol: 'θ',
|
|
27
|
+
dim: DIMENSIONLESS,
|
|
28
|
+
attributes: CLASSICAL_EM,
|
|
29
|
+
};
|
|
30
|
+
/** Normal radiation pressure. Not the hydrostatic `pressure` node. */
|
|
31
|
+
export const radiationPressureQ = {
|
|
32
|
+
name: 'radiation-pressure',
|
|
33
|
+
symbol: 'P_n',
|
|
34
|
+
dim: ENERGY_DENSITY,
|
|
35
|
+
attributes: CLASSICAL_EM,
|
|
36
|
+
};
|
|
37
|
+
/** Magnetic flux density of the background field. */
|
|
38
|
+
export const magneticFluxDensityQ = {
|
|
39
|
+
name: 'magnetic-flux-density',
|
|
40
|
+
symbol: 'B',
|
|
41
|
+
dim: MAGNETIC_FLUX_DENSITY,
|
|
42
|
+
attributes: CLASSICAL_EM,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Total plasma mass density. Not `mass-density` (cosmological, gravitational).
|
|
46
|
+
* Proton-only density is a caller-supplied value of this same quantity.
|
|
47
|
+
*/
|
|
48
|
+
export const plasmaMassDensityQ = {
|
|
49
|
+
name: 'plasma-mass-density',
|
|
50
|
+
symbol: 'ρ',
|
|
51
|
+
dim: MASS_DENSITY,
|
|
52
|
+
attributes: CLASSICAL_EM,
|
|
53
|
+
};
|
|
54
|
+
/** Alfvén speed. Not `gravitational-wave-speed`. */
|
|
55
|
+
export const alfvenSpeedQ = {
|
|
56
|
+
name: 'alfven-speed',
|
|
57
|
+
symbol: 'v_A',
|
|
58
|
+
dim: VELOCITY,
|
|
59
|
+
attributes: CLASSICAL_EM,
|
|
60
|
+
};
|
|
61
|
+
/** Proper temperature on a static metric. Not `temperature` and not `hawking-temperature`. */
|
|
62
|
+
export const properTemperatureQ = {
|
|
63
|
+
name: 'proper-temperature',
|
|
64
|
+
symbol: 'T',
|
|
65
|
+
dim: TEMPERATURE,
|
|
66
|
+
attributes: CLASSICAL_GRAV,
|
|
67
|
+
};
|
|
68
|
+
/** Static metric component `g_00`, dimensionless, negative. */
|
|
69
|
+
export const metricG00Q = {
|
|
70
|
+
name: 'metric-g00',
|
|
71
|
+
symbol: 'g_00',
|
|
72
|
+
dim: DIMENSIONLESS,
|
|
73
|
+
attributes: CLASSICAL_GRAV,
|
|
74
|
+
};
|
|
75
|
+
/** Tolman–Ehrenfest invariant `T √(−g_00)`. Dimension temperature. */
|
|
76
|
+
export const tolmanInvariantQ = {
|
|
77
|
+
name: 'tolman-invariant',
|
|
78
|
+
symbol: 'T√(−g_00)',
|
|
79
|
+
dim: TEMPERATURE,
|
|
80
|
+
attributes: CLASSICAL_GRAV,
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=applied-physicist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applied-physicist.js","sourceRoot":"","sources":["../../../src/composition/quantities/applied-physicist.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,4 +24,5 @@ export * from './quantities/gravitation-cosmology.js';
|
|
|
24
24
|
export * from './quantities/fields.js';
|
|
25
25
|
export * from './quantities/condensed-matter.js';
|
|
26
26
|
export * from './quantities/common.js';
|
|
27
|
+
export * from './quantities/applied-physicist.js';
|
|
27
28
|
//# sourceMappingURL=quantities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantities.d.ts","sourceRoot":"","sources":["../../src/composition/quantities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"quantities.d.ts","sourceRoot":"","sources":["../../src/composition/quantities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC"}
|
|
@@ -26,4 +26,5 @@ export * from './quantities/gravitation-cosmology.js';
|
|
|
26
26
|
export * from './quantities/fields.js';
|
|
27
27
|
export * from './quantities/condensed-matter.js';
|
|
28
28
|
export * from './quantities/common.js';
|
|
29
|
+
export * from './quantities/applied-physicist.js';
|
|
29
30
|
//# sourceMappingURL=quantities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantities.js","sourceRoot":"","sources":["../../src/composition/quantities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,2EAA2E;AAC3E,4EAA4E;AAC5E,cAAc,yBAAyB,CAAC;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"quantities.js","sourceRoot":"","sources":["../../src/composition/quantities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,2EAA2E;AAC3E,4EAA4E;AAC5E,cAAc,yBAAyB,CAAC;AACxC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* σ_out² = Σᵢ (∂f/∂xᵢ · σᵢ)² (independent-input Gaussian,
|
|
8
8
|
* first order)
|
|
9
9
|
*
|
|
10
|
-
* Partials are central differences with
|
|
11
|
-
* h = 1e-6·max(|xᵢ|, 1e-30). Because composed edges ARE `BridgeEdge`s
|
|
10
|
+
* Partials are MathTS central differences with `relativeStep` `1e-6`
|
|
11
|
+
* (`h = 1e-6·max(|xᵢ|, 1e-30)`). Because composed edges ARE `BridgeEdge`s
|
|
12
12
|
* (design D-2 closure), chains need no extra machinery — propagate on
|
|
13
13
|
* the composed edge directly.
|
|
14
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncertainty.d.ts","sourceRoot":"","sources":["../../src/composition/uncertainty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"uncertainty.d.ts","sourceRoot":"","sources":["../../src/composition/uncertainty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,CAAC,EAAE,kBAAkB,GACxB,iBAAiB,CAqEnB"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* σ_out² = Σᵢ (∂f/∂xᵢ · σᵢ)² (independent-input Gaussian,
|
|
8
8
|
* first order)
|
|
9
9
|
*
|
|
10
|
-
* Partials are central differences with
|
|
11
|
-
* h = 1e-6·max(|xᵢ|, 1e-30). Because composed edges ARE `BridgeEdge`s
|
|
10
|
+
* Partials are MathTS central differences with `relativeStep` `1e-6`
|
|
11
|
+
* (`h = 1e-6·max(|xᵢ|, 1e-30)`). Because composed edges ARE `BridgeEdge`s
|
|
12
12
|
* (design D-2 closure), chains need no extra machinery — propagate on
|
|
13
13
|
* the composed edge directly.
|
|
14
14
|
*
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @module composition/uncertainty
|
|
21
21
|
*/
|
|
22
|
+
import { propagateUncertainty as propagateScalarUncertainty } from '@danielsimonjr/mathts-functions';
|
|
22
23
|
import { evaluateEdge } from './edge.js';
|
|
23
24
|
/**
|
|
24
25
|
* Propagate independent 1σ input uncertainties through an edge.
|
|
@@ -38,29 +39,29 @@ import { evaluateEdge } from './edge.js';
|
|
|
38
39
|
*/
|
|
39
40
|
export function propagateUncertainty(edge, inputs, sigmas, opts) {
|
|
40
41
|
const value = evaluateEdge(edge, inputs);
|
|
41
|
-
const
|
|
42
|
-
|
|
42
|
+
const point = {};
|
|
43
|
+
const usedSigmas = {};
|
|
43
44
|
for (const source of edge.sources) {
|
|
44
45
|
const name = source.name;
|
|
45
46
|
const x = inputs[name];
|
|
46
47
|
if (!Number.isFinite(x)) {
|
|
47
48
|
throw new RangeError(`propagateUncertainty: input '${name}' is not a finite number`);
|
|
48
49
|
}
|
|
49
|
-
const h = 1e-6 * Math.max(Math.abs(x), 1e-30);
|
|
50
|
-
const plus = edge.evaluate({ ...inputs, [name]: x + h });
|
|
51
|
-
const minus = edge.evaluate({ ...inputs, [name]: x - h });
|
|
52
|
-
const partial = (plus - minus) / (2 * h);
|
|
53
|
-
partials[name] = partial;
|
|
54
50
|
const sigma = sigmas[name] ?? 0;
|
|
55
51
|
if (sigma < 0 || !Number.isFinite(sigma)) {
|
|
56
52
|
throw new RangeError(`propagateUncertainty: sigma for '${name}' must be finite and ≥ 0`);
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
point[name] = x;
|
|
55
|
+
usedSigmas[name] = sigma;
|
|
60
56
|
}
|
|
57
|
+
// The stencil is the raw evaluator. `value` above is domain-checked.
|
|
58
|
+
// `bound.delta` is not an input to this call: it stays a separate field.
|
|
59
|
+
const stat = propagateScalarUncertainty((vals) => edge.evaluate(vals), point, usedSigmas, { relativeStep: 1e-6 });
|
|
60
|
+
const partials = stat.partials;
|
|
61
|
+
const sigma = stat.sigma;
|
|
61
62
|
const bound = opts?.bound;
|
|
62
63
|
if (bound === undefined) {
|
|
63
|
-
return { value, sigma
|
|
64
|
+
return { value, sigma, partials };
|
|
64
65
|
}
|
|
65
66
|
if (!Number.isFinite(bound.delta) || bound.delta < 0) {
|
|
66
67
|
throw new RangeError(`propagateUncertainty: bound.delta must be finite and ≥ 0, got ${bound.delta}`);
|
|
@@ -86,7 +87,7 @@ export function propagateUncertainty(edge, inputs, sigmas, opts) {
|
|
|
86
87
|
// the k it picked.
|
|
87
88
|
return {
|
|
88
89
|
value,
|
|
89
|
-
sigma
|
|
90
|
+
sigma,
|
|
90
91
|
delta: bound.delta,
|
|
91
92
|
partials,
|
|
92
93
|
bound,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncertainty.js","sourceRoot":"","sources":["../../src/composition/uncertainty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"uncertainty.js","sourceRoot":"","sources":["../../src/composition/uncertainty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA2DzC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAgB,EAChB,MAA8B,EAC9B,MAA8B,EAC9B,IAAyB;IAEzB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEzC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,UAAU,CAClB,gCAAgC,IAAI,0BAA0B,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,UAAU,CAClB,oCAAoC,IAAI,0BAA0B,CACnE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,IAAI,GAAG,0BAA0B,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,UAAU,CAClB,iEAAiE,KAAK,CAAC,KAAK,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,qEAAqE;IACrE,EAAE;IACF,4FAA4F;IAC5F,gGAAgG;IAChG,yFAAyF;IACzF,0FAA0F;IAC1F,0FAA0F;IAC1F,+FAA+F;IAC/F,iCAAiC;IACjC,EAAE;IACF,iGAAiG;IACjG,wEAAwE;IACxE,EAAE;IACF,iGAAiG;IACjG,iGAAiG;IACjG,iGAAiG;IACjG,gGAAgG;IAChG,kGAAkG;IAClG,mBAAmB;IACnB,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|
package/dist/core/constants.d.ts
CHANGED
|
@@ -79,6 +79,22 @@ export declare const GM_SUN_SOURCE = "IAU 2015 Resolution B3, nominal solar mass
|
|
|
79
79
|
* @public
|
|
80
80
|
*/
|
|
81
81
|
export declare const M_E_SI = 9.1093837015e-31;
|
|
82
|
+
/**
|
|
83
|
+
* Proton mass (kg). CODATA 2018. Shared by the Eddington evaluator and
|
|
84
|
+
* `upt eval` (`m_p`, `m_proton`). Not the Planck mass `M_P_SI`.
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
export declare const M_PROTON_SI = 1.67262192369e-27;
|
|
88
|
+
/**
|
|
89
|
+
* Avogadro constant (mol⁻¹). Exact in the 2019 SI.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
export declare const N_A_SI = 6.02214076e+23;
|
|
93
|
+
/**
|
|
94
|
+
* Faraday constant (C·mol⁻¹), `N_A * e`.
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export declare const FARADAY_SI: number;
|
|
82
98
|
/**
|
|
83
99
|
* Wien displacement-law constant b = λ_max·T (m·K). CODATA 2018.
|
|
84
100
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,sEAAsE;AACtE,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B,mEAAmE;AACnE,eAAO,MAAM,IAAI,aAAc,CAAC;AAEhC,6DAA6D;AAC7D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,QAAuB,CAAC;AAE5C,gEAAgE;AAChE,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,6DAA6D;AAC7D,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,8DAA8D;AAC9D,eAAO,MAAM,KAAK,kBAAkB,CAAC;AAErC,6CAA6C;AAC7C,eAAO,MAAM,MAAM,cAAc,CAAC;AAElC,+CAA+C;AAC/C,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,6CAA6C;AAC7C,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,QAAqB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,YAAW,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,wBAAe,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,aAAa,yGAAqF,CAAC;AAEhH;;;;;GAKG;AACH,eAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,MAAM,mBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,sEAAsE;AACtE,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B,mEAAmE;AACnE,eAAO,MAAM,IAAI,aAAc,CAAC;AAEhC,6DAA6D;AAC7D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,QAAuB,CAAC;AAE5C,gEAAgE;AAChE,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,6DAA6D;AAC7D,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,8DAA8D;AAC9D,eAAO,MAAM,KAAK,kBAAkB,CAAC;AAErC,6CAA6C;AAC7C,eAAO,MAAM,MAAM,cAAc,CAAC;AAElC,+CAA+C;AAC/C,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,6CAA6C;AAC7C,eAAO,MAAM,MAAM,eAAe,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,QAAqB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,YAAW,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,wBAAe,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,aAAa,yGAAqF,CAAC;AAEhH;;;;;GAKG;AACH,eAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,MAAM,iBAAgB,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAgB,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,MAAM,mBAAoB,CAAC"}
|
package/dist/core/constants.js
CHANGED
|
@@ -79,6 +79,22 @@ export const GM_SUN_SOURCE = 'IAU 2015 Resolution B3, nominal solar mass paramet
|
|
|
79
79
|
* @public
|
|
80
80
|
*/
|
|
81
81
|
export const M_E_SI = 9.1093837015e-31;
|
|
82
|
+
/**
|
|
83
|
+
* Proton mass (kg). CODATA 2018. Shared by the Eddington evaluator and
|
|
84
|
+
* `upt eval` (`m_p`, `m_proton`). Not the Planck mass `M_P_SI`.
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
export const M_PROTON_SI = 1.67262192369e-27;
|
|
88
|
+
/**
|
|
89
|
+
* Avogadro constant (mol⁻¹). Exact in the 2019 SI.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
export const N_A_SI = 6.02214076e23;
|
|
93
|
+
/**
|
|
94
|
+
* Faraday constant (C·mol⁻¹), `N_A * e`.
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export const FARADAY_SI = N_A_SI * E_SI;
|
|
82
98
|
/**
|
|
83
99
|
* Wien displacement-law constant b = λ_max·T (m·K). CODATA 2018.
|
|
84
100
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAE9B,mEAAmE;AACnE,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AAEpC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;AAErC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC;AAElC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AAEtC,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,kFAAkF,CAAC;AAEhH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAE9B,mEAAmE;AACnE,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AAEpC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;AAErC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC;AAElC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAEjC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AAEtC,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,kFAAkF,CAAC;AAEhH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC"}
|
|
@@ -10,11 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Per P8 Decision #1, this lives in `src/diff/` (NOT in
|
|
12
12
|
* `src/bridges/`), keeping bridge evaluators untouched. The AD
|
|
13
|
-
* dependency `mathts-autograd` is
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* PRESENT it still throws (see the AD limitation below) — installing the
|
|
17
|
-
* peer does not make AD of the plain-JS bridges work.
|
|
13
|
+
* dependency `mathts-autograd` is a required dependency. Installing it
|
|
14
|
+
* does not make AD of the plain-JS bridges work: the tape still cannot
|
|
15
|
+
* trace `Math.*` (see the AD limitation below).
|
|
18
16
|
*
|
|
19
17
|
* IMPORTANT — AD limitation (verified empirically): `bridgeGradient`
|
|
20
18
|
* does NOT actually differentiate the catalog evaluators. Because P8
|
|
@@ -22,9 +20,8 @@
|
|
|
22
20
|
* (`Math.*` / raw arithmetic on numbers), neither reverse-mode (tape)
|
|
23
21
|
* nor forward-mode (dual) AD can trace them — the tape/dual instrument
|
|
24
22
|
* only sees ops routed through engine-traced tensors. With
|
|
25
|
-
* `
|
|
26
|
-
*
|
|
27
|
-
* `engine.toNested`). `bridgeGradient` therefore only works for
|
|
23
|
+
* `MathTSEngine` the autograd `TapedTensor` does not survive
|
|
24
|
+
* `engine.toNested`. `bridgeGradient` therefore only works for
|
|
28
25
|
* functions written in engine ops — not the plain-JS bridges.
|
|
29
26
|
*
|
|
30
27
|
* The SUPPORTED way to differentiate a plain-JS bridge evaluator is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-gradient.d.ts","sourceRoot":"","sources":["../../src/diff/bridge-gradient.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge-gradient.d.ts","sourceRoot":"","sources":["../../src/diff/bridge-gradient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIhF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC;IACzD;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,KAAK,EACxC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAC3B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAmC/B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EACnC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAC3B,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAUD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAC3C,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC,6BAA6B,CA2C/B"}
|
|
@@ -10,11 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Per P8 Decision #1, this lives in `src/diff/` (NOT in
|
|
12
12
|
* `src/bridges/`), keeping bridge evaluators untouched. The AD
|
|
13
|
-
* dependency `mathts-autograd` is
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* PRESENT it still throws (see the AD limitation below) — installing the
|
|
17
|
-
* peer does not make AD of the plain-JS bridges work.
|
|
13
|
+
* dependency `mathts-autograd` is a required dependency. Installing it
|
|
14
|
+
* does not make AD of the plain-JS bridges work: the tape still cannot
|
|
15
|
+
* trace `Math.*` (see the AD limitation below).
|
|
18
16
|
*
|
|
19
17
|
* IMPORTANT — AD limitation (verified empirically): `bridgeGradient`
|
|
20
18
|
* does NOT actually differentiate the catalog evaluators. Because P8
|
|
@@ -22,9 +20,8 @@
|
|
|
22
20
|
* (`Math.*` / raw arithmetic on numbers), neither reverse-mode (tape)
|
|
23
21
|
* nor forward-mode (dual) AD can trace them — the tape/dual instrument
|
|
24
22
|
* only sees ops routed through engine-traced tensors. With
|
|
25
|
-
* `
|
|
26
|
-
*
|
|
27
|
-
* `engine.toNested`). `bridgeGradient` therefore only works for
|
|
23
|
+
* `MathTSEngine` the autograd `TapedTensor` does not survive
|
|
24
|
+
* `engine.toNested`. `bridgeGradient` therefore only works for
|
|
28
25
|
* functions written in engine ops — not the plain-JS bridges.
|
|
29
26
|
*
|
|
30
27
|
* The SUPPORTED way to differentiate a plain-JS bridge evaluator is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-gradient.js","sourceRoot":"","sources":["../../src/diff/bridge-gradient.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge-gradient.js","sourceRoot":"","sources":["../../src/diff/bridge-gradient.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export declare const EXPECTED_DIMENSION_BY_BRIDGE: ReadonlyMap<number, Dimension
|
|
|
21
21
|
/**
|
|
22
22
|
* Infer the SI dimensional signature of a bridge equation expression.
|
|
23
23
|
*
|
|
24
|
-
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..
|
|
24
|
+
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..68). If present
|
|
25
25
|
* in `EXPECTED_DIMENSION_BY_BRIDGE` the inferred dim
|
|
26
26
|
* is cross-checked against the expected; mismatch =>
|
|
27
27
|
* null. If absent, the inferred dim is returned as-is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-check.d.ts","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"bridge-check.d.ts","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,SAAS,EAaV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AA6EpD,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CA+DtE,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,SAAS,GAAG,IAAI,CAQlB"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @module dimensional/bridge-check
|
|
17
17
|
*/
|
|
18
|
-
import { DIMENSIONLESS, ENERGY, ENTROPY, FREQUENCY, TIME, MASS, POWER, LENGTH, AREA, FORCE, TEMPERATURE, } from './types.js';
|
|
18
|
+
import { DIMENSIONLESS, ENERGY, ENTROPY, FREQUENCY, TIME, MASS, POWER, LENGTH, AREA, FORCE, TEMPERATURE, VELOCITY, } from './types.js';
|
|
19
19
|
import { validate } from './validator.js';
|
|
20
20
|
import { equals, multiply, power } from './algebra.js';
|
|
21
21
|
/** [T^-2] — bracketed-product literal for BE-19's H² Friedmann RHS. */
|
|
@@ -140,11 +140,14 @@ export const EXPECTED_DIMENSION_BY_BRIDGE = new Map([
|
|
|
140
140
|
[63, MASS], // BE-63 Chandrasekhar mass M_Ch ≈ 1.44 M_⊙ — astrophysics cluster 2026-07-05.
|
|
141
141
|
[64, POWER], // BE-64 Eddington luminosity L_Edd = 4πGMm_p c/σ_T — astrophysics cluster 2026-07-05.
|
|
142
142
|
[65, MASS], // BE-65 Jeans mass M_J — astrophysics cluster 2026-07-05.
|
|
143
|
+
[66, PRESSURE], // BE-66 radiation pressure P_n = (I/c)(1+R) cos²θ.
|
|
144
|
+
[67, VELOCITY], // BE-67 Alfvén speed v_A = B / √(μ0 ρ).
|
|
145
|
+
[68, TEMPERATURE], // BE-68 Tolman–Ehrenfest invariant T √(−g_00).
|
|
143
146
|
]);
|
|
144
147
|
/**
|
|
145
148
|
* Infer the SI dimensional signature of a bridge equation expression.
|
|
146
149
|
*
|
|
147
|
-
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..
|
|
150
|
+
* @param bridgeId The id from `BRIDGE_EQUATIONS` (11..68). If present
|
|
148
151
|
* in `EXPECTED_DIMENSION_BY_BRIDGE` the inferred dim
|
|
149
152
|
* is cross-checked against the expected; mismatch =>
|
|
150
153
|
* null. If absent, the inferred dim is returned as-is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-check.js","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,aAAa,EACb,MAAM,EACN,OAAO,EACP,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"bridge-check.js","sourceRoot":"","sources":["../../src/dimensional/bridge-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buckingham.d.ts","sourceRoot":"","sources":["../../src/dimensional/buckingham.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"buckingham.d.ts","sourceRoot":"","sources":["../../src/dimensional/buckingham.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C;kEACkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CACzB;AAED;;6BAE6B;AAC7B,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,MAAM,iBAAiB,GACzB,2BAA2B,GAC3B,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,mCAAmC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAED,yDAAyD;AACzD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;oDACgD;IAChD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,oEAAoE;IACpE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC;IAC1C,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;cACc;AACd,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAsGD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC,gBAAgB,CAsClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC,8BAA8B,CA+DhC"}
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @module dimensional/buckingham
|
|
26
26
|
*/
|
|
27
|
+
import { Fraction } from '@danielsimonjr/mathts-core';
|
|
28
|
+
import { rationalNullspace } from '@danielsimonjr/mathts-functions';
|
|
27
29
|
const BASES = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];
|
|
28
30
|
/** Rationalization failed: a dimension exponent is not a small rational.
|
|
29
31
|
* @public */
|
|
@@ -65,94 +67,24 @@ function toFrac(x) {
|
|
|
65
67
|
}
|
|
66
68
|
throw new RationalizationError(`dimension exponent ${x} is not a rational with denominator ≤ ${MAX_DEN}`);
|
|
67
69
|
}
|
|
68
|
-
const fAdd = (a, b) => frac(a.n * b.d + b.n * a.d, a.d * b.d);
|
|
69
|
-
const fSub = (a, b) => frac(a.n * b.d - b.n * a.d, a.d * b.d);
|
|
70
|
-
const fMul = (a, b) => frac(a.n * b.n, a.d * b.d);
|
|
71
|
-
const fDiv = (a, b) => {
|
|
72
|
-
if (b.n === 0)
|
|
73
|
-
throw new RationalizationError('division by zero fraction');
|
|
74
|
-
return frac(a.n * b.d, a.d * b.n);
|
|
75
|
-
};
|
|
76
70
|
const fZero = (a) => a.n === 0;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
function
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (!fZero(M[i][c])) {
|
|
91
|
-
p = i;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (p === -1)
|
|
96
|
-
continue;
|
|
97
|
-
[M[r], M[p]] = [M[p], M[r]];
|
|
98
|
-
const pivot = M[r][c];
|
|
99
|
-
for (let j = 0; j < cols; j++)
|
|
100
|
-
M[r][j] = fDiv(M[r][j], pivot);
|
|
101
|
-
for (let i = 0; i < rows; i++) {
|
|
102
|
-
if (i === r || fZero(M[i][c]))
|
|
103
|
-
continue;
|
|
104
|
-
const factor = M[i][c];
|
|
105
|
-
for (let j = 0; j < cols; j++) {
|
|
106
|
-
M[i][j] = fSub(M[i][j], fMul(factor, M[r][j]));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
pivotCols.push(c);
|
|
110
|
-
r++;
|
|
111
|
-
}
|
|
112
|
-
return pivotCols;
|
|
113
|
-
}
|
|
114
|
-
/** Integerize a fraction vector: scale by the LCM of denominators, then
|
|
115
|
-
* normalize the sign so the first nonzero entry is positive. */
|
|
116
|
-
function integerize(vec) {
|
|
117
|
-
let L = 1;
|
|
118
|
-
for (const f of vec)
|
|
119
|
-
if (!fZero(f))
|
|
120
|
-
L = lcm(L, f.d);
|
|
121
|
-
// exact integer: L is a multiple of every denominator.
|
|
122
|
-
const out = vec.map((f) => f.n * (L / f.d));
|
|
123
|
-
const g = out.reduce((acc, x) => (x ? gcd(acc, x) : acc), 0) || 1;
|
|
124
|
-
for (let i = 0; i < out.length; i++)
|
|
125
|
-
out[i] = out[i] / g;
|
|
126
|
-
const firstNonZero = out.find((x) => x !== 0) ?? 0;
|
|
127
|
-
if (firstNonZero < 0)
|
|
128
|
-
for (let i = 0; i < out.length; i++)
|
|
129
|
-
out[i] = -out[i];
|
|
130
|
-
return out;
|
|
131
|
-
}
|
|
132
|
-
/** Null-space basis of the dimension matrix as integer exponent vectors,
|
|
133
|
-
* one per free column (variable). */
|
|
134
|
-
function nullSpace(matrix, rows, cols) {
|
|
135
|
-
const M = matrix.map((row) => row.slice());
|
|
136
|
-
const pivotCols = rref(M, rows, cols);
|
|
137
|
-
const pivotSet = new Set(pivotCols);
|
|
138
|
-
const freeCols = [];
|
|
139
|
-
for (let c = 0; c < cols; c++)
|
|
140
|
-
if (!pivotSet.has(c))
|
|
141
|
-
freeCols.push(c);
|
|
142
|
-
const basis = [];
|
|
143
|
-
for (const f of freeCols) {
|
|
144
|
-
const vec = new Array(cols);
|
|
145
|
-
for (let j = 0; j < cols; j++)
|
|
146
|
-
vec[j] = { n: 0, d: 1 };
|
|
147
|
-
vec[f] = { n: 1, d: 1 };
|
|
148
|
-
for (let i = 0; i < pivotCols.length; i++) {
|
|
149
|
-
vec[pivotCols[i]] = fSub({ n: 0, d: 1 }, M[i][f]); // -M[pivotRow_i][f]
|
|
71
|
+
/**
|
|
72
|
+
* Exact null space of the dimension matrix. Exponents pass through as
|
|
73
|
+
* {@link Fraction} values after {@link toFrac}, so an irrational is still
|
|
74
|
+
* {@link RationalizationError} and is not accepted by a continued fraction.
|
|
75
|
+
* A matrix with no rows is `0×n`: `{ columns: n }` is the standard basis.
|
|
76
|
+
* MathTS integerizes each vector (content 1, first nonzero entry positive).
|
|
77
|
+
*/
|
|
78
|
+
function nullSpace(matrix, cols) {
|
|
79
|
+
const entries = matrix.map((row) => row.map((f) => new Fraction(f.n, f.d)));
|
|
80
|
+
const solved = rationalNullspace(entries, { columns: cols });
|
|
81
|
+
const basis = solved.basis.map((vec) => vec.map((entry) => {
|
|
82
|
+
if (entry.denominator !== 1n) {
|
|
83
|
+
throw new RationalizationError(`null-space entry ${entry.toString()} is not an integer`);
|
|
150
84
|
}
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// need not run a second reduction just to learn the rank.
|
|
155
|
-
return { basis, rank: pivotCols.length };
|
|
85
|
+
return Number(entry.numerator);
|
|
86
|
+
}));
|
|
87
|
+
return { basis, rank: solved.rank };
|
|
156
88
|
}
|
|
157
89
|
function buildMatrix(variables) {
|
|
158
90
|
const spannedBases = [];
|
|
@@ -193,11 +125,7 @@ export function buckinghamPi(variables) {
|
|
|
193
125
|
}
|
|
194
126
|
const n = variables.length;
|
|
195
127
|
const { matrix, spannedBases } = buildMatrix(variables);
|
|
196
|
-
const
|
|
197
|
-
// One RREF: the null-space reduction also yields the rank (pivot count),
|
|
198
|
-
// so the whole dimensional layer (audit / priority / derive) halves its
|
|
199
|
-
// linear-algebra cost per call.
|
|
200
|
-
const { basis, rank } = nullSpace(matrix, rows, n);
|
|
128
|
+
const { basis, rank } = nullSpace(matrix, n);
|
|
201
129
|
const piGroups = basis.map((vec) => {
|
|
202
130
|
const exponents = {};
|
|
203
131
|
for (let j = 0; j < n; j++)
|