超快速开平方0x5f3759df算法探究

超快速开平方0x5f3759df算法探究_第1张图片
超快速开平方0x5f3759df算法探究_第2张图片
超快速开平方0x5f3759df算法探究_第3张图片
超快速开平方0x5f3759df算法探究_第4张图片
超快速开平方0x5f3759df算法探究_第5张图片
超快速开平方0x5f3759df算法探究_第6张图片
超快速开平方0x5f3759df算法探究_第7张图片
超快速开平方0x5f3759df算法探究_第8张图片
超快速开平方0x5f3759df算法探究_第9张图片
超快速开平方0x5f3759df算法探究_第10张图片
超快速开平方0x5f3759df算法探究_第11张图片
超快速开平方0x5f3759df算法探究_第12张图片
超快速开平方0x5f3759df算法探究_第13张图片
超快速开平方0x5f3759df算法探究_第14张图片
超快速开平方0x5f3759df算法探究_第15张图片
超快速开平方0x5f3759df算法探究_第16张图片

//$0x5f337b4a$算法的C语言实现与速度测试}
#include
#include
#include
#define N 100000
#include
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;k1/Q_tsqrt(k);
     printf("%f\n",j);
} 
/*
for(k=0;k
finish = clock(); 
time = (double)(finish - start) / CLOCKS_PER_SEC; 
//printf("i的值为%lf\n",i);
printf( "运行时间为\n%f 秒\n",time);//显示

    return 0;
} 
//牛顿迭代法开方
#include
#include
#include
#define N 50000
#include
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;kprintf("%f\n",j);
} 
finish = clock(); 
time = (double)(finish - start) / CLOCKS_PER_SEC; 
printf( "运行时间为\n%f 秒\n",time);//显示

    return 0;
} 
//$sqrt()$速度测试
#include
#include
#include
#define N 100
#include
int main()
{
    int k;
    float j;

long double i;
clock_t start, finish; 
double time; 
start = clock(); 
for(k=0;ksqrt(k);
     printf("%f\n",j);
} 
finish = clock(); 
time = (double)(finish - start) / CLOCKS_PER_SEC; 
printf( "运行时间为\n%f 秒\n",time);//显示

    return 0;
} 

你可能感兴趣的:(算法学习)