Newton Raphson com SSE2 - alguém pode me explicar essas 3 linhas
Estou lendo este documento:http://software.intel.com/pt-pt/articles/interactive-ray-tracing
e me deparei com essas três linhas de código:
A versão SIMD já é um pouco mais rápida, mas podemos fazer melhor. A Intel adicionou uma função 1 / sqrt (x) rápida ao conjunto de instruções SSE2. O único inconveniente é que sua precisão é limitada. Precisamos da precisão, então nós a refinamos usando o 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 ) );
Este código pressupõe a existência de uma variável __m128 chamada 'half' (quatro vezes 0.5f) e uma variável 'three' (quatro vezes 3.0f).
Eu sei como usar Newton Raphson para calcular o zero de uma função e sei como usá-la para calcular a raiz quadrada de um número, mas não consigo ver como esse código a executa.
Alguém pode me explicar por favor?