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)
)
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)
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)
)
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)