From d70b95e4b8f053d894443fa519262e0a7c74379a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 29 Sep 2009 23:46:21 -0500 Subject: [PATCH] math.vectors.simd: fix bad comparison logic in unit tests --- basis/math/vectors/simd/simd-tests.factor | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/basis/math/vectors/simd/simd-tests.factor b/basis/math/vectors/simd/simd-tests.factor index 83d29ac308..ce17736d75 100644 --- a/basis/math/vectors/simd/simd-tests.factor +++ b/basis/math/vectors/simd/simd-tests.factor @@ -177,21 +177,29 @@ CONSTANT: simd-classes : approx= ( x y -- ? ) { { [ 2dup [ float? ] both? ] [ -1.e8 ~ ] } + { [ 2dup [ fp-infinity? ] either? ] [ fp-bitwise= ] } { [ 2dup [ sequence? ] both? ] [ [ { { [ 2dup [ fp-nan? ] both? ] [ 2drop t ] } + { [ 2dup [ fp-infinity? ] either? ] [ fp-bitwise= ] } { [ 2dup [ fp-nan? ] either? not ] [ -1.e8 ~ ] } } cond ] 2all? ] } } cond ; +: exact= ( x y -- ? ) + { + { [ 2dup [ float? ] both? ] [ fp-bitwise= ] } + { [ 2dup [ sequence? ] both? ] [ [ fp-bitwise= ] 2all? ] } + } cond ; + : simd-classes&reps ( -- alist ) simd-classes [ { { [ dup name>> "float" head? ] [ float [ approx= ] ] } - { [ dup name>> "double" head? ] [ float [ = ] ] } + { [ dup name>> "double" head? ] [ float [ exact= ] ] } [ fixnum [ = ] ] } cond 3array ] map ;