diff --git a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt index a1376e4e..1de07c3d 100644 --- a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -181,6 +181,9 @@ (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) -PosReal) [tc-e/t (lambda: () 3) (t:-> -PosByte : -true-lfilter)] [tc-e/t (lambda: ([x : Number]) 3) (t:-> N -PosByte : -true-lfilter)] diff --git a/collects/typed-racket/base-env/base-env-numeric.rkt b/collects/typed-racket/base-env/base-env-numeric.rkt index 253158c6..e9b29f67 100644 --- a/collects/typed-racket/base-env/base-env-numeric.rkt +++ b/collects/typed-racket/base-env/base-env-numeric.rkt @@ -1592,26 +1592,29 @@ (-NonNegRat -Int . -> . -NonNegRat) (-Rat -Int . -> . -Rat) (-Rat -Rat . -> . -ExactNumber) - (-PosFlonum -Real . -> . -PosFlonum) + (-PosFlonum (Un -NegReal -PosReal) . -> . -PosFlonum) (-PosReal -Flonum . -> . -PosFlonum) - (-NonNegFlonum -Real . -> . -NonNegFlonum) + (-NonNegFlonum (Un -NegReal -PosReal) . -> . -NonNegFlonum) (-NonNegReal -Flonum . -> . -NonNegFlonum) - (-PosSingleFlonum (Un -SingleFlonum -Rat) . -> . -PosSingleFlonum) - (-NonNegSingleFlonum (Un -SingleFlonum -Rat) . -> . -NonNegSingleFlonum) - (-PosInexactReal -Real . -> . -PosInexactReal) - (-NonNegInexactReal -Real . -> . -NonNegInexactReal) + (-PosSingleFlonum (Un -SingleFlonum -NegRat -PosRat) . -> . -PosSingleFlonum) + (-NonNegSingleFlonum (Un -SingleFlonum -NegRat -PosRat) . -> . -NonNegSingleFlonum) + (-PosInexactReal (Un -NegReal -PosReal) . -> . -PosInexactReal) + (-NonNegInexactReal (Un -NegReal -PosReal) . -> . -NonNegInexactReal) (-PosReal -Real . -> . -PosReal) (-NonNegReal -Real . -> . -NonNegReal) - (-Flonum -Integer . -> . -Flonum) + (-Flonum (Un -NegInt -PosInt) . -> . -Flonum) (-Flonum -Real . -> . N) - (-SingleFlonum -Integer . -> . -SingleFlonum) + (-SingleFlonum (Un -NegInt -PosInt) . -> . -SingleFlonum) (-SingleFlonum -SingleFlonum . -> . (Un -SingleFlonum -SingleFlonumComplex)) - (-InexactReal -Integer . -> . -InexactReal) + (-InexactReal (Un -NegInt -PosInt) . -> . -InexactReal) (-InexactReal -InexactReal . -> . (Un -InexactReal -InexactComplex)) (-ExactNumber -ExactNumber . -> . -ExactNumber) - (commutative-binop N -FloatComplex) - (commutative-binop (Un -ExactNumber -SingleFlonum -SingleFlonumComplex) -SingleFlonumComplex) - (commutative-binop (Un -ExactNumber -InexactReal -InexactComplex) -InexactComplex) + (N -FloatComplex . -> . -FloatComplex) + (-FloatComplex (Un -InexactComplex -InexactReal -NegReal -PosReal) . -> . -FloatComplex) + ((Un -ExactNumber -SingleFlonum -SingleFlonumComplex) -SingleFlonumComplex . -> . -SingleFlonum) + (-SingleFlonumComplex (Un -NegRat -PosRat -SingleFlonum -SingleFlonumComplex) . -> . -SingleFlonum) + ((Un -ExactNumber -InexactReal -InexactComplex) -InexactComplex . -> . -InexactComplex) + (-InexactComplex (Un -NegRat -PosRat -InexactReal -InexactComplex) . -> . -InexactComplex) (N N . -> . N))] [sqrt (from-cases