Подробности про inverse square root hack
От: PM  
Дата: 17.09.12 07:26
Оценка: 194 (13)
Всем привет!

Помните тот магический код для вычисления 1/sqrt(x) из исходников Quake 3?

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;         // evil floating point bit level hacking
  i = 0x5f3759df - (i >> 1);  // what the fuck?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}


Так вот, Кармак конечно молодец, но он не автор этого. Подробности и объяснение как это работает здесь.

ps. Наверно не очень относится к философии, но мне кажется в разделе по алгоритмам затеряется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.