/* Test de precision sur les double                 */

public class TestPrecisionDouble {

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

  /* Test de precision sur les double               */

  public static void main(String [] args) {
    /* Travail sur des double (double precision)    */
    double v;
    /* Stockage de 1.0                              */
    /* -> Pas de perte de precision sur le stockage */
    /* -> Pas de probleme                           */
    v = 1.0;
    Ecran.formater("%26.18f\n\n",v);
    /* Stockage de 0.9999999999999999               */
    /* -> Pas de perte de precision sur le stockage */
    /* -> Pas de probleme                           */
    v = 0.9999999999999999;
    Ecran.formater("%26.18f\n\n",v);
    /* Stockage de 0.99999999999999999              */
    /* -> Perte de precision sur le stockage        */
    /* -> Probleme                                  */
    v = 0.99999999999999999;
    Ecran.formater("%26.18f\n\n",v);
    /* Stockage de 1.0e-16                          */
    /* -> Pas de perte de precision sur le stockage */
    /* -> Pas de probleme                           */
    v = 1.0e-16;
    Ecran.formater("%26.18f\n\n",v);
    /* Ajout a 1.0 de la valeur 1.0e-15             */
    /* -> Pas de perte de precision sur le stockage */
    /*    ni d'erreur de calcul                     */
    /* -> Pas de probleme                           */
    v = 1.0 + 1.0e-15;
    Ecran.formater("%26.18f\n",v);
    Ecran.formater("%26.18f\n\n",1.000000000000001);
    /* Ajout a 1.0 de la valeur 1.0e-16             */
    /* -> perte de precision sur le stockage        */
    /*    ou erreur de calcul                       */
    /* -> Probleme                                  */
    v = 1.0 + 1.0e-16;
    Ecran.formater("%26.18f\n",v);
    Ecran.formater("%26.18f\n\n",1.0000000000000001);
    /* Stockage de la valeur 1.000000000000001      */
    /* -> Pas de probleme                           */
    /* Multiplication par 6.0                       */
    /* -> Erreur de calcul                          */
    /*    Pas de perte de precision sur le stockage */
    /*    car bonne valeur stockable                */
    /* -> Probleme                                  */
    v = 1.00000000000011;
    Ecran.formater("%26.18f\n",v);
    v = v*6.0;
    Ecran.formater("%26.18f\n",v);
    Ecran.formater("%26.18f\n\n",6.00000000000066);
    /* Stockage de la valeur 1.111e100              */
    /* -> Pas de perte de precision                 */
    /* -> Pas de probleme                           */
    v = 1.111e100;
    Ecran.formater("%26.18e\n\n",v);
    /* Multiplication de 1.111e100 par 1.111e100    */
    /* -> Erreur de calcul                          */
    /*    Pas de perte de precision sur le stockage */
    /*    car bonne valeur stockable                */
    /* -> Probleme                                  */
    v = 1.111e100*1.111e100;
    Ecran.formater("%26.18e\n",v);
    Ecran.formater("%26.18e\n\n",1.234321e200);
    /* Depassement de capacite                      */
    /* -> Probleme                                  */
    v = 1.111e100*1.111e200*1.111e100*1.111e200;
    Ecran.formater("%26.18f\n\n",v);
  }

//////////////////////////////////////////////////////
}