Fix other bugs in type of expt.

Found using the new random testing.

original commit: ff0c101a648d2981231ebdb886aba8504094bd95
This commit is contained in:
Vincent St-Amour 2014-11-04 16:54:18 -05:00
parent dd7884fd49
commit 481067f6cb
2 changed files with 22 additions and 7 deletions

View File

@ -1880,14 +1880,13 @@
(-PosRat -Int . -> . -PosRat)
(-NonNegRat -Int . -> . -NonNegRat)
(-Rat -Int . -> . -Rat)
(-PosFlonum (Un -PosReal -NegReal) . -> . -PosFlonum)
(-PosReal -Flonum . -> . -PosFlonum)
(-NonNegFlonum -Real . -> . -NonNegFlonum)
(-NonNegReal -Flonum . -> . -NonNegFlonum)
(-NonNegFlonum -NonNegFlonum . -> . -NonNegFlonum)
(-NonNegFlonum -NonNegReal . -> . (Un -NonNegFlonum -One))
(-PosReal -NonNegFlonum . -> . (Un -NonNegFlonum -One))
(-Flonum (Un -NegInt -PosInt) . -> . -Flonum)
(-Flonum -Int . -> . (Un -Flonum -One))
(-Flonum -Flonum . -> . (Un -Flonum -FloatComplex))
(-NonNegSingleFlonum (Un -SingleFlonum -NegRat -PosRat) . -> . -NonNegSingleFlonum)
(-NonNegSingleFlonum (Un -NonNegSingleFlonum -NegRat -PosRat) . -> . -NonNegSingleFlonum)
(-SingleFlonum (Un -NegInt -PosInt) . -> . -SingleFlonum)
(-SingleFlonum -Int . -> . (Un -SingleFlonum -One))
(-SingleFlonum -SingleFlonum . -> . (Un -SingleFlonum -SingleFlonumComplex))

View File

@ -393,12 +393,28 @@
(tc-e (lcm 3 1/2) -PosRat)
(tc-e (lcm (ann 3 Integer) 1/2) -NonNegRat)
(tc-e (lcm (ann 3 Integer) -1/2) -NonNegRat)
(tc-e (expt 0.5 0.3) -PosFlonum)
(tc-e (expt 0.5 2) -PosFlonum)
(tc-e (expt 0.5 0.3) -NonNegFlonum)
(tc-e (expt 0.5 2) (t:Un -NonNegFlonum -One))
(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 (expt (*) -0.0) (t:Un -NonNegFlonum -One))
(tc-e (expt (*) 2.4521075152139656e-300) (t:Un -NonNegFlonum -One))
(tc-e (expt (*) -0.0) (t:Un -NonNegFlonum -One))
(tc-e (expt -0.0 -1.0) (t:Un -Flonum -FloatComplex))
(tc-e (expt 0 (flabs (cos (real->double-flonum 2))))
-NonNegReal)
(tc-e (expt
(sub1 (gcd (exact-round 1)))
(- (ceiling (real->double-flonum -2.6897657f0))))
-NonNegReal)
(tc-e (expt (sqrt (+)) (cosh (flcos (real->double-flonum 0))))
-NonNegReal)
(tc-e (expt
(tan (real->double-flonum 6))
(lcm (*) (exact-round -1.7976931348623153e+308) 6))
-NonNegReal)
(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