Fix type of flexpt.

Found using random testing. Found 9 times.
This commit is contained in:
Vincent St-Amour 2015-11-05 14:15:10 -06:00
parent bd12a1b928
commit 16a18d7648
2 changed files with 3 additions and 1 deletions

View File

@ -568,7 +568,8 @@
(fl-type-lambda
(from-cases (-FlZero -PosFl . -> . -FlZero) ; (flexpt -0.0 0.1) -> 0.0 ; not sign preserving
((Un -PosFl -NegFl) -FlZero . -> . -PosFl) ; always returns 1.0
(-NonNegFl -Fl . -> . -NonNegFl) ; can underflow
;; can underflow, and -0.0 breaks sign, so 1st arg can't be non-neg
(-Pos -Fl . -> . -NonNegFl)
(-Fl -Fl . -> . -Fl))))
(define fx->fl-type

View File

@ -455,6 +455,7 @@
(tc-e (exact->inexact (ann 3 Number)) (t:Un -InexactReal -InexactComplex))
(tc-e (/ (round (exact-round -2.7393196f0)) (real->double-flonum (inexact->exact (real->single-flonum -0.0)))) -Real)
(tc-e (bitwise-and (exact-round 1.7976931348623157e+308) (exact-round -29)) -Int)
(tc-e (flexpt -0.0 -1.0) -Flonum)
(tc-e (exact->inexact 3) -PosFlonum)
(tc-e (exact->inexact -3) -NegFlonum)
(tc-e (real->double-flonum 0.0) -FlonumPosZero)