libfixmath | |
Developer: | Ben Brewer |
Latest Release Version: | r64 |
Programming Language: | C99 |
Operating System: | Cross-platform |
Genre: | fixed-point math library |
License: | MIT |
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]
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 |
Name | Description | |
---|---|---|
fix16_to_dbl | Convert Q16.16 to a double | |
fix16_to_float | Convert Q16.16 to a float | |
fix16_to_int | Convert Q16.16 to an integer | |
fix16_from_dbl | Convert double to a Q16.16 | |
fix16_from_float | Convert float to a Q16.16 | |
fix16_from_int | Convert integer to a Q16.16 |
For the most intensive function (atan2) benchmark results show the following results:
Name | Time Compared to Float | |
---|---|---|
26.3% | ||
Marvell PXA270 (ARM) @ 312 MHz | 58.45% | |
120% | ||
141% |
libfixmath is released under the MIT License, a permissive free software licence, and is free software.