Forum: Compiler & IDEs rechenungs problem atmega32


von ROB (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Was ist loss mit diese program progn.c ?

Excakt.txt sind die correcte resultaten. Aber in progn.txt sind
resultaten
bekommen mit progn.c. Warum bleibt EL so lang constant um dan eine
sprung so machen ?

Ich compileer mit WinAVR 20040404 !! Brauche eine atmega32 - 8 Mhz.
Terminal 9600 baud,8 bits,parity none, flow control none, stopbit 1.

gr,

Rob

von Karl H. (kbuchegg)


Lesenswert?

Auf welchem Rechner wurden die Werte für 'excakt.txt'
berechnet?

Das Problem duerfte sein: Du betreibst da ziemlich
heftige Gleitkomma-arithmtik. Die ist an sich schon
problematisch durch die Rundungefehler die sich im Laufe
der Berechnung einschleichen. Erschwerend kommt auf einem
AVR hinzu, dass die Gleitkomma-Arithmetik lediglich eine
4-Byte Arithmetik ist, selbst wenn du den Datentyp 'double'
anforderst. 4-Byte ist nicht viel und die Rundungsfehler in
der Arithmetik schaukeln sich relativ schnell in Bereiche
hoch, die unsinnige Ergebnisse liefern.
Ich fürchte, dass du nur 3 Alternativen hast:
* Entweder einen Compiler besorgen, der 8-Byte double Typen
  besitzt
* Eine sehr sorgfältige Analyse des Codes und Umstrukturierung
  um die Rundungsfehler möglichst klein zu kriegen. Bei dem
  massiven Einsatz von Winkelfunktionen und deren Umkehrfunktionen,
  ist das aber ein in der Praxis sinnloses Unterfangen. Zumindest
  dann, wenn du so eine Analyse nicht schon mindestens einmal
  gemacht hast.
* Komplette Neuentwicklung, bei der vor allem auf eine wesentlich
  einfachere Berechnung Wert gelegt wird.

von ROB (Gast)


Lesenswert?

Hallo Karl,

Excakt.txt sind resultaten bekommen mit eine PC-program.

Wo ist eine compiler su finden mit 8-Byte double Typen besitzt ?

Gr,

Rob

von Alex (Gast)


Lesenswert?

So etwas gibt es nicht. Es hindert dich aber keiner, so etwas in
Festkomma-Arithmetik umzusetzen, macht jedoch etwas Arbeit, die ich dir
nicht abnehmen werde.

von Detlef _. (detlef_a)


Lesenswert?

Hallo ROB,

das funktioniert mit 4Byte floats und mit 2 Byte ints aufm PC auch,
daran liegts also nich !?

Groatjes en tot ziens
Detlef

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
Noch kein Account? Hier anmelden.