#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI (4*atan(1.0))
#endif
double sinus(double x);
double cosinus(double x);
double sinus(double x) {
if(fabs(x
) < 2.45E-5) { // (2.45E-5)²/6 ≈ 1E-10 return x;
} else {
return 2 * sinus(x/2) * cosinus(x/2);
}
}
double cosinus(double x) {
if(fabs(x
) < 1.4E-5) { // (1.4E-5)²/2 ≈ 1E-10 return 1;
} else {
double c = cosinus(x/2), s = sinus(x/2);
return (c + s) * (c - s);
}
}
int main() {
printf("sin(π/6) = %f\n", sinus
(M_PI
/6)); printf("cos(π/3) = %f\n", cosinus
(M_PI
/3)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojaWZuZGVmIE1fUEkKI2RlZmluZSBNX1BJICg0KmF0YW4oMS4wKSkKI2VuZGlmCgpkb3VibGUgc2ludXMoZG91YmxlIHgpOwpkb3VibGUgY29zaW51cyhkb3VibGUgeCk7Cgpkb3VibGUgc2ludXMoZG91YmxlIHgpIHsKICAgIGlmKGZhYnMoeCkgPCAyLjQ1RS01KSB7IC8vICgyLjQ1RS01KcKyLzYg4omIIDFFLTEwCiAgICAgICAgcmV0dXJuIHg7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAyICogc2ludXMoeC8yKSAqIGNvc2ludXMoeC8yKTsKICAgIH0KfQoKZG91YmxlIGNvc2ludXMoZG91YmxlIHgpIHsKICAgIGlmKGZhYnMoeCkgPCAxLjRFLTUpIHsgLy8gKDEuNEUtNSnCsi8yIOKJiCAxRS0xMAogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIHsKICAgICAgICBkb3VibGUgYyA9IGNvc2ludXMoeC8yKSwgcyA9IHNpbnVzKHgvMik7CiAgICAgICAgcmV0dXJuIChjICsgcykgKiAoYyAtIHMpOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIHByaW50Zigic2luKM+ALzYpID0gJWZcbiIsIHNpbnVzKE1fUEkvNikpOwogICAgcHJpbnRmKCJjb3Moz4AvMykgPSAlZlxuIiwgY29zaW51cyhNX1BJLzMpKTsKICAgIHJldHVybiAwOwp9Cg==