Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Chromaprint: Unterschied Numerik Delphi vs FPC

  Alt 13. Jul 2015, 14:22
Ich nehme an, Du benutzt Double-Fließkomma. Welche FPC-Version, 32- oder 64-Bit? Bei meiner DAMath-Bibliothek habe ich festgestellt, daß einige FPC-Math-Routinen unbrauchbar sind (ln1xp etc), exp verliert bis zu 13 bit. Dies gilt für Versionen <= 2.6.4. Bei den Development-Versionen 3.0.1 und 3.1.1 gibt es einige Verbesserungen.

Ich würde als erstes mal die neuen Versionen versuchen, falls Du es nicht bereits so machst. Falls das nichts hilft, die verdächtigen Funktionen (sin, cos, exp etc) isolieren und durch DAMath-Funktionen ersetzen.


Edit: Ein weiteres Problem sind Divisionen von Fließkomma-Konstanten durch Integer wie zB
Delphi-Quellcode:
{
Win64>FB.exe
        3.33333343267441E-001        2.98023223876953E-008

Win32>FB.exe
        3.33333333333333E-001        -5.55111512312578E-017
}


var
  d: double;
  n: integer;
begin
  n := 3;
  d := 1.0/n;
  writeln(d:30, n*d - 1.0:30);
end.
Hier rechnen alle 64-Bit-Win-FPCs bis 3.1.1 in single precision!!?? mit entsprechender Ungenauigkeit, habe versucht das als Bug zu reporten, ist aber als Feature abgelehnt, weil 1.0 halt exakt als Single darstellbar ist.

Geändert von gammatester (13. Jul 2015 um 14:55 Uhr) Grund: Anderes Beispiel für Ungenauigkeit
  Mit Zitat antworten Zitat