# libfixmath **Repository Path**: druihng/libfixmath ## Basic Information - **Project Name**: libfixmath - **Description**: No description available - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-05 - **Last Updated**: 2024-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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](https://cmake.org/cmake/help/latest/module/FetchContent.html). ```cmake include(FetchContent) FetchContent_Declare( libfixmath GIT_REPOSITORY https://github.com/PetteriAimonen/libfixmath.git GIT_TAG ) 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) ```