I'm currently adding degrees->radians, radians->degrees, exact-round, exact-floor, exact-ceiling, exact-truncate, nan?, and infinite? to racket/math. (Along with docs and test cases, of course.)

When I started to add their types to Typed Racket's base environment, I found that some of the existing function's types didn't match their behavior. I think it's racket/math's fault, not TR's.

As long as I'm working on racket/math, should I just fix it?

Example:

  > (sinh 1.0f0)
  - : Single-Flonum [generalized from Positive-Single-Flonum]
  1.175201177597046

That's obviously wrong. The fix is simple: change 2.0 in the definition of sinh to 2.

Vincent, is there a quick way for me to test whether the types I give the new functions are sound?

A related question: In some timing tests, I've found that wrapping the definitions in racket/math with begin-encourage-inline made some things faster; in particular, expressions which, when inlined, would be constant-lifted. Is there any reason to not add the inline hint?

Neil ⊥
_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to