[pypy-svn] r77074 - pypy/branch/fast-forward/pypy/rlib/rstruct

benjamin at codespeak.net benjamin at codespeak.net
Tue Sep 14 23:54:28 CEST 2010


Author: benjamin
Date: Tue Sep 14 23:54:26 2010
New Revision: 77074

Modified:
   pypy/branch/fast-forward/pypy/rlib/rstruct/ieee.py
Log:
mant should always be a float

Modified: pypy/branch/fast-forward/pypy/rlib/rstruct/ieee.py
==============================================================================
--- pypy/branch/fast-forward/pypy/rlib/rstruct/ieee.py	(original)
+++ pypy/branch/fast-forward/pypy/rlib/rstruct/ieee.py	Tue Sep 14 23:54:26 2010
@@ -50,18 +50,18 @@
     one = r_ulonglong(1)
     sign = rarithmetic.intmask(Q >> BITS - 1)
     exp = rarithmetic.intmask((Q & ((one << BITS - 1) - (one << MANT_DIG - 1))) >> MANT_DIG - 1)
-    mant = Q & ((one << MANT_DIG - 1) - 1)
+    mant = Q & ((1 << MANT_DIG - 1) - 1)
 
     if exp == MAX_EXP - MIN_EXP + 2:
         # nan or infinity
         result = float('nan') if mant else float('inf')
     elif exp == 0:
         # subnormal or zero
-        result = math.ldexp(float(mant), MIN_EXP - MANT_DIG)
+        result = math.ldexp(mant, MIN_EXP - MANT_DIG)
     else:
         # normal
-        mant += r_ulonglong(1) << MANT_DIG - 1
-        result = math.ldexp(float(mant), exp + MIN_EXP - MANT_DIG - 1)
+        mant += 1 << MANT_DIG - 1
+        result = math.ldexp(mant, exp + MIN_EXP - MANT_DIG - 1)
     return -result if sign else result
 
 



More information about the Pypy-commit mailing list