要求不用c运行库的数学库函数,不要使用关于浮点运算的汇编语言直接计算结果。
这里先说一说double型数据的结构,从高到低,第一位是符号位,跟着的11位为指数部
分,是2的幂次,剩下的52位是小数部分。
N开平方(二分法):
//sovle the sqrt of N;(0,N),x^2-N=0;y=x^2-N;
#include<stdio.h>
#define N 8
#define M 0.000001
double f(double );
main ()
{
double a,b,m;
a=0;
b=N;
m=(a+b)/2;
while ((b-a)/2>=M) {
if (f(a)*f(m)<=0) {
b=m;
m=(a+b)/2;
}
else {
a=m;
m=(a+b)/2;
}
}
printf("The result is %.30f\n",m);
}
double f(double t)
{
return t*t-N;
}
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=978842