• Tim Peters's avatar
    float_pow: Put *all* of the burden on the libm pow in normal · 96685bfb
    Tim Peters yazdı
    cases.
    powu:  Deleted.
    
    This started with a nonsensical error msg:
    
    >>> x = -1.
    >>> import sys
    >>> x**(-sys.maxint-1L)
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    ValueError: negative number cannot be raised to a fractional power
    >>>
    
    The special-casing in float_pow was simply wrong in this case (there's
    not even anything peculiar about these inputs), and I don't see any point
    to it in *any* case:  a decent libm pow should have worst-case error under
    1 ULP, so in particular should deliver the exact result whenever the exact
    result is representable (else its error is at least 1 ULP).  Thus our
    special fiddling for integral values "shouldn't" buy anything in accuracy,
    and, to the contrary, repeated multiplication is less accurate than a
    decent pow when the true result isn't exactly representable.  So just
    letting pow() do its job here (we may not be able to trust libm x-platform
    in exceptional cases, but these are normal cases).
    96685bfb
Adı
Son kayıt (commit)
Son güncelleme
Demo Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
RISCOS Loading commit data...
Tools Loading commit data...
.cvsignore Loading commit data...
.hgtags Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
PLAN.txt Loading commit data...
README Loading commit data...
acconfig.h Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...