Fast Inverse Square Root, он же Fast InvSqrt() или 0x5f3759d5 – способ вычисления обратного квадратного корня из числа = 1/sqrt(x). Изобретен еще в 90-х годах.
Если верить википедии, то этот алгоритм использовался в Quake III.
Главная фишка метода в использовании “магической” константы – 0x5f3759d5, с помощью которой можно получить первое приближенное значение.
Затем обычным методом Ньютона получаем улучшенное приближение.
Подробнее можно прочитать здесь и здесь.
public static float invSqrt(float x) {
float xhalf = 0.5f*x; // x пополам
int i = Float.floatToIntBits(x); // битовое представление числа.
i = 0x5f3759d5 - (i >> 1); // отрицательные x не волнуют, т.к. из отриц. корень брать нельзя
x = Float.intBitsToFloat(i); // вот оно, первое прибл. значение
x = x*(1.5f - xhalf*x*x);
// x = x*(1.5f - xhalf*x*x);
return x;
}