------- Comment #11 from sgk at troutmask dot apl dot washington dot edu 2005-11-30 19:24 ------- Subject: Re: sqrt, csqrt may give a wrong result if real part of compex argument is zero
On Wed, Nov 30, 2005 at 10:38:13AM -0800, Steve Kargl wrote: > > Your patch is incorrect. See page 472 of n1124.pdf. > > 3 The functions are continuous onto both sides of their branch > cuts, taking into account the sign of zero. For example, > cqrt(2 +- i0) = +- i sqrt(2). > > In F.8.2, we find > > -x <--> 0 - x The expressions -x and 0 - x are not equivalent if x > is +0, because -(+0) yields -0, but 0 - (+0) yields > +0 (unless rounding is downward). > > I need to look through the Fortran standard to see what it does > with signed zero. > OK. I found additional info in the Fortran 2003 standard in 1.6.1 (3) If the processor can distinguish between positive and negative real zero, this standard requires different returned values for ATAN2(Y,X) when X < 0 and Y is negative real zero and for LOG(X) and SQRT(X) when X is complex with REAL(X) < 0 and negative zero imaginary part. Now, I need to determine if unary minus of 0 gives a signed zero -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25017