Libfixmath
Platform-independent fixed-point math library
libfixmath is a platform-independent fixed-point math library aimed at developers wanting to perform fast non-integer math on platforms lacking a (or with a low performance) FPU. It offers developers a similar interface to the standard math.h functions for use on Q16.16 fixed-point numbers. libfixmath has no external dependencies other than stdint.h and a compiler which supports 64-bit integer arithmetic (such as GCC). Conditional compilation options exist to remove the requirement for a 64-bit capable compiler as many compilers for microcontrollers and DSPs do not support 64-bit arithmetic.
01History
libfixmath was developed by Ben Brewer and first released publicly as part of the Dingoo SDK. It has since been used to implement a software 3D graphics library called FGL.
02Q16.16 functions
| Name | Description |
|---|---|
| fix16_acos | inverse cosine |
| fix16_asin | inverse sine |
| fix16_atan | one-parameter inverse tangent |
| fix16_atan2 | two-parameter inverse tangent |
| fix16_cos | cosine |
| fix16_exp | exponential function |
| fix16_sin | sine |
| fix16_sqrt | square root |
| fix16_tan | tangent |
| fix16_mul | multiplication |
| fix16_div | division |
| fix16_sadd | saturated addition |
| fix16_smul | saturated multiplication |
| fix16_sdiv | saturated division |
03Other functions
04Performance
For the most intensive function (atan2) benchmark results show the following results:
| Name | Time Compared to Float |
|---|---|
| ARM Cortex-M0 | 26.3% |
| Marvell PXA270 (ARM) @ 312 MHz | 58.45% |
| Intel T5500 | 120% |
| Intel Atom N280 | 141% |
Note: These results were calculated using fixtest with caching optimizations turned off.
05Licensing
libfixmath is released under the MIT License, a permissive free software licence, and is free software.
Sources and credits
This article is adapted from the Wikipedia article “Libfixmath”, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.
Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.