[Python-ideas] Disallow orderring comparison to NaN

Robert Kern robert.kern at gmail.com
Sat Apr 30 01:02:03 CEST 2011


On 4/29/11 5:50 PM, Alexander Belopolsky wrote:
> On Fri, Apr 29, 2011 at 5:30 PM, Alexander Belopolsky
> <alexander.belopolsky at gmail.com>  wrote:
> ..
>> As I mentioned before, Python does not have a mechanism that would
>> allow to simultaneously raise an exception and deliver the result.  We
>> have to choose one or the other.
>
> I made this argument several times and it went unchallenged, but I now
> realize that Python does have a mechanism that would allow to
> simultaneously raise an exception and deliver the result.  This is
> what warnings do.  Since changing NaN<  0 to raise an error would have
> to be done by issuing a deprecation warning first, why can't we just
> issue appropriate warning on invalid operations?  Isn't this what
> numpy does in some cases?

We have a configurable mechanism that lets you change between ignoring, warning, 
and raising an exception (and a few others).

[~]
|1> with np.errstate(invalid='raise'):
..>     np.array([np.inf]) / np.array([np.inf])
..>
---------------------------------------------------------------------------
FloatingPointError                        Traceback (most recent call last)
/Users/rkern/<ipython-input-1-d0b8f36f6dea> in <module>()
       1 with np.errstate(invalid='raise'):
----> 2     np.array([np.inf]) / np.array([np.inf])
       3

FloatingPointError: invalid value encountered in divide

[~]
|2> with np.errstate(invalid='ignore'):
..>     np.array([np.inf]) / np.array([np.inf])
..>

[~]
|3> with np.errstate(invalid='warn'):
..>     np.array([np.inf]) / np.array([np.inf])
..>
/Library/Frameworks/Python.framework/Versions/Current/bin/ipython:2: 
RuntimeWarning: invalid value encountered in divide


I think I could support issuing a warning. Beats the hell out of arguing over 
fine details of ancient standards intended for low-level languages and hardware. :-)

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-ideas mailing list