Alternative POW-Funktion

  • 1
  • 2
  • Page 1 of 2
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Alternative POW-Funktion

 · 
Posted: 25.06.2016 - 16:55  ·  #1
Ich habe festgestellt, dass die Avrco-POW-Funktion andere Ergebnisse liefert als die von Delphi.

Es ist nicht viel, es geht hier um die 4-6. Stelle hinterm Komma, aber die macht es bei mir leider aus.
Der Fehler resultiert bei einer Höhenberechnung aus Luftdruckwerten in 2-3 m Höhendifferenz.
Ich berechne die Zahlen mit Avrco mit "Float", unter Delphi mit "Single", wobei es in Delphi kein Unterschied macht ob ich es in Single oder Extended rechne, das Ergebnis ist immer gleich.

Gibt es eine alternative Methode zu POW in Avrco, die mehr Genauigkeit aufweist?


Konkret sieht das so aus:

u:=power(base, exponent);

base=0,970466
Exponent=0,190263

Ergebnis Delphi: 0,994312
Ergebnis Avrco: 0,994263

PS: Delphis Ergebnis ist identisch mit dem von Visual Studio, Java, Excel und der Windows-Taschenrechner. Nur Avrco weicht davon ab, was wohl sicher an der Optimierung für kleine Controller liegt. Vielleicht hat jemand eine Routine mit der ich das Ergebnis verbessern kann.
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 26.06.2016 - 16:46  ·  #2
Hallo Louis,

der kleine Fehler könnte daran liegen dass im AVRco nicht im Float gerundet wird.
Wenns genau sein soll warum nicht "Fix64Power" nehmen?

rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 28.06.2016 - 10:09  ·  #3
Das werde ich mal versuchen, danke für den Tip!
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 28.06.2016 - 14:13  ·  #4
Da gibts ein Problem,
wenn ich
from system import ..., Fix64;
dazu setze erhalte ich Fehlermeldungen

define
....
ServoNeutral = 1.5, Timer_E0;
ServoSwing = 0.5;

Die Meldung heißt:

Error: Float number expected


Der Compiler akzeptiert dann die 1.5 und 0.5 nicht mehr.
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 28.06.2016 - 18:22  ·  #5
Hallo Louis,

kleiner Bug im Compiler.
Workaround:
zusätzlich zu Fix64 auch noch Float importieren.
Update am Wochenende.

rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 29.06.2016 - 14:32  ·  #6
Float ist importiert, der Fehler kommt trotzdem.

Ich sehe schon, ich muss meinen Vertrag wieder verlängern, der ist gerade ausgelaufen ;-)

LOuis
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 29.06.2016 - 14:36  ·  #7
Hallo Louis,

vielleicht ist die Reihenfolge des Imports wichtig.
Zuerst Float, dann FIX64 ???

rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Alternative POW-Funktion

 · 
Posted: 30.06.2016 - 17:19  ·  #8
Nein, ist egal wie es scheint.

Ich habe

from System import Float64, int64, longint, longword, Float, Pipes;

und davon alle Kombinationen probiert.
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   141   155 · Page-Gen-Time: 0.104284s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI