が計算x*x
はInf
、0
、又は非正規化数にオーバーフローまたはアンダーフローしないことを条件として、IEEEダブルx>0
ようsqrt(x*x) ≠ x
それが存在しないことIEEEダブルよう?SQRT(X * X)≠X
これはsqrt
は、最も近い表現の結果を返し、そうx*x
は(IEEE標準で義務付け両方として、「平方根演算が無限の精度であるかのように計算されず、その後、最も近い2つのフローティングのいずれかに丸められていること与えられます無限に正確な結果を囲む指定された精度の点数」)。
は、このようなダブルスが存在するならば、その後、1に近い例は、おそらくそこにあるという仮定の下で、私はこれらの反例を見つけるためのプログラムを書いて、それが1.0
と1.0000004780981346
間のいずれかを見つけることができませんでした。
以前同様の質問perfect squares and floating point numbersはx*x
の計算がないが丸め伴わない状況のため、負で質問に答えます。この答えは、x*x
が同じ方向に丸めを含むようにsqrt(x*x)
方向に丸めを含む可能性があり、正確にはx
ではない回答を生成する可能性があるため、この質問では十分ではありません。
私はこの結果を信じていますが、それでもそれは非常に驚くべきことです。 –