[Numpy-discussion] 0/0 == 0?

Robert Kern robert.kern at gmail.com
Fri Oct 3 03:12:20 EDT 2014


On Fri, Oct 3, 2014 at 4:29 AM, Nathaniel Smith <njs at pobox.com> wrote:
> On Fri, Oct 3, 2014 at 3:20 AM, Charles R Harris
> <charlesr.harris at gmail.com> wrote:
>>
>> On Thu, Oct 2, 2014 at 7:06 PM, Benjamin Root <ben.root at ou.edu> wrote:
>>>
>>> Out[1] has an integer divided by an integer, and you can't represent nan
>>> as an integer. Perhaps something weird was happening with type promotion
>>> between versions?
>>
>>
>> Also note that in python3 the '/' operator does float rather than integer
>> division.
>>
>>>>> np.array(0) / np.array(0)
>> __main__:1: RuntimeWarning: invalid value encountered in true_divide
>> nan
>
> Floor division still acts the same though:
>
>>>> np.array(0) // np.array(0)
> __main__:1: RuntimeWarning: divide by zero encountered in floor_divide
> 0
>
> The seterr warning system makes a lot of sense for IEEE754 floats,
> which are specifically designed so that 0/0 has a unique well-defined
> answer. For ints though this seems really broken to me. 0 / 0 = 0 is
> just the wrong answer. It would be nice if we had something reasonable
> to return, but we don't, and I'd rather raise an error than return the
> wrong answer.

Well, actually, that's the really nice thing about seterr for ints!
CPUs have hardware floating point exception flags to work with. We had
to build one for ints. If you want an error, you can get an error. *I*
don't want an error, and I don't have to have one!

-- 
Robert Kern



More information about the NumPy-Discussion mailing list