-freciprocal-math
in GCC den folgenden CodeWarum ist -freccroal-math in GCC unsicher?
double a = b/c;
zu
double tmp = 1/c;
double a = b * tmp;
In GCC Handbuch ändert, wird ihm gesagt, dass eine solche Optimierung unsicher ist und nicht auf IEEE-Standards klebt. Aber ich kann mir kein Beispiel vorstellen. Können Sie ein Beispiel geben?
Betrachten Sie b = c = 3 –
Ich habe nicht IEEE Regeln darüber, wie ein Compiler Fließkomma verwenden muss. Zum Beispiel ist X^2 oft stark auf X * X reduziert, wodurch typischerweise schnellere Programme erzeugt werden, jedoch mit einem anderen Fehler als die vom ursprünglichen Programmierer angegebene Berechnung. Also, @Kid, haben Sie sich den IEEE-Standard angeschaut, um zu sehen, welche Grenzen er Compilern mit solcher Arithmetik auferlegt? –
@RaymondChen: Nach der IEEE-Rundung (nach oben? Nach unten? Sogar? Keine?) Wird vielleicht nicht Ihr b = c = 3-Beispiel das exakt gleiche Ergebnis in einem? –