11

を使用して同じことを達成できるのに、なぜ C/c++ に sqrt() 関数があるのか​​ 疑問に思っていました

pow(x,0.5);

どのようにsqrt(x)違うのですpow(x,0.5)か?sqrt関数を持つ特定の理由はありますか?

4

3 に答える 3

6

sqrt() は、IEEE 仕様によって正しく丸められることが保証されている特殊なケースであるとどこかで読んだことを覚えています。ソースを見つけるためにそれを調べます。1 つのケースのみを処理する必要があるため、少し高速になるはずです。

たとえ同じものだったとしても、よく使われる関数のエイリアスが組み込まれていると便利です!

編集: IEEE-754 によると、 pow() 関数と sqrt() の両方が、丸められた値が実際の値に最も近い浮動小数点表現になるように実装されることになっています。ただし、sqrt() はまだ高速である必要があります。

于 2013-07-02T04:44:28.230 に答える
5

確かに、数学的な等価性だけを考えれば...

しかし、結果を計算するためのアルゴリズムに関しては、汎用的sqrtであるのに対し、特定のものに固有です。pow

sqrtしたがって、ジェネリック関数を記述するよりも高速な関数を記述することが可能であると (正しく) 想定できpowます。

于 2013-07-02T04:43:02.557 に答える