Make type of expt more precise on floats.

Closes PR14228.

original commit: e28a860cc075445996dd6633444a1604e97565c5
This commit is contained in:
Vincent St-Amour 2013-12-09 12:23:04 -05:00
parent 11aeb527f3
commit a8368048e2
2 changed files with 9 additions and 6 deletions

View File

@ -1700,17 +1700,18 @@
(-PosReal -Flonum . -> . -PosFlonum)
(-NonNegFlonum -Real . -> . -NonNegFlonum)
(-NonNegReal -Flonum . -> . -NonNegFlonum)
(-Flonum (Un -NegInt -PosInt) . -> . -Flonum)
(-Flonum -Int . -> . (Un -Flonum -One))
(-Flonum -Flonum . -> . (Un -Flonum -FloatComplex))
(-NonNegSingleFlonum (Un -SingleFlonum -NegRat -PosRat) . -> . -NonNegSingleFlonum)
(-SingleFlonum (Un -NegInt -PosInt) . -> . -SingleFlonum)
(-SingleFlonum -Int . -> . (Un -SingleFlonum -One))
(-SingleFlonum -SingleFlonum . -> . (Un -SingleFlonum -SingleFlonumComplex))
(-NonNegInexactReal (Un -NegReal -PosReal) . -> . -NonNegInexactReal)
(-NonNegReal -Real . -> . -NonNegReal)
(-Flonum (Un -NegInt -PosInt) . -> . -Flonum)
(-Flonum -Flonum . -> . (Un -Flonum -FloatComplex))
(-Flonum -Real . -> . N)
(-SingleFlonum (Un -NegInt -PosInt) . -> . -SingleFlonum)
(-SingleFlonum -SingleFlonum . -> . (Un -SingleFlonum -SingleFlonumComplex))
(-InexactReal (Un -NegInt -PosInt) . -> . -InexactReal)
(-Real -Int . -> . -Real)
(-InexactReal -InexactReal . -> . (Un -InexactReal -InexactComplex))
(-Real -Int . -> . -Real)
(-FloatComplex (Un -InexactComplex -InexactReal) . -> . -FloatComplex)
(-SingleFlonumComplex (Un -SingleFlonum -SingleFlonumComplex) . -> . -SingleFlonumComplex)
((Un -InexactReal -InexactComplex) -InexactComplex . -> . -InexactComplex)

View File

@ -278,6 +278,8 @@
(tc-e (expt 0.5 2) -PosFlonum)
(tc-e (expt 0.5 0) -One)
(tc-e (expt -1/2 -1/2) -Number)
(tc-e (expt (ann 0.5 Float) (ann 2 Integer)) (t:Un -Flonum -One))
(tc-e (expt (ann 0.5f0 Single-Flonum) (ann 2 Integer)) (t:Un -SingleFlonum -One))
(tc-e (flexpt 0.5 0.3) -NonNegFlonum)
(tc-e (flexpt 0.00000000001 100000000000.0) -NonNegFlonum)
(tc-e (flexpt -2.0 -0.5) -Flonum) ; NaN