3 Commits
Author SHA1 Message Date
bluandClaude Opus 5.5 213327fede fix(libc): keep fmin and fmax quiet on a signalling NaN
fmin, fmax and their f and l forms tested their operands with std::isnan,
which GCC compiles to a compare that raises FE_INVALID for a signalling
NaN. FreeBSD's s_fmax.c and s_fmin.c read the exponent and significand
bits instead, "to avoid raising spurious exceptions", and return the
other operand. The NaN test now reads the bits of float, double and the
80-bit long double.

GuestFminf checks that a signalling NaN on either side returns the other
operand and leaves FE_INVALID clear, for all three types.

The failure was first caught by the numeric helper test of
boykopovar/AnyPS5#2280 (Привалов Александр Владимирович).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:00:40 -07:00
akkadbakkad89 1a059f7af1 test(libc): cover the whole fmin and fmax family in guest_fminf 2026-10-15 16:10:36 +00:00
Leonardo 02d1dbb9f3 feat(libSceLibcInternal): implement fminf required for PPSA99902 startup 2026-10-12 23:27:13 +02:00