Make type of division more lenient.

Thanks to John Clements for the report.
This commit is contained in:
Vincent St-Amour 2015-02-04 13:27:12 -05:00
parent 8ebbd3dfee
commit 787df49140
2 changed files with 10 additions and 11 deletions

View File

@ -1286,9 +1286,9 @@
;; reals
(map unop real-types)
(varop -NonNegReal) ; (* +inf.0 0.0) -> +nan.0
(-> -NegReal -NegReal -NonNegReal)
(commutative-binop -NegReal -PosReal -NonPosReal)
(-> -NegReal -NegReal -NegReal -NonPosReal)
(-> -NonPosReal -NonPosReal -NonNegReal)
(commutative-binop -NonPosReal -NonNegReal -NonPosReal)
(-> -NonPosReal -NonPosReal -NonPosReal -NonPosReal)
(varop -Real)
;; complexes
(commutative-case -FloatComplex (Un -InexactComplex -InexactReal -PosRat -NegRat) -FloatComplex)
@ -1432,8 +1432,6 @@
(-> -NegFlonum -NegFlonum -NegFlonum -NonPosFlonum)
;; limited flonum contagion rules
;; (/ 0 <float>) is exact 0 (i.e. not a float)
(-> -PosFlonum -PosReal -NonNegFlonum)
(-> -PosReal -PosFlonum -NonNegFlonum)
(commutative-case -PosFlonum -PosReal -NonNegFlonum)
(->* (list (Un -PosReal -NegReal -Flonum) -Flonum) -Flonum -Flonum)
(->* (list -Flonum) -Real -Flonum) ; if any argument after the first is exact 0, not a problem
@ -1452,12 +1450,12 @@
(commutative-case -InexactReal (Un -PosRat -NegRat -InexactReal) -InexactReal)
(varop-1+ -InexactReal)
;; reals
(varop-1+ -PosReal -NonNegReal)
(-> -NegReal -NonPosReal)
(-> -NegReal -NegReal -NonNegReal)
(-> -NegReal -PosReal -NonPosReal)
(-> -PosReal -NegReal -NonPosReal)
(-> -NegReal -NegReal -NegReal -NonPosReal)
(varop-1+ -NonNegReal -NonNegReal)
(-> -NonPosReal -NonPosReal)
(-> -NonPosReal -NonPosReal -NonNegReal)
(-> -NonPosReal -NonNegReal -NonPosReal)
(-> -NonNegReal -NonPosReal -NonPosReal)
(-> -NonPosReal -NonPosReal -NonPosReal -NonPosReal)
(varop-1+ -Real)
;; complexes
(varop-1+ -FloatComplex)

View File

@ -367,6 +367,7 @@
(tc-e (- -24.3) -PosFlonum)
(tc-e/t 34.2f0 -PosSingleFlonum)
(tc-e/t -34.2f0 -NegSingleFlonum)
(tc-e (/ (ann 0 Nonnegative-Real) (ann 1 Nonnegative-Real)) -NonNegReal)
(tc-e (- (ann 1000 Index) 1) -Fixnum)
(tc-e (- (ann 1000 Positive-Index) 1) -Index)