From 6687c8c5cd65de42bda4b4c6e3e90f1ac3cb6c95 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 4 Feb 2013 14:18:53 -0500 Subject: [PATCH] Exclude the right zeroes when checking for equality. original commit: b42034f98b548aa473384e06e2cd153ba9847858 --- .../unit-tests/typecheck-tests.rkt | 6 +++++ .../base-env/base-env-numeric.rkt | 24 +++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt index e234ed7f..2baacdd1 100644 --- a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -1467,6 +1467,12 @@ [tc-e (let: ([x : Float 0.0]) (= 0 x)) #:ret (ret -Boolean (-FS -top -top) (make-Empty))] + [tc-e (let: ([x : Inexact-Real 0.0]) + (= 0 x)) + #:ret (ret -Boolean (-FS -top -top) (make-Empty))] + [tc-e (let: ([x : Real 0.0]) + (= 0 x)) + #:ret (ret -Boolean (-FS -top -top) (make-Empty))] [tc-e/t (ann (lambda: ([x : Boolean]) (if x x #t)) (Boolean -> #t)) (t:-> -Boolean (-val #t))] diff --git a/collects/typed-racket/base-env/base-env-numeric.rkt b/collects/typed-racket/base-env/base-env-numeric.rkt index 07aad4a0..ba4fc0cb 100644 --- a/collects/typed-racket/base-env/base-env-numeric.rkt +++ b/collects/typed-racket/base-env/base-env-numeric.rkt @@ -736,18 +736,18 @@ (list -NonNegRat -PosRat) (list -NonPosRat -NegRat) (list -Rat (Un -PosRat -NegRat)) - (list -NonNegFlonum -PosFlonum) - (list -NonPosFlonum -NegFlonum) - (list -Flonum (Un -PosFlonum -NegFlonum)) - (list -NonNegSingleFlonum -PosSingleFlonum) - (list -NonPosSingleFlonum -NegSingleFlonum) - (list -SingleFlonum (Un -PosSingleFlonum -NegSingleFlonum)) - (list -NonNegInexactReal -PosInexactReal) - (list -NonPosInexactReal -NegInexactReal) - (list -InexactReal (Un -PosInexactReal -NegInexactReal)) - (list -NonNegReal -PosReal) - (list -NonPosReal -NegReal) - (list -Real (Un -PosReal -NegReal)))) + (list -NonNegFlonum -PosFlonum -FlonumZero) + (list -NonPosFlonum -NegFlonum -FlonumZero) + (list -Flonum (Un -PosFlonum -NegFlonum) -FlonumZero) + (list -NonNegSingleFlonum -PosSingleFlonum -SingleFlonumZero) + (list -NonPosSingleFlonum -NegSingleFlonum -SingleFlonumZero) + (list -SingleFlonum (Un -PosSingleFlonum -NegSingleFlonum) -SingleFlonumZero) + (list -NonNegInexactReal -PosInexactReal -InexactRealZero) + (list -NonPosInexactReal -NegInexactReal -InexactRealZero) + (list -InexactReal (Un -PosInexactReal -NegInexactReal) -InexactRealZero) + (list -NonNegReal -PosReal -RealZero) + (list -NonPosReal -NegReal -RealZero) + (list -Real (Un -PosReal -NegReal) -RealZero))) (map (lambda (t) (commutative-equality/filter -ExactNumber t)) (list -One -PosByte -Byte -PosIndex -Index -PosFixnum -NonNegFixnum -NegFixnum -NonPosFixnum -Fixnum