Ist es möglich, während der Laufzeit selektiv -ffast-math ein-/auszuschalten? Zum Beispiel das Erstellen der Klassen FastMath und AccurateMath mit der gemeinsamen Basisklasse Math, so dass man beide Implementierungen zur Laufzeit verwenden könnte? Dito für blinkende Unternormale auf Null, usw.Dynamic -ffast-math
Insbesondere weiß ich nicht, ob das Kompilieren mit -ffast-math einen Befehl ausgeben würde, der, sobald er ausgeführt wird, alle numerischen Berechnungen im Thread (zum Beispiel Einstellung) betrifft ein Flag, um Unternormale auf Null zu setzen).
Sie müssten zwei Versionen kompilieren, eine mit der Optimierung und eine ohne. Verknüpfen Sie sie dann und wählen Sie aus, was zur Laufzeit aufgerufen werden soll. – Mysticial
Es ist bedauerlich, dass http://stackoverflow.com/questions/7420665/what-does-gccs-ffast-math-actually- nur ein Beispiel gibt, aber '-fast-math's Effekt sind meistens (ganz?) Kompilierungszeit-Auswahlmöglichkeiten, wie z. B. Kompilieren von '/ 10' als' * 0,1' oder "Vereinfachen" von "a + bab" in "0" (es ist nicht Null für IEEE 754-Berechnungen). Daher, wie Mysticial sagt, gibt es keine Möglichkeit, das Flag zur Laufzeit ein- und auszuschalten: Sie müssen zwei Versionen kompilieren, wenn Sie das wirklich wollen. –
@Mysticial machen Sie Ihren Kommentar in eine Antwort - es ist das einzige waaay ... – ldrumm