From owner-freebsd-hackers Sat Jul 14 12: 8:47 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from mail.disney.com (mail.disney.com [204.128.192.15]) by hub.freebsd.org (Postfix) with ESMTP id DF22737B403 for ; Sat, 14 Jul 2001 12:08:42 -0700 (PDT) (envelope-from Jim.Pirzyk@disney.com) Received: from pain10.corp.disney.com (root@pain10.corp.disney.com [153.7.110.100]) by mail.disney.com (Switch-2.0.1/Switch-2.0.1) with SMTP id f6EJ7vI21682 for ; Sat, 14 Jul 2001 12:07:57 -0700 (PDT) Received: from [172.30.50.1] by pain.corp.disney.com with ESMTP for freebsd-hackers@FreeBSD.ORG; Sat, 14 Jul 2001 12:09:36 -0700 Received: from plio.fan.fa.disney.com (plio.fan.fa.disney.com [153.7.118.2]) by pecos.fa.disney.com (8.11.3/8.11.3) with ESMTP id f6EJ8fs17120 for ; Sat, 14 Jul 2001 12:08:41 -0700 (PDT) Received: from mercury.fan.fa.disney.com (mercury.fan.fa.disney.com [153.7.119.1]) by plio.fan.fa.disney.com (8.9.2/8.9.2) with ESMTP id MAA20564 for ; Sat, 14 Jul 2001 12:08:40 -0700 (PDT) (envelope-from Jim.Pirzyk@disney.com) Received: from [172.30.46.50] by mercury.fan.fa.disney.com with ESMTP; Sat, 14 Jul 2001 12:08:39 -0700 Date: Sat, 14 Jul 2001 12:08:40 -0700 From: Jim Pirzyk Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: math library difference between linux emulation and native freebsd (and native linux) Cc: jmcoopr@webmail.bmi.net, freebsd-hackers@FreeBSD.ORG To: Stephen Montgomery-Smith X-Mailer: Apple Mail (2.388) In-Reply-To: <3B50966E.1D6E5DCC@math.missouri.edu> Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit Message-Id: Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Saturday, July 14, 2001, at 11:58 AM, Stephen Montgomery-Smith wrote: > Yes, I tried out the program > > #include > #include > main() { > double x,y; > int i; > > x = 53.278500; > y = exp(x); > printf("%8lf\n",x); > for(i=0;i printf("%x ",((unsigned char*)(&x))[i]); > printf("\n"); > printf("%8lf\n",y); > for(i=0;i printf("%x ",((unsigned char*)(&y))[i]); > printf("\n"); > } > > On FreeBSD and Linux I get > 53.278500 > cf f7 53 e3 a5 a3 4a 40 > 137581029243568449912832.000000 > e7 7d 89 54 48 22 bd 44 > > and on Linux emulation under FreeBSD I get > 53.278500 > cf f7 53 e3 a5 a3 4a 40 > 137581029243567812378624.000000 > c1 7d 89 54 48 22 bd 44 > > I don't really know the format of IEEE very well, but it looks like some > low order bits are different - the answers are really different. > > I also tried the same experiment with sin and gamma - then the problem > does not occur. Well except that the answer for gamma(53.278500) is > reported as 157.464664 which is way wrong. > > When I tried it for x=52 they gave almost the same answer, only > seperated by the last bit (the decimal versions were reported as the > same). For x=54 they both gave the same wrong answer 160.331128. > > I don't know a whole lot about IEEE. What is the largest number it is > supposed to handle? Looking at man math it says it should handle > numbers as large as 1.8e308 - we certainly are not in that range!!! I know with the base and mantissa, not all floating points in that range can be represented. The higher, or smaller (negative) numbers you go, the loss of percision you get in those ranges. The first numbers I found having this problem is 19.901112. This is with exp(), pow also had some cases that were different. - JimP To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message