Libfixmath

Last updated
libfixmath
Developer Ben Brewer
Stable release
r64 / February 2, 2012;13 years ago (2012-02-02)
Repository
Written in C99
Operating system Cross-platform
Type fixed-point math library
License MIT
Website code.google.com/p/libfixmath   OOjs UI icon edit-ltr-progressive.svg

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]

Contents

History

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]

Q16.16 functions

NameDescription
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

Other functions

NameDescription
fix16_to_dblConvert Q16.16 to a double
fix16_to_floatConvert Q16.16 to a float
fix16_to_intConvert Q16.16 to an integer
fix16_from_dblConvert double to a Q16.16
fix16_from_floatConvert float to a Q16.16
fix16_from_intConvert integer to a Q16.16

Performance

For the most intensive function (atan2) benchmark results show the following results:

NameTime Compared to Float
ARM Cortex-M0 26.3%
Marvell PXA270 (ARM) @ 312 MHz58.45%
Intel T5500 120%
Intel Atom N280 141%

Note: These results were calculated using fixtest with caching optimizations turned off. [5]

Licensing

libfixmath is released under the MIT License, a permissive free software licence, and is free software.

See also

References

  1. "libfixmath Project Page". GitHub .
  2. "64-bit Compiler Support Issues".
  3. "Dingoo SDK Project Page".
  4. "FGL Flatmush/Fixed-Point Graphics Library Project Page".
  5. "fixtest Download Page".