2009-03-26 21 views
3

Der einzige Algorithmus, den ich für dieses Problem kenne, ist die Newton-Methode (rate mal, verbessere sie dann, bis sie gut genug ist).Algorithmus, um eine Quadratwurzel einer Zahl zu finden?

Irgendwelche anderen Ideen (verwenden Sie eine beliebige Sprache, die Sie bevorzugen)?

PS: Natürlich habe ich keinen Anwendungsfall dafür, ich forsche nur aus akademischen Gründen.

Antwort

10

Es gibt immer die John Carmack method, die eine sehr effiziente Variante der Newton-Methode ist.

+3

Es ist nicht Carmacks. http://www.beyond3d.com/content/articles/8/ –

+3

Aber dann müssten Sie es invertieren. – Tordek

+0

Oder multiplizieren Sie es mit x. x/sqrt (x) = sqrt (x) – Crashworks

0

Sie können die Algorithmen in Methods of computing square roots überprüfen.

Das ist schnell C Logbase 2 Implementierung der Methode Newtons:

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; 
} 
Verwandte Themen