この問題について私が知っている唯一のアルゴリズムは、ニュートンの方法です(推測し、それが十分になるまで改善してください)。数値の平方根を求めるアルゴリズムはありますか?
その他のアイデア(好きな言語を使用してください)
PS:もちろん、これについてのユースケースはありません。私は学問的な理由からそれを研究しています。
この問題について私が知っている唯一のアルゴリズムは、ニュートンの方法です(推測し、それが十分になるまで改善してください)。数値の平方根を求めるアルゴリズムはありますか?
その他のアイデア(好きな言語を使用してください)
PS:もちろん、これについてのユースケースはありません。私は学問的な理由からそれを研究しています。
常にニュートン法の効率的なバリエーションであるJohn Carmack methodがあります。
いくつかはhereです。
アルゴリズムをMethods of computing square rootsにチェックしたい場合があります。
これはニュートン法の速いC
ログベース2
実装です:それはカーマックさんではありません
double sqrt(const double x)
{
union
{
int i;
double x;
} u;
u.x = x;
u.i = (1<<29) + (u.i >> 1) - (1<<22);
return u.x;
}
。 http://www.beyond3d.com/content/articles/8/ –
しかし、あなたはそれを反転する必要があります。 – Tordek
またはxで掛けます。 x/sqrt(x)= sqrt(x) – Crashworks