Skip to content

IMRPhenomHM independent published-calibration composition — 2026-09-27

This gate compares complete complex waveforms from both native frontends with imrphenomhm-independent-waveform/v1. The reference derives the D remnant, D amplitude/phase, peak slope, HM QNM frequencies, mapped phases, PN amplitude ratios and Wigner projection independently. It never obtains a reference input from a Torch/JAX waveform or fit helper. Independently generated QNM numerical assets are shared inputs; their solver and off-grid evidence remain separate.

Configuration and scope

The native option is calibration="published", with hm_21_pn_variant="mishra_eq12b", hm_32_pn_variant="mishra_eq12d", and hm_43_pn_variant="mishra_eq12g". It uses the printed Khan Table V coefficients and Husa remnant coefficients, including 0.102 for the final-spin eta*S² term. It is a named paper-precision variant, not a recovery of historical unrounded calibration. Both london_2018 and phenomd_runtime mapping transitions are exercised.

The CPU float64 value tests use (mass1,mass2,chi1,chi2) of (35,20,0.2,-0.1) and (30,30,0.35,-0.2), distance 100 Mpc, inclination 0.93, harmonic azimuth 0.27, orbital phase 0.37, and time shift 0.008 s. They compare all six individual complex modes and plus/cross projections, then the full sum. Coalescence and finite f_ref=40 Hz gauges are tested. Each mode samples outer mapping joins and inverse images of D amplitude/phase joins at the join and relative offsets ±1e-6, plus Mf=0.005, 0.035 and 0.12. An equal-mass/equal-spin case separately checks exact odd-mode zeros.

Value tolerance is rtol=3e-8 plus atol=2e-10 times each output's maximum reference magnitude. Smooth frequency, inclination, harmonic azimuth, orbital phase, time and distance derivatives are compared at Mf=0.005, 0.035 and 0.12, finite reference frequency and both transition choices. The oracle uses fourth-order central differences at 50-digit precision, requiring convergence under step halving within 1e-7 relative maximum norm. Native autodiff tolerance is rtol=3e-6 with the same scaled absolute floor, separately per derivative. These are sampled implementation checks; intrinsic mass/spin derivatives, boundary derivatives, arbitrary option combinations and a continuous-domain error bound are outside this new claim.

Reproduction

Reviewed execution on len, 2026-09-27, in the source snapshot /tmp/diffgw-hm-source-audit-20260927/repo, based on commit fd20c2988cd2b1a90b42f4a29db7f946ca5560af plus the published-composition change:

  • Full strict CPU suite: 2,144 passed, 1,683.24 s. Its math-reference inventory reports 2,093/2,093 passed, zero skips/xfails and zero deselected. Two existing TorchScript deprecation warnings were reported.
  • Independent composition and N61 off-grid tests: 98 passed, 186.70 s.
  • Published-calibration API/constant checks: 17 passed, 33.26 s.
  • Final published API and catalog contract checks: 30 passed, 37.91 s. This repeats the 17 API checks above.
  • Existing D/HM regression tests: 53 passed, 25.37 s, with one existing TorchScript deprecation warning.
  • Final citation metadata: 13 catalog checks passed, 4.96 s. Both generated documentation checks and the strict MkDocs build passed.

The environment was Python 3.12.3, NumPy 2.3.5, SciPy 1.16.3, Torch 2.14.0, JAX/JAXlib 0.11.2, SymPy 1.14.0, mpmath 1.3.0 and pytest 9.1.1, with JAX_ENABLE_X64=1, JAX_PLATFORMS=cpu and PYTHONPATH=src. Run logs were /tmp/diffgw-hm-independent.log, /tmp/diffgw-published-api.log /tmp/diffgw-published-regression.log and /tmp/diffgw-hm-final-api.log on len. The API file was initially run as test_phenomd_published_calibration.py; it was renamed without content changes to enter the strict math-reference inventory.

Use the maintained tests, which enter the strict no-skip CI math inventory:

PYTHONPATH=src JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu python -m pytest -q \
  tests/test_imrphenomhm_waveform_math_reference.py \
  tests/test_phenomd_published_calibration_math_reference.py \
  tests/test_imrphenomhm_qnm_n61_offgrid_math_reference.py -ra

The full strict run log is /tmp/diffgw-hm-strict-math.log on len. The full strict reference inventory is reproduced with:

PYTHONPATH=src JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu python -m pytest \
  tests/test_waveform_definitions.py tests/test_*math_reference*.py \
  tests/test_nsbh_*reference.py tests/test_xphm_rotation_reference.py \
  tests/test_xphm_nnlo_clean_room.py \
  --require-math-reference --reference-device=cpu -ra

The calibration contract additionally checks every printed fit/remnant constant, unchanged defaults, explicit dispatcher forwarding, invalid options, unsupported carrier/remnant overrides, batch/scalar agreement and JAX compilation. The N61 data move into diffgw_core.hm_qnm_n61_data preserves coefficient payload SHA256 afcb21b634efacbc1ed0b44f24fda5df5ab08e236f3b7cbfdc7e71d3452d6525; its evaluators retain their original arithmetic.

Relationship to earlier evidence

The earlier intrinsic assembly receipt remains conditional on frontend-supplied D/QNM/fit inputs. This new composition closes that dependency for the named published option. Default calibration="inherited" and binary-compatible PN settings remain unchanged. Their existing binary and NR records do not qualify this new option. The red 2265/3631/3619/3630 NR outcomes and bounded green 3144/2158 records stay in the family ledger. No new physical-accuracy or historical LAL-equivalence claim is made here.