diff --git a/core/math/floats/floats-tests.factor b/core/math/floats/floats-tests.factor index 84f993c5ac..3893e0cc9f 100644 --- a/core/math/floats/floats-tests.factor +++ b/core/math/floats/floats-tests.factor @@ -62,6 +62,21 @@ unit-test [ 5 ] [ 10.5 1.9 /i ] unit-test +[ t ] [ 0 0 /f fp-nan? ] unit-test +[ t ] [ 0.0 0.0 /f fp-nan? ] unit-test +[ t ] [ 0.0 0.0 / fp-nan? ] unit-test +[ t ] [ 0 0 [ >bignum ] bi@ /f fp-nan? ] unit-test + +[ 1/0. ] [ 1 0 /f ] unit-test +[ 1/0. ] [ 1.0 0.0 /f ] unit-test +[ 1/0. ] [ 1.0 0.0 / ] unit-test +[ 1/0. ] [ 1 0 [ >bignum ] bi@ /f ] unit-test + +[ -1/0. ] [ -1 0 /f ] unit-test +[ -1/0. ] [ -1.0 0.0 /f ] unit-test +[ -1/0. ] [ -1.0 0.0 / ] unit-test +[ -1/0. ] [ -1 0 [ >bignum ] bi@ /f ] unit-test + [ t ] [ 0/0. 0/0. unordered? ] unit-test [ t ] [ 1.0 0/0. unordered? ] unit-test [ t ] [ 0/0. 1.0 unordered? ] unit-test diff --git a/core/math/integers/integers.factor b/core/math/integers/integers.factor index 4dd948021a..a3be60ed35 100644 --- a/core/math/integers/integers.factor +++ b/core/math/integers/integers.factor @@ -142,12 +142,8 @@ M: bignum (log2) bignum-log2 ; inline ! Main word : /f-abs ( m n -- f ) - over zero? [ - 2drop 0.0 - ] [ - [ - drop 1/0. - ] [ + over zero? [ nip zero? 0/0. 0.0 ? ] [ + [ drop 1/0. ] [ pre-scale /f-loop [ over odd? [ zero? [ 1 + ] unless ] [ drop ] if ] dip