universal-physics-tensor 0.4.5 → 0.5.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.
Files changed (78) hide show
  1. package/dist/dimensional/bridge-check.d.ts +6 -0
  2. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  3. package/dist/dimensional/bridge-check.js +6 -0
  4. package/dist/dimensional/bridge-check.js.map +1 -1
  5. package/dist/dimensional/connection-validators.d.ts +61 -3
  6. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  7. package/dist/dimensional/connection-validators.js +82 -9
  8. package/dist/dimensional/connection-validators.js.map +1 -1
  9. package/dist/dimensional/curvature.d.ts +336 -0
  10. package/dist/dimensional/curvature.d.ts.map +1 -0
  11. package/dist/dimensional/curvature.js +291 -0
  12. package/dist/dimensional/curvature.js.map +1 -0
  13. package/dist/dimensional/metric-validators.d.ts +12 -0
  14. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  15. package/dist/dimensional/metric-validators.js.map +1 -1
  16. package/dist/dimensional/tensor.d.ts.map +1 -1
  17. package/dist/dimensional/tensor.js +7 -2
  18. package/dist/dimensional/tensor.js.map +1 -1
  19. package/dist/dimensional/validator.d.ts +5 -3
  20. package/dist/dimensional/validator.d.ts.map +1 -1
  21. package/dist/dimensional/validator.js +59 -2
  22. package/dist/dimensional/validator.js.map +1 -1
  23. package/dist/index.d.ts +8 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +21 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/numerical/be37-covariant-eikonal.d.ts +96 -38
  28. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  29. package/dist/numerical/be37-covariant-eikonal.js +202 -39
  30. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  31. package/dist/numerical/connection-lowering-helpers.d.ts +8 -6
  32. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  33. package/dist/numerical/connection-lowering-helpers.js +25 -28
  34. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  35. package/dist/numerical/curvature-lowering-helpers.d.ts +162 -0
  36. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -0
  37. package/dist/numerical/curvature-lowering-helpers.js +378 -0
  38. package/dist/numerical/curvature-lowering-helpers.js.map +1 -0
  39. package/dist/numerical/errors.d.ts +16 -0
  40. package/dist/numerical/errors.d.ts.map +1 -1
  41. package/dist/numerical/errors.js +20 -0
  42. package/dist/numerical/errors.js.map +1 -1
  43. package/dist/numerical/float64-engine.d.ts +4 -2
  44. package/dist/numerical/float64-engine.d.ts.map +1 -1
  45. package/dist/numerical/float64-engine.js +35 -45
  46. package/dist/numerical/float64-engine.js.map +1 -1
  47. package/dist/numerical/gl4-integrator.d.ts +167 -0
  48. package/dist/numerical/gl4-integrator.d.ts.map +1 -0
  49. package/dist/numerical/gl4-integrator.js +276 -0
  50. package/dist/numerical/gl4-integrator.js.map +1 -0
  51. package/dist/numerical/index.d.ts +8 -0
  52. package/dist/numerical/index.d.ts.map +1 -1
  53. package/dist/numerical/index.js +4 -0
  54. package/dist/numerical/index.js.map +1 -1
  55. package/dist/numerical/lowering.d.ts +3 -4
  56. package/dist/numerical/lowering.d.ts.map +1 -1
  57. package/dist/numerical/lowering.js +216 -22
  58. package/dist/numerical/lowering.js.map +1 -1
  59. package/dist/numerical/mathts-engine.d.ts +2 -2
  60. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  61. package/dist/numerical/mathts-engine.js +13 -12
  62. package/dist/numerical/mathts-engine.js.map +1 -1
  63. package/dist/numerical/pderiv.d.ts.map +1 -1
  64. package/dist/numerical/pderiv.js +4 -18
  65. package/dist/numerical/pderiv.js.map +1 -1
  66. package/dist/numerical/perihelion-finder.d.ts +84 -0
  67. package/dist/numerical/perihelion-finder.d.ts.map +1 -0
  68. package/dist/numerical/perihelion-finder.js +261 -0
  69. package/dist/numerical/perihelion-finder.js.map +1 -0
  70. package/dist/numerical/strides.d.ts +26 -0
  71. package/dist/numerical/strides.d.ts.map +1 -0
  72. package/dist/numerical/strides.js +41 -0
  73. package/dist/numerical/strides.js.map +1 -0
  74. package/dist/numerical/tensor-engine.d.ts +4 -2
  75. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  76. package/dist/numerical/tensor-engine.js +4 -2
  77. package/dist/numerical/tensor-engine.js.map +1 -1
  78. package/package.json +1 -1
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Gauss-Legendre 4th-order (GL4) symplectic integrator — types + Butcher
3
+ * tableau scaffold (v0.5.0 Task 1, Phase 1a-i).
4
+ *
5
+ * GL4 is a 2-stage implicit Runge-Kutta method built on the roots of the
6
+ * shifted Legendre polynomial P₂, with order p = 4 and stage order s = 2.
7
+ * It is symplectic for non-separable Hamiltonians — the property that
8
+ * justifies its selection over Ruth-4 for the geodesic Hamiltonian
9
+ *
10
+ * H(x, p) = ½ g^{μν}(x) p_μ p_ν,
11
+ *
12
+ * which is non-separable because g^{μν} depends on x. (v0.5.0 Decision #2,
13
+ * post-adversarial reconciliation; Sanz-Serna 1988; Hairer/Lubich/Wanner
14
+ * "Geometric Numerical Integration" §II.1.)
15
+ *
16
+ * The state is canonical (x, p) (Decision #3) — covariant momentum
17
+ * p_μ = g_μν dx^ν/dτ — not (x, v). This is what makes the flow symplectic
18
+ * on T*M.
19
+ *
20
+ * This module ships **types + Butcher constants only**. The implicit Picard
21
+ * stage solver lands in Task 2; the integrator entry-point
22
+ * `integrateGeodesicGL4` lands in Task 3.
23
+ *
24
+ * @module numerical/gl4-integrator
25
+ */
26
+ import { GL4ConvergenceError, NumericalBackendError } from './errors.js';
27
+ const SQRT3_OVER_6 = Math.sqrt(3) / 6;
28
+ /**
29
+ * Gauss-Legendre 4th-order quadrature nodes c₁, c₂ — the two roots of the
30
+ * shifted Legendre polynomial P₂(x) on [0,1].
31
+ *
32
+ * c₁ = ½ − √3/6, c₂ = ½ + √3/6.
33
+ *
34
+ * @public
35
+ */
36
+ export const GL4_C = [0.5 - SQRT3_OVER_6, 0.5 + SQRT3_OVER_6];
37
+ /**
38
+ * GL4 Butcher matrix a_{ij} — the 2×2 collocation table for the implicit
39
+ * stages:
40
+ *
41
+ * [ 1/4 1/4 − √3/6 ]
42
+ * [ 1/4 + √3/6 1/4 ]
43
+ *
44
+ * (Hairer/Lubich/Wanner §II.1, Table 1.1.)
45
+ *
46
+ * @public
47
+ */
48
+ export const GL4_A = [
49
+ [0.25, 0.25 - SQRT3_OVER_6],
50
+ [0.25 + SQRT3_OVER_6, 0.25],
51
+ ];
52
+ /**
53
+ * GL4 stage weights — the 2-point Gauss-Legendre quadrature weights on
54
+ * [0,1]: b₁ = b₂ = ½.
55
+ *
56
+ * @public
57
+ */
58
+ export const GL4_B = [0.5, 0.5];
59
+ /**
60
+ * Picard fixed-point solver for the GL4 implicit stage system.
61
+ *
62
+ * Per Design §3 Task 1a, the implicit system is:
63
+ * X_i = x_n + h · Σ_j a_{ij} · g^{·ν}(X_j) P_{j,ν}
64
+ * P_{i,μ} = p_n − h · Σ_j a_{ij} · ½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
65
+ *
66
+ * Data flow (F15 / M1): stage values (X_j, P_j) at iterate k feed forward
67
+ * to update (X_i, P_i) at iterate k+1. This is Picard iteration (NOT
68
+ * Newton) — no Jacobian assembly or LU decomposition. Convergence is
69
+ * linear with contraction rate ≈ h·|∂f/∂x|. For Mercury (h ≈ 150 s),
70
+ * expect 30–40 iterations at tol=1e-12. GL4's symplecticity is guaranteed
71
+ * by the Butcher tableau, not by the inner solver's convergence speed
72
+ * (Sanz-Serna 1988; Hairer/Lubich/Wanner §II.1).
73
+ *
74
+ * The `dgInverseFn` index order is `dg[λ][μ][ν] = ∂_λ g^{μν}` (Task 0 I2
75
+ * pin, also recorded on `GL4Options.dgInverseFn`). When we evaluate
76
+ * `dp_μ = −½ (∂_μ g^{νρ}) P_ν P_ρ` we therefore read
77
+ * `dgInvAtXj[mu][nu][rho]` — `mu` is the differentiation axis (λ in the
78
+ * pinned order) and `(nu, rho)` are the upper metric indices.
79
+ *
80
+ * Throws `GL4ConvergenceError` with message matching
81
+ * `/Picard iteration did not converge/` if `picardMaxIter` is exhausted.
82
+ *
83
+ * @internal
84
+ */
85
+ export function solveGL4Stage(state, h, gInverseFn, dgInverseFn, opts) {
86
+ const dim = state.x.length;
87
+ // Initial guess: stage values = state values (k=0 of fixed-point iteration).
88
+ let X = [state.x.slice(), state.x.slice()];
89
+ let P = [state.p.slice(), state.p.slice()];
90
+ for (let k = 0; k < opts.picardMaxIter; k++) {
91
+ const Xnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
92
+ const Pnew = [new Array(dim).fill(0), new Array(dim).fill(0)];
93
+ for (let i = 0; i < 2; i++) {
94
+ // dx^μ/dτ at stage j = g^{μν}(X_j) P_{j,ν}
95
+ // dp_μ/dτ at stage j = −½ (∂_μ g^νρ)(X_j) P_{j,ν} P_{j,ρ}
96
+ for (let mu = 0; mu < dim; mu++) {
97
+ let xAccum = state.x[mu];
98
+ let pAccum = state.p[mu];
99
+ for (let j = 0; j < 2; j++) {
100
+ const gInvAtXj = gInverseFn(X[j]);
101
+ const dgInvAtXj = dgInverseFn(X[j]);
102
+ // dx^μ contribution: + h · a_{ij} · Σ_ν g^{μν}(X_j) P_{j,ν}
103
+ let dxStage = 0;
104
+ for (let nu = 0; nu < dim; nu++) {
105
+ dxStage += gInvAtXj[mu][nu] * P[j][nu];
106
+ }
107
+ xAccum += h * GL4_A[i][j] * dxStage;
108
+ // dp_μ contribution: − h · a_{ij} · ½ Σ_{νρ} (∂_μ g^{νρ})(X_j) P_{j,ν} P_{j,ρ}
109
+ // I2 pin: dgInvAtXj[mu][nu][rho] = ∂_mu g^{nu rho}.
110
+ let dpStage = 0;
111
+ for (let nu = 0; nu < dim; nu++) {
112
+ for (let rho = 0; rho < dim; rho++) {
113
+ dpStage += dgInvAtXj[mu][nu][rho] * P[j][nu] * P[j][rho];
114
+ }
115
+ }
116
+ pAccum -= h * GL4_A[i][j] * 0.5 * dpStage;
117
+ }
118
+ Xnew[i][mu] = xAccum;
119
+ Pnew[i][mu] = pAccum;
120
+ }
121
+ }
122
+ // Convergence check: max |δX, δP|
123
+ let maxDelta = 0;
124
+ for (let i = 0; i < 2; i++) {
125
+ for (let mu = 0; mu < dim; mu++) {
126
+ maxDelta = Math.max(maxDelta, Math.abs(Xnew[i][mu] - X[i][mu]));
127
+ maxDelta = Math.max(maxDelta, Math.abs(Pnew[i][mu] - P[i][mu]));
128
+ }
129
+ }
130
+ X = Xnew;
131
+ P = Pnew;
132
+ if (maxDelta < opts.picardTol) {
133
+ return {
134
+ stageX: [X[0], X[1]],
135
+ stageP: [P[0], P[1]],
136
+ iterations: k + 1,
137
+ };
138
+ }
139
+ }
140
+ throw new GL4ConvergenceError(`Picard iteration did not converge in ${opts.picardMaxIter} iterations (maxDelta above picardTol=${opts.picardTol})`);
141
+ }
142
+ // ---------------------------------------------------------------------------
143
+ // Integrator entry-point (Task 3, Phase 1a-iii)
144
+ // ---------------------------------------------------------------------------
145
+ /**
146
+ * Step update for x^μ given converged GL4 stage values.
147
+ *
148
+ * x^μ_{n+1} = x^μ_n + h · Σ_i b_i · (g^{μν}(X_i) P_{i,ν})
149
+ *
150
+ * Module-private — only `integrateGeodesicGL4` consumes it.
151
+ *
152
+ * @internal
153
+ */
154
+ function updateFromStages(xPrev, h, stageX, stageP, gInverseFn) {
155
+ const dim = xPrev.length;
156
+ const x = xPrev.slice();
157
+ for (let mu = 0; mu < dim; mu++) {
158
+ let delta = 0;
159
+ for (let i = 0; i < 2; i++) {
160
+ const gInv = gInverseFn(stageX[i]);
161
+ let xDot = 0;
162
+ for (let nu = 0; nu < dim; nu++) {
163
+ xDot += gInv[mu][nu] * stageP[i][nu];
164
+ }
165
+ delta += GL4_B[i] * xDot;
166
+ }
167
+ x[mu] += h * delta;
168
+ }
169
+ return x;
170
+ }
171
+ /**
172
+ * Step update for p_μ given converged GL4 stage values.
173
+ *
174
+ * p_μ_{n+1} = p_μ_n − ½ h · Σ_i b_i · (∂_μ g^{νρ})(X_i) P_{i,ν} P_{i,ρ}
175
+ *
176
+ * I2 pin: `dgInverseFn(x)[mu][nu][rho] = ∂_mu g^{nu rho}` — `mu` is the
177
+ * differentiation axis (`λ` in the pinned order). Consistent with the
178
+ * Picard solver's stage update.
179
+ *
180
+ * Module-private.
181
+ *
182
+ * @internal
183
+ */
184
+ function updateMomentumFromStages(pPrev, h, stageX, stageP, dgInverseFn) {
185
+ const dim = pPrev.length;
186
+ const p = pPrev.slice();
187
+ for (let mu = 0; mu < dim; mu++) {
188
+ let delta = 0;
189
+ for (let i = 0; i < 2; i++) {
190
+ const dg = dgInverseFn(stageX[i]);
191
+ let pDot = 0;
192
+ for (let nu = 0; nu < dim; nu++) {
193
+ for (let rho = 0; rho < dim; rho++) {
194
+ pDot += dg[mu][nu][rho] * stageP[i][nu] * stageP[i][rho];
195
+ }
196
+ }
197
+ delta += GL4_B[i] * (-0.5 * pDot);
198
+ }
199
+ p[mu] += h * delta;
200
+ }
201
+ return p;
202
+ }
203
+ /**
204
+ * GL4 symplectic integrator on the canonical (x, p) geodesic Hamiltonian.
205
+ *
206
+ * H(x, p) = ½ g^{μν}(x) p_μ p_ν
207
+ *
208
+ * Drives the implicit Picard stage solver (`solveGL4Stage`) for each step,
209
+ * with **adaptive step-halving on Picard non-convergence** (Adam+Eve I4,
210
+ * replaces the single-retry R8): if Picard fails at step size h, retry at
211
+ * h/2, h/4, … down to `hMin` (default `h · 1e-9`); throw
212
+ * `GL4ConvergenceError` with a diagnostic message only when h_min is also
213
+ * exhausted.
214
+ *
215
+ * Symplecticity (preservation of ω = dp_μ ∧ dx^μ) is a property of the
216
+ * Butcher tableau, not of the inner Picard solver — see Sanz-Serna 1988,
217
+ * Hairer/Lubich/Wanner §II.1. Hamiltonian drift over long integrations is
218
+ * bounded; for non-resonant systems it remains O(h^p) over exponentially
219
+ * long times (`p = 4` for GL4).
220
+ *
221
+ * **Domain guard.** If `domainMinRadius` is provided and `initialState.x[1]`
222
+ * (radial coordinate) is below the bound, throws `NumericalBackendError`
223
+ * synchronously with a `/domain/i`-matching message. The mid-trajectory
224
+ * domain crossing is not checked here — callers needing that supply a
225
+ * `gInverseFn` that throws on out-of-domain input.
226
+ *
227
+ * @param initialState — canonical (x, p) at τ = 0.
228
+ * @param options — see {@link GL4Options} for picardTol, picardMaxIter,
229
+ * hMin (step-halving floor), domainMinRadius.
230
+ * @returns `steps + 1` snapshots: index `0` is the initial state, index `n`
231
+ * is the state after `n` steps (τ = n · h).
232
+ * @throws NumericalBackendError if `initialState.x[1] < domainMinRadius`.
233
+ * @throws GL4ConvergenceError if Picard fails even after step-halving to h_min.
234
+ *
235
+ * @public
236
+ */
237
+ export function integrateGeodesicGL4(initialState, options) {
238
+ const { steps, tauMax, gInverseFn, dgInverseFn, picardTol = 1e-12, picardMaxIter = 50, hMin, domainMinRadius, } = options;
239
+ if (domainMinRadius !== undefined && initialState.x[1] < domainMinRadius) {
240
+ throw new NumericalBackendError(`GL4 integrator: initial r=${initialState.x[1]} < domainMinRadius=${domainMinRadius} (domain violation)`);
241
+ }
242
+ const h = tauMax / steps;
243
+ const hFloor = hMin ?? h * 1e-9;
244
+ const snapshots = [
245
+ { tau: 0, x: initialState.x.slice(), p: initialState.p.slice() },
246
+ ];
247
+ let x = initialState.x.slice();
248
+ let p = initialState.p.slice();
249
+ for (let n = 0; n < steps; n++) {
250
+ let stages;
251
+ // I4: adaptive step-halving loop (not single-retry) on Picard non-convergence.
252
+ let stepH = h;
253
+ let stepSucceeded = false;
254
+ while (stepH >= hFloor) {
255
+ try {
256
+ stages = solveGL4Stage({ x, p }, stepH, gInverseFn, dgInverseFn, {
257
+ picardTol,
258
+ picardMaxIter,
259
+ });
260
+ stepSucceeded = true;
261
+ break;
262
+ }
263
+ catch {
264
+ stepH /= 2;
265
+ }
266
+ }
267
+ if (!stepSucceeded || stages === undefined) {
268
+ throw new GL4ConvergenceError(`GL4 integrator: Picard iteration did not converge even at h_min=${hFloor} (step ${n}). Diagnose step-size or metric singularity.`);
269
+ }
270
+ x = updateFromStages(x, h, stages.stageX, stages.stageP, gInverseFn);
271
+ p = updateMomentumFromStages(p, h, stages.stageX, stages.stageP, dgInverseFn);
272
+ snapshots.push({ tau: (n + 1) * h, x: x.slice(), p: p.slice() });
273
+ }
274
+ return snapshots;
275
+ }
276
+ //# sourceMappingURL=gl4-integrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gl4-integrator.js","sourceRoot":"","sources":["../../src/numerical/gl4-integrator.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export { evaluateMetricInverse };
32
32
  /** @public */
33
33
  export { evaluateBE37CovariantEikonalNumerical, } from './be37-covariant-eikonal.js';
34
34
  export type { BE37CovariantEikonalInputs, BE37CovariantEikonalResult, } from './be37-covariant-eikonal.js';
35
+ /** @public — v0.5.0 GL4 symplectic integrator. */
36
+ export { integrateGeodesicGL4 } from './gl4-integrator.js';
37
+ /** @public — v0.5.0 GL4 types. */
38
+ export type { GL4State, GL4Snapshot, GL4Options } from './gl4-integrator.js';
39
+ /** @public — v0.5.0 perihelion finder (Task 4, Phase 1b). */
40
+ export { findPerihelion } from './perihelion-finder.js';
41
+ /** @public — v0.5.0 perihelion-finder types. */
42
+ export type { PerihelionResult, FindPerihelionOptions } from './perihelion-finder.js';
35
43
  /**
36
44
  * Plain-JS result of `evaluateNumerical`.
37
45
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAqB,MAAM,qBAAqB,CAAC;AAE/E,cAAc;AACd,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvH,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,cAAc;AACd,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,qEAAqE;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD;;0EAE0E;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,cAAc;AACd,OAAO,EACL,qCAAqC,GACtC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAiCD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAW7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,10 @@ export { DuplicateCoordinateWarning } from '../dimensional/errors.js';
19
19
  export { evaluateMetricInverse };
20
20
  /** @public */
21
21
  export { evaluateBE37CovariantEikonalNumerical, } from './be37-covariant-eikonal.js';
22
+ /** @public — v0.5.0 GL4 symplectic integrator. */
23
+ export { integrateGeodesicGL4 } from './gl4-integrator.js';
24
+ /** @public — v0.5.0 perihelion finder (Task 4, Phase 1b). */
25
+ export { findPerihelion } from './perihelion-finder.js';
22
26
  /** Validate the AST and return (engine, validation result) or throw. */
23
27
  async function prepare(node, options) {
24
28
  const vr = validate(node);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/numerical/index.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,9 @@ type ContractableNode = Extract<ExprNode, {
25
25
  /**
26
26
  * Build the EinsumSpec for a flat tensor-product.
27
27
  *
28
- * CRITICAL (finding #1 of the v0.3.5 adversarial review): this function does
29
- * NOT decide which indices contract. `computeContraction()` — the v0.2.0
30
- * symbolic-layer authority, which is variance-aware and applies the
31
- * implicit-identity-metric rule — already classified every label as
28
+ * NOTE: this function does NOT decide which indices contract. That authority
29
+ * belongs to `computeContraction()` (v0.2.0 symbolic-layer) — variance-aware,
30
+ * implicit-identity-metric rule which already classified every label as
32
31
  * contracted or free. buildEinsumSpec only maps those already-classified
33
32
  * labels to their (operand, axis) sites. There is exactly one
34
33
  * contraction-decision implementation in the codebase.
@@ -1 +1 @@
1
- {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAW9E,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,UAAU,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAc/D;;4DAE4D;AAC5D,KAAK,gBAAgB,GACjB,OAAO,CAAC,QAAQ,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAqD7D;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,gBAAgB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACjE,UAAU,CA0CZ;AAiBD;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA8Xd"}
1
+ {"version":3,"file":"lowering.d.ts","sourceRoot":"","sources":["../../src/numerical/lowering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAC;AAY9E,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,UAAU,EACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAqB/D;;4DAE4D;AAC5D,KAAK,gBAAgB,GACjB,OAAO,CAAC,QAAQ,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,CAAC,CAAC;AAqD7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,gBAAgB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACjE,UAAU,CA0CZ;AAiBD;gFACgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,YAAY,GACnB,YAAY,CA2lBd"}