Why `divmod(float('inf'), 1) == (float('nan'), float('nan'))`

Chris Angelico rosuav at gmail.com
Wed Sep 17 11:40:01 EDT 2014


On Thu, Sep 18, 2014 at 1:34 AM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On Wed, Sep 17, 2014 at 9:29 AM, Chris Angelico <rosuav at gmail.com> wrote:
>> On Thu, Sep 18, 2014 at 1:16 AM, cool-RR <ram.rachum at gmail.com> wrote:
>>> I didn't ask for the modulo, I agree it should remain NaN. I'm talking about the floor division.
>>>
>>
>> Invariant: div*y + mod == x.
>>
>> If mod is NaN, there is no possible value for div that will make the
>> invariant true, ergo it too has to be NaN.
>
> That still doesn't make the invariant true. By this argument div could
> be 42, and the invariant would hold equally well (i.e. not at all).

Nothing can possibly make it true, so there are only two
possibilities: return NaN, or raise an exception.

ChrisA



More information about the Python-list mailing list