public class DeveloppementLimiteSinusv2 {
  
///////////////////////////////////////////////////////

/* Calcul de la valeur de sin(a) au voisinage de 0.0 */
/* Utilisation du developpement limite               */
/* La valeur de a est donnee                         */

  static double sinus(double a) {
    double signe;
    long fact;
    double puissance;
    double sn;
    signe = 1.0;
    fact = 1L;
    puissance = a;
    sn = a;
    for ( int i = 3 ; i <= 11 ; i = i+2 ) {
      signe = -signe;
      fact = fact*i*(i-1);
      puissance = puissance*a*a;
      sn = sn + signe*puissance/fact; }
    return sn;
  }

///////////////////////////////////////////////////////

/* Programme principal                               */

  public static void main(String [] args) {
    double angle;
    double sin;
    Ecran.afficher("SVP, l'angle : ");
    angle = Clavier.saisirDouble();  
    sin = sinus(angle);
    Ecran.afficherln("sin(",angle,") = ",sin);
    Ecran.afficherln("Valeur reelle = ",Math.sin(angle));
    Ecran.afficherln("Difference = ",Math.sin(angle)-sin);
  }
}