2010-05-22

xen0n: (Default)
2010-05-22 06:35 am
Entry tags:

0x5f3759df

Началось все с этого комикса и блестящего примера про 0x5f3759df.

В хрен знает каком году Пифагор открыл, что квадрат гипотенузы равен сумме квадратов катетов. Очень полезное, надо сказать, знание. А вот если у нас есть сумма квадратов ("катетов") и нужно найти не квадрат гипотенузы, а саму гипотенузу? Надо быстро вычислить обратный корень. В жизни не страшно если это займет на час больше, а если это надо сделать в компьютере, который должен эти корни сотни раз за секунду считать?

И тут - бинго!! На помощь приходит 0x5f3759df! Именно это (экспериментально, перебором полученное число) помогает _быстро_ вычислять квадратные корни 32-битовых чисел специальным алгоритмом.

Кому нахрен нужно это число в реальной жизни? Например, всем, кто играл в третий квейк. Именно там оно используется для графических рассчетов.

Знание, по "мощности" ненамного уступающее теореме Пифагора (а если посчитать количество раз, сколько применяли за всю историю теорему пифагора, и сколько раз вычисляются корни в квейке - то может быть и более часто используемое) и где впервые использовано - в несерьезной игрушке. Кто-то просто получил ТЗ, столкнулся с вычислительной проблемой, задумался над методами решения и... решил!