最快的开平方 sqrt 算法,供赏析
admin
2023-07-29 12:00:08
0



绝妙之处,没有使用循环。




chunli@chunli-Aspire-E1-471G:~/lab$ cat main.c 
#include "stdio.h"

float SqrtByCarmack( float number )  
{  
    int i;  
    float x2, y;  
    const float threehalfs = 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 ) );   
    return number*y;  
}  


int main()
{
	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));
	return 0;
}
chunli@chunli-Aspire-E1-471G:~/lab$ gcc -Wall main.c  && ./a.out 
999.000000
9.999999
55.000000
1.000000
1.100000
1.230000
1.234000
1.234500
1.234560
1.234567
chunli@chunli-Aspire-E1-471G:~/lab$







相关内容

热门资讯

7-11便利店起诉耐克新鞋配色... 封面新闻记者 赵奕 柴枫桔据路透社7月2日报道,跨国连锁零售公司7-Eleven(7-11)已在美国...
香港患者北上寻药:部分抗癌药内... 距离深圳福田口岸约十多分钟车程的深圳新风和睦家医院,开业仅有四年,肿瘤科中的中国香港患者占比达到75...
陈奕迅女儿回应父亲购买1.8亿... 近日,陈奕迅女儿陈康堤在接受采访时,首度回应了父亲购买约1.8亿(港元)豪宅一事。陈康堤表示:“他没...
福山:美国或衰落下去,最终将领... 【文/观察者网 冯雪】美国迎来建国250周年前夕,日裔美籍学者弗朗西斯·福山(Francis Fuk...
热水器调节不了温度 热水器无法调节水温,是不能调节温度的,可以通过调节水量开关和火力开关来调节水温。热水器有两个温度调节...
科龙冷藏柜的温度调节 冷藏柜的调节可以通过外置温度调节器来实现,在调节的时候注意温度要和环境温度相结合,档位越高表示温度越...
没有网线连接电视机的方法 对于没有网线连接电视机的情况,有以下几种方法可供选择。 1.使用WiFi连接器 现在市场上有很多...
电视机的普及方法 电视机是一种广泛使用的家庭娱乐设备。随着科技的发展,电视机不仅仅是一个娱乐平台,同时也被用于教育、新...
海尔电视机挂墙上的方法 如果你想要让你的海尔电视机挂在墙上,有一些重要的事情你需要考虑。首先,你需要确保你的电视机符合标准墙...
佛得角输了,但没有人会否认这场... 我想,这一刻会让很多人动容。佛得角2 : 3惜败阿根廷,止步世界杯淘汰赛。但看过的人都知道,这不只是...