Skip to content

ForceFreeStates: ex5 kinetic-damping imag(et[1]) pin (rtol=0.08) is platform-fragile (fails on macOS aarch64) #273

Closed

Description

@d-burg

Summary

The regression_solovev_kinetic_calculated (ex5) fullrun assertion in test/runtests_fullruns.jl

@test imag(et[1]) ≈ -0.711 rtol = 0.08   # kinetic damping rate

passes on the Linux x86 CI baseline (where -0.711 was tuned) but fails on macOS aarch64, which produces imag(et[1]) = -0.8556 (~20% off, outside the rtol=0.08 band [-0.768, -0.654]). The well-conditioned real(et[1]) ≈ 15.888 (rtol=0.01) passes on both platforms; only the FP-sensitive imaginary (kinetic-damping) part diverges.

Why

imag(et[1]) here is a kinetic damping rate — a small, FP-reassociation-sensitive quantity. This is the same class of cross-platform fragility we already characterized for the kinetic multi-n et[1] (a near-marginal eigenvalue): @inbounds @simd floating-point reassociation differs between platforms (aarch64 vs x86) and between --check-bounds=auto (dev) and --check-bounds=yes (Pkg.test/CI), and a marginal/damping quantity amplifies that ~0.1% into a 20%+ swing. The underlying kinetic-DCON physics is the same on both platforms (validated <2% vs Fortran on the DIIID benchmark, PR #112).

Scope

This is a develop-side test-robustness issue, not a regression from any feature branch — the kinetic-eigenvalue code is unchanged. It was surfaced while merging develop into feature/tearing-growthrates: every other suite entry passes on macOS; only this one assertion fails.

Suggested fix

Make the imag(et[1]) assertion platform-robust, consistent with how the multi-n et[1] pin was handled: keep the tight pin on the well-conditioned real(et[1]) ≈ 15.888, keep the sign check (imag(et[1]) < 0, kinetic damping), and widen the magnitude tolerance on imag(et[1]) to cover both the Linux (-0.711) and macOS aarch64 (-0.856) values (e.g. a bracket such as -1.0 < imag(et[1]) < -0.5), with a comment documenting the platform/FP sensitivity. The well-conditioned real part remains the real regression anchor.

Reference: test/runtests_fullruns.jl ex5 block; failing value imag(et[1]) = -0.8555633612323581 on macOS aarch64 (Apple), Pkg.test (--check-bounds=yes).

Activity

  1. added a commit that references this issue on Jun 19, 2026
    8bf5d01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions