[Python-Dev] Comparing heterogeneous types

Guido van Rossum guido at python.org
Wed Jun 2 13:08:46 EDT 2004


> Unfortunately, long/float comparison doesn't work quite correctly right now:
> 
> >>> n = 1
> >>> for i in range(2000): n += n
> >>> n == 0.0
> OverflowError: long int too large to convert to float
> 
> One strategy for solving the problem is to observe that for every
> floating-point implementation, there is a number N with the property that if
> x >= N, converting x from float to long preserves information, and if x <=
> N, converting x from long to float preserves information.  Therefore,
> instead of unconditionally converting to float, the conversion's direction
> should be based on the value of one of the comparands.
> 
> Of course, such comparisons can be made faster by doing a rough range check
> first, and doing the actual conversion only if the number of bits in the
> long is commensurate with the exponent of the float.

Do you think you can come up with a patch, or at least a description
of an algorithm that someone without a wizard level understanding of
the issues could implement?

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list