Effiziente Umsetzung des natürlichen Logarithmus (ln) und Potenzierung

Im Grunde bin ich auf der Suche für die Umsetzung von log() und exp() Funktionen in der C-Bibliothek <math.h>. Ich arbeite mit 8-bit-mikrocontroller (OKI 411 und 431). Ich brauche zu berechnen Mittlere Kinetische Temperatur. Die Voraussetzung ist, dass wir sollten in der Lage sein zu berechnen, MKT so schnell wie möglich und mit so wenig code wie möglich Speicher. Der compiler kommt mit log() und exp() Funktionen in <math.h>. Aber durch den Aufruf einer Funktion und die Verknüpfung mit der Bibliothek bewirkt, dass die code-Größe zu erhöhen, um 5 Kilobyte, die nicht in die Mikro, mit der wir arbeiten (OKI 411), weil der code bereits verbraucht ~12 Kb des verfügbaren ~15K code-Speicher.

Die Umsetzung, die ich Suche, sollten Sie nicht verwenden Sie eine andere C-Bibliothek von Funktionen (wie pow(), sqrt() etc.). Dies ist, da alle Bibliotheks-Funktionen sind verpackt in einer Bibliothek und selbst wenn eine Funktion aufgerufen wird, wird der linker bringt ganze 5K-Bibliothek, um code-Speicher.

BEARBEITEN

Sollte der Algorithmus korrekt bis zu 3 dezimal stellen.

Wenn Sie diese Einschränkungen haben, sollten Sie auch Fragen Sie sich, was die Präzision, die Sie akzeptieren können ? Also, was ist die akzeptable Fehlermarge ?
vergaß hinzuzufügen. danke für die Erinnerung. ich habe bearbeitet Sie meine Frage. 🙂
Auch, was sind die input-und output numerische Formate? Fixed-point wie 8.8? Es klingt wie Sie davon profitieren würde durch die Speicherung ein offset relativ zu 273 Kelvin, d.h. Celsius.
der Eingang/Ausgang ist nicht, keine Sorge. was meinst du mit 'bias relativ zu 273K'?
Da die 273 ist eine große Anzahl im Verhältnis zum Wert der Temperatur in Celsius, Sie können Holen Sie mehr Präzision aus dem gleichen bits durch die Speicherung Celsius statt Kelvin. Tatsächlich, das zeigt, warum der Eingang/Ausgang ist ein Anliegen. Als Alexei erwähnt, Temperaturbereich wirkt sich auf die Wahl der Formel.

InformationsquelleAutor Donotalo | 2012-03-21

Schreibe einen Kommentar