
On 04/11/2013 07:12 AM, Christopher Howard wrote:
On 04/11/2013 06:37 AM, Brandon Allbery wrote:
I traced it down some more: I think it eventually goes into the compiler/nativeGen section where it is translated into the platform's native version of the function. On my platform, I think this is the expf function from math.h. (See EXP(3)).
I find that to be interesting, because it means you could change the output of your programs by altering your standard library. But I guess there are a lot of things you could change by altering your standard library!
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
In glibc, it eventual comes down to this approximation, I think (from ./sysdeps/ieee754/flt-32/e_expf.c): code: -------- /* Compute ex2 = 2^n e^(t/512+delta[t]). */ ex2_u.d = __exp_atable[tval+177]; ex2_u.ieee.exponent += (int) n; /* Approximate e^(dx+delta) - 1, using a second-degree polynomial, with maximum error in [-2^-10-2^-28,2^-10+2^-28] less than 5e-11. */ x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta; /* ... snip ... */ result = x22 * ex2_u.d + ex2_u.d; -------- -- frigidcode.com