Telegram Group & Telegram Channel
25 лет тому назад мир впервые увидел Quake III Arena!
и при чем тут Быстрый обратный квадратный корень

19 сентября 1999 года мир впервые увидел Quake III Arena — игру, где виртуальные воины сражались в трёхмерных аренах. Но мало кто знал, что под капотом этой легенды скрывался алгоритм, навсегда изменивший представление о скорости вычислений.

В тот день в исходном коде id Software появилась функция с комментарием «зловещий хакинг чисел с плавающей запятой». Её авторы даже не подозревали, что их трюк станет легендой программирования:
i = 0x5f3759df - (i >> 1); // какого чёрта?


Этот код — сердце Fast Inverse Square Root, алгоритма для быстрого вычисления обратного квадратного корня. В эпоху, когда процессоры едва справлялись с 3D-графикой, он позволял рассчитывать освещение и траектории в десятки раз быстрее стандартных методов. Но как он работал? И почему до сих пор о нём говорят?

Тайна «магического числа»
В 2005 году исходный код Quake III стал открытым. Сообщество ахнуло: функция Q_rsqrt использовала битовые операции и загадочную константу 0x5f3759df. Программисты ломали голову: как преобразование целого числа в float может дать приближение обратного квадратного корня?

Объяснение звучало как магия:
1️⃣ Число с плавающей запятой разбирали на биты.
2️⃣ Сдвигали их вправо (делили на 2) и вычитали из «магического» числа.
3️⃣ Собирали обратно в float.

«Это как взять логарифм, умножить его на -0.5 и снова получить число», — шутили математики. Но за кулисами скрывался гениальный трюк: битовое представление float интерпретировали как целое число, что позволяло аппроксимировать результат через экспоненту и мантиссу.

Грег Уолш, создатель алгоритма, позже признался:
«Мы искали способ убрать деление. Оказалось, всё решила пара битовых операций и метод Ньютона».


«Касательная, которая спасла Quake»
Первое приближение было грубым. Чтобы уточнить его, разработчики использовали метод Ньютона-Рафсона — итерационную формулу:

y = y * (1.5 - (x * 0.5 * y * y));

Всего один шаг — и погрешность сокращалась с 2% до 0.001%. Этого хватало, чтобы рендерить 60 кадров в секунду на Pentium III.
«Пол, посмотри! Мы заменили сотни операций тремя строчками кода»
— возможно, так воскликнул программист id Software, запуская тесты.

В 1999 году алгоритм казался чудом. Но к 2020-м годам всё изменилось. Современные процессоры обзавелись инструкциями вроде rsqrtss, которые вычисляют обратный квадратный корень за такт. Тесты показали: на Intel Core i9 Fast Inverse Square Root в 4 раза медленнее аппаратной реализации.

Зачем тогда о нём помнить?
1️⃣ Гениальная простота. Алгоритм учит думать «вне рамок» — использовать биты как данные и как инструкции.
2️⃣ Исторический код. Без него игры вроде Quake III не смогли бы работать на слабых PC 90-х.
3️⃣ Вдохновение. Даже сегодня разработчики встраивают этот метод в микроконтроллеры без FPU.

Его алгоритм стал мостом между эпохами. В 1999-м он позволил железу выжать максимум, а сегодня напоминает: иногда гениальность кроется в одной строчке кода. Пусть даже с комментарием «какого чёрта?».

#АйтишныеБайки #IT #история #Quake
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍73



group-telegram.com/BalticAnalyst/350
Create:
Last Update:

25 лет тому назад мир впервые увидел Quake III Arena!
и при чем тут Быстрый обратный квадратный корень

19 сентября 1999 года мир впервые увидел Quake III Arena — игру, где виртуальные воины сражались в трёхмерных аренах. Но мало кто знал, что под капотом этой легенды скрывался алгоритм, навсегда изменивший представление о скорости вычислений.

В тот день в исходном коде id Software появилась функция с комментарием «зловещий хакинг чисел с плавающей запятой». Её авторы даже не подозревали, что их трюк станет легендой программирования:

i = 0x5f3759df - (i >> 1); // какого чёрта?


