# Requires floatx lib from exams installed 
from floatX import IEEEHelper
from floatX import float2hexr

val = float("-2.0")
e = 4
m = 3
x = float2hexr(val,e,m)
hex_width = (e+m+1)//4 if (e+m+1)%4 == 0 else ((e+m+1)//4)+1
ans = "{0:#0{1}x}".format(x,hex_width)
print(ans)
ans = "{0:0{1}b}".format(x,e+m+1)
print(ans)


# print(ans)

# # 8 bit number format
# val = float("2.5")
# e = 4
# m = 3
# x = float2hexr(val,e,m)
# hex_width = (e+m+1)//4 if (e+m+1) % 4 == 0 else ((e+m+1)//4)+1
# ans = "{0:#0{1}x}".format(x, hex_width)
# print(ans)
# bit8 = IEEEHelper(4,3)
# print("#bits",bit8.getbits())
# print("Bias",bit8.getBias())
# print("Emin",bit8.getEmin())
# print("Emax",bit8.getEmax())
# print("Mmin",bit8.getMmin())
# # print("MmaxNormal",bit8.getMmaxNormal())
# print(bit8.maxValue())

# print(val.getbits())


        # .def("getbits", &IEEEHelper::getbits)
        # .def("getEmax", &IEEEHelper::getEmax)
        # .def("getEmin", &IEEEHelper::getEmin)
        # .def("getBias", &IEEEHelper::getBias)
        # .def("getMmin", &IEEEHelper::getMmin)             // pow(2.0, -_m)
        # .def("getMmaxNormal", &IEEEHelper::getMmaxNormal) // 2 - pow(2.0, -_m)
        # .def("getMmaxSubnormal",
        #      &IEEEHelper::getMmaxSubnormal) // return 1 - pow(2.0, -_m);
        # .def("maxValue",
        #      &IEEEHelper::maxValue) // pow(2.0, getEmax()) * getMmaxNormal()
        # .def("smallestNormalValue",
        #      &IEEEHelper::smallestNormalValue) // pow(2.0, getEmin())
        # .def("maxSubnormalValue",
        #      &IEEEHelper::maxSubnormalValue) // pow(2.0, getEmin()) *
        #                                      // getMmaxSubnormal();
        # .def("minSubnormalValue",
        #      &IEEEHelper::minSubnormalValue) // pow(2.0, getEmin()) * getMmin();
        # .def("countNormalRange",
        #      &IEEEHelper::countNormalRange) // (getEmax() - getEmin() + 1) *
        #                                     // pow(2.0, _m)
        # .def("countExpRange",
        #      &IEEEHelper::countExpRange) // (getEmax() - getEmin() + 1);
        # .def("countSubnormalRange",
        #      &IEEEHelper::countSubnormalRange); // pow(2.0, _m)








