[Haskell-cafe] exp implementation

Christopher Howard christopher.howard at frigidcode.com
Thu Apr 11 17:30:26 CEST 2013


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 at 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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 555 bytes
Desc: OpenPGP digital signature
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130411/e8afc3fd/attachment.pgp>


More information about the Haskell-Cafe mailing list