Блог пользователя g.naukovych

Автор g.naukovych, 11 лет назад, По-русски

Нашел интересную статью, о том как в Quake 3 происходит вычисление обратного квадратного корня.

Вот что такое промышленное шаманство)

  • Проголосовать: нравится
  • +10
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Это метод Ньютона нахождения корней уравнения. Довольно таки известная штука

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Может и известная, но я не слышал ни разу. А вот шаманство с указателеми — реально черная магия. Не понимаю, почему минусют пост, крутой трюк на самом деле..

»
11 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

Вот эта строчка очень интересная

i = 0x5f3759df — ( i >> 1 );

Вот просто для всех корней берется некая константа.

  • »
    »
    11 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Дак первое приближение берётся в виде линейной функции видимо. Не?

    UPD: Наверное чуть хитрее т.к. там число из float конвертится и в старших битах будет экспонента. Т.е. приближение не по линейной функции а по экспоненциальной...

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Магия же. Не просто так станут такую константу называть магической.

»
11 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Вот квадратный корень из одной известной библиотечки: http://pastebin.com/hGY9YjXp.