-rw-r--r-- | 20 | .gitignore | blob | history | raw |
-rw-r--r-- | 205 | .gitmodules | blob | history | raw |
-rw-r--r-- | 4035 | BUILDING.md | blob | history | raw |
-rw-r--r-- | 1061 | LICENSE | blob | history | raw |
-rw-r--r-- | 1736 | LICENSE_SOFTFLOAT.txt | blob | history | raw |
-rw-r--r-- | 1322 | README.md | blob | history | raw |
m--------- | - | SoftPosit | history |
m--------- | - | berkeley-softfloat-3 | history |
-rwxr-xr-x | 488 | docker-build-wheels.sh | blob | history | raw |
-rw-r--r-- | 39 | requirements.txt | blob | history | raw |
-rw-r--r-- | 1337 | setup.py | blob | history | raw |
drwxr-xr-x | - | sfpy | tree | history |
-rw-r--r-- | 9252 | testing.py | blob | history | raw |
-rw-r--r-- | 1734 | timing.py | blob | history | raw |
softfloat and softposit in Python * support for softfloat float16, float32, and float64 * support for softposit posit8, quire8, posit16, quire16, posit32, and quire32
On most linux distros with CPython 2.7, 3.4, 3.5, 3.6, or 3.7, sfpy should work out of the box:
pip install sfpy
Under the hood, sfpy uses Cython to create bindings for the softposit and softfloat C libraries. The building instructions are tested on Ubuntu 16.04 - for other platforms they may need some adaptation.
```
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 ```
See BUILDING.