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@a-tono.com] Sent: Tuesday, February 10, 2009 1:12 PM To: Dino Viehland Cc: Daniel Stutzbach; cesare.dimauro@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@python.org [mailto:python-dev-bounces+dinov=microsoft.com@python.org] On Behalf Of Daniel Stutzbach Sent: Tuesday, February 10, 2009 12:43 PM To: cesare.dimauro@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@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