1.0.3.1: fix behaviour of >= and <= with NaNs
authorNikodemus Siivola <nikodemus@random-state.net>
Tue, 27 Feb 2007 21:57:12 +0000 (21:57 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Tue, 27 Feb 2007 21:57:12 +0000 (21:57 +0000)
commitf610d5d0f80db2f4e55c8385fc3ca45d92ed04ec
tree123bba4a87116b10c9195bf804cdad53c8d9336f
parent33602a24274cdd4beb47474db83c6871a992acbc
1.0.3.1: fix behaviour of >= and <= with NaNs

 * Problem: (>= (/ 0.0 0.0) 1.0) evaluates to true.

   Move inversion from >= to < and from <= to > from the source
   transformations to new deftransforms, and make it conditional on
   the derived type, avoiding the inversion for potential floats.

   This fixes the NaN issues with >= and <=, but exposes gaps in our
   transformations for =, causing a constraint propagation test to
   fail...

 * Tweak the deftransform for = so that another transformation can
   co-exist with it.

   Write INTERVAL-= and INTERVAL-/=, and deftransforms for = and /=
   based on them.

   This fixes the constant propagation issue, except for the bug it
   exposes elsewhere...

 * INTERVAL-INTERSECTION/DIFFERENCE returns bogus intersections -- fix
   it.

   ...and all is well.

 * Tests.

 * NUMERIC-TYPE-OR-LOSE is unused, deleted.

 * Also fix tests/stream.impure.lisp for UTF-8 environments.
NEWS
src/compiler/srctran.lisp
tests/float.pure.lisp
tests/stream.impure.lisp
version.lisp-expr