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 con un rendimiento bajo) . 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 ). [1] Existen opciones de compilación condicional para eliminar el requisito de un compilador con capacidad de 64 bits como muchos compiladores para Los microcontroladores y DSP no admiten aritmética de 64 bits . [2]
Desarrollador (es) | Ben Brewer (también conocido como flatmush) |
---|---|
Lanzamiento estable | r64 / 2 de febrero de 2012 |
Repositorio | |
Escrito en | C99 |
Sistema operativo | Multiplataforma |
Tipo | biblioteca de matemáticas de punto fijo |
Licencia | MIT |
Sitio web | código |
Historia
libfixmath fue desarrollado originalmente por Ben Brewer (también conocido como flatmush) y publicado por primera vez como parte del SDK de Dingoo . [3] Desde entonces se ha utilizado para implementar una biblioteca de gráficos 3D de software llamada FGL. [4]
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. [5]
Licencia
libfixmath se publica bajo la licencia MIT , una licencia de software libre permisiva , y es software libre .
Ver también
- Escala binaria
- Aritmética de punto fijo
- Aritmética de coma flotante
- Q (formato de número)
Referencias
- ^ "Página del proyecto libfixmath" .
- ^ "Problemas de compatibilidad con el compilador de 64 bits" .
- ^ "Página del proyecto Dingoo SDK" .
- ^ "Página de proyecto de biblioteca de gráficos de punto fijo / Flatmush FGL" .
- ^ "Página de descarga de fixtest" .
enlaces externos
- Página del proyecto
- Página de grupo / Lista de distribución