1/sqrt(x)

Dec. 2nd, 2006 10:40 am
kibirov: (Default)
[personal profile] kibirov
Код на С для вычисления сабжа:

float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x; // get bits for floating value
i = 0x5f3759df - (i>>1); // gives initial guess
x = *(float*)&i; // convert bits back to float
x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
return x;
}

Авва рассказал про статью (pdf), в которой этот код исследуется как некая невесть откуда взявшаяся данность, а в комментах там есть ссылка на историю поиска авторов этой великолепной миниатюры.
Читается как офигенский детектив - какой там к чёрту код да Винчи ;))

В двух словах: обратный квадратный корень - такая штука, которая должна быстро и в больших количествах вычисляться, допустим, при построении 3d-изображений для игр типа третьего дума.
Приведённый код вычисляет эту замысловатую функцию в два приёма, причём выполняя простейшие операции с целыми числами.
В итоге армия оболтусов, даже не знающих, что такое квадратный корень, может до потери пульса резаться в красивые три дэ шутеры и вообще ощущать себя богами виртуального пространства :)
Хотя боги - вот они... пять строчек, чёрт побери! :)

Кстати, Ева - это ещё и к вопросу о том, зачем программистам высшая математика :) Посмотри, посмотри материалы по ссылочкам, хотя бы просто для ознакомления ;)

Date: 2006-12-02 10:00 am (UTC)
From: [identity profile] n0thingnesss.livejournal.com
А в ЖЖ его никак нельзя использовать? как было бы круто - 3D-блог.. ))))

Date: 2006-12-02 07:15 pm (UTC)
From: [identity profile] kibirov.livejournal.com
Ну, знаешь, Инет, даже быстрый, как у тебя - это совсем не те скорости, при которых важно, насколько быстро считается обратный квадратный корень ;))
Всё упирается в скорость передачи данных, и тут уж - будь твой блог трёх- или десятимерным, мне через дайлап ещё долго будет доступно только одно измерение - текстовое...

Трёхмерные проекты в сети есть, называются VRML-модели, ты их наверняка видел... был, помнится, даже VRML-мавзолей! Но что можно учудить в VRML-блоге - хм, ума не приложу ;) Квартиру свою показать, что ли, и отмечать крестиком - вот тут я сижу за компом, вот тут мою посуду... Заходите, люди добрые, будьте как дома ;)

Date: 2006-12-02 01:58 pm (UTC)
From: [identity profile] eva-r.livejournal.com
угу....

Date: 2006-12-02 07:18 pm (UTC)
From: [identity profile] kibirov.livejournal.com
Не чувствуется радости в голосе ;)
Разве не прекрасная фишка? :)
Если проблемы с английским - я тебе переведу...

Честно говоря, в тонкости формульных выкладок я и сам пока не вникал, пробежал глазами только, но какова сама идея! Ах, какие бывают мозги у людей, умереть от зависти можно :)

Date: 2006-12-03 04:11 pm (UTC)
From: [identity profile] eva-r.livejournal.com
Переведи ;)

Date: 2006-12-04 02:14 pm (UTC)
From: [identity profile] kibirov.livejournal.com
ОК - с листа! при личной встрече!
При той самой легендарной личной встрече, на которую уже столько запланировано, что перевод "вживую" будет едва и не самым лёгким и быстрым делом ;)

Date: 2006-12-04 02:23 pm (UTC)
From: [identity profile] kibirov.livejournal.com
"едва ЛИ", опечаточка, сорри.

Profile

kibirov: (Default)
kibirov

December 2011

S M T W T F S
     12 3
4 5 6 7 8 9 10
11 12 13 14 15 1617
18 19 20 21 22 23 24
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 12th, 2026 10:26 am
Powered by Dreamwidth Studios