2009-03-26 2 views
3

Единственным алгоритмом, который я знаю для этой проблемы, является метод Ньютона (сделайте предположение, а затем улучшите его, пока он не станет достаточно хорошим).Алгоритм для поиска квадратного корня числа?

Любые другие идеи (используйте любой язык, который вы предпочитаете)?

PS: Конечно, у меня нет прецедента для этого, я просто изучаю его по академическим причинам.

ответ

10

Всегда существует John Carmack method, который является высокоэффективным вариантом по методу Ньютона.

+3

Это не Кармака. http://www.beyond3d.com/content/articles/8/ –

+3

Но тогда вам придется инвертировать его. – Tordek

+0

Или умножьте его на x. x/sqrt (x) = sqrt (x) – Crashworks

0

Возможно, вы захотите проверить алгоритмы в 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; 
} 
Смежные вопросы