Быстрый обратный квадрат двойного в C / C ++
Недавно я профилировал программу, в которой точка доступа определенно
double d = somevalue();
double d2=d*d;
double c = 1.0/d2 // HOT SPOT
Значение d2 не используется после, потому что мне нужно только значение c. Некоторое время назад я читал о методе быстрого обратного квадратного корня Кармака, это явно не тот случай, но мне интересно, могут ли подобные алгоритмы помочь мне вычислить 1 / x ^ 2.
Мне нужна довольно точная точность, я проверил, что моя программа не дает правильных результатов с опцией gcc -ffast-math. (G ++ - 4.5)