Этот код — сердце Fast Inverse Square Root, алгоритма для быстрого вычисления обратного квадратного корня. В эпоху, когда процессоры едва справлялись с 3D-графикой, он позволял рассчитывать освещение и траектории в десятки раз быстрее стандартных методов. Но как он работал? И почему до сих пор о нём говорят?

Тайна «магического числа»
В 2005 году исходный код Quake III стал открытым. Сообщество ахнуло: функция Q_rsqrt использовала битовые операции и загадочную константу 0x5f3759df. Программисты ломали голову: как преобразование целого числа в float может дать приближение обратного квадратного корня?

Объяснение звучало как магия:
1️⃣ Число с плавающей запятой разбирали на биты.
2️⃣ Сдвигали их вправо (делили на 2) и вычитали из «магического» числа.
3️⃣ Собирали обратно в float.

«Это как взять логарифм, умножить его на -0.5 и снова получить число», — шутили математики. Но за кулисами скрывался гениальный трюк: битовое представление float интерпретировали как целое число, что позволяло аппроксимировать результат через экспоненту и мантиссу.

Грег Уолш, создатель алгоритма, позже признался:
«Мы искали способ убрать деление. Оказалось, всё решила пара битовых операций и метод Ньютона».


«Касательная, которая спасла Quake»
Первое приближение было грубым. Чтобы уточнить его, разработчики использовали метод Ньютона-Рафсона — итерационную формулу:

y = y * (1.5 - (x * 0.5 * y * y));

Всего один шаг — и погрешность сокращалась с 2% до 0.001%. Этого хватало, чтобы рендерить 60 кадров в секунду на Pentium III.
«Пол, посмотри! Мы заменили сотни операций тремя строчками кода»
— возможно, так воскликнул программист id Software, запуская тесты.

В 1999 году алгоритм казался чудом. Но к 2020-м годам всё изменилось. Современные процессоры обзавелись инструкциями вроде rsqrtss, которые вычисляют обратный квадратный корень за такт. Тесты показали: на Intel Core i9 Fast Inverse Square Root в 4 раза медленнее аппаратной реализации.

Зачем тогда о нём помнить?
1️⃣ Гениальная простота. Алгоритм учит думать «вне рамок» — использовать биты как данные и как инструкции.
2️⃣ Исторический код. Без него игры вроде Quake III не смогли бы работать на слабых PC 90-х.
3️⃣ Вдохновение. Даже сегодня разработчики встраивают этот метод в микроконтроллеры без FPU.

Его алгоритм стал мостом между эпохами. В 1999-м он позволил железу выжать максимум, а сегодня напоминает: иногда гениальность кроется в одной строчке кода. Пусть даже с комментарием «какого чёрта?».

#АйтишныеБайки #IT #история #Quake

BY Аналитик на Балтике | Всё о карьере в IT




Share with your friend now:
group-telegram.com/BalticAnalyst/350

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

In a message on his Telegram channel recently recounting the episode, Durov wrote: "I lost my company and my home, but would do it again – without hesitation." In this regard, Sebi collaborated with the Telecom Regulatory Authority of India (TRAI) to reduce the vulnerability of the securities market to manipulation through misuse of mass communication medium like bulk SMS. 'Wild West' At this point, however, Durov had already been working on Telegram with his brother, and further planned a mobile-first social network with an explicit focus on anti-censorship. Later in April, he told TechCrunch that he had left Russia and had “no plans to go back,” saying that the nation was currently “incompatible with internet business at the moment.” He added later that he was looking for a country that matched his libertarian ideals to base his next startup. The S&P 500 fell 1.3% to 4,204.36, and the Dow Jones Industrial Average was down 0.7% to 32,943.33. The Dow posted a fifth straight weekly loss — its longest losing streak since 2019. The Nasdaq Composite tumbled 2.2% to 12,843.81. Though all three indexes opened in the green, stocks took a turn after a new report showed U.S. consumer sentiment deteriorated more than expected in early March as consumers' inflation expectations soared to the highest since 1981.
from it


Telegram Аналитик на Балтике | Всё о карьере в IT
FROM American