So I have stumbled across a linux emulation bug in freebsd.  Below
is the program that returns different results based on FreeBSD,
Linux or Linux emulation under FreeBSD.

Running natively under FreeBSD:

x = 53.27850000
exp(x) = 137581029243568449912832.00000000

Running natively under Linux:

x = 53.278500
exp(x) = 137581029243568449912832.000000

Running under FreeBSD in Linux emulation mode:

x = 53.27850000
exp(x) = 137581029243567812378624.00000000


#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main (int argc, char **argv) {
     double x = 53.278500;

     printf ("x = %8lf\n", x);
     printf ("exp(x) = %8lf\n", exp(x));

     exit (0);
}

There are only two shared libaries in common (libc and libm) and
both are the same on FreeBSD (in /compat/linux) and Linux.

So any ideas on where the program is going wrong?

- JimP
-- 
--- @(#) $Id: dot.signature,v 1.10 2001/05/17 23:38:49 Jim.Pirzyk Exp $
    __o   [EMAIL PROTECTED] ------------- [EMAIL PROTECTED]
 _'\<,_   Senior Systems Engineer, Walt Disney Feature Animation 
(*)/ (*)  

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to