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).[1] 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.[2]
libfixmath was developed by Ben Brewer and first released publicly as part of the Dingoo SDK.[3] It has since been used to implement a software 3D graphics library called FGL.[4]
fix16_acos
fix16_asin
fix16_atan
fix16_atan2
fix16_cos
fix16_exp
fix16_sin
fix16_sqrt
fix16_tan
fix16_mul
fix16_div
fix16_sadd
fix16_smul
fix16_sdiv
fix16_to_dbl
fix16_to_float
fix16_to_int
fix16_from_dbl
fix16_from_float
fix16_from_int
For the most intensive function (atan2) benchmark results show the following results:
Note: These results were calculated using fixtest with caching optimizations turned off.[5]
libfixmath is released under the MIT License, a permissive free software licence, and is free software.