Il y a quelques jours, j'ai vu un code racine carrée de Thor's Hammer. Le principe a été introduit à de nombreux endroits, je n'entrerai donc pas dans les détails.
Le code source est écrit en langage C. Après réflexion, j'ai découvert qu'un tel algorithme pouvait également être complété en JavaScript.
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
Bien que le résultat soit toujours plus lent que celui de la bibliothèque système et que la précision soit intrinsèquement faible. Mais je suis satisfait.
Ce qui précède est l'implémentation de l'algorithme arithmétique de racine carrée en utilisant JavaScript. Qu'en est-il ? Le code est très simple. Amis qui en ont besoin, venez l'apprendre. !