Fix pow of negative numbers to integer exponents (bugs 369, 2678, 3866)

Andreas Jaeger aj@suse.com
Wed Mar 28 13:54:00 GMT 2012


On 03/28/2012 03:41 PM, Joseph S. Myers wrote:
> This patch fixes various problems with pow of negative numbers to
> integer exponents, as reported in bugs 369, 2678 and 3866 (which this
> patch completes fixing).  The assembly implementations for x86 and
> x86_64 needed fixing to handle these cases (as noted in bug 369, the
> patch there was incorrect); powl was the most complicated case because
> of the need to determine parity rather than presume that "large"
> integer exponents must be even, though pow will need such
> complications as well later as part of fixing bug 706.
> __kernel_standard needed to handle getting the sign of zero right for
> underflow.  __kernel_standard_l needed to handle pow overflow and
> underflow directly itself, rather than passing to __kernel_standard,
> because the sign of the result depends on the parity of an integer
> exponent that may not round exactly to double.

What fun ;)

> Tested x86 and x86_64.

Thanks, this is fine!

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