Fix type of expt for bignums that get converted to infinity.
Found using random testing. Found 10 times.
This commit is contained in:
parent
a0ef6b1d8c
commit
3ef8fe1739
|
@ -1610,22 +1610,25 @@
|
|||
(-NonNegFlonum -NonNegFlonum . -> . -NonNegFlonum)
|
||||
(-NonNegFlonum -NonNegReal . -> . (Un -NonNegFlonum -One))
|
||||
(-PosReal -NonNegFlonum . -> . (Un -NonNegFlonum -One))
|
||||
(-Flonum (Un -NegInt -PosInt) . -> . -Flonum)
|
||||
(-Flonum -Int . -> . (Un -Flonum -One))
|
||||
;; even integer exponents can give complex results
|
||||
;; too large exponents turn into infinities, and (expt -inf.0 -inf.0) => nan.0+nan.0i
|
||||
;; so no narrower cases for those. fixnums are ok, though
|
||||
(-Flonum (Un -NegFixnum -PosFixnum) . -> . -Flonum)
|
||||
(-Flonum -Fixnum . -> . (Un -Flonum -One))
|
||||
(-Flonum -Flonum . -> . (Un -Flonum -FloatComplex))
|
||||
;; 1st arg can't be non-neg, -0.0 gives the wrong sign
|
||||
(-PosSingleFlonum (Un -NonNegSingleFlonum -NegRat -PosRat) . -> . -NonNegSingleFlonum)
|
||||
(-NonNegSingleFlonum (Un -NonNegSingleFlonum -NegRat -PosRat) . -> . -SingleFlonum)
|
||||
(-SingleFlonum (Un -NegInt -PosInt) . -> . -SingleFlonum)
|
||||
(-SingleFlonum -Int . -> . (Un -SingleFlonum -One))
|
||||
(-PosSingleFlonum (Un -NonNegSingleFlonum -NegFixnum -PosFixnum) . -> . -NonNegSingleFlonum)
|
||||
(-NonNegSingleFlonum (Un -NonNegSingleFlonum -NegFixnum -PosFixnum) . -> . -SingleFlonum)
|
||||
(-SingleFlonum (Un -NegFixnum -PosFixnum) . -> . -SingleFlonum)
|
||||
(-SingleFlonum -Fixnum . -> . (Un -SingleFlonum -One))
|
||||
(-SingleFlonum -SingleFlonum . -> . (Un -SingleFlonum -SingleFlonumComplex))
|
||||
(-PosInexactReal (Un -NegReal -PosReal) . -> . -NonNegInexactReal)
|
||||
(-NonNegInexactReal (Un -NegReal -PosReal) . -> . -InexactReal)
|
||||
(-PosReal -Real . -> . -NonNegReal)
|
||||
(-NonNegReal -Real . -> . -Real)
|
||||
(-InexactReal (Un -NegInt -PosInt) . -> . -InexactReal)
|
||||
(-PosInexactReal (Un -NegFixnum -PosFixnum) . -> . -NonNegInexactReal)
|
||||
(-NonNegInexactReal (Un -NegFixnum -PosFixnum) . -> . -InexactReal)
|
||||
(-PosReal -Fixnum . -> . -NonNegReal)
|
||||
(-NonNegReal -Fixnum . -> . -Real)
|
||||
(-InexactReal (Un -NegFixnum -PosFixnum) . -> . -InexactReal)
|
||||
(-InexactReal -InexactReal . -> . (Un -InexactReal -InexactComplex))
|
||||
(-Real -Int . -> . -Real)
|
||||
(-Real -Fixnum . -> . -Real)
|
||||
(-FloatComplex -FloatComplex . -> . -FloatComplex)
|
||||
(-FloatComplex -Flonum . -> . (Un -FloatComplex -Flonum))
|
||||
(-FloatComplex -InexactReal . -> . (Un -FloatComplex -InexactReal))
|
||||
|
|
|
@ -457,6 +457,7 @@
|
|||
(tc-e (bitwise-and (exact-round 1.7976931348623157e+308) (exact-round -29)) -Int)
|
||||
(tc-e (flexpt -0.0 -1.0) -Flonum)
|
||||
(tc-e (expt -0.0f0 -3.0) -InexactReal)
|
||||
(tc-e (expt -8.665778974912815f+107 -677460115195106837726964554590085563061636191189747) -Number)
|
||||
(tc-e (exact->inexact 3) -PosFlonum)
|
||||
(tc-e (exact->inexact -3) -NegFlonum)
|
||||
(tc-e (real->double-flonum 0.0) -FlonumPosZero)
|
||||
|
|
Loading…
Reference in New Issue
Block a user