Estoy trabajando en un pequeño proyecto personal (dirigido a una hélice Parallax, pero esto debería ser bastante generalizable) que necesita matemática de punto flotante.
El microcontrolador con el que estoy trabajando no tiene punto flotante nativo, o una biblioteca de punto flotante.
¿Hay buenos recursos o tutoriales sobre la implementación de software de punto flotante matemático? Preferiblemente con recursos realmente limitados (¡ni siquiera tengo una pila!).
Me gustaría apoyar double
flotadores de tamaño. La hélice es una MCU de 32 bits, por lo que tendré que usar múltiples variables para cada flotante.
Sé que hay una biblioteca de punto flotante de software para la hélice, pero solo admite single
flotadores de tamaño.
No, probablemente no necesito double
flotadores de tamaño, pero esto parece un proyecto realmente interesante. La mitad de la razón por la que quiero hacer esto es porque aprenderé mucho en el camino.
fuente
Respuestas:
Si quieres hacerlo tú mismo, yo diría que solo lo hagas.
Supongo que no encontrarás demasiados recursos o tutoriales porque no hay mucho.
Aquí hay un resumen:
suma / resta:
si los exponentes difieren demasiado (más de lo que la mantisa tiene bits):
solo devuelve el valor con un exponente más grande (si este es el sustraendo: negar)
si los exponentes son similares:
desplazar la mantisa de menor valor por la diferencia de exponentes y sumar / restar de otra mantisa (usando aritmética de punto fijo)
si el resultado no es 0: desplazar la mantisa hasta MSBit del resultado es 1 y disminuir el exponente la misma cantidad
multiplicación / división:
multiplica / divide mantisas (usando aritmética de punto fijo) y suma / resta exponentes
fuente
Debería poder utilizar esta biblioteca de punto flotante de precisión múltiple en la hélice, con Catalina C o gcc. Sin embargo, puede ser demasiado lento para muchas aplicaciones.
fuente
Parece que esta pregunta ha adquirido la inclinación de buscar la comprensión más que resolver el problema, por lo que esta puede no ser la respuesta más útil, sino solo por ser completa
http://code.google.com/p/propgcc/wiki/PropGccCompileOptions
Implica que la versión de hélice de GCC tiene soporte de coma flotante, incluidos los dobles.
GCC y sus bibliotecas compiladoras son, por supuesto, de código abierto, aunque puede haber una curva de aprendizaje real antes de que pueda comenzar a ver qué está haciendo el código.
fuente