IT-lexikon › Programmering › Snabb invers kvadratrot

Snabb invers kvadratrot

Programmering In English → Uppdaterad: 2026-10-26

Bitknepet som räknar ut 1/√x genom att läsa ett flyttal som heltal, dra det från en magisk konstant och putsa resultatet med ett enda Newtonsteg.

Spel normaliserar vektorer hela tiden — för belysning, reflektioner och fysik — och varje normalisering kräver 1/√x. På 90-talets processorer var både division och kvadratrot dyra. Funktionen Q_rsqrt i Quake III Arena (1999) tolkar flyttalets bitar enligt IEEE 754 som ett heltal, där exponenten gör att en högerskiftning ungefär halverar logaritmen. 0x5F3759DF minus det skiftade värdet ger en grov gissning, och en Newton–Raphson-iteration tar felet under en procent.

Koden blev känd först när id Software släppte källkoden 2005, med den numera klassiska kommentaren // what the fuck?. Upphovet spårades bakåt via 3dfx till Greg Walsh på Ardent Computer. Samma år som spelet kom fick x86 instruktionen rsqrtss via SSE, och i dag är knepet mest ett museiföremål.

← Tillbaka till lexikonet