Быстрый обратный квадрат двойного числа в 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)

9
задан linello 16 March 2012 в 12:03
поделиться