Re: [PATCH] max/min on nan arguments
Peter McGoron via Chicken-users <[email protected]> Sun, 2 Aug 2026 11:00:33 -0400
| Newsgroups | gmane.lisp.scheme.chicken |
|---|---|
| Message-ID | <[email protected]> |
> I decided to go with option #1, as this is what C99's
fmin(3)/fmax(3) provides.
OK with me.
> I am reluctant to bother with negative zero - it is an implementation
artifact of IEEE and nonsensical, IMHO. Once you start
adding rules for "consistent" handling of negative zeroes, people
will give it semantic meaning, which I'd rather not encourage.
Two notes:
1. Signed zero already has consistent rules in many other parts of
floating-point arithmetic. The biggest example is division, which is in
hardware:
(/ 1.0 -0.0) => -inf.0
(/ 1.0 +0.0) => +inf.0
Additionally in complex arithmetic, the sign of zero matters when
discontinuities occur on the real axis and imaginary axis:
(angle -1.0+0.0i) => 3.14159...
(angle -1.0-0.0i) => -3.14159...
2. The rule is there to make max and min commutative over all input
values, so permuting -0.0s and +0.0 don't return a different result that
then gives the wrong answer later on down the line (like in the previous
paragraph).
-- Peter McGoron