AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Chromaprint: Unterschied Numerik Delphi vs FPC
Thema durchsuchen
Ansicht
Themen-Optionen

Chromaprint: Unterschied Numerik Delphi vs FPC

Ein Thema von SonnyBoyPro · begonnen am 13. Jul 2015 · letzter Beitrag vom 13. Jul 2015
Antwort Antwort
SonnyBoyPro

Registriert seit: 9. Mai 2007
68 Beiträge
 
#1

Chromaprint: Unterschied Numerik Delphi vs FPC

  Alt 13. Jul 2015, 13:12
Hallo zusammen,

bin gerade dabei die Chromaprint/AcoustID (https://acoustid.org/chromaprint) nach Pascal zu transferieren.
Nun taucht bei den Samples folgendes Problem auf. Das Resampling von Mono 8000bit funktioniert
unter Delphi zu 100%. Bei FPC gibts an ein paar Stellen einen Unterschied.

Code:
Test Resample Mono 8000
=======================
Buffer Data Size and Readed Data Size: OK
Signals differ at index: 1148, -1 || 0
Signals differ at index: 11628, 1161 || 1162
Signals differ at index: 12588, 7747 || 7746
Signals differ at index: 12748, 1345 || 1344
Signals differ at index: 12988, -5070 || -5069
Signals differ at index: 13548, 6185 || 6186
Signals differ at index: 14588, -2472 || -2473
Signals differ at index: 14668, 1049 || 1050
Signals differ at index: 14988, -3245 || -3244
Buffer Data and Readed Data equal: NOT OK
Error Count: 9 / 22040
jetzt nicht wirklich viele Unterschiede, da aber aus dem ganzen ja einmal ein Fingerprint für ne Audiodatei werden soll beunruhigt mich das schon ein wenig. Der Source ist für Delphi und FPC der gleiche. Also kann's nur am Compiler liegen.

Wie bekommt man das hin, dass sich FPC mathematisch gesehen "gleich" verhält wie Delphi?

BG
  Mit Zitat antworten Zitat
gammatester

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

AW: Chromaprint: Unterschied Numerik Delphi vs FPC

  Alt 13. Jul 2015, 15: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 15:55 Uhr) Grund: Anderes Beispiel für Ungenauigkeit
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Chromaprint: Unterschied Numerik Delphi vs FPC

  Alt 13. Jul 2015, 15:32
Gerade für ungenaues Fingerprinting sollten ein paar Ungenauigkeiten aber nicht so schlimm sein

PS: Du beugst read falsch.
  Mit Zitat antworten Zitat
SonnyBoyPro

Registriert seit: 9. Mai 2007
68 Beiträge
 
#4

AW: Chromaprint: Unterschied Numerik Delphi vs FPC

  Alt 13. Jul 2015, 23:10
Hallo gammatester,

ja genau das war das Problem, Bessel Funktion etc. sowie die Divsionen von Double durch Integer.
Ich hab nun Deine DaMath eingebunden, und siehe da es funktioniert. Nun wird auch das 8000 Mono Example richtig gerechnet.

Besten Dank!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz