Existiert eine IEEE Doppel x>0
so dass sqrt(x*x) ≠ x
, unter der Bedingung, dass die Berechnung nicht x*x
Überlauf oder Unterlauf nicht Inf
, 0
oder eine denormal Zahl?IEEE doppelt so dass sqrt (x * x) ≠ x
Dies ist gegeben, dass sqrt
die nächste darstellbare Ergebnis zurückgibt, und so auch x*x
(beide, wie durch den IEEE-Standard vorgeschrieben, „Quadratwurzeloperation wie in unendlicher Genauigkeit berechnet werden, und abgerundete dann auf eine der beiden nächsten Floating -Punktnummern der angegebenen Genauigkeit, die das unendlich genaue Ergebnis umgeben ").
Unter der Annahme, dass, wenn solche Doppelgänger existieren würden, dann gibt es wahrscheinlich Beispiele in der Nähe von 1, schrieb ich ein Programm, um diese Gegenbeispiele zu finden, und es konnte keine zwischen 1.0
und 1.0000004780981346
finden.
die vorhergehende Frage perfect squares and floating point numbers beantwortet die Frage negativ für Situationen, in denen die Berechnung von x*x
tut nicht Abrunden beinhalten. Diese Antwort ist für diese Frage nicht ausreichend, da es für x*x
möglich sein kann, eine Rundung in eine Richtung und dann eine sqrt(x*x)
Rundung in die gleiche Richtung zu umfassen, so dass eine Antwort erzeugt wird, die nicht exakt x
ist.
Ich glaube dieses Ergebnis, finde es aber immer noch extrem überraschend. –