This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: 1.5.12: FPU affected by gethostname call


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]