#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#define EPSILON 1e-10
int main(void)
{
int n;
double rad, ckrad, sinrad = 0.0;
double k = 1.0, l, radrad;
ckrad = l = rad;
radrad = rad * rad;
for (n
= 0; n
< 5 && fabs(ckrad
) >= EPSILON
* sinrad
; n
++) { if ((n % 2) == 0)
sinrad += ckrad;
else
sinrad -= ckrad;
k *= (2 * k + 1) * (2 * (k + 1) + 1);
l *= radrad;
ckrad = l / k;
}
printf("taylor sin(rad) = %.15lf\n", sinrad
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPGZsb2F0Lmg+CgojZGVmaW5lIEVQU0lMT04gMWUtMTAKCmludCBtYWluKHZvaWQpCnsKICBpbnQgbjsKICBkb3VibGUgcmFkLCBja3JhZCwgc2lucmFkID0gMC4wOwogIGRvdWJsZSBrID0gMS4wLCBsLCByYWRyYWQ7CgogIHByaW50ZigiaW5wdXQgcmFkID0iKTsKICBzY2FuZigiJWxmIiwgJnJhZCk7CgogIGNrcmFkID0gbCA9IHJhZDsKICByYWRyYWQgPSByYWQgKiByYWQ7CiAgCiAgZm9yIChuID0gMDsgbiA8IDUgJiYgZmFicyhja3JhZCkgPj0gRVBTSUxPTiAqIHNpbnJhZDsgbisrKSB7CiAgICBpZiAoKG4gJSAyKSA9PSAwKQogICAgICBzaW5yYWQgKz0gY2tyYWQ7CiAgICBlbHNlCiAgICAgIHNpbnJhZCAtPSBja3JhZDsKICAgIGsgKj0gKDIgKiBrICsgMSkgKiAoMiAqIChrICsgMSkgKyAxKTsKICAgIGwgKj0gcmFkcmFkOwogICAgY2tyYWQgPSBsIC8gazsKICB9CgogIAogIHByaW50Zigic2luKHJhZCkgICAgICAgID0gJS4xNWxmXG4iLCBzaW4ocmFkKSk7CiAgcHJpbnRmKCJ0YXlsb3Igc2luKHJhZCkgPSAlLjE1bGZcbiIsIHNpbnJhZCk7CgoKICByZXR1cm4gMDsKfQ==