libfixmath - libfixmath

libfixmath
Desarrollador (es) Ben Brewer (también conocido como flatmush)
Lanzamiento estable
r64 / 2 de febrero de 2012 ; Hace 9 años  ( 2012-02-02 )
Repositorio Edita esto en Wikidata
Escrito en C99
Sistema operativo Multiplataforma
Tipo biblioteca de matemáticas de punto fijo
Licencia MIT
Sitio web código .google .com / p / libfixmath  Edita esto en Wikidata

libfixmath es una biblioteca matemática de punto fijo independiente de la plataforma dirigida a desarrolladores que desean realizar operaciones matemáticas rápidas no enteras en plataformas que carecen de una FPU (o de bajo rendimiento) . Ofrece a los desarrolladores una interfaz similar a las funciones estándar math.h para su uso en números de punto fijo Q16.16 . libfixmath no tiene dependencias externas que no sean stdint.hy un compilador que admite aritmética de enteros de 64 bits (como GCC ). Existen opciones de compilación condicional para eliminar el requisito de un compilador con capacidad de 64 bits, ya que muchos compiladores de microcontroladores y DSP no admiten aritmética de 64 bits .

Historia

libfixmath fue desarrollado originalmente por Ben Brewer (también conocido como flatmush) y publicado por primera vez como parte del SDK de Dingoo . Desde entonces, se ha utilizado para implementar una biblioteca de gráficos 3D de software llamada FGL.

Q16.16 Funciones

Nombre Descripción
fix16_acos coseno inverso
fix16_asin seno inverso
fix16_atan tangente inversa de un parámetro
fix16_atan2 tangente inversa de dos parámetros
fix16_cos coseno
fix16_exp funcion exponencial
fix16_sin seno
fix16_sqrt raíz cuadrada
fix16_tan tangente
fix16_mul multiplicación
fix16_div división
fix16_sadd adición saturada
fix16_smul multiplicación saturada
fix16_sdiv división saturada

Otras funciones

Nombre Descripción
fix16_to_dbl Convertir Q16.16 en doble
fix16_to_float Convierta Q16.16 en un flotador
fix16_to_int Convierta Q16.16 en un número entero
fix16_from_dbl Convertir doble en Q16.16
fix16_from_float Convierta el flotador en un Q16.16
fix16_from_int Convertir entero en Q16.16

Actuación

Para la función más intensiva ( atan2 ), los resultados de referencia muestran los siguientes resultados:

Nombre Tiempo comparado con flotación
BRAZO Cortex-M0 26,3%
Marvell PXA270 ( ARM ) @ 312 MHz 58,45%
Intel T5500 120%
Intel Atom N280 141%

Nota: Estos resultados se calcularon mediante fixtest con las optimizaciones de almacenamiento en caché desactivadas.

Licencia

libfixmath se publica bajo la licencia MIT , una licencia de software libre permisiva , y es software libre .

Ver también

Referencias

enlaces externos