sin
Z cppreference.com
Składnia:
#include <cmath>
double sin( double arg );
Funkcja sin() zwraca wartość sinusa z arg, gdzie arg jest podany w radianach. Zwracana wartość należy do przedziału [-1,1]. Jeśli arg jest nieskończonością, to sin() zwróci NAN i wywoła wyjątek floating-point exception.
C++ dostarcza przeciążone wersje funkcji:
#include <cmath>
float sin( float arg ); // to samo co sinf() w C99
long double sin( long double arg ); // to samo co sinl() w C99
Jedna z mozliwości przybliżenia wartości sinusa szeregiem Taylora wykorzystuje fakt, że sin(x) = x - x3/3! + x5/5! - x7/7! + ... Zatem otrzymujemy poniższy kod:
long factrl(int n) {
long la = 1;
for( int i = 2; i <= n; i++ ) la *= i;
return la;
}
float sin2(float x) {
int i;
float y=x ,r=x;
for( int i=0; i < 10; i++ ) {
y *= -x*x;
r += 1.0 / factrl( 1+2*(i+1) ) * y;
}
return r;
}
float sin(float theta) {
float znak = 1, x = theta/M_PI;
if (x < 0.0) {
znak = -1;
x = -x;
}
int i = static_cast<int>(x+0.5);
float a = x-i;
if( (i-i/2*2) != 0 ) znak = -znak;
return znak * sin2(a*M_PI);
}
Powiązane tematy: acos, asin, atan, atan2, cos, cosh, sinh, tan, tanh