Wieviele Taktschritte benötigt ein AtMega8 eigentlich für eine Gleitkommedivision von normalen Realvariablen?
Reichlich. Genauer: ausprobieren und nachmessen (Simulator).
Eine Floatingpoint Division ist eine Integerdivision plus das Anpassen der Exponenten. Durch den Exponenten wird der integer etwas kuerzer. P
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
@Hans-jürgen Herbert Deine Angaben haben jeweils eine Null zuviel. Bei 16MHz braucht eine fdiv ca. 15-20µs, wenn ich nicht irre.
@Hans-jürgen Herbert Dein Link ist kaputt @G. Nicht Bist du sicher ? Das wäre ja schneller als eine long Division !
Könnte schon sein. Immerhin gibt es bei float nur so um die 24 Mantissenbits.
>Immerhin gibt es bei float nur so um die 24
Was heißt hier "nur"? Ersetze es durch "immer"!
@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 :-)
> 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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.