Beberapa hari lalu saya melihat kod punca kuasa dua daripada Thor's Hammer Prinsip ini telah diperkenalkan di banyak tempat, jadi saya tidak akan menerangkan secara terperinci.
Kod sumber ditulis dalam bahasa C Selepas memikirkannya, saya mendapati bahawa algoritma sedemikian juga boleh dilengkapkan dalam 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; }
Ujian:
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
Walaupun hasilnya masih lebih perlahan daripada pustaka sistem, dan ketepatan sememangnya rendah. Tetapi saya berpuas hati.
Di atas adalah pelaksanaan algoritma punca kuasa dua aritmetik menggunakan JavaScript Bagaimana dengan kod ini sangat mudah. !