from sfpy import Float64
 
-max_e = 1024
+from ieee754.fpcommon.fpbase import FPFormat
+
+
+fmt = FPFormat.standard(64)
+
+max_e = fmt.exponent_inf_nan- fmt.exponent_bias
 
 def get_mantissa(x):
-    return x & 0x000fffffffffffff
+    return fmt.get_mantissa(x)
 
 def get_exponent(x):
-    return ((x & 0x7ff0000000000000) >> 52) - (max_e-1)
+    return fmt.get_exponent(x)
 
 def set_exponent(x, e):
     return (x & ~0x7ff0000000000000) | ((e+(max_e-1)) << 52)
 
 def get_sign(x):
-    return ((x & 0x8000000000000000) >> 63)
+    return fmt.get_sign(x)
 
 def is_nan(x):
-    return get_exponent(x) == max_e and get_mantissa(x) != 0
+    return fmt.is_nan(x)
 
 def is_inf(x):
-    return get_exponent(x) == max_e and get_mantissa(x) == 0
+    return fmt.is_inf(x)
 
 def is_pos_inf(x):
     return is_inf(x) and not get_sign(x)