|
#include <stdio.h>
#include <math.h>
double mysin(double z);
int main(void)
{
double x;
printf("\tx\tsin x \t\tmysin x\n");
for (x = 0.0; x < 3.3; x += 0.1) {
printf("\t%3.1f\t%12.10f\t%12.10f\n", x, sin(x), mysin(x));
}
return 0;
}
double mysin(double z)
{
const double eps = 1.0e-10;
double z2, kai, diff, mysinsave;
int p;
mysinsave = z;
z2 = z * z;
kai = 1;
p = 3;
while (1) {
z = -z * z2;
kai *= (p - 1) * p;
p += 2;
diff = z / kai;
mysinsave += diff;
if (fabs(diff) < eps) {
break;
}
}
return mysinsave;
}
|