New submission from Andrew Dalke <da...@dalkescientific.com>:

complex("nan") raises "ValueError: complex() arg is a malformed string"  while 
complex(float("nan")) returns (nan+0j). This was reported in 
http://bugs.python.org/issue2121 with the conclusion "wont fix".

complex("inf") has the same behaviors.

The implementation in complexobject.c says 


    /* a valid complex string usually takes one of the three forms:

         <float>                  - real part only
         <float>j                 - imaginary part only
         <float><signed-float>j   - real and imaginary parts

       where <float> represents any numeric string that's accepted by the
       float constructor (including 'nan', 'inf', 'infinity', etc.), and
       <signed-float> is any string of the form <float> whose first
       character is '+' or '-'.

This comment is wrong and it distracted me for a while as I tried to figure out 
why complex("nan") wasn't working. It should be fixed, with the word 
"including" replaced by "excluding".

I don't have a real need for complex("nan") support - this was of intellectual 
interest only. Also of intellectual interest, PyPy 1.4 does accept 
complex("nan") but converts complex("nan+nanj") to (nannanj), so it suffers 
from the strange corner cases which Raymond points out when advocating for 
"wont fix."

Because

----------
assignee: d...@python
components: Documentation
messages: 125104
nosy: dalke, d...@python
priority: normal
severity: normal
status: open
title: complex() comments wrongly say it supports NaN and inf
versions: Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10809>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to