/* Recherche de la racine carree d'un reel       */
/* compris entre 0.0 et 100.0                    */
/* Utilisation d'une methode dichotomique        */

public class RechercheRacineCarree {

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

  static final double EPSILON = 0.0000001;
  
/* Recherche de la racine carree d'un reel       */
/* compris entre 0.0 et 100.0                    */
/* Utilisation d'une methode dichotomique        */
/* v : Valeur dont on recherche la racine carree */
/*     (comprise entre 0.0 et 100.0)             */

  static double racine(double v) {
    double ai = 0.0;
    double af = 10.0;
    double mid;
    do {
      mid = (af+ai)/2.0;
      if ( mid*mid > v ) {
        af = mid; }
        else {
        ai = mid; } }
    while ( af-ai > EPSILON );
    return mid;
  }

///////////////////////////////////////////////////
  
/* Programme principal                           */

  public static void main(String [] args) {
    double v;
    Ecran.afficher("Valeur  : ");
    v = Clavier.saisirDouble();
    Ecran.afficherln("Racine carree de ",v," = ",racine(v));
  }
}