Вопрос или проблема
Я ищу библиотеку C++ для арифметики с фиксированной точностью произвольной точности. Она должна быть только заголовочной и в идеале иметь динамическую точность (то есть изменяемую на этапе выполнения). Я искал в интернете целую вечность и ничего не нашел. Мне нужны только сложение, вычитание и умножение – так что ничего слишком сложного. Библиотека должна быть максимально производительной (я также мог бы работать с числами с плавающей точкой, но фиксированная точка должна быть намного быстрее, не так ли?). У меня есть работающие числа с плавающей точкой Boost multiprecision, но они могут быть действительно медленными. Я сдался в попытках заставить работать GMP (Windows) – а также в той Windows-ветке, название которой я не могу вспомнить…
Есть ли у кого-нибудь рекомендации?
Библиотека c++ num7 может стать вашим следующим выбором!
Посмотрите эти ссылки:
https://github.com/giocip/HEADERONLY_num7
https://github.com/giocip/LINUX_num7
https://github.com/giocip/WINDOWS_num7
С наилучшими пожеланиями.
Ответ или решение
Если вы ищете библиотеку C++ для произвольной точности фиксированной запятой, которая является заголовочной и позволяет изменять точность в рантайме, то у меня есть несколько рекомендаций.
Библиотека num7
Одной из подходящих библиотек, которую можно рассмотреть, является num7. Эта библиотека обеспечивает удобное использование фиксированной точности и доступна в заголовочном формате, что означает, что вам не нужно заботиться о компиляции дополнительных файлов. Она также предлагает возможность динамического изменения точности, что соответствует вашим требованиям.
Вот ссылки на репозитории num7 для различных платформ:
Почему использовать фиксированную точку?
Фиксированная запятая может быть более эффективной, чем числа с плавающей запятой в некоторых специфических случаях, особенно когда необходимо минимизировать накладные расходы, связанные с форматом числа с плавающей запятой. Если ваши операции ограничены сложением, вычитанием и умножением, фиксированная точка может ускорить выполнение этих операций благодаря уменьшению сложности вычислений.
Исполнение и производительность
Хотя библиотека Boost’s Multiprecision предоставляет много возможностей для работы с числами произвольной точности, она может быть менее производительной из-за объема дополнительных функций и контроля, которые она предоставляет. इसलिए использование специализированной библиотеки, такой как num7, может значительно улучшить производительность ваших математических операций, что является значительно актуальным в вашем случае.
Заключение
Рекомендую ознакомиться с библиотекой num7 и протестировать её, чтобы убедиться, что она соответствует вашим требованиям по производительности и функциональности. Это может быть отличным решением для ваших задач с фиксированной точкой. Если у вас возникнут дополнительные вопросы или потребуется помощь с интеграцией, не стесняйтесь спрашивать.