8 votos

FP DIY - aplicación de matemáticas de punto flotante en un microcontrolador sin un hardware FPU

Estoy trabajando en un pequeño proyecto personal (orientación de un Paralaje de la Hélice, pero esto debe ser bastante generalizable) que las necesidades matemáticas de punto flotante.

El micro-controlador con el que estoy trabajando no tiene nativa de punto flotante, o un stock de punto flotante de la biblioteca.

Hay buenos recursos o tutoriales en la implementación de software de matemáticas de punto flotante? Preferiblemente en muy pocos recursos (ni siquiera tengo una pila!).


Me gustaría apoyar a double tamaño de la flota. La hélice es de 32 bit MCU, así que voy a tener que usar múltiples variables para cada uno de los flotadores.

Sé que hay es un software de punto flotante de la biblioteca de la hélice, pero es sólo admite single tamaño de la flota.

No, probablemente no es realmente necesario double tamaño de la flota, pero esto suena como un proyecto realmente interesante. La mitad de la razón por la que yo quiero hacer, esto es debido a que voy a aprender mucho en el camino.

31voto

Mark Biek Puntos 41769

Usted debe ser capaz de usar esta biblioteca Floating-Point de precisión múltiple en la hélice, con tanto C de Catalina o gcc. Sería demasiado lento para muchas aplicaciones, sin embargo.

4voto

krgrant Puntos 11

Si desea hacerlo usted mismo, yo diría que acaba de hacer.

Supongo que usted no encontrará demasiados recursos o tutorial, porque no hay mucho a ella.

Aquí está un resumen:

  • suma/resta:
    si los exponentes son demasiado diferentes (más de la mantisa tiene bits):
    acabo de volver de el valor con mayor exponente (si este es el sustraendo: negar)

    si los exponentes son similares:
    cambio de la mantisa de menor valor, por la diferencia de los exponentes y añadir/restar de otras mantisa (utilizando aritmética de punto fijo)
    si el resultado no es 0: shift mantisa hasta MSBit de resultado es 1 y decremento exponente de la misma cantidad

  • multiplicación/división:
    multiplicar/dividir mantissas (utilizando aritmética de punto fijo) y sumar/restar los exponentes

2voto

Andrew Walker Puntos 9038

Parece que esta pregunta ha tomado la inclinación de la búsqueda de la comprensión más que de resolver el problema, por lo que este puede no ser el más útil respuesta, pero sólo en aras de la exhaustividad

http://code.google.com/p/propgcc/wiki/PropGccCompileOptions

Implica que la hélice versión de GCC ha de punto flotante de apoyo, incluyendo la de dobles.

GCC y su compilador bibliotecas son, por supuesto, de código abierto, aunque puede haber una verdadera curva de aprendizaje antes de poder empezar a ver lo que hace el código.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X