python中的softfloat和softposit
sfp的Python项目详细描述
sfpy
python中的softfloat和softposit
- 支持softfloat float16、float32和float64
- 支持softposit posit8、quire8、posit16、quire16、posit32和quire32
安装
在大多数linux发行版上,sfpy应该是开箱即用的:
pip install sfpy
二进制轮子(与manylinux1兼容)可用于cpython 2.7、3.5、3.6和3.7。
在幕后,sfpy使用cython为softposit和softfloat c库创建绑定。 这些构建指令在ubuntu 18.04上进行了测试-对于其他平台,它们可能需要一些 适应。cythonized c和编译的静态库(.a)以及必要的头文件, 包含在源版本中;安装这些版本不需要cython。
演示
>>> import sfpy
>>> from sfpy import *
>>> a, b = Float16(1.3), Float16(1.4)
>>> a * b - a / b
Float16(0.89208984375)
>>> sfpy.float.flag_get_inexact()
True
>>> a += b
>>> a
Float16(2.69921875)
>>>
>>> x, y = Posit16(3.0), Posit16(3)
>>> x
Posit16(3.0)
>>> x.bits
22528
>>> y
Posit16(2.9802322387695312e-08)
>>> y.bits
3
>>> x * y
Posit16(8.940696716308594e-08)
>>> acc = Posit16(0)
>>> for i in range(10000):
... acc = acc.fma(x, y)
...
>>> acc
Posit16(1.9073486328125e-06)
>>> acc.bits
24
>>> q = Quire16(0)
>>> for i in range(10000):
... q.iqma(x, y)
...
>>> q
Quire16(0.00089263916015625)
>>> q.bits
64424509440000
>>> q.to_posit()
Posit16(0.00089263916015625)
>>> q.to_posit().bits
490
建筑
见BUILDING。