Fix csin, csinh, ccos, ccosh missing underflows (bug 15405)
Andreas Jaeger
aj@suse.com
Sat Apr 27 03:21:00 GMT 2013
On 04/26/2013 07:15 PM, Joseph S. Myers wrote:
> On Fri, 26 Apr 2013, Andreas Jaeger wrote:
>
>>> + if (fabs (__real__ retval) < DBL_MIN)
>>> + {
>>> + volatile double force_underflow
>>> + = __real__ retval * __real__ retval;
>>> + (void) force_underflow;
>>> + }
>>> + if (fabs (__imag__ retval) < DBL_MIN)
>>> + {
>>> + volatile double force_underflow
>>> + = __imag__ retval * __imag__ retval;
>>> + (void) force_underflow;
>>> + }
>>
>> Couldn't this be an else if? I expect we only need to raise underflow once if
>> both are underflowing, aren't we?
>
> Generically the reason to avoid "else if" in such cases is to avoid issues
> in the case where the first part was an exact zero (so meets the if
> condition, but the multiplication shouldn't and doesn't cause underflow)
> while the second is a genuine underflow that needs the multiplication to
> get the exception. Maybe the case of exact zero doesn't occur here, but
> it's more obvious without the "else" that the exception will always be
> raised if needed (and I don't think either the zero case or the underflow
> case is going to be the common case).
OK, then let's use the patch as is,
Thanks,
Andreas
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
More information about the Libc-alpha
mailing list