www.mikrocontroller.net

Forum: Compiler & IDEs Taktschritte für Gleitkommadivision


Autor: Lightlancer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele Taktschritte benötigt ein AtMega8 eigentlich für eine 
Gleitkommedivision von normalen Realvariablen?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reichlich. Genauer: ausprobieren und nachmessen (Simulator).

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hängt übrigens stark vom Divisor ab.

Autor: Plo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Floatingpoint Division ist eine Integerdivision plus das Anpassen 
der Exponenten. Durch den Exponenten wird der integer etwas kuerzer.

P

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ca 1500 - 2000 Takte

Und wenn das zu viel ist, und +Inf -Inf NaN in den Operanten nicht
vorkommen kann, und eine Genauigkeit von 1 ppm ausreicht, dann nimm
_divsf3.s aus dem thread Beitrag "float arithmetic" ,
Archiv home.zip

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans-jürgen Herbert

Deine Angaben haben jeweils eine Null zuviel. Bei 16MHz braucht eine 
fdiv ca. 15-20µs, wenn ich nicht irre.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans-jürgen Herbert
Dein Link ist kaputt

@G. Nicht
Bist du sicher ?
Das wäre ja schneller als eine long Division !

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bist du sicher ?

ja.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte schon sein. Immerhin gibt es bei float nur so um die 24 
Mantissenbits.

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Link war das Komma zu viel : Also 
Beitrag "float arithmetic"

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Immerhin gibt es bei float nur so um die 24


Was heißt hier "nur"? Ersetze es durch "immer"!

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was heißt hier "nur"?

Nur heisst: 24 < 32.

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.

10/3 = 3; bei long sind nur noch 2 Bit von Bedeutung, der Rest liegt 
brach.
10/3.0 = 3.333333; bei float werden die 24 Bit der Mantisse voll 
genutzt.

immer heißt: 24 > 2

Da ich glaube, Deine Antwort zu kennen, nimm für Deine Beispielrechnung 
am besten 987654321/70000 :-)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 10/3 = 3; bei long sind nur noch 2 Bit von Bedeutung, der Rest liegt
> brach.

Hm? Du meinst also, eine Änderung eines beliebigen der anderen 30 Bits 
sorgt nicht für eine Änderung des Wertes, weil sie ja unbedeutend sind? 
Oder was willst du ausdrücken?

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.