Ich arbeite an einem kleinen persönlichen Projekt (das auf einen Parallax-Propeller abzielt, aber dies sollte ziemlich verallgemeinerbar sein) , das Gleitkomma-Mathematik benötigt.
Der Mikrocontroller, mit dem ich arbeite, verfügt weder über ein natives Gleitkomma noch über eine Standard-Gleitkommabibliothek.
Gibt es gute Ressourcen oder Tutorials zur Implementierung von Software-Gleitkomma-Mathematik? Am besten auf wirklich begrenzten Ressourcen (ich habe nicht einmal einen Stapel!).
Ich möchte double
große Schwimmer unterstützen. Der Propeller ist eine 32-Bit-MCU, daher muss ich für jeden Schwimmer mehrere Variablen verwenden.
Ich weiß, dass es eine Software-Gleitkomma-Bibliothek für den Propeller gibt, aber sie unterstützt nur single
Schwimmer mit Größe.
Nein, ich brauche wahrscheinlich keine wirklich double
großen Schwimmer, aber das klingt nach einem wirklich interessanten Projekt. Der halbe Grund, warum ich das tun möchte, ist, dass ich auf dem Weg viel lernen werde.
quelle
Antworten:
Wenn du es selbst machen willst, würde ich sagen, mach es einfach.
Ich denke, Sie werden nicht zu viele Ressourcen oder Tutorials finden, weil es nicht viel gibt.
Hier ist eine Übersicht:
Addieren / Subtrahieren:
Wenn sich Exponenten zu stark unterscheiden (mehr als die Mantisse Bits hat): Geben Sie
einfach den Wert mit größerem Exponenten zurück (wenn dies der Subtrahend ist: negieren)
Wenn Exponenten ähnlich sind:
Verschieben Sie die Mantisse mit kleinerem Wert um die Differenz der Exponenten und addieren / subtrahieren Sie sie von anderen Mantissen (unter Verwendung der Festkomma-Arithmetik).
wenn das Ergebnis nicht 0 ist. Verschieben Sie die Mantisse nach oben, bis MSBit des Ergebnisses 1 ist, und dekrementieren Sie den Exponenten um den gleichen Betrag
Multiplikation / Division:
Multiplizieren / Dividieren von Mantissen (unter Verwendung von Festkomma-Arithmetik) und Addieren / Subtrahieren von Exponenten
quelle
Sie sollten in der Lage sein, diese Gleitkomma-Bibliothek mit mehrfacher Genauigkeit auf dem Propeller mit Catalina C oder gcc zu verwenden. Für viele Anwendungen kann es jedoch zu langsam sein.
quelle
Es sieht so aus, als hätte diese Frage mehr Verständnis als die Lösung des Problems gesucht, daher ist dies möglicherweise nicht die nützlichste Antwort, sondern nur der Vollständigkeit halber
http://code.google.com/p/propgcc/wiki/PropGccCompileOptions
Dies impliziert, dass die Propellerversion von GCC Gleitkomma-Unterstützung bietet, einschließlich Doppel.
GCC und seine Compiler-Bibliotheken sind natürlich Open Source, obwohl es möglicherweise eine echte Lernkurve gibt, bevor Sie sehen können, was der Code tut.
quelle