Fixed-point arithmetic
Does anyone know of a library to do fixed point arithmetic in Python? Or, does anyone has sample code?
Asked by: Robert266 | Posted: 28-01-2022
Answer 1
If you are interested in doing fixed point arithmetic, the Python Standard Library has a decimal module that can do it.
Actually, it has a more flexible floating point ability than the built-in too. By flexible I mean that it:
Has "signals" for various exceptional conditions (these can be set to do a variety of things on signaling)
Has positive and negative infinities, as well as NaN (not a number)
Can differentiate between positive and negative 0
Allows you to set different rounding schemes.
Allows you to set your own min and max values.
All in all, it is handy for a million household uses.
Answered by: Melanie349 | Posted: 01-03-2022Answer 2
The deModel package sounds like what you're looking for.
Answered by: Kelvin726 | Posted: 01-03-2022Answer 3
Another option worth considering if you want to simulate the behaviour of binary fixed-point numbers beyond simple arithmetic operations, is the spfpm module. That will allow you to calculate square-roots, powers, logarithms and trigonometric functions using fixed numbers of bits. It's a pure-python module, so doesn't offer the ultimate performance but can do hundreds of thousands of arithmetic operations per second on 256-bit numbers.
Answered by: Roland309 | Posted: 01-03-2022Answer 4
recently I'm working on similar project, https://numfi.readthedocs.io/en/latest/
>>> from numfi import numfi
>>> x = numfi(0.68751,1,6,3)
>>> x + 1/3
numfi([1.125]) s7/3-r/s
>>> np.sin(x)
numfi([0.625 ]) s6/3-r/s
Answered by: Emily608 | Posted: 01-03-2022
Similar questions
Fixed-Point binary unpacking in python
I am struggling with a number-format problem in Python 3.6. My goal is to convert binary data from a file into printable decimal numbers. As an example, I need to convert two little-endian bytes in the form of a byte string...
b'\x12\00'
into its big-endian binary form...
0000000000010010
and finally to its
python - How can I create a fixed-point filter of type uint8 or int16 using fdatool in MATLAB?
I need to get the coefficients of a filter as uint8 or int16. I use fdatool to create a HPF. When I choose the fixed-point option and export the coefficients they are still floating point.
Also, how can I choose the number of coefficients?
Regarding getting the decimal values as a fixed-point number in python
I have some decimal values as:
0 11.586 11.915 11.034
0 4.896 9.675 13.564
0 8.676 1.275 17.034
0 18.424 15.115 13.316
0 1.174 7.515 21.296
0 24.054 1.855 17.746
0 0.164 21.775 2.776
But i need the values in neat format and like this:
0 11.586 11.915 11.034
0 04.896 09.675 13.564
0 08.676 0...
python - How to implement fixed-point binary support in numpy
I have a homebrew binary fixed-point arithmetic support library and would like to add numpy array support. Specifically I would like to be able to pass around 2D arrays of fixed-point binary numbers and do various operations on them such as addition, subtraction, multiplication, rounding, changing of fixed point format, etc.
The fixed-point support under the hood works on integers, and separate tracking of fixed-po...
python - Why is it not possible to implement fixed-point combinator like in the definition?
I'm trying to implement the Y-combinator like in the definition by Curry.
This code does not work. It causes infinite recursion.
F = (lambda f: (lambda x: (1 if x == 0 else (x * (f(x-1))))))
Y = (
lambda f:
(lambda x: f(x(x)))
(lambda x: f(x(x)))
)
Y(F)(3)
However, this on...
Still can't find your answer? Check out these communities...
PySlackers | Full Stack Python | NHS Python | Pythonist Cafe | Hacker Earth | Discord Python