Staging
v0.8.1
https://github.com/python/cpython
Revision e99c99389c582b08a648d7f17823b2cce74e8842 authored by Michael W. Hudson on 25 March 2002, 13:21:41 UTC, committed by Michael W. Hudson on 25 March 2002, 13:21:41 UTC
    revision 2.55 of complexobject.c

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.
1 parent 777f143
History
Tip revision: e99c99389c582b08a648d7f17823b2cce74e8842 authored by Michael W. Hudson on 25 March 2002, 13:21:41 UTC
backport tim_one's checkin of
Tip revision: e99c993
File Mode Size
Python.h -rw-r--r-- 3.0 KB
abstract.h -rw-r--r-- 35.6 KB
bitset.h -rw-r--r-- 792 bytes
bufferobject.h -rw-r--r-- 929 bytes
cStringIO.h -rw-r--r-- 4.0 KB
cellobject.h -rw-r--r-- 632 bytes
ceval.h -rw-r--r-- 3.8 KB
classobject.h -rw-r--r-- 2.2 KB
cobject.h -rw-r--r-- 1.7 KB
codecs.h -rw-r--r-- 3.3 KB
compile.h -rw-r--r-- 3.0 KB
complexobject.h -rw-r--r-- 1.5 KB
descrobject.h -rw-r--r-- 1.9 KB
dictobject.h -rw-r--r-- 4.9 KB
errcode.h -rw-r--r-- 1.1 KB
eval.h -rw-r--r-- 478 bytes
fileobject.h -rw-r--r-- 1.2 KB
floatobject.h -rw-r--r-- 1.8 KB
frameobject.h -rw-r--r-- 3.0 KB
funcobject.h -rw-r--r-- 1.7 KB
graminit.h -rw-r--r-- 1.4 KB
grammar.h -rw-r--r-- 2.0 KB
import.h -rw-r--r-- 1.5 KB
intobject.h -rw-r--r-- 2.3 KB
intrcheck.h -rw-r--r-- 285 bytes
iterobject.h -rw-r--r-- 404 bytes
listobject.h -rw-r--r-- 1.8 KB
longintrepr.h -rw-r--r-- 1.8 KB
longobject.h -rw-r--r-- 4.0 KB
marshal.h -rw-r--r-- 710 bytes
metagrammar.h -rw-r--r-- 253 bytes
methodobject.h -rw-r--r-- 2.0 KB
modsupport.h -rw-r--r-- 3.4 KB
moduleobject.h -rw-r--r-- 641 bytes
node.h -rw-r--r-- 828 bytes
object.h -rw-r--r-- 24.3 KB
objimpl.h -rw-r--r-- 12.7 KB
opcode.h -rw-r--r-- 4.2 KB
osdefs.h -rw-r--r-- 903 bytes
parsetok.h -rw-r--r-- 927 bytes
patchlevel.h -rw-r--r-- 1.2 KB
pgenheaders.h -rw-r--r-- 1.4 KB
py_curses.h -rw-r--r-- 3.8 KB
pydebug.h -rw-r--r-- 1.1 KB
pyerrors.h -rw-r--r-- 5.2 KB
pyfpe.h -rw-r--r-- 8.3 KB
pygetopt.h -rw-r--r-- 323 bytes
pymactoolbox.h -rw-r--r-- 7.3 KB
pymem.h -rw-r--r-- 5.1 KB
pyport.h -rw-r--r-- 14.8 KB
pystate.h -rw-r--r-- 2.7 KB
pythonrun.h -rw-r--r-- 4.7 KB
pythread.h -rw-r--r-- 1.4 KB
rangeobject.h -rw-r--r-- 613 bytes
sliceobject.h -rw-r--r-- 971 bytes
stringobject.h -rw-r--r-- 6.1 KB
structmember.h -rw-r--r-- 2.5 KB
structseq.h -rw-r--r-- 851 bytes
symtable.h -rw-r--r-- 3.5 KB
sysmodule.h -rw-r--r-- 816 bytes
token.h -rw-r--r-- 1.7 KB
traceback.h -rw-r--r-- 477 bytes
tupleobject.h -rw-r--r-- 1.6 KB
ucnhash.h -rw-r--r-- 682 bytes
unicodeobject.h -rw-r--r-- 38.8 KB
weakrefobject.h -rw-r--r-- 1.4 KB

back to top