Я хочу провести симуляцию вычисления языка Си в Python.
Например, unsigned short, float одинарной точности ...
ushort(0xffff) + 1 -> 0
0.1f * 0.1f -> ...
Есть ли какая-нибудь библиотека для этого на Python?
Я могу использовать ctypes для создания беззнакового короткого одиночного плавающего числа, но они
не могу выполнить математическую операцию:
a = c_uint16(0xffff)
b = c_uint16(0x01)
a+b -> TypeError
Или я могу использовать numpy:
>>> np.uint16(0xffff) + np.uint16(0x01)
Warning: overflow encountered in ushort_scalars
0
но это очень медленно по сравнению с обычными вычислениями Python:
>>> timeit.timeit("a+b", "import numpy as np;a=np.uint16(0xfffe);b=np.uint16(0x01)")
0.35577465681618037
>>> timeit.timeit("0xfffe+0x01")
0.022638104432360251
>>> timeit.timeit("np.uint16(0xfffe) + np.uint16(0x01)", "import numpy as np")
5.904765399236851
Edit:
>>> timeit.timeit("a+b", "a=0xfffe;b=0x01")
0.040062221014295574