快速开方算法比较

快速开方算法比较:

public class Test {
	
	private static int a,b,c,p=0x80; 
	private static int K,A,B,C,R=0x4000,D=60000; 
	
	public static float sqt1(){ 
		if(D>50176){A=0;   a=0;  C=50176;c=224;} // 查表 
		  else if(D>36864){A=50176;a=224;C=36864;c=192;}      
		  else if(D>25600){A=36864;a=192;C=25600;c=160;}
		  else if(D>16384){A=25600;a=160;C=16384;c=128;}
		  else if(D>9216) {A=16384; a=128;C= 9216; c= 96;} 
		  else if(D>4096) {A= 9216; a= 96; C= 4096; c= 64; }
		  else if(D>1024) {A= 4096; a= 64; C= 1024; c= 32; } 
		  else {
			  A= 1024; a= 32; C= 0;    c= 0;  
		  }
		p=16;R=256;                // 初始化数据 
		  do{ b=c+p;B=C;B>>=1;       // 插值计算循环 
		     if(A!=0){K=A;K>>=1;} 
		        else K=0x8000;        // 65536>>=1的数 
		     B+=K;B-=R; 
		     if(D>B){C=B;c=b;} 
		        else{A=B;a=b;} 
		     p>>=1;R>>=2; 
		     }while(p!=1);             // 循环4次结束 
		   K=A-C;K>>=2;A-=K; C+=K;  // 小数部分四舍五入 
		   if(D<C)b=c; 
		      else{ 
		      if(D<A)b=++c; 
		         else b=a;
		      }
		   return b;
	}         //输出方根b 

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Calculagraph.getInstance("fast").mark(null);
		int i=0;
		for(i=0;i<655350;i++)
		{
			D=i;
			sqt1();
		}
		System.out.println(i);
		Calculagraph.getInstance("fast").mark("end");
		System.out.println(Calculagraph.remove("fast").getInfo());		//30ms
		
		Calculagraph.getInstance("normal").mark(null);
		for(i=0;i<655350;i++)
		{
			Math.sqrt(i);
		}
		System.out.println(i);
		Calculagraph.getInstance("normal").mark("end");
		System.out.println(Calculagraph.remove("normal").getInfo());	//10ms
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值