]> granicus.if.org Git - python/commit
SF bug 533198: Complex power underflow raises exception.
authorTim Peters <tim.peters@gmail.com>
Fri, 22 Mar 2002 02:48:46 +0000 (02:48 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 22 Mar 2002 02:48:46 +0000 (02:48 +0000)
commitbab22beda8583471caf44b2e91f0fc18b62d3405
tree23e4ed332a0f28cfaaacc51b3cd95bfe052984d4
parent366a1df7f1a940a77d2d3b8ac6425fe7353f43c6
SF bug 533198:  Complex power underflow raises exception.
Konrad was too kind.  Not only did it raise an exception, the specific
exception it raised made no sense.  These are old bugs in complex_pow()
and friends:

1. Raising 0 to a negative power isn't a range error, it's a domain
   error, so changed c_pow() to set errno to EDOM in that case instead
   of ERANGE.

2. Changed complex_pow() to:

A. Used the Py_ADJUST_ERANGE2 macro to try to clear errno of a spurious
   ERANGE error due to underflow in the libm pow() called by c_pow().

B. Produced different exceptions depending on the errno value:
   i) For errno==EDOM, raise ZeroDivisionError instead of ValueError.
      This is for consistency with the non-complex cases 0.0**-2 and
      0**-2 and 0L**-2.
   ii) For errno==ERANGE, raise OverflowError.

Bugfix candidate.
Objects/complexobject.c