You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ForceFreeStates: ex5 kinetic-damping imag(et[1]) pin (rtol=0.08) is platform-fragile (fails on macOS aarch64) #273
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
TEST - IMPROVEMENT - Kinetic regression on mode-converged deck; fullr…