David Coppa wrote:
> Take the following reduced test-case, adapted from what R's code
> does:
> 
> ---8<---
> 
> #include <stdio.h>
> #include <stdlib.h>
> #include <math.h>
> 
> int main(void) {
>       double theta = 1;
>       long double lambda, pr, pr2;
> 
>       lambda = (0.5*theta);
>       pr = exp(-lambda);
>       pr2 = expl(-lambda);
> 
>       printf("theta == %g, pr == %Lg, pr2 == %Lg\n", theta, pr, pr2);
>       exit(0);
> }
> 
> ---8<---
> 
> This produces the following output on Linux (x86_64):
> 
> theta == 1, pr == 0.606531, pr2 == 0.606531
> 
> While on OpenBSD -current amd64:
> 
> theta == 1, pr == 0.606531, pr2 == nan

FWIW, it looks even stranger on loongson:

$ cc -o expl expl.c -O2 -pipe -lm
$ ./expl
theta == 1, pr == -9.15569e-2474, pr2 == 6.10667e-4944
$ ./expl
theta == 1, pr == 0.606531, pr2 == 0.606531
$ ./expl
theta == 1, pr == -9.15569e-2474, pr2 == 6.10667e-4944

$ sysctl kern.version
kern.version=OpenBSD 5.5-beta (GENERIC) #106: Mon Feb  3 01:47:15 MST 2014
    t...@loongson.openbsd.org:/usr/src/sys/arch/loongson/compile/GENERIC

Reply via email to