最快的开平方 sqrt 算法,供赏析
绝妙之处,没有使用循环。
chunli@chunli-Aspire-E1-471G:~/lab$catmain.c#include"stdio.h"floatSqrtByCarmack(floatnumber){inti;floatx2,y;constfloatthreehalfs=1.5F;x2=number*0.5F;y=number;i=*(int*)&y;i=0x5f375a86-(i>>1);y=*(float*)&i;y=y*(threehalfs-(x2*y*y));y=y*(threehalfs-(x2*y*y));y=y*(threehalfs-(x2*y*y));returnnumber*y;}intmain(){printf("%f\n",SqrtByCarmack(998001));printf("%f\n",SqrtByCarmack(99.99998));printf("%f\n",SqrtByCarmack(3025));printf("%f\n",SqrtByCarmack(1));printf("%f\n",SqrtByCarmack(1.21));printf("%f\n",SqrtByCarmack(1.5129));printf("%f\n",SqrtByCarmack(1.522756));printf("%f\n",SqrtByCarmack(1.52399025));printf("%f\n",SqrtByCarmack(1.52413839));printf("%f\n",SqrtByCarmack(1.52415568));return0;}chunli@chunli-Aspire-E1-471G:~/lab$gcc-Wallmain.c&&./a.out999.0000009.99999955.0000001.0000001.1000001.2300001.2340001.2345001.2345601.234567chunli@chunli-Aspire-E1-471G:~/lab$
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。