On Wed, 26 Sep 2007, ok wrote:

[Concerning the fact that fmod(x,y) = -fmod(-x,y)]
I wrote:
Interesting, perhaps.  Surprising, no.  fmod() is basically there for
the sake of sin(), cos(), and tan() (or any other periodic and
either symmetric or antisymmetric function).

On 25 Sep 2007, at 8:58 pm, Henning Thielemann wrote:
Why is this particular behaviour useful in connection with trigonometric functions?

Range reduction.
sin(x) = sin(fmod(x, M_TWOPI)).

Whether that is the *best* way to handle range reduction is another
matter.

This would work with any reasonable definition of fmod, not only with the one, where fmod(-1, M_TWOPI) = -1. I still think that this particular definition is disadvantageous. Say, you want to implement a periodic function and you want to implement the core computation only for the smallest necessary range (say because of fast convergence), then with fmod(x, M_TWOPI) you have to add another case splitting, or you must implement it for the range (-M_TWOPI, M_TWOPI). If fmod(x,y) would generate the same sign as y, you had 0 <= fmod(x, M_TWOPI) < M_TWOPI.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to