sqrt函数
来源:互联网 发布:淘宝vr 编辑:程序博客网 时间:2024/06/05 17:54
#define eps 1e-9
double mySqrt(double a)
{
assert(a>=0);
double low=0,up=a;
double mid;
while (abs(up-low) >eps)
{
mid=(low+up)/2;
if (mid*mid>a)
{up=mid;
}
if (mid*mid<a)
{low=mid;
}
}
return mid;
}
double sqrtByNewton(double a)
{
double result=a;
while(abs(result*result-a)>eps)
{
result=(result+a/result)/2;
}
return result;
}//0x5f375a86
double newSqrt(double a)
{
double result=0x5f375a86;
while(abs(result*result-a)>eps)
{
result=(result+a/result)/2;
}
return result;
}//0x5f375a86
int main()
{
double a=65555.45;
clock_t start,end;
start=clock();
cout<<"sqrt: "<<sqrt(a)<<"__";
end=clock();cout<<"total time is:"<< (double)(end - start)<<endl;
start=clock();
cout<<"mySqrt: "<<mySqrt(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
start=clock();
cout<<"sqrtByNewton:"<<sqrtByNewton(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
start=clock();
cout<<"newSqrt: "<<newSqrt(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
system("pause");
return 0;
double mySqrt(double a)
{
assert(a>=0);
double low=0,up=a;
double mid;
while (abs(up-low) >eps)
{
mid=(low+up)/2;
if (mid*mid>a)
{up=mid;
}
if (mid*mid<a)
{low=mid;
}
}
return mid;
}
double sqrtByNewton(double a)
{
double result=a;
while(abs(result*result-a)>eps)
{
result=(result+a/result)/2;
}
return result;
}//0x5f375a86
double newSqrt(double a)
{
double result=0x5f375a86;
while(abs(result*result-a)>eps)
{
result=(result+a/result)/2;
}
return result;
}//0x5f375a86
int main()
{
double a=65555.45;
clock_t start,end;
start=clock();
cout<<"sqrt: "<<sqrt(a)<<"__";
end=clock();cout<<"total time is:"<< (double)(end - start)<<endl;
start=clock();
cout<<"mySqrt: "<<mySqrt(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
start=clock();
cout<<"sqrtByNewton:"<<sqrtByNewton(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
start=clock();
cout<<"newSqrt: "<<newSqrt(a)<<"__";
end=clock();cout<<"total time is:"<<(double)(end - start)<<endl;
system("pause");
return 0;
}
2分法,牛顿迭代法,以及优化初值的改良牛顿迭代法
0 0
- sqrt () 函数
- sqrt 函数
- sqrt函数
- sqrt()函数
- sqrt函数
- sqrt 函数 -> 想想实现
- sqrt()函数注意
- C语言sqrt函数
- sqrt函数实现
- sqrt 函数 -> 想想实现
- JavaScript Math.sqrt() 函数
- sqrt函数有三种形式
- sqrt函数实现分析
- sqrt()函数详解
- sqrt函数的实现
- sqrt函数实现
- sqrt函数实现
- Sqrt函数高效实现
- win8系统下如何使用管理员权限运行CMD
- Android的数据恢复的唯一方法,您可以使用
- Android的培训,以Excel中的图表事业IT行业
- 【Oracle强化】⑦第七章 创建函数
- Android的IPTV机顶盒是你在家庭多媒体设备
- sqrt函数
- 程序员的这一天:也许永远不会到来
- Android的 - 的WhatsApp Messenger的旅程
- Linux开机启动十步骤
- hdoj.1999 不可摸数 20140809
- Asterisk怎么开启CDR通话记录
- 播放声音跟录音详细流程
- Android游戏开发 - 放心服务的Android游戏开发印度彻底娱乐
- Android是所有组压倒奥斯