Skip to content

XHM (2,1) carrier and fit candidate boundary, 2026-09-29

This audit starts from integration c70bceae. It compares the published XHM v2 paper, the independent scalar PN reference, native Torch/JAX, and public binary calls in pinned LALSuite 7.26.15 / LALSimulation 6.2.1 on len. It uses no LAL source or historical source diff. The binary's default XHM release is 122022; 122019 is the author-era control. The comparison uses three aligned-spin cases:

Case Masses in solar masses Aligned spins Reference frequency (Hz)
Probe 36, 29 -0.1, 0.2 37.3
Catalog 40, 20 0.3, -0.1 20
Holdout 55, 11 -0.4, 0.2 27

Carrier and mode selection

The paper's positive-frequency carrier is Fourier \(h_{\ell,-m}\), while the native return_unprojected_modes dictionary labels that positive-frequency carrier with (l,+m) and its conjugate partner with (l,-m). The isolated carrier comparison therefore uses native (2,+1) and LAL's public SimIMRPhenomXHMFrequencySequenceOneMode with (2,-1). The native modes=((2,1),) polarization path includes both signs. A public LAL mode array with only (2,+1) differs from one with both signs by 8.7% in plus and 10.6% in cross for the probe, so mode-array selection is material but cannot account for the original roughly eleven-fold native (2,1) norm. The native positive-key convention is documented here because changing its public keys would also change XPHM consumers; it is not the amplitude error fixed below.

The scalar reference and both native backends agree on the paper's Appendix E normalized (2,1) PN amplitude at 25, 50, and 100 Hz across these cases. The normalization to the paper's leading \(A_{22}\) also reproduces the public 122019 node values; no missing factor of two or \(\pi\) was found.

Decisive inspiral fit check

For each case, the three old-paper nodes are \(0.5 f_{\rm ins}\), \(0.75 f_{\rm ins}\), and \(f_{\rm ins}\). Public one-mode 122019 amplitudes, divided by the leading \(A_{22}\), reproduce the inherited fit 3, fit 2, fit 1 surfaces at those ascending frequencies, respectively, when evaluated with chiPNHat. This normalizes the paper's Eq. (18) \(\chi_{\rm PN}\) so equal component spins map to their common value. The paper does not state that these inherited fits use chiPNHat, nor print their index-to-node assignment. Those contracts are inferred from public 122019 binary outputs and checked by the independent clean assembly test. The current production assembly uses fit 1, fit 2, fit 3 and the merger-spin S. For example:

Case Node frequencies (Hz) Public 122019 normalized amplitudes
Probe 30.213421, 45.320131, 60.426841 0.0127204854, 0.0153658458, 0.0183130198
Catalog 33.415412, 50.123117, 66.830823 0.0169910888, 0.0188865787, 0.0216642783
Holdout 17.689250, 26.533875, 35.378501 0.0463215425, 0.0457680534, 0.0462397678

The inherited surfaces with reversed indices and chiPNHat reproduce all nine public 122019 values to floating-point precision. The isolated Torch and JAX candidate uses that order and spin variable only for (2,1); other modes keep their previous fit arguments. A fixed-node regression on the candidate requires both backends to reproduce six public 122019 amplitudes without loading LAL at test time. Neither the candidate nor that regression has been merged into the default integration branch.

Binary outcome and remaining release boundary

The following values are relative L2 amplitude errors of the unprojected native (2,1) carrier against the public (2,-1) one-mode binary on a 20–300 Hz grid at 0.25 Hz spacing. The narrow band measures the inherited inspiral wiring; the full band also includes intermediate and ringdown code.

Case Release 20–50 Hz before → after 20–300 Hz before → after
Probe 122019 0.396639 → 0.001435 9.807357 → 1.218208
Probe 122022 0.391522 → 0.015577 9.739417 → 1.211758
Catalog 122019 0.235572 → 0.000341 2.002847 → 3.087929
Catalog 122022 0.224478 → 0.010646 1.977240 → 3.053650
Holdout 122019 0.068367 → 0.068500 1.988522 → 1.967847
Holdout 122022 0.060907 → 0.060246 1.996590 → 1.975875

The catalog full-band error grows despite the exact old-release inspiral nodes. That is a measured boundary of this local candidate, not evidence for reversing the observed 122019 fit mapping. In the probe's isolated projected (2,1) polarization comparison against default LAL, plus amplitude L2 falls from 10.695721 to 1.359491 and plus norm ratio from 10.996537 to 1.958647; cross amplitude L2 falls from 8.784065 to 1.070997. The isolated (2,2) plus amplitude L2 remains 0.009737. Neither result qualifies the assembled XHM or XPHM waveform.

The unchanged four-case default-release binary gate, measured through SimInspiralChooseFDWaveform, remains 0/4. Its complex plus-polarization L2 values on the same pinned host and environment are:

Frozen case Before → after Strict limit
XHM catalog 0.374023 → 0.380883 0.000001
XPHM catalog 0.228818 → 0.295708 0.000001
XHM holdout 0.546374 → 0.544842 0.000001
XPHM holdout 0.504113 → 0.437500 0.000001

The companion mismatch limit remains \(10^{-8}\); all four cases fail both limits. The after receipt is /tmp/xhm21_frozen_after_c70bceae.json on len. Two default-release full-waveform errors worsen, so this candidate does not justify changing the unversioned production route.

The binary 122019 and 122022 (2,1) amplitudes differ. Public option lookups reporting sub-option labels 122018 for both releases do not prove that their binary amplitude branches are identical. The default 122022 geometric Fourier-strain node provider and its region cuts are still absent from the native production assembly; the component boundary receipt describes what is missing. The native old-paper inspiral cutoff is 60.426841 Hz for the probe, versus 34.174989 Hz for the release-122022 clean assembly contract. The candidate does not transplant the new cutoff without its matching calibration. The existing strict qualification record therefore remains unpromoted. The candidate remains in the isolated chat branch codex/xhm21-carrier-diagnosis; the default Torch/JAX production implementations remain unchanged.

Reproduction artifacts on len: the before and after probe logs are /tmp/xhm21_probe_c70bceae.log and /tmp/xhm21_after_probe_c70bceae.log; isolated polarization logs are /tmp/diffgw-xhm21-modes-c70bceae.log and /tmp/xhm21_modes_after_c70bceae.log. The patched checkout is /tmp/diffgw-xhm21-after-c70bceae, using the pinned environment at /tmp/diffgw-waveform-library-1315f6e/venv-latest.