Cuadrado inverso rápido de doble en C / C ++

ecientemente estaba perfilando un programa en el que el punto de acceso es definitivamente este

double d = somevalue();
double d2=d*d;
double c = 1.0/d2   // HOT SPOT

El valor d2 no se usa después porque solo necesito el valor c. Hace algún tiempo leí sobre el método Carmack de raíz cuadrada inversa rápida, obviamente este no es el caso, pero me pregunto si algoritmos similares pueden ayudarme a calcular 1 / x ^ 2.

Necesito una precisión bastante precisa, he comprobado que mi programa no da resultados correctos con la opción gcc -ffast-math. (g ++ - 4.5)

Respuestas a la pregunta(6)

Su respuesta a la pregunta