www.mikrocontroller.net

Forum: PC-Programmierung log2 mit Assembler programmieren


Autor: Mike Do (mike89)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich bin Informatik-Student und habe die Aufgabe erhalten den 
logartihmus zur Basis 2 von x mittels der FPU-Rechenops +-*/ und der 
Neagtion zu programmieren. Daher wäre ich dankbar für Hinweise zur 
Vereinfachung des log_2x. Bisher sind mir folgende Tranformationen 
bekannt:
log_2(x) = log_10(x)/log_10(2)
log_2(x)= y <=> x = 2^y
Ein Hinweis zur Aufgabe sagt man solle table-lookups verwenden oder 
Reihenentwicklungen.
x ist float mit standart 1 bit sign 8 bit exp 23 bit mantisse zur basis 
2 mit bias 127. Für Tipps bzw Code mit ähnlicher Thematik(z.B. log_10 in 
Assembler) wäre ich sehr dankbar.

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Taylor-Reihenentwicklung, siehe Bronstein für die richtige

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder in ner Schleife immer durch zwei teilen und die Anzahl zählen, bis 
ein Ergebnis kleiner 1 rauskommt:

z.B. 18
18 / 2 = 9    /1
9 / 2 = 4.5   /2
4.5 / 2 = 2.25 /3
2.25 / 2 = 1.125 /4
1.25 / 2 < 1     /also ungefähr 4

Wenn du ohne Nachkommastellen beim Exponent leben kannst, ist das ne 
Idee.
;D

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike Do schrieb:

> Ein Hinweis zur Aufgabe sagt man solle table-lookups verwenden oder
> Reihenentwicklungen.

Bei Tabellen beisst sich die Katz in den Schwanz, denn irgendwo muss die 
Tabelle ja herkommen ;-)

Reihenentwicklung ist nicht so sinnig ohne sich vorher Gedanken über das 
Konvergenzverhalten gemacht zu haben... Besser geht dann der Area 
Tangens Hyperbolicus:
   http://de.wikipedia.org/wiki/Logarithmus#Berechnun...

Sehr reizvoll ist auch die Berechnung über die einzelnen Binärziffern, 
das sind selbst in Assembler nur ein paar Zeilen.

Dritte Möglichkeit mit praktischer Relevanz wäre ein hyperbolischer 
CORDIC:
   http://de.wikipedia.org/wiki/CORDIC#Hyperbolische_Modi
Aber auch da geht ln via atanh.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und viertens geht ln mit BKM, ist was leichter durchzusteigen als 
durch CORDIC:
   http://de.wikipedia.org/wiki/Bitalgorithmen#Logari...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.