☰ Menu

08.10.2026 · Signal Titans Editorial

Der berühmte Quadratwurzel-Hack aus Quake III stammt nicht von Carmack. Die wahre Geschichte ist besser.

Eine SGI-Indigo-Grafikworkstation aus den 1990er-Jahren neben der magischen Konstante 0x5f3759df in einer redaktionellen Retro-Komposition.

Fragt man einen Raum voller Programmierer, wer den berühmtesten Hack der Videospielgeschichte geschrieben hat, geben viele dieselbe Antwort: John Carmack.

Die Geschichte geht so: Quake III Arena musste auf der Hardware von 1999 Beleuchtung und Reflexionen schnell berechnen. Irgendwo im Quellcode steckt eine winzige Funktion, die 1/√x mit einem bizarren Trick berechnet: Sie behandelt eine Gleitkommazahl wie eine Ganzzahl, zieht sie von der hexadezimalen Konstante 0x5f3759df ab und erhält ein Ergebnis, das fast stimmt. Der Kommentar neben dieser Zeile ist ein einziger entnervter Fluch. Es wirkt wie das Werk eines einsamen Genies, und Carmack war das Genie von id Software.

Es gibt nur ein Problem. Carmack sagte, er habe es nicht geschrieben.

Der Code, den alle teilen

Als id Software 2005 den Quellcode von Quake III Arena unter der GNU General Public License veröffentlichte, fanden Programmierer diese Funktion in einer Mathematikdatei. Ohne die Originalkommentare sieht sie so aus:

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;
    i  = 0x5f3759df - ( i >> 1 );
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );
    return y;
}

Sie wurde zu einem der meistgeteilten Codeschnipsel im Internet, und die Legende heftete sich an den berühmtesten Namen im Haus.

Der Riss in der Legende

Rys Sommefeldt von der Grafikseite Beyond3D tat, was die meisten Nacherzählungen auslassen: Er fragte nach. Carmack antwortete, es sei nicht sein Code, und er glaube auch nicht, dass Michael Abrash, der andere Optimierungsexperte bei id, ihn geschrieben habe. Er brachte einen anderen Namen ins Spiel: Terje Mathisen, einen bekannten Assembler-Optimierer.

Mathisen hatte eigene Routinen für die schnelle inverse Quadratwurzel geschrieben, sagte aber, diese hier sei nicht dieselbe wie seine. Die Spur führte weiter zu Gary Tarolli, einem Mitgründer des Grafikkartenherstellers 3dfx. Tarolli erkannte den Code wieder. Er hatte ihn intensiv genutzt und Jahre zuvor sogar die Konstante angepasst, als er an Projekten für die Indigo-Workstations von Silicon Graphics arbeitete, doch die Erfindung könne er sich nicht zuschreiben, sagte er.

An diesem Punkt schien die Recherche festzustecken. Dann, nachdem sich die Geschichte im Netz verbreitet hatte, meldete sich ein Programmierer namens Greg Walsh.

Was die Quellen zeigen

Laut dem Folgeartikel von Beyond3D schrieb Walsh die schnelle reziproke Quadratwurzel während seiner Zeit bei Ardent Computer, einer Firma, die Grafik-Minicomputer mit eigenen Vektorprozessoren baute. Er brauchte einen schnelleren Weg für Software, die die Vektorhardware nicht nutzen konnte. Der Keim der Idee, so der Artikel, stammte aus der Zusammenarbeit mit Cleve Moler, dem Mathematiker, der MATLAB entwickelte und sich damals mit der Newton-Raphson-Näherung beschäftigte.

Die beste verfügbare Darstellung lautet also: Ein Ingenieur bei einer kurzlebigen Hardwarefirma schrieb ihn, Kollegen und die Grafikbranche reichten ihn weiter, und er landete schließlich in einer Spiel-Engine, die ihn berühmt machte. Das ist weniger filmreif als ein einsames Genie. Aber genau so verbreitet sich der meiste clevere Code tatsächlich.

Warum der Trick funktioniert

Die wahre Geschichte ist besser, weil der Trick selbst keine Magie ist. Ein 32-Bit-Float speichert einen Exponenten und eine Mantisse. Liest man dieselben 32 Bits als Ganzzahl, erhält man eine grobe, skalierte Näherung des Logarithmus zur Basis 2 dieser Zahl.

Das ist wichtig, weil 1/√x schlicht x hoch minus ein Halb ist. In Logarithmen heißt das: „Multipliziere den Logarithmus mit minus ein Halb.“ Eine Verschiebung der Ganzzahl um ein Bit nach rechts halbiert sie. Sie von einer sorgfältig gewählten Konstante abzuziehen, kehrt das Vorzeichen um und korrigiert die Skalierung. Interpretiert man die Bits wieder als Float, erhält man eine erste Schätzung, die überraschend nah dran ist. Ein einziger Schritt des Newton-Verfahrens schärft sie dann nach.

2003 analysierte Chris Lomont die Funktion und stellte fest, dass ihr relativer Fehler nach diesem einen Verfeinerungsschritt unter etwa 0,18 Prozent bleibt. Er suchte auch nach der bestmöglichen Konstante und fand eine, die ganz geringfügig besser abschneidet: 0x5f375a86. Spätere Forscher leiteten die Konstante analytisch her. Die berühmte Zahl war gute Ingenieursarbeit, kein mystischer Wert.

Warum der Mythos überlebt

Die Carmack-Version hält sich, weil sie alles hat, was eine Legende braucht: einen berühmten Namen, ein berühmtes Spiel, eine unverständliche Konstante und ein Schimpfwort in einem Kommentar. „Jemand bei Ardent Computer, inspiriert von Cleve Moler“ lässt sich schlechter twittern.

Doch der Mythos verdeckt den Teil, der für Programmierer in der Praxis nützlich ist. Gute Tricks werden selten an einem einzigen Ort erfunden. Sie werden entdeckt, geteilt, verfeinert und wiederverwendet, und die Person, deren Name am Ende daran hängt, ist oft nur das letzte Glied der Kette.

Der Code ist außerdem in die Jahre gekommen. Moderne Prozessoren haben eigene Befehle für näherungsweise reziproke Quadratwurzeln, und heutige C-Compiler behandeln diesen Pointer-Cast zwischen float und long als undefiniertes Verhalten, weshalb neuer Code stattdessen eine sichere Bitkopie verwenden sollte. Der Hack gehört in ein Museum guter Ideen, nicht in eine neue Codebasis.

Wer die Geschichte in einem Satz richtig weitererzählen will: Quake III machte die schnelle inverse Quadratwurzel berühmt, Carmack hat sie nicht geschrieben, und die besten Belege deuten auf Greg Walsh, der auf Ideen aufbaute, die er von Cleve Moler übernommen hatte.

Quellen