You might want to read up on floating point arithmetic. (rounding and
representation)
On 06/02/14 05:13, Daniel Dickman wrote:
I hit this problem while working with the numpy 1.8.1 regress suite
which has some tests that are currently failing.
Here is a reduced test case of the logaddexp2 python function which
ends up calling exp2. Is this a bug in the openbsd exp2
implementation?
---8<---
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
double x;
double y;
// x = log2(5)
x = 2.32192809489;
// y = 2**(log2(5))
y = exp2(x);
printf("expected: 5.0\n");
printf("actual: %f\n", y);
---8<---
on a linux/x86_64 machine:
# gcc -lm test.c && ./a.out
expected: 5.0
actual: 5.000000
on an openbsd/i386 machine:
# gcc -lm test.c && ./a.out
expected: 5.0
actual: 4.994404