delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/02/23/16:08:08

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Envelope-Sender: rschulz AT imaphost DOT inet DOT dkfz-heidelberg DOT de
To: cygwin AT cygwin DOT com
Subject: RE: 1.5.12: FPU affected by gethostname call
Message-ID: <1109192877.421cf0ad8f456@webmail.inet.dkfz-heidelberg.de>
Date: Wed, 23 Feb 2005 22:07:57 +0100 (CET)
From: R DOT Schulz AT dkfz-heidelberg DOT de
References: <SERRANODpxwACMNhooN00000035 AT SERRANO DOT CAM DOT ARTIMI DOT COM>
In-Reply-To: <SERRANODpxwACMNhooN00000035@SERRANO.CAM.ARTIMI.COM>
MIME-Version: 1.0
User-Agent: IMP/PHP IMAP webmail program 2.2.8

Okay, sorry: the abs() function was defined as a template in the original code
for historical reasons:

template<number>
number abs(number) ... and so forth

Changing to std::fabs() doesn't change anything in the behavior, however.

At least now I know it's probably AMD FPU related. 

-Ralf

> > Long doubles are 12 byte = 96 bit = sizeof(long double). No matter
> whether
> > stored in memory or in registers, they should have that length, no?
> 
>   Oh, that does turn out to be a recent change to gcc.  Hmm.
> 
>   Then again, I can't reproduce the problem here.  Maybe that's the AMD
> vs
> Intel difference you were wondering about.  I've got a P4; same OS
> version
> as you though, XpSp1.  It makes no difference if I have the call to
> gethostname or not, and it makes no difference if I compile with or
> without
> optimisation.
> 
> > In the original code, tolerance is set to 1e-19 instead of 5e-16 if
> long
> > doubles are available. In this case, the code calling gethostname()
> goes
> > into an infinite loop.
> 
>   That code is seriously buggy, isn't it?
> 
> const long double tolerance = 5e-16;
> long   double p1, p2, p3;
> 
>    do
>    {
>        [details omitted]
>    }
>    while (abs(p1/pp) > tolerance);
>           ^^^^^^^^^^^^^^^^^^^^^^
> 
> <koff>  I really think that ought to have been *f*abs, should it not?  
> 
>   Heh.  Why do people always think they can just ignore compiler
> warnings?
> 
>     cheers,
>       DaveK

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


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