Skip to content

Fix binary128 MJD strings and document Apple Silicon containers - #2025

Open
vhaasteren wants to merge 6 commits into
nanograv:masterfrom
vhaasteren:fix/precision
Open

Fix binary128 MJD strings and document Apple Silicon containers#2025
vhaasteren wants to merge 6 commits into
nanograv:masterfrom
vhaasteren:fix/precision

Conversation

@vhaasteren

@vhaasteren vhaasteren commented Jul 27, 2026

Copy link
Copy Markdown
Member

Summary

  • Document Apple Silicon via native linux/arm64 containers (e.g. nanograv/ng20) at native speed; keep Rosetta/osx-64 as a slower alternative; add succinct pintk/X11 usage.
  • Format MJD strings with enough fractional digits for the platform numpy.longdouble precision, and widen the vectorize string dtype (was U30), so precision tests pass on IEEE binary128 (Linux aarch64).
  • Lightly update the numerical-precision explanation for real float128 on aarch64 Linux vs float64-aliased macOS ARM.
  • Fix follow-on test brittleness exposed by binary128 / higher MJD precision:
    • convert_binary roundtrips: stop requiring bit-identical Time/MJD equality for TASC/T0 (propagation uses uncertainties/float64; sub-ns residuals show up under binary128).
    • START/FINISH par-file checks: compare against np.longdouble digit strings with a ~1 float64-ulp tolerance (MJDParameter stores via jd1/jd2; Python float literals truncate).

Fixes #2024

Test plan

  • pytest tests/test_precision.py on linux/arm64 — 91 passed, 6 xfailed
  • Related tests/test_utils.py MJD/longdouble cases
  • Targeted binary128 follow-ups on linux/arm64:
    pytest tests/test_binconvert.py::test_ELL1_roundtrip \
           tests/test_binconvert.py::test_ELL1_roundtripFB0 \
           tests/test_binconvert.py::test_DD_roundtrip \
           tests/test_binconvert.py::test_DDFB0_roundtrip \
           tests/test_parameters.py::TestParameters::test_start_finish_in_par -q
    (31 passed)
  • CI on x86_64 still green (80-bit longdouble path unchanged in spirit; digit count stays ≥ 16)

vhaasteren and others added 2 commits July 27, 2026 11:20
Document Apple Silicon via native linux/arm64 containers (ng20) instead of
Rosetta-only guidance, and size MJD string formatting to the platform
longdouble precision so precision tests pass with IEEE binary128.
@vhaasteren vhaasteren changed the title Fix binary128 MJD strings and document Apple Silicon containers WIP: Fix binary128 MJD strings and document Apple Silicon containers Aug 2, 2026
Binary-convert TASC↔T0 roundtrips and START/FINISH par reads keep more
precision than float64/80-bit assumptions; compare within ~1 float64 ulp
instead of requiring bit-identical Time/longdouble values.
…ix/precision

Reconcile remote master merge with local binary128 MJD test fixes.
@vhaasteren vhaasteren changed the title WIP: Fix binary128 MJD strings and document Apple Silicon containers Fix binary128 MJD strings and document Apple Silicon containers Aug 3, 2026
@vhaasteren vhaasteren added the awaiting review This PR needs someone to review it so it can be merged label Aug 3, 2026
@dlakaplan

Copy link
Copy Markdown
Contributor

I think this is looking good (& helpful). Is it done?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting review This PR needs someone to review it so it can be merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Apple Silicon: document native arm64 containers; fix MJD string precision on binary128

3 participants