On 2/12/14, Donovan Watteau <tso...@gmail.com> wrote: > On Thu, 6 Feb 2014, Donovan Watteau wrote: >> 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 > > A fix has been committed, but there's still a problem on loongson with > libm updated: > > $ ls -l /usr/lib/libm.so.* > -r--r--r-- 1 root bin 926033 Feb 12 12:17 /usr/lib/libm.so.9.0 > $ cc -o expl expl.c -O2 -pipe -lm > $ for in in 1 2 3 4 5 6 ; do ./expl ; done > theta == 1, pr == -9.15569e-2474, pr2 == 6.10667e-4944 > theta == 1, pr == 0.606531, pr2 == 0.606531 > theta == 1, pr == 0.606531, pr2 == 0.606531 > theta == 1, pr == 0.606531, pr2 == 0.606531 > theta == 1, pr == -9.15569e-2474, pr2 == 6.10667e-4944 > theta == 1, pr == 0.606531, pr2 == 0.606531
This isn't related to exp/expl. Looks like a bug in either compiler or libc/printf/gdtoa. I don't have the hardware so I couldn't tell much more. As usual, there are a few ways to fix it: 1. Debug it and provide a diff, 2. Donate hardware. Oh, BTW I have a request for loongson in http://www.openbsd.org/want.html sitting for over a year...