• 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
..
.cvsignore Loading commit data...
abstract.c Loading commit data...
bufferobject.c Loading commit data...
cellobject.c Loading commit data...
classobject.c Loading commit data...
cobject.c Loading commit data...
complexobject.c Loading commit data...
descrobject.c Loading commit data...
dictobject.c Loading commit data...
fileobject.c Loading commit data...
floatobject.c Loading commit data...
frameobject.c Loading commit data...
funcobject.c Loading commit data...
intobject.c Loading commit data...
iterobject.c Loading commit data...
listobject.c Loading commit data...
longobject.c Loading commit data...
methodobject.c Loading commit data...
moduleobject.c Loading commit data...
object.c Loading commit data...
obmalloc.c Loading commit data...
rangeobject.c Loading commit data...
sliceobject.c Loading commit data...
stringobject.c Loading commit data...
tupleobject.c Loading commit data...
typeobject.c Loading commit data...
unicodectype.c Loading commit data...
unicodeobject.c Loading commit data...
unicodetype_db.h Loading commit data...
xxobject.c Loading commit data...