diff --git a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt index a928830f38..cd0ca4bccf 100644 --- a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -28,7 +28,7 @@ (typecheck typechecker) (env global-env) (base-env base-env-indexing)) - racket/file racket/port racket/flonum + racket/file racket/port racket/flonum racket/math (env global-env) (for-meta 2 (env global-env)) (for-template @@ -225,6 +225,7 @@ (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 + (tc-e (tanh (ann 0 Nonnegative-Integer)) -NonNegReal) (tc-e (angle -1) -Real) (tc-e (angle 2.3) -Zero) (tc-e (magnitude 3/4) -PosRat) diff --git a/collects/typed-racket/base-env/base-env-numeric.rkt b/collects/typed-racket/base-env/base-env-numeric.rkt index b4de39ea74..095dd629ab 100644 --- a/collects/typed-racket/base-env/base-env-numeric.rkt +++ b/collects/typed-racket/base-env/base-env-numeric.rkt @@ -1908,8 +1908,9 @@ (map unop (list -FloatComplex -SingleFlonumComplex -InexactComplex N)))] [tanh (from-cases ; same as sinh (unop -Zero) ; only exact case - ((Un -NonNegRat -NonNegFlonum) . -> . -NonNegFlonum) ; possible underflow, no pos -> pos - ((Un -NonPosRat -NonPosFlonum) . -> . -NonPosFlonum) + ;; possible underflow, no pos -> pos. 0 -> 0, no -NonNegRat -> -NonNegFlonum + ((Un -PosRat -NonNegFlonum) . -> . -NonNegFlonum) + ((Un -NegRat -NonPosFlonum) . -> . -NonPosFlonum) (map unop (list -FlonumNan -Flonum -SingleFlonumNan -NonNegSingleFlonum -NonPosSingleFlonum -SingleFlonum -NonNegInexactReal -NonPosInexactReal -InexactReal