Gast
#515758
Wieviele Taktschritte benötigt ein AtMega8 eigentlich für eine Gleitkommedivision von normalen Realvariablen?
|
Anzeige
|
Taktschritte für Gleitkommadivision
Gast
#515758
Wieviele Taktschritte benötigt ein AtMega8 eigentlich für eine Gleitkommedivision von normalen Realvariablen?
Gast
#515765
Reichlich. Genauer: ausprobieren und nachmessen (Simulator). Hängt übrigens stark vom Divisor ab.
Gast
#516091
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
Gast
#516559
@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 !
Gast
#516783
>Bist du sicher ?
ja.
Gast
#516810
Könnte schon sein. Immerhin gibt es bei float nur so um die 24 Mantissenbits. Am Link war das Komma zu viel : Also Beitrag "float arithmetic"
Gast
#517130
>Immerhin gibt es bei float nur so um die 24
Was heißt hier "nur"? Ersetze es durch "immer"!
Gast
#517242
> Was heißt hier "nur"?
Nur heisst: 24 < 32.
Gast
#517468
@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 :-)
Gast
#517578
> 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 schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|