cvs.gedasymbols.org/archives/browse.cgi   search  
Mail Archives: djgpp/1999/06/01/08:35:37

From: "Shaggs" <jud AT tminet DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: cos(90 * (PI / 180) = 6.12... (now has an idea of what happened
Date: Mon, 31 May 1999 17:01:01 -0700
Organization: Posted via RemarQ Communities, Inc.
Lines: 61
Message-ID: <928195118.463.39@news.remarQ.com>
References: <7ii9di$sng$1 AT remarQ DOT com> <374DBEE8 DOT E73D32ED AT cartsys DOT com>
NNTP-Posting-Host: 208.145.132.112
NNTP-Posting-Date: Mon, 31 May 1999 23:58:38 GMT
X-Trace: 928195118.463.39 K8TBLZBRT8470D091C qube-02.us-ca.remarq.com
X-Complaints-To: newsabuse AT remarQ DOT com
X-Newsreader: Microsoft Outlook Express 4.72.3612.1700
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3612.1700
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

All my values seem perfectly normal for sine and cosine, but on degrees that
are even with an axis, such as 90,18,270, etc i get some way off number,

my proccessor is a p166, no mmx, purchased when 200 was the highest, and MMX
was really new
Nate Eldredge wrote in message <374DBEE8 DOT E73D32ED AT cartsys DOT com>...
>Shaggs wrote:
>>
>> cos(90 * (PI / 180) = 6.12... could this be the result of the pentium
flaw,
>> as i have the sin and cos stored in arrays of double
>
>Hasn't this come up before?
>
>Look at the complete result, and think about what exponential notation
>means.  Then compare it with the value of DBL_EPSILON, which is the
>approximate precision of double.  Is your result within DBL_EPSILON of
>the expected 0?
>
>I don't think the Pentium FDIV bug is a likely suspect here.  Though it
>did exist, I've never heard that it was so gross as to give answers off
>by 6 in the most significant digit.  Have you even got an old enough
>Pentium that could have it?
>
>If you really want to know, this code should check for it.  It's
>borrowed from the Linux source.
>
>#include <stdio.h>
>
>static double x = 4195835.0;
>static double y = 3145727.0;
>
>int has_fdiv_bug(void)
>{
>  int result;
>  __asm__("fninit\n\t"
>   "fldl %1\n\t"
>   "fdivl %2\n\t"
>   "fmull %2\n\t"
>   "fldl %1\n\t"
>   "fsubp %%st,%%st(1)\n\t"
>   "fistpl %0\n\t"
>   "fwait\n\t"
>   "fninit"
>   : "=m" (result)
>   : "m" (x), "m" (y));
>  return result;
>}
>
>int main(void)
>{
>  printf("FDIV bug %s\n", has_fdiv_bug() ? "found" : "not found");
>  return 0;
>}
>
>--
>
>Nate Eldredge
>nate AT cartsys DOT com


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019