(- 1.0 1.0) => 0 ; not +0.0 ? Paul Schlie 06 Nov 2005 02:56 UTC

As a thought, I can't help wonder if it may be worth considering
defining that the difference between equivalently valued inexacts
is 0 not +0.0, as although one could argue that their difference
may not be an exact 0, their difference is certainly not warranted
to be positive; thereby avoiding the following very incorrect result:

 (/ (- 1.0e30 (+ 1.0e30 +1))) => +inf.0 ; vs. -1 correctly
 (/ (- 1.0e30 (+ 1.0e30 -1))) => +inf.0 ; vs. +1 correctly

where the reciprocal of 0 is defined as being NaN, as opposed to generating
an otherwise needless and useless error, thereby enabling an arguably less
incorrect NaN result for the above.

(correspondingly as -0.0 and +0.0 are more correctly thought of as being
the negative and positive reciprocals of inf.0 respectively, the difference
between equivalently signed 0.0's should be 0 as well, as their difference
is certainly not correctly warranted to be positive either.)

Thereby:

 (+ -0.0 -0.0) => -0.0
 (+ +0.0 +0.0) => +0.0

 (+ -0.0 +0.0) => 0 ; not +0.0
 (+ -1.0 +1.0) => 0 ; not +0.0

 (/ (- 1.0 1.0)) => NaN ; not +inf.0

etc.