Skip to content

PetteriAimonen/libfixmath

Folders and files

NameName
Last commit message
Last commit date
Apr 29, 2021
May 3, 2021
Feb 25, 2011
Apr 22, 2021
Apr 19, 2021
Aug 8, 2023
Aug 8, 2023
Apr 29, 2021
Apr 29, 2021
Aug 7, 2023
Aug 7, 2023
Jan 22, 2021
Aug 8, 2023
Jul 27, 2018

Repository files navigation

libfixmath

This is a mirror of the libfixmath's original SVN repository on Google Code.

Not actively maintained, pull requests welcome.

Libfixmath implements Q16.16 format fixed point operations in C.

License: MIT

Options

Configuration options are compile definitions that are checked by the preprocessor with #ifdef and #ifndef. All of these are undefined by default.

FIXMATH_FAST_SIN

  • #ifndef: Most accurate version, accurate to ~2.1%.
  • #ifdef: Fast implementation, runs at 159% the speed of above 'accurate' version with a slightly lower accuracy of ~2.3%.

FIXMATH_NO_64BIT

  • #ifndef: For compilers/platforms that have uint64_t.
  • #ifdef: For compilers/platforms that do not have uint64_t.

FIXMATH_NO_CACHE

  • #ifndef: Use static memory caches for exponents (32KB) and trigonometry (80KB).
  • #ifdef: Do not use caches.

FIXMATH_NO_HARD_DIVISION

Note: will be automatically defined if FIXMATH_OPTIMIZE_8BIT is defined.

  • #ifndef: For platforms that have hardware integer division.
  • #ifdef: For platforms that do not have hardware integer division.

FIXMATH_NO_OVERFLOW

  • #ifndef: Check for overflow and return the overflow constants.
  • #ifdef: Do not check for overflow.

FIXMATH_NO_ROUNDING

  • #ifndef: Use rounding.
  • #ifdef: Do not use rounding.

FIXMATH_OPTIMIZE_8BIT

  • #ifndef: Do not optimize for processors with 8-bit multiplication like Atmel AVR.
  • #ifdef: Optimize for processors like Atmel AVR. Also defines FIXMATH_NO_HARD_DIVISION automatically in fix16.h.

Include the libfixmath library in your CMake Project

The simplest way to use libfixmath as a dependency is with CMake's FetchContent API.

include(FetchContent)
FetchContent_Declare(
    libfixmath
    GIT_REPOSITORY https://github.com/PetteriAimonen/libfixmath.git
    GIT_TAG <the long git hash of the version you want>
)
FetchContent_MakeAvailable(libfixmath)

target_compile_definitions(libfixmath PRIVATE
    # FIXMATH_FAST_SIN
    # FIXMATH_NO_64BIT
    # FIXMATH_NO_CACHE
    # FIXMATH_NO_HARD_DIVISION
    # FIXMATH_NO_OVERFLOW
    # FIXMATH_NO_ROUNDING
    # FIXMATH_OPTIMIZE_8BIT
)

target_link_libraries(my_cmake_project PRIVATE libfixmath)

About

Cross Platform Fixed Point Maths Library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages