Commit 15df934
Re-add aarch64 pow tolerance bump (proper fix requires deeper audit)
The exp_hilo muladd → fma change in the previous commit only fixes
part of pow's path. pow also calls logk → logk_kernel → estrin /
evalpoly, and SLEEFPirates' estrin (`src/estrin.jl`) is heavy on
`muladd` (lines 80, 89, 107, 108) and `Base.FastMath.mul_fast`
(lines 87-88). Those propagate the same chip-microarchitecture
non-determinism into pow's polynomial evaluation chain even after
exp_hilo is FMA-clean.
The fully deterministic fix would replace the muladds across the
polynomial-evaluation infrastructure (estrin, _estrin, __estrin,
Base.evalpoly call sites, the various dadd/dsub/dmul wrappers that
ultimately bottom out in muladd). That touches a lot of code and
needs benchmarks + audit of other functions' tolerances calibrated
against current behavior. Out of scope for #48 (integer-vs-float
SIMD parity).
Restore the platform-conditional tolerance bump. Scalar `pow`
remains at strict `tol = 3` everywhere; only the vector-path
test_vector tol that interpolates between first/last input grid
values is bumped on aarch64.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 150202e commit 15df934
1 file changed
Lines changed: 14 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
164 | | - | |
165 | | - | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
166 | 178 | | |
167 | 179 | | |
168 | 180 | | |
| |||
0 commit comments