Подтвердить что ты не робот

С++ библиотека с фиксированной точкой?

Я ищу бесплатную С++-библиотеку с фиксированной точкой (главным образом для использования со встроенными устройствами, а не для произвольной математики точности). В основном, требования:

  • Отсутствие излишних издержек во время выполнения: все, что можно сделать во время компиляции, должно выполняться во время компиляции.
  • Возможность прозрачного переключения кода между фиксированной и плавающей точкой без каких-либо накладных расходов.
  • Математические функции с фиксированной точкой. Нет смысла использовать фиксированную точку, если вам нужно отбрасывать назад и вперед, чтобы получить квадратный корень.
  • Малый размер.

Любые предложения?

4b9b3361

Ответ 1

Существует проект библиотеки с фиксированной точкой с открытым исходным кодом, который можно найти по ссылкам ниже:

Это статическая библиотека C с интерфейсом класса С++ для пользователей С++, она реализует следующие функции: Тригонометрический Функции: sin, cos, tan, asin, acos, atan, atan2 Насыщенная арифметика: sadd, ssub, smul, sdiv Другие функции: sqrt, exp

Он поддерживает только 16.16 тип данных с фиксированной точкой.

Это активно разработанный проект с открытым исходным кодом (ищет заинтересованных разработчиков).

Ответ 2

Ознакомьтесь с двумя хорошими вариантами реализации обработки неподвижных точек в С++ (не требуется никаких внешних библиотек).

Ответ 4

У меня есть хороший небольшой С++-заголовок. Вы можете найти его под sweet:: Fixed. Просто определите typedef sweet:: Fixed MyFloat; и использовать его, как и любое другое значение float. Или замените его каким бы то ни было плавающим типом. Класс имеет два 64-битных значения. Один для целочисленной части и для фракции.

У меня есть небольшая фиксированная точка С++ 11 class header impl в sweet.hpp называется fixed.hpp, Он использует 32bit для обеих частей.

typedef float MyFloat;         // This will feel the same
typedef sweet::Fixed MyFloat;  // like this

Ответ 5

Вот библиотека с фиксированной точкой с открытым исходным кодом на GitHub:

https://github.com/mbedded-ninja/MFixedPoint

Он поддерживает 32-битные и 64-разрядные номера с фиксированной точкой (с произвольным коэффициентом) и оба быстро (все шаблоны, но немного более ручные) и медленные номера фиксированной точки (более автоматические, но медленные).

Он ориентирован на встроенные платформы, однако я использовал его как на микроконтроллерах, так и на Linux без каких-либо проблем.

Ответ 6

Возможно, вы могли бы попробовать библиотеки GMP или MPFR. Я уверен, что они будут удовлетворять ваши потребности в производительности, но, возможно, они слишком много для ваших нужд, и вам нужно что-то более легкое. Во всяком случае, посмотрите здесь:

Библиотека GMP

или здесь:

Библиотека MPFR

Ответ 7

Я никогда не использовал SPUC, но в описании рассматриваются типы данных с фиксированной запятой и некоторые математические функции.