libfixmath
Разработчик(и) | Бен Брюэр |
---|---|
Стабильная версия | р64 / 2 февраля 2012 г |
Репозиторий | |
Написано в | С99 |
Операционная система | Кросс-платформенный |
Тип | математическая библиотека с фиксированной запятой |
Лицензия | С |
Веб-сайт | код |
libfixmath — это независимая от платформы математическая библиотека с фиксированной запятой , предназначенная для разработчиков, желающих выполнять быстрые нецелочисленные математические вычисления на платформах без (или с низкой производительностью) FPU . Он предлагает разработчикам интерфейс, аналогичный стандартным функциям math.h , для использования с Q16.16 числами с фиксированной точкой . libfixmath не имеет никаких внешних зависимостей, кроме stdint.h и компилятора, поддерживающего 64-битную целочисленную арифметику (например, GCC ). [1] Существуют варианты условной компиляции, позволяющие устранить необходимость в 64-битном компиляторе , поскольку многие компиляторы для микроконтроллеров и DSP не поддерживают 64-битную арифметику. [2]
История
[ редактировать ]libfixmath был разработан Беном Брюэром и впервые выпущен публично как часть Dingoo SDK . [3] С тех пор он использовался для реализации программной библиотеки 3D-графики под названием FGL. [4]
Q16.16 функции
[ редактировать ]Имя | Описание |
---|---|
fix16_acos | обратный косинус |
fix16_asin | обратный синус |
fix16_atan | однопараметрический обратный тангенс |
fix16_atan2 | двухпараметрический обратный тангенс |
fix16_cos | косинус |
fix16_exp | показательная функция |
fix16_sin | их |
fix16_sqrt | квадратный корень |
fix16_tan | касательная |
fix16_mul | умножение |
fix16_div | разделение |
fix16_sadd | насыщенное дополнение |
fix16_smul | насыщенное умножение |
fix16_sdiv | насыщенный дивизион |
Другие функции
[ редактировать ]Имя | Описание |
---|---|
fix16_to_dbl | Преобразуйте Q16.16 в двойной |
fix16_to_float | Преобразовать Q16.16 в число с плавающей запятой |
fix16_to_int | Преобразуйте Q16.16 в целое число |
fix16_from_dbl | Преобразовать двойной в Q16.16 |
fix16_from_float | Преобразовать число с плавающей запятой в Q16.16 |
fix16_from_int | Преобразование целого числа в Q16.16 |
Производительность
[ редактировать ]Для наиболее интенсивной функции ( atan2 ) результаты тестов показывают следующие результаты:
Имя | Время по сравнению с плавающим |
---|---|
АРМ Кортекс-М0 | 26.3% |
Marvell PXA270 ( ARM ) @ 312 МГц | 58.45% |
Интел Т5500 | 120% |
Интел Атом N280 | 141% |
Примечание. Эти результаты были рассчитаны с использованием fixtest с отключенной оптимизацией кэширования. [5]
Лицензирование
[ редактировать ]libfixmath выпускается под лицензией MIT License , разрешающей лицензией свободного программного обеспечения , и является свободным программным обеспечением .
См. также
[ редактировать ]- Двоичное масштабирование
- Арифметика с фиксированной запятой
- Арифметика с плавающей запятой
- Q (числовой формат)