fix unit test fp create fns
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Jul 2019 06:47:48 +0000 (07:47 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Jul 2019 06:47:48 +0000 (07:47 +0100)
src/ieee754/fpcommon/test/unit_test_double.py
src/ieee754/fpcommon/test/unit_test_half.py

index fca61eada9863f179f710122f2b0662e9e303d67..bb40f92fe3f930e28a0ec9c0fad4952024e9d680 100644 (file)
@@ -10,6 +10,9 @@ def get_mantissa(x):
 def get_exponent(x):
     return ((x & 0x7ff0000000000000) >> 52) - 1023
 
+def set_exponent(x, e):
+    return (x & ~0x7ff0000000000000) | ((e+1023) << 23)
+
 def get_sign(x):
     return ((x & 0x8000000000000000) >> 63)
 
@@ -34,7 +37,7 @@ def match(x, y):
         )
 
 def create(s, e, m):
-    return (s<<63) | ((e+1023) << 52) | m
+    return set_exponent((s<<63) | m, e)
 
 def inf(s):
     return create(s, 1024, 0)
index e00a1b873084c282638eef25210f00023a96c1f9..fd3a7649d707137a8fdb17c77b91b829b8bc824a 100644 (file)
@@ -8,7 +8,10 @@ def get_mantissa(x):
     return 0x3ff & x
 
 def get_exponent(x):
-    return ((x & 0xf800) >> 11) - 15
+    return ((x & 0x7800) >> 11) - 15
+
+def set_exponent(x, e):
+    return (x & ~0x7800) | ((e+15) << 11)
 
 def get_sign(x):
     return ((x & 0x8000) >> 15)
@@ -34,7 +37,7 @@ def match(x, y):
         )
 
 def create(s, e, m):
-    return (s<<15) | ((e+15) << 11) | m
+    return set_exponent((s<<15) | m, x)
 
 def inf(s):
     return create(s, 16, 0)