OpenBLAS/lapack
hheei 71f2260186 lapack/laed3: guard sqrt(-w[i]) against spuriously positive w[i]
When eigenvalues are nearly degenerate, numerical accumulation in
the divide-and-conquer merge can push w[i] slightly above zero.
The subsequent sqrt(-w[i]) then produces NaN, which propagates
through the entire eigenvector output of DSYEVD/DSTEDC.

Use fmax(-w[i], 0.0) to safely clamp the sqrt argument, yielding
zero instead of NaN for spuriously positive w[i].  The fmax call
maps to a single vmaxsd instruction on x86_64 with zero overhead.

Add test/test_laed3_nan.c which exercises DSYEVD on a rank-1
perturbed identity matrix designed to create near-degenerate
eigenvalue clusters.
2026-07-02 23:03:38 +08:00
..
getf2 Make temp1 volatile to keep Clang on AppleM from optimizing out the division guards 2026-05-25 00:35:40 +02:00
getrf fix misleading indentation 2024-11-06 18:35:31 +01:00
getrs Adapt to having only a subset of variable types supported 2020-10-11 14:44:56 +02:00
laed3 lapack/laed3: guard sqrt(-w[i]) against spuriously positive w[i] 2026-07-02 23:03:38 +08:00
laswp Copy generic Makefile for wasm laswp 2026-03-15 19:34:25 +01:00
lauu2 Adapt to having only a subset of variable types supported 2020-10-11 14:43:13 +02:00
lauum fix improper function prototypes (empty parentheses) 2023-09-30 12:59:44 +02:00
potf2 Adapt to having only a subset of variable types supported 2020-10-11 14:41:43 +02:00
potrf change BLAS_HALF to BLAS_BFLOAT16 (another missed rename) 2025-07-08 14:40:22 +02:00
trti2 Adapt to having only a subset of variable types supported 2020-10-11 14:40:06 +02:00
trtri Adapt to having only a subset of variable types supported 2020-10-11 14:39:19 +02:00
trtrs Adapt to having only a subset of variable types supported 2020-10-11 14:38:25 +02:00
CMakeLists.txt Rename HALF -> BFLOAT16 in some more places 2025-07-07 10:13:39 +00:00
Makefile Add parallel laed3 2025-07-01 22:12:27 +09:00