超快速开平方0x5f3759df算法探究
来源:互联网 发布:alpine linux 添加源 编辑:程序博客网 时间:2024/05/16 14:19
//$0x5f337b4a$算法的C语言实现与速度测试}#include<stdio.h>#include<time.h>#include<stdio.h>#define N 100000#include<math.h>float Q_tsqrt(float number){ long i; float x2,y; const float threehalfs=1.5F; x2=number*0.5F; y=number; i=*(long *)&y; //i=0x5f3759df-i/2; i=0x5f337b4a-i/2; //i=0x54a352a8-i/3; y=*(float *)&i;// y=y*(threehalfs-(x2*y*y));// y = y * ( threehalfs - ( x2 * y * y ) );// y = y * ( threehalfs - ( x2 * y * y ) );// return y;}int main(){ int k; float j;long double i;clock_t start, finish; double time;start = clock(); for(k=0;k<N;k++){ j=1/Q_tsqrt(k); printf("%f\n",j);} /*for(k=0;k<N;k++){ j=sqrt(k); printf("%f\n",j);} */finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; //printf("i的值为%lf\n",i);printf( "运行时间为\n%f 秒\n",time);//显示 return 0;}
//牛顿迭代法开方#include<stdio.h>#include<time.h>#include<stdio.h>#define N 50000#include<math.h>float a[1000];float newton_sqrt(int c){ int k=2; a[0]=5.0; a[1]=0.5*(a[0]+c/a[0]); while(a[k]-a[k-1]<0.1){ a[k]=0.5*(a[k-1]+c/a[k-1]); k++; } return a[k-1];}int main(){ int k; float j;long double i;clock_t start, finish; double time; start = clock(); for(k=0;k<N;k++){ j=newton_sqrt(k); printf("%f\n",j);} finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; printf( "运行时间为\n%f 秒\n",time);//显示 return 0;}
//$sqrt()$速度测试#include<stdio.h>#include<time.h>#include<stdio.h>#define N 100#include<math.h>int main(){ int k; float j;long double i;clock_t start, finish; double time; start = clock(); for(k=0;k<N;k++){ j=sqrt(k); printf("%f\n",j);} finish = clock(); time = (double)(finish - start) / CLOCKS_PER_SEC; printf( "运行时间为\n%f 秒\n",time);//显示 return 0;}
1 0
- 超快速开平方0x5f3759df算法探究
- 神秘的0x5f3759df之卡马克的开平方算法
- 快速开平方的算法
- 整数快速开平方算法
- 整数快速开平方算法
- 最快速的开平方算法
- 单片机开平方的快速算法
- 开平方算法
- 开平方算法
- 开平方算法
- 三角函数快速算法(反正切,正余弦,开平方)
- 一种快速开平方并取倒数算法
- 快速开平方根算法
- 浮点数快速开平方
- Quake3 快速开平方和开平方倒数计算优化
- 开平方的算法(转)
- 记录几个开平方算法
- 几种开平方算法
- 【软工】风险分析
- nyoj+二分函数lower_bound+大数组的注意事项
- PHP面向对象1.3对象中成员的访问和构造析构函数
- 个人博客推广声明
- gdb调试
- 超快速开平方0x5f3759df算法探究
- 黑马程序员——oc语言学习心得—— 手动管理内存
- 类的静态成员
- 12. Xcode7 使用http
- nyoj+stack的简单使用
- 黑马程序员——oc语言学习心得—— 自定义构造方法
- Intellij idea13配置tomcat,并实现一个简单的servlet
- 四、View的事件体系续
- 黑马程序员——oc语言学习心得—— 代理模式