算法大全:
1、求平方根(二分法)
double sqrt(double x)
{double s,e;//平方根位于s~e区间内
if(x<0) printf("x不能小于零!");
else if(x<1) s=x,e=1;
else s=0,e=x;
while(s!=e)
{if((s+e)*(s+e)/4-x>0) e=(s+e)/2;
else s=(s+e)/2;}
return s;}
2、求三角函数(矩阵)
//求零到一千度以内且为整数的正弦函数
//旋转x度的矩阵为{{cos,sin},{-sin,cos}}
#define S1=0.0174…
#define C1=0.9998…
#define S10=0.1736…
#define C10=0.9848…
#define S100=0.9848…
#define C100=-0.1736…
double m1 [2][2]={{C1,S1},{-S1,C1}};//旋转1度的矩阵,下面同理
double m10[2][2]={{C10,S10},{-S10,C10}};
double m100[2][2]={{C100,S100},{-S100,C100}};
void rotate(double x,double y,double m[2][2])
{double x2=x*m[0][0]+y*m[1][0];
double y2=x*m[0][1]+y*m[1][1];
x=x2;y=y2;}
double sine(int x)
{int d100=x/100;//获取100的整倍数,下同
int d10=(x-d100*100)/10;
int d1=(x-d100*100-d10*10);
double y=0,x=1;
for(int i=0;i<d100,i++) rotate(x,y,m100);
for(int i=0;i<d10,i++) rotate(x,y,m10);
for(int i=0;i<d1,i++) rotate(x,y,m1);
return y;}