最快的开平方 sqrt 算法,供赏析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最快的开平方 sqrt 算法,供赏析相关的知识,希望对你有一定的参考价值。



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




[email protected]:~/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;
}
[email protected]:~/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
[email protected]:~/lab$







本文出自 “李春利” 博客,请务必保留此出处http://990487026.blog.51cto.com/10133282/1941559

以上是关于最快的开平方 sqrt 算法,供赏析的主要内容,如果未能解决你的问题,请参考以下文章

C语言中开平方函数是啥?

c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)

go 牛顿法开平方

QT的开平方函数是啥呀?

用 逻辑电路 实现一个 开平方 算法

一种高速开平方并取倒数算法