Newton Raphson mit SSE2 - kann mir jemand diese 3 Zeilen erklären

Ich lese dieses Dokument:http://software.intel.com/de-de/articles/interactive-ray-tracing

und ich bin auf diese drei Codezeilen gestoßen:

Die SIMD-Version ist schon ein bisschen schneller, aber wir können es besser machen. Intel hat den SSE2-Befehlssatz um eine schnelle 1 / sqrt (x) -Funktion erweitert. Der einzige Nachteil ist, dass die Genauigkeit begrenzt ist. Wir brauchen die Präzision, also verfeinern wir sie mit Newton-Rhapson:

 __m128 nr = _mm_rsqrt_ps( x ); 
 __m128 muls = _mm_mul_ps( _mm_mul_ps( x, nr ), nr ); 
 result = _mm_mul_ps( _mm_mul_ps( half, nr ), _mm_sub_ps( three, muls ) ); 

Dieser Code setzt die Existenz einer __m128-Variablen mit dem Namen 'half' (viermal 0,5f) und einer Variablen 'three' (viermal 3,0f) voraus.

Ich kann Newton Raphson verwenden, um die Null einer Funktion zu berechnen, und ich kann sie verwenden, um die Quadratwurzel einer Zahl zu berechnen, aber ich kann nur nicht sehen, wie dieser Code sie ausführt.

Kann mir das bitte jemand erklären?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage