#include <iostream>
#include <iomanip>
using namespace std;
double sinus( double x, int precision = 10 )
{
double wynik = 0;
double y = x;
double z = 2;
for ( int n = 0; n < precision; ++n )
{
wynik += y;
y *= -x * x;
y = y / ( z++ );
y = y / ( z++ );
}
return wynik;
}
inline double deg_to_rad( double degrees )
{
return degrees * 0.01745329251994329577; // degrees * pi / 180
}
int main()
{
cout << setprecision(20);
cout << sinus( deg_to_rad( 35.0 ) ) << endl; // 0.57357643635104609611
cout << sinus( deg_to_rad( 50.0 ), 100 ) << endl; // 0.7660444431189780352
cout << sinus( deg_to_rad( 45.0 ), 200 ) << endl; // 0.7071067811865475244
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgc2ludXMoIGRvdWJsZSB4LCBpbnQgcHJlY2lzaW9uID0gMTAgKQp7CiAgICBkb3VibGUgd3luaWsgPSAwOwogICAgZG91YmxlIHkgPSB4OwogICAgZG91YmxlIHogPSAyOwogCiAgICBmb3IgKCBpbnQgbiA9IDA7IG4gPCBwcmVjaXNpb247ICsrbiApCiAgICB7CiAgICAgICAgd3luaWsgKz0geTsKICAgICAgICB5ICo9IC14ICogeDsKICAgICAgICB5ID0geSAvICggeisrICk7CiAgICAgICAgeSA9IHkgLyAoIHorKyApOwogICAgfQogCiAgICByZXR1cm4gd3luaWs7Cn0KCmlubGluZSBkb3VibGUgZGVnX3RvX3JhZCggZG91YmxlIGRlZ3JlZXMgKQp7CglyZXR1cm4gZGVncmVlcyAqIDAuMDE3NDUzMjkyNTE5OTQzMjk1Nzc7IC8vIGRlZ3JlZXMgKiBwaSAvIDE4MAp9CgppbnQgbWFpbigpCnsKCWNvdXQgPDwgc2V0cHJlY2lzaW9uKDIwKTsKCWNvdXQgPDwgc2ludXMoIGRlZ190b19yYWQoIDM1LjAgKSApIDw8IGVuZGw7IC8vIDAuNTczNTc2NDM2MzUxMDQ2MDk2MTEKCWNvdXQgPDwgc2ludXMoIGRlZ190b19yYWQoIDUwLjAgKSwgMTAwICkgPDwgZW5kbDsgLy8gMC43NjYwNDQ0NDMxMTg5NzgwMzUyCgljb3V0IDw8IHNpbnVzKCBkZWdfdG9fcmFkKCA0NS4wICksIDIwMCApIDw8IGVuZGw7IC8vIDAuNzA3MTA2NzgxMTg2NTQ3NTI0NAoJCglyZXR1cm4gMDsKfQ==