Traductions de cette page?:

sin

Syntaxe :

    #include <cmath>
    double sin (double arg);

La fonction sin() renvoie le sinus de arg, où arg est exprimé en radians. La valeur de retour de sin() sera dans l'intervalle [-1,1]. Si arg est infini, sin() va renvoyer NAN et lever une exception de type virgule flottante.

Le C++ fournit également les implémentations suivantes :

    #include <cmath>
    float sin (float arg); // identique à sinf() en C99
    long double sin (long double arg); // identique à sinl() en C99

Une solution possible pour approximer la fonction sinus est d'utiliser les séries de Taylor en partant du fait que sin(x) = x - x3/3! + x5/5! - x7/7! + …, ce qui mène au code suivant :

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 signe = 1, x = theta/M_PI;
  if (x < 0.0) {
    signe = -1;
    x = -x;
  }
  int i = static_cast<int>(x+0.5);
  float a = x-i;
  if ((i-i/2*2) != 0) signe = -signe;
  return signe * sin2(a*M_PI);
}

Sujets connexes : acos, asin, atan, atan2, cos, cosh, sinh, tan, tanh