Vor ein paar Tagen habe ich einen Quadratwurzelcode von Thors Hammer gesehen. Das Prinzip wurde an vielen Stellen eingeführt, daher werde ich nicht auf Details eingehen.
Der Quellcode ist in der Sprache C geschrieben. Nachdem ich darüber nachgedacht hatte, stellte ich fest, dass ein solcher Algorithmus auch in JavaScript vervollständigt werden kann.
function InvSqrt(x){ var h=0.5*x; var b=new ArrayBuffer(4); var d=new DataView(b,0); d.setFloat32(0,x); var i=d.getInt32(0); i=0x5f375a86-(i>>1); d.setInt32(0,i); var r=d.getFloat32(0); r=r*(1.5-h*r*r); return r; }
Test:
console.time("t"); for(var i=0;i<10000000;i++){ InvSqrt(i); } console.timeEnd("t"); console.time("t"); for(var i=0;i<10000000;i++){ 1/Math.sqrt(i); } console.timeEnd("t"); VM2303:18 t: 33438.000ms VM2303:24 t: 16720.000ms
Obwohl das Ergebnis immer noch langsamer ist als die Systembibliothek und die Genauigkeit von Natur aus gering ist. Aber ich bin zufrieden.
Das Obige ist die Implementierung des arithmetischen Quadratwurzelalgorithmus mit JavaScript. Freunde, die es brauchen, kommen und lernen es. !