Use of C99 extra long double math functions after r236148
Stephen Montgomery-Smith
stephen at missouri.edu
Wed Jul 25 17:27:51 UTC 2012
On 07/25/12 11:29, Rainer Hurling wrote:
> Many thanks to you three for implementing expl() with r238722 and r238724.
>
> I am not a C programmer, but would like to ask if the following example
> is correct and suituable as a minimalistic test of this new C99 function?
>
>
> //-----------------------------------
> #include <stdio.h>
> #include <math.h>
>
> int main(void)
> {
> double c = 2.0;
> long double d = 2.0;
>
> double e = exp(c);
> long double f = expl(d);
>
> printf("exp(%f) is %.*f\n", c, 90, e);
> printf("expl(%Lf) is %.*Lf\n", d, 90, f);
>
> return 0;
> }
> //-----------------------------------
>
>
> Compiled with 'c99 -o math_expl math_expl.c -lm' and running afterwards
> it gives me:
>
> exp(2.000000) is
> 7.389056098930650406941822438966482877731323242187500000000000000000000000000000000000000000
>
> expl(2.000000) is
> 7.389056098930650227397942675366948606097139418125152587890625000000000000000000000000000000
>
Just as a point of comparison, here is the answer computed using
Mathematica:
N[Exp[2], 50]
7.3890560989306502272304274605750078131803155705518
As you can see, the expl solution has only a few digits more accuracy
that exp.
More information about the freebsd-current
mailing list