Quadrado inverso rápido do dobro em C / C ++

Recentemente, eu estava criando um programa em que o hotspot é definitivamente esse

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

O valor d2 não é usado depois porque eu só preciso do valor c. Há algum tempo, eu li sobre o método Carmack de raiz quadrada inversa rápida, esse obviamente não é o caso, mas estou imaginando se algoritmos semelhantes podem me ajudar a calcular 1 / x ^ 2.

Preciso de precisão bastante precisa, verifiquei que meu programa não fornece resultados corretos com a opção gcc -ffast-math. (g ++ - 4,5)

questionAnswers(6)

yourAnswerToTheQuestion