Bibliothek für Fließ-/Fixpunktberechnungen?
-
Hi,
ich habe hier einen Embedded-Controller ohne FPU, für den ich jetzt doch ein paar genauere Berechnungen durchführen müsste (Koordinaten per 2x2 Matrix transformieren, Kreis/Winkel mit sin/cos berechnen).
Dafür würde ich jetzt eine kleine Bibliothek/Sourcen benötigen, die mir Fließ- bzw. Fixpunktberechnungen bietet. Wichtig dabei: da Rechenzeit knapp ist, sollte diese möglichst effizient sein.
Eine liberale Lizenz, die mich nicht zum Veröffentlichen all meiner Sourcen zwingt, wäre auch super.
Hat jemand einen heißen Tipp?
-
Welchen Controller und welchen Compiler nimmst du denn?
Eine Fließkommalibraray wird meist mitgeliefert, muss man aber extra dazulinken (bei gcc mit der Option -lm).
Teilweise sind die Typen double und float gleich groß (float).
Und die Berechnungen dauern.Sonst schau mal bei http://www.mikrocontroller.net/articles/Festkommaarithmetik vorbei. Da gibt es auch sonst interessante Seite dazu.
-
DirkB schrieb:
Welchen Controller und welchen Compiler nimmst du denn?
Es ist ein ARM Cortex M3 und der GCC. Die mitgelieferten Bibliotheken sind mir in der Tat viel zu langsam, die sind nicht zu verwenden.
Momentan überlege ich, ob ich vor der Berechnung einfach alles um 10 Bit nach links shifte und anschließend wieder zurück - die Zahlenbereiche sind jedenfalls klein genug um dabei keinen Überlauf zu produzieren.
-
Dann beachte aber, dass du nach einer Multiplikation 20 Bit shiften musst.
-
Warum dann nicht gleich einen Cortex-M4? Ansonsten sind deine Anforderungen wohl sehr anwendungsspezifisch und du musst sie selbst implementieren. Es hilft vieleicht ein Blick auf http://en.wikipedia.org/wiki/CORDIC .
-
knivil schrieb:
Warum dann nicht gleich einen Cortex-M4?
Weil der Hersteller halt einen M3 verbaut hat und wegen eines popligen Programmierers bestimmt nicht seine komplette Produktlinie einstampft!?
-
doch ein paar genauere Berechnungen durchführen müsste
Das ist sehr unspezifisch. Gib einige Beispiele!
Kreis/Winkel mit sin/cos berechnen
Kommt drauf an, was ist mit http://de.wikipedia.org/wiki/Bresenham-Algorithmus
Nachtrag: http://www.ti.com/lsds/ti/microcontroller/arm_stellaris/iq_math.page?DCMP=iqmath&HQS=Other+OT+iqmath