NRTidalv2 amplitude and merger-taper diagnostic — 26 September 2026
Result: Eq. (24) component math qualified; explicit paper_2019 D
composition qualified for this amplitude/taper slice; historical default
binary compatibility retained, with amplitude provenance unresolved.
This receipt covers only the nonspinning tidal
amplitude and merger taper specified in
nrtidalv2-amplitude-taper/v1. The
separate nonspinning phase receipt remains
intact. No coefficient was fit to the binary, and no LAL implementation source
was inspected.
Dietrich et al. (2019), Table II and accompanying text
specify that IMRPhenomD_NRTidalv2 adds only the tidal phase to the BBH
carrier; the Eq. (24) tidal-amplitude correction belongs to
IMRPhenomPv2_NRTidalv2. Colleoni et al. (2025), Sec. II A
independently confirms this older-model distinction. Both Torch/JAX D frontends
now expose amplitude_variant="paper_2019", which omits tidal amplitude. Their
default binary_compatible variant preserves the earlier native
\(M_{\rm sec}^2/(2D_{\rm sec})\) correction and the frozen pinned-binary output.
The origin of its \(1/2\) normalization remains unresolved; it is not a
published Eq. (24) coefficient or a claim that the default implements the
paper's D composition. The published Eq. (24) component remains separately
checked by Torch/JAX/SymPy and is used by neither D variant.
The earlier Kawaguchi et al. (2018), Eq. (2.25) uses \(\sqrt{5\pi\eta/24}M^2/D_{\rm eff}\) for its absolute additive tidal amplitude. Dietrich et al. (2019), Eq. (22) explicitly substitute \(D_L\) for \(D_{\rm eff}\), and Eqs. (23)–(24) retain the same \(\eta\) scaling. The independent SymPy reference now proves that the Kawaguchi expression equals the numerator of Dietrich Eq. (24), including its 7.890-power term. The historical native/published scalar ratio is \([2\sqrt{5\pi\eta/24}]^{-1}\), giving 1.236077446 for the equal-mass case and 1.248886881 for the unequal-mass case; both Torch and JAX are tested against this distinction. With inclination fixed at 0.4 rad, a single projection factor cannot explain both ratios. This is a paper versus pinned-binary contract difference, not evidence that \(1/2\) is a published coefficient. The first 2019 preprint, Table II already marks D_NRTidalv2 tidal amplitude absent. The pinned binary version, frozen cases, and measured output disagreement appear below.
The manifest's verified_declared_cases status and frozen metrics apply to
the default binary-compatible contract only. The explicit paper-D option
passes its math-composition tests but remains unqualified against the pinned
LALSuite 7.26.15 D binary at nonzero tide. The strict oracle catalog and
holdout inventory and limits are unchanged.
The unchanged scripts.run_oracle_ci gate passed on len in the same cwd
with the checksum-verified SEOBNRv4ROM_v3.0.hdf5, LALSuite distribution
7.26.15 and PyCBC 2.11.0: catalog 19/19, holdout 14/14. The D_NRTidalv2
catalog row was PASSED with plus complex relative \(L_2=3.3468418936\times
10^{-9}\) and maximum projection \(L_2=2.9618710589\times10^{-7}\); its
holdout row was PASSED with plus \(L_2=5.6726113326\times10^{-9}\) and
maximum projection \(L_2=3.0914191861\times10^{-7}\). The log is
nrtidal_dual_oracle_ci_pycbc.log, with the unmodified reports
parity_results.json and parity_holdout_results.json, in the remote cwd.
The first attempt with a venv lacking PyCBC could not evaluate the required
optimized-match metric and marked all ordinary strict cases failed; its
nrtidal_dual_oracle_ci.log is environmental evidence, not a model result.
27 September provenance follow-up
The independent Kawaguchi/Dietrich symbolic identity and the two-mass-ratio
Torch/JAX normalization distinctions added after the initial receipt passed
on len in /home/xangma/tmp/diffgw-nrtidal-paper-d-20260926: 67 passed,
18 strict xfailed in nrtidal_provenance_focus.log. The focused command is
the four-file command below with the same pinned LALSuite 7.26.15 environment.
The unchanged python -m scripts.run_oracle_ci strict gate, run with PyCBC
2.11.0 and the verified ROM data in the same cwd, passed catalog 19/19,
holdout 14/14; see nrtidal_provenance_oracle_ci.log. No production waveform
code, frozen oracle inventory, threshold, or expected-failure status changed
in this follow-up. The scientific release distinction remains: the published
2019 D composition is source-scoped, while the default is binary-verified
with unresolved amplitude provenance.
On len, the dual-contract focused CPU FP64 run in
/home/xangma/tmp/diffgw-nrtidal-paper-d-20260926 returned 62 passed,
18 strict xfailed. The exact command and output are in
nrtidal_dual_focus.log there. It covered the scalar paper reference,
Torch/JAX component and composition checks, both pinned-binary comparisons,
and Torch reconstruction:
PYTHONPATH=src:tests:/home/xangma/diffgw-pr45-318b37f7/.oracle-deps \
DIFFGW_REQUIRE_LAL_BINARY=1 JAX_ENABLE_X64=1 OMP_NUM_THREADS=1 \
/home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m pytest -q -s \
tests/test_nrtidalv2_amplitude_math_reference.py \
tests/test_nrtidalv2_amplitude_math_reference_native.py \
tests/test_nrtidalv2_amplitude_lal_binary.py \
tests/test_nrtidal_reconstruction.py
| Explicit paper-D comparison with pinned D binary | Frozen maximum | Observed maximum | Result |
|---|---|---|---|
| Equal mass, through merger | absolute \(5\times10^{-5}\) | \(0.355275595\) | strict xfail |
| Unequal and exchanged, through merger | absolute \(5\times10^{-5}\) | \(0.245061191\) | strict xfail |
| Equal mass, in taper | absolute \(5\times10^{-5}\) | \(0.378202841\) | strict xfail |
| Unequal and exchanged, in taper | absolute \(5\times10^{-5}\) | \(0.261641146\) | strict xfail |
| Zero tide | absolute \(5\times10^{-5}\) | \(\le2.3\times10^{-16}\) | pass |
These paper-D versus pinned-binary discrepancies are retained as strict expected failures in a diagnostic test. They are not substituted into the frozen catalog or holdout cases. The default's pre-taper native/LAL amplitude ratio passes the \(5\times10^{-5}\) limit, with maximum \(1.84458477\times10^{-7}\). Inside the taper, the unchanged \(5\times10^{-5}\) limit still fails by \(0.000153757344\) (equal mass) and \(0.000189164604\) (unequal/exchanged), under the pre-existing strict expected-failure markers. This small boundary difference is distinct from the paper-D composition discrepancy above.
Earlier Eq. (24)-in-D diagnostic
On the earlier Eq. (24)-in-D branch, Torch and JAX used the published
\(\sqrt{5\pi\eta/24}\,M^2/D_L\) scale. The historical native \(M^2/(2D_L)\) scale
gave a mass-ratio-dependent relative error of 0.2361–0.2489 against Eq. (24);
it now remains only in the binary-compatible default. The Eq. (24) scale is
supported independently by the physical IMRPhenomD
Newtonian carrier: \(\sqrt{5\eta/24}M^{5/6}/(\pi^{2/3}D_Lf^{7/6})
=\sqrt{5\pi\eta/24}M^2x^{-7/4}/D_L\). The identity follows from
Cutler and Flanagan, Eqs. (62)–(63)
and \(x=(\pi Mf)^{2/3}\). We changed both backends and the paper-math tests;
no new LAL-derived normalization was introduced. On len, that focused test
command covering the scalar, native waveform, pinned binary and Torch
reconstruction returned 54 passed, 18 strict xfailed. The 18 expected
failures are the nonzero-tide paper-versus-LAL and corrected-native-versus-LAL
quotients before/inside the taper. The frozen limits did not change.
That run did not establish why the pinned LAL binary outputs matched the earlier native normalization, and the approximately 25 ppm effective merger-boundary offset reported below remained unresolved. The LAL binary gate for that abandoned Eq. (24)-in-D composition was red. The later pre-correction baseline table is retained to show how the earlier native normalization compared with Eq. (24) and the binary.
Equation (24) is an absolute additive tidal amplitude, not the complete BNS amplitude and not a relative factor. Equation (25) forms \((\widetilde A_{\rm BBH}+\widetilde A_T)W\). The earlier D frontends implemented this as \(h_{\rm BBH}(1+\widetilde A_T/\widetilde A_{\rm BBH})W\), using the same physical BBH carrier amplitude in the denominator. This division only applies the additive correction to the complex waveform; it does not multiply by a second carrier normalization.
| Earlier Eq. (24)-in-D comparison | Frozen maximum | Observed maximum | Result |
|---|---|---|---|
| Torch/JAX scalar signed amplitude / Eq. (24) | relative \(10^{-11}\) | at most \(10^{-11}\) | pass |
| Torch/JAX untapered \(h_+\) modulus quotient / paper | absolute \(10^{-10}\) | at most \(10^{-10}\) | pass |
| LAL versus paper; native versus LAL, through merger, equal mass | absolute \(5\times10^{-5}\) | \(0.0678536536\) | fail |
| Same, unequal and exchanged | absolute \(5\times10^{-5}\) | \(0.0488374025\) | fail |
| LAL versus paper; native versus LAL, after merger, equal mass | absolute \(5\times10^{-5}\) | \(0.0722370285\) | fail |
| Same, unequal and exchanged | absolute \(5\times10^{-5}\) | \(0.0521550463\) | fail |
The earlier focused run used host len, cwd
/home/xangma/tmp/diffgw-nrtidalv2-amplitude-eq24-20260926, and
amplitude_eq24_focus_final.log there. Its command was:
PYTHONPATH=src:tests:/home/xangma/diffgw-pr45-318b37f7/.oracle-deps \
DIFFGW_REQUIRE_LAL_BINARY=1 JAX_ENABLE_X64=1 OMP_NUM_THREADS=1 \
/home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m pytest -q -s \
tests/test_nrtidalv2_amplitude_math_reference.py \
tests/test_nrtidalv2_amplitude_math_reference_native.py \
tests/test_nrtidalv2_amplitude_lal_binary.py tests/test_nrtidal_reconstruction.py
The broader len run in the same cwd used amplitude_eq24_broad.log and
returned 94 passed, 1 skipped in 114.65 s. It covered
tests/test_nrtidal.py, tests/test_nrtidal_reference.py,
tests/parity/test_nrtidal_parity.py,
tests/parity/test_waveforms_dispatch_parity.py, and
tests/test_nrtidalv2_phase_math_reference.py under the same environment.
Pre-correction baseline
The independent SymPy/mpmath reference transcribes the full absolute normalization of Dietrich et al. (2019), Eq. (24), with its \(\sqrt{5\pi\eta/24}\) prefactor, and its Eq. (25) Planck taper. This normalization is internally consistent with Eq. (23): its leading \(-27x^5/16\) term times \(\sqrt{160\pi\eta/27}\,x^{-7/4}\) gives \(-9\sqrt{5\pi\eta/24}\,x^{13/4}\) exactly. The source therefore does not support replacing Eq. (24)'s prefactor with the native \(1/2\) factor. The merger fit follows Dietrich et al. (2018), Eq. (11). The frozen systems, frequencies and limits are in the specification and tests. They were written before the first pinned-binary run and were not relaxed after its failure.
| Comparison | Frozen maximum | Observed maximum | Result |
|---|---|---|---|
| Torch/JAX scalar signed amplitude / Eq. (24), equal mass | relative \(10^{-11}\) | \(0.23607725316\) | fail |
| Torch/JAX scalar signed amplitude / Eq. (24), unequal and exchanged | relative \(10^{-11}\) | \(0.24888677449\) | fail |
| Torch/JAX untapered \(h_+\) modulus quotient / paper, equal mass | absolute \(10^{-10}\) | \(0.01553696317\) | fail |
| Torch/JAX untapered \(h_+\) modulus quotient / paper, unequal and exchanged | absolute \(10^{-10}\) | \(0.01795564024\) | fail |
| Pinned LAL BNS/BBH modulus quotient / paper, through merger, equal mass | absolute \(5\times10^{-5}\) | \(0.0678536536\) | fail |
| Pinned LAL BNS/BBH modulus quotient / paper, through merger, unequal and exchanged | absolute \(5\times10^{-5}\) | \(0.0488374025\) | fail |
| Pinned LAL BNS/BBH modulus quotient / paper, after merger, equal mass | absolute \(5\times10^{-5}\) | \(0.0722370285\) | fail |
| Pinned LAL BNS/BBH modulus quotient / paper, after merger, unequal and exchanged | absolute \(5\times10^{-5}\) | \(0.0521550463\) | fail |
| Torch/JAX vs pinned LAL quotient through merger | absolute \(5\times10^{-5}\) | \(1.84458477\times10^{-7}\) | pass |
| Torch/JAX vs pinned LAL quotient after merger, equal mass | absolute \(5\times10^{-5}\) | \(0.000153757344\) | fail |
| Torch/JAX vs pinned LAL quotient after merger, unequal and exchanged | absolute \(5\times10^{-5}\) | \(0.000189164604\) | fail |
The native signed tidal amplitude has the factor \(M_{\rm sec}^2/(2D_{\rm sec})\) times the same dimensionless \(-9\kappa_{\rm eff}^T x^{13/4}P(x)\) in both backends. Equation (24) instead multiplies that dimensionless term by \(\sqrt{5\pi\eta/24}\,M_{\rm sec}^2/D_{\rm sec}\). The measured scalar ratios are exactly the ratios of these factors. Public waveform outputs show that Torch/JAX and the pinned LAL binary agree very closely before merger (for example, at 1200 Hz in the equal-mass case, both give BNS/BBH modulus \(0.918650\) while literal Eq. (24) gives \(0.934187\)). Thus the Eq. (24) absolute correction and the carrier quotient have different normalizations unless another convention explains the relation. The public binary alone does not establish why. This diagnostic does not declare either convention correct or promote the waveform family.
At 100, 300, 800 and 1200 Hz, public LAL and native absolute BBH amplitudes agree within \(8.6\times10^{-15}\) relative error in the equal- and unequal-mass systems. Their untapered BNS amplitudes agree within \(4.6\times10^{-8}\) relative error at those frequencies. A hidden overall normalization of the LAL BBH carrier therefore does not explain the Eq. (24) discrepancy.
The scalar merger frequency and Planck window pass for all four systems, as do the native tapered/untapered window ratios. Zero tide passes every binary check, including taper endpoints. The nonzero-tide native/LAL difference within the taper remains unresolved; it is reported separately from the larger Eq. (24) normalization discrepancy.
An additional read-only diagnostic isolates the shape of that small taper difference. Divide the public LAL BNS/BBH modulus quotient by the native untapered BNS/BBH modulus quotient. If the untapered corrections keep agreeing inside the taper, the result is the LAL effective window. Invert the published Planck window at \(f=1.1f_{\rm mrg}^{\rm paper}\) to obtain an equivalent merger boundary:
| System | Paper/native \(f_{\rm mrg}\) (Hz) | Equivalent boundary (Hz) | Relative difference |
|---|---|---|---|
| Equal | 2037.930727 | 2037.878683 | \(-2.554\times10^{-5}\) |
| Unequal / exchanged | 1709.953767 | 1709.910782 | \(-2.514\times10^{-5}\) |
| Zero tide | 4291.579158 | 4291.579158 | 0 |
Holding each inferred boundary fixed predicts the other sampled interior window points with maximum residual \(3.11\times10^{-7}\) (equal) and \(1.77\times10^{-7}\) (unequal). This strongly localizes the public-output difference to an effective taper-boundary shift, but does not establish whether a merger-frequency convention, an untapered amplitude difference inside the window, or another binary detail caused it. No correction was fitted to production code; both taper-specific frozen acceptance limits remain failed in that diagnostic.
Execution used host len, cwd
/home/xangma/tmp/diffgw-nrtidalv2-phase-20260926-e4a2, CPU FP64,
LALSuite 7.26.15 (lal 7.7.1, lalsimulation 6.2.1), Torch 2.14.0+cpu,
JAX 0.11.2 and NumPy 2.5.3. The first, unmarked frozen gate returned
21 failed, 19 passed. After marking only the known nonzero-tide
failures xfail(strict=True), moving native amplitude failures to a diagnostic
file outside the required test_*math_reference*.py CI job, and splitting out
independently passing merger/window and pre-taper binary checks, this exact
command returned
36 passed, 24 xfailed in 16.11 s:
PYTHONPATH=/home/xangma/tmp/diffgw-nrtidalv2-phase-20260926-e4a2/src:/home/xangma/tmp/diffgw-nrtidalv2-phase-20260926-e4a2/tests:/home/xangma/diffgw-pr45-318b37f7/.oracle-deps \
DIFFGW_REQUIRE_LAL_BINARY=1 OMP_NUM_THREADS=1 \
/home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m pytest -q -s \
tests/test_nrtidalv2_amplitude_math_reference.py \
tests/test_nrtidalv2_amplitude_diagnostic.py \
tests/test_nrtidalv2_amplitude_lal_binary.py
The logs are amplitude_qualification.log and
amplitude_qualification_xfail.log in that cwd. An earlier background
diagnostic PID 214583 has exited; the final command ran in the foreground.
Re-running a strict expected-failure case that
starts passing yields an XPASS failure, requiring the marker and this
receipt to be reviewed. This is a diagnostic gate, not a qualification.