Ich teste einige Bits Code, eine Zahl, die Berechnung mit Fließkommawerten beinhaltet - oft sehr viele davon. Ich habe einige generische (C++ - Template-Code, aber es ist nicht wichtig für diese Frage) Code, der meine Ausgaben, ob sie Skalar oder Arrays sind, gegen ihre erwarteten Werte vergleicht.Was ist eine gute Faustregel-Gleitkommavergleichsmethode?
Ich bin mit dem Problem der Wahl einer Genauigkeit Schwelle, zumindest für die beiden C/C++ Fließkomma-Typen float
und double
konfrontiert - für verschiedene Funktionen, die ich testen. Wie es well known gibt, gibt es keine Einheitsgröße in Bezug auf den Vergleich von Gleitkommawerten, noch einen einzelnen Genauigkeitswert, der nur auf den Datentyp passt und berechnet: Relativer vs. absoluter Fehler, zahlreiche Operationen, die sich vergrößern können Gleitkomma-Rundungsfehler viel, Berechnungen, die bei 0 ankommen sollen, so dass man sich nicht wirklich um den Erwartungswert normalisieren kann, usw.
Was ist ein allgemein vernünftiger Ansatz/Algorithmus/Faustregel? eine Vergleichsmethode (und Gleichheitsschwellenwerte) für Fließkommawerte wählen?