From e47ffeb0e82a88774e03e68e2e8dc087e5dc2ebe Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 2 Nov 2015 16:09:32 -0600 Subject: [PATCH] Fix interaction of sign and underflow in fl/. Found using random testing. --- typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt | 2 +- typed-racket-test/unit-tests/typecheck-tests.rkt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt index 0f17d500..00bf1603 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt @@ -489,7 +489,7 @@ (fl-type-lambda (from-cases (-FlZero -Fl . -> . -FlZero) ;; we don't have Pos Pos -> Pos, possible underflow - (-NonNegFl -NonNegFl . -> . -NonNegFl) + (-PosFl -PosFl . -> . -NonNegFl) (commutative-binop -PosFl -NegFl -NonPosFl) (-NegFl -NegFl . -> . -NonNegFl) (binop -Fl)))) diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 94a7a928..ffc5532e 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -450,6 +450,7 @@ (tc-e (min (ann 3 Fixnum) (ann 3 Fixnum)) -Fixnum) (tc-e (min (ann -2 Negative-Fixnum) (ann 3 Fixnum)) -NegFixnum) (tc-e (min (ann 3 Fixnum) (ann -2 Negative-Fixnum)) -NegFixnum) + (tc-e (fl/ 1.7976931348623157e+308 -0.0e0) -Flonum) (tc-e (exact->inexact (ann 3 Number)) (t:Un -InexactReal -InexactComplex)) (tc-e (exact->inexact 3) -PosFlonum) (tc-e (exact->inexact -3) -NegFlonum)