MCPcopy Create free account
hub / github.com/MikeLankamp/fpm

github.com/MikeLankamp/fpm @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
2,046 symbols 3,490 edges 93 files 574 documented · 28% updated 3mo agov1.1.0 · 2021-07-27★ 82520 open issues

Browse by type

Functions 1,471 Types & classes 575
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

fpm

A C++ header-only fixed-point math library. "fpm" stands for "fixed-point math".

It is designed to serve as a drop-in replacement for floating-point types and aims to provide as much of the standard library's functionality as possible with exclusively integers. fpm requires C++11 or higher.

Build Status Build status

fpm is designed to guard against accidental conversion to and from floats and supports many of the standard C++ maths functions, including trigonometry, power and logarithmic functions, with performance and accuracy generally comparable to alternative libraries.

Why use fixed-point math?

There are several reasons why you can not or choose not to use floating-point math, but still want a similar type: * Your target platform lacks an FPU, does not support floating-point operations or its floating-point operations are considerably slower than fixed-point integer operations. * You require deterministic calculations.

If any of these reasons apply for you, and your problem domain has a clearly outlined range and required resolution, then fixed-point numbers might be a solution for you.

Quick Start

To use fpm, include its header <fpm/fixed.hpp> and use the fpm::fixed_16_16, fpm::fixed_24_8 or fpm::fixed_8_24 types as if they were native floating-pointer types:

#include <fpm/fixed.hpp>  // For fpm::fixed_16_16
#include <fpm/math.hpp>   // For fpm::cos
#include <fpm/ios.hpp>    // For fpm::operator<<
#include <iostream>       // For std::cin, std::cout

int main() {
    std::cout << "Please input a number: ";
    fpm::fixed_16_16 x;
    std::cin >> x;
    std::cout << "The cosine of " << x << " radians is: " << cos(x) << std::endl;
    return 0;
}

To use the fixed-point equivalents of the <math.h> functions such as sqrt, sin and log, include the header <fpm/math.hpp>. To stream fixed-point values to or from streams, include the header <fpm/ios.hpp>.

Documentation

Please refer to the documentation for detailed information how to use fpm, or skip straight to the performance or accuracy results.

Contributions

This library is a work-in-progress. We welcome any contributions that improve the functional coverage or the performance or accuracy of the mathematical functions.

License

See the LICENSE file

Core symbols most depended-on inside this repo

Shape

Method 889
Function 582
Class 555
Enum 20

Languages

C++100%
Python1%

Modules by API surface

3rdparty/googletest/src/gtest.cc293 symbols
3rdparty/googletest/include/gtest/internal/gtest-type-util.h214 symbols
3rdparty/googletest/include/gtest/internal/gtest-param-util-generated.h153 symbols
3rdparty/googletest/include/gtest/internal/gtest-port.h142 symbols
3rdparty/googletest/include/gtest/gtest.h121 symbols
3rdparty/googletest/include/gtest/internal/gtest-internal.h109 symbols
3rdparty/googletest/include/gtest/gtest-matchers.h100 symbols
3rdparty/googletest/src/gtest-port.cc81 symbols
3rdparty/googletest/include/gtest/internal/gtest-param-util.h79 symbols
3rdparty/googletest/src/gtest-internal-inl.h75 symbols
3rdparty/googlebench/include/benchmark/benchmark.h70 symbols
3rdparty/googletest/src/gtest-death-test.cc65 symbols

For agents

$ claude mcp add fpm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page