[Python-Dev] Expression optimizations

Dino Viehland dinov at microsoft.com
Tue Feb 10 22:19:25 CET 2009


I think it's comparing based upon object identity so it may be a little non-deterministic:

>>> x= 1e666666
>>> y = x/x
>>> z = x/x
>>> cmp(y, z)
1
>>> cmp(z, y)
-1
>>>

But I may have accidently run that on IronPython though where we're assigning ids differently :)

-----Original Message-----
From: Cesare Di Mauro [mailto:cesare.dimauro at a-tono.com] 
Sent: Tuesday, February 10, 2009 1:12 PM
To: Dino Viehland
Cc: Daniel Stutzbach; cesare.dimauro at a-tono.com; Python-Dev
Subject: RE: [Python-Dev] Expression optimizations

It's bizarre enough, since I have got a different result (with Python
2.6.1, 32 bit):

>>> x = 1e66666
>>> y = x/x
>>> x
inf
>>> y
nan
>>> cmp(y, y)
0
>>> cmp(x/x, x/x)
1

:D

Cesare

On Mar, Feb 10, 2009 10:02PM, Dino Viehland wrote:
> And slightly unrelated, but just showing how bizarre floats are:
>
>>>> x = 1e66666
>>>> y = x/x
>>>> cmp(y, y)
> 0
>>>> cmp(x/x, x/x)
> -1
>
> Yeah object identity checks!
>
> From: python-dev-bounces+dinov=microsoft.com at python.org
> [mailto:python-dev-bounces+dinov=microsoft.com at python.org] On Behalf Of
> Daniel Stutzbach
> Sent: Tuesday, February 10, 2009 12:43 PM
> To: cesare.dimauro at a-tono.com
> Cc: Python-Dev
> Subject: Re: [Python-Dev] Expression optimizations
>
> On Tue, Feb 10, 2009 at 2:36 PM, Cesare Di Mauro
> <cesare.dimauro at a-tono.com> wrote:
> OK, so I can make assumptions only for built-in types.
>
> Yes, but even there you have to be careful of odd corner-cases, such as:
>
>>>> nan = float('nan')
>>>> nan < nan
> False
>>>> nan >= nan
> False
> --
> Daniel Stutzbach, Ph.D.
> President, Stutzbach Enterprises, LLC
>




More information about the Python-Dev mailing list