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