#include <stdio.h>
#include <math.h>
#define EPS 1e-6
#define PI 3.14159
static int j_;
float taylor_series(float x) {
j_ = 1;
return x;
float w = x * x;
float y = x;
float z = 1.0;
float s = x;
for ( ; ; ) {
y *= -w;
z *= ++j_;
z *= ++j_;
float t = y / z;
if (fabs(t
) < EPS
) break; s += t;
}
return s;
}
int main(void) {
printf("%f\t", taylor_series
(PI
* 0.5)); printf("%f\t", taylor_series
(0.000123)); printf("%f\t", taylor_series
(PI
* 0.25)); printf("%f\t", taylor_series
(PI
* 1.25)); printf("%f\t", taylor_series
(PI
* 2.25)); printf("%f\t", taylor_series
(PI
* 3.25)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIEVQUyAxZS02CiNkZWZpbmUgUEkgMy4xNDE1OQpzdGF0aWMgaW50IGpfOwoKZmxvYXQgdGF5bG9yX3NlcmllcyhmbG9hdCB4KSB7CglqXyA9IDE7CgoJaWYgKGZhYnMoeCkgPCBFUFMpIAoJCXJldHVybiB4OwoKCWZsb2F0IHcgPSB4ICogeDsKCWZsb2F0IHkgPSB4OwoJZmxvYXQgeiA9IDEuMDsKCWZsb2F0IHMgPSB4OwoKCWZvciAoIDsgOyApIHsKCQl5ICo9IC13OwoJCXogKj0gKytqXzsKCQl6ICo9ICsral87CgkJZmxvYXQgdCA9IHkgLyB6OwoJCWlmIChmYWJzKHQpIDwgRVBTKSBicmVhazsKCQlzICs9IHQ7Cgl9CgoJcmV0dXJuIHM7Cn0KCmludCBtYWluKHZvaWQpIHsKCXByaW50ZigiJWZcdCIsIHRheWxvcl9zZXJpZXMoUEkgKiAwLjUpKTsKCXByaW50ZigiJWZcdCIsIHNpbihQSSAqIDAuNSkpOwoJcHJpbnRmKCIlZFxuIiwgal8pOwoJcHJpbnRmKCIlZlx0IiwgdGF5bG9yX3NlcmllcygwLjAwMDEyMykpOwoJcHJpbnRmKCIlZlx0Iiwgc2luKDAuMDAwMTIzKSk7CglwcmludGYoIiVkXG4iLCBqXyk7CglwcmludGYoIiVmXHQiLCB0YXlsb3Jfc2VyaWVzKFBJICogMC4yNSkpOwoJcHJpbnRmKCIlZlx0Iiwgc2luKFBJICogMC4yNSkpOwoJcHJpbnRmKCIlZFxuIiwgal8pOwoJcHJpbnRmKCIlZlx0IiwgdGF5bG9yX3NlcmllcyhQSSAqIDEuMjUpKTsKCXByaW50ZigiJWZcdCIsIHNpbihQSSAqIDEuMjUpKTsKCXByaW50ZigiJWRcbiIsIGpfKTsKCXByaW50ZigiJWZcdCIsIHRheWxvcl9zZXJpZXMoUEkgKiAyLjI1KSk7CglwcmludGYoIiVmXHQiLCBzaW4oUEkgKiAyLjI1KSk7CglwcmludGYoIiVkXG4iLCBqXyk7CglwcmludGYoIiVmXHQiLCB0YXlsb3Jfc2VyaWVzKFBJICogMy4yNSkpOwoJcHJpbnRmKCIlZlx0Iiwgc2luKFBJICogMy4yNSkpOwoJcHJpbnRmKCIlZFxuIiwgal8pOwoJcmV0dXJuIDA7Cn0K