import sys
from sfpy import Float16
+max_e = 16
+
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)
(x == y)
)
+def create(s, e, m):
+ return set_exponent((s<<15) | m, e)
+
+def inf(s):
+ return create(s, 16, 0)
+
+def nan(s):
+ return create(s, 16, 1<<10)
+
+def zero(s):
+ return s<<15
+
def get_case(dut, a, b):
yield dut.in_a.v.eq(a)
yield dut.in_a.stb.eq(1)