/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   R A T I O N N E L L E   D ' U N   N O M B R E   R E E L  :                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande (inspiree du programme                                                                          */
/*                  'v $xtc/ApproximationRationnelle.21$c'                                                                           */
/*                  et de 'v $xtc/ApproximationRationnelle.11$c'                                                                     */
/*                  donne un rationnel approchant au mieux                                                                           */
/*                  (en particulier avec le plus petit denominateur)                                                                 */
/*                  un reel donne...                                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xcg/ApproximationRationnelle.01$K' :                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20180828105551).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   UTILISER_LA_METHODE_DES_FRACTIONS_CONTINUES                                                                                   \
                    VRAI                                                                                                                \
                                        /* Faut-il utiliser une decomposition en fraction continue ('VRAI') ou une methode           */ \
                                        /* explorant le debut de l'ensemble des rationnels numerotes ('FAUX') ?                      */

#define   NOMBRE_REEL                                                                                                                   \
                    FU                                                                                                                  \
                                        /* Nombre "reel" (en fait un malheureux nombre flottant...) a approximer par un rationnel.   */
#define   EPSILON_DE_COINCIDENCE                                                                                                        \
                    tgEPSILON                                                                                                           \
                                        /* Epsilon utilise pour savoir si l'approximation est bonne...                               */
#define   DERNIERE_FAMILLE_DE_RATIONNELS_A_TESTER                                                                                       \
                    CENT                                                                                                                \
                                        /* Derniere famille de rationnels {N/1,(N-1)/2,(N-2)/3,...,2/(N-1),1/N} a tester.            */

#define   EDITER_QUELQUES_VALEURS                                                                                                       \
                    FAUX                                                                                                                \
                                        /* Faut-il editer quelques valeurs utiles ('VRAI') ou uniquement l'approximation             */ \
                                        /* rationnelle ('FAUX') ? Ceci fut introduit le 20180830075031...                            */

#define   SIMPLIFIER_L_EDITION                                                                                                          \
                    FAUX                                                                                                                \
                                        /* Faut-il simplifier l'edition ('VRAI') ou pas ('FAUX') ? Ceci fut introduit le             */ \
                                        /* 20221218112609, la valeur par defaut assurant la compatibilite anterieure...              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   R A T I O N N E L L E   D ' U N   N O M B R E   R E E L  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Logical,INIT(utiliser_la_methode_des_fractions_continues,UTILISER_LA_METHODE_DES_FRACTIONS_CONTINUES));
                                        /* Faut-il utiliser une decomposition en fraction continue ('VRAI') ou une methode           */
                                        /* explorant le debut de l'ensemble des rationnels numerotes ('FAUX') ?                      */

     DEFV(Float,INIT(nombre_reel,NOMBRE_REEL));
                                        /* Nombre "reel" (en fait un malheureux nombre flottant...) a approximer par un rationnel.   */
     DEFV(Float,INIT(epsilon_de_coincidence,EPSILON_DE_COINCIDENCE));
                                        /* Epsilon utilise pour savoir si l'approximation est bonne...                               */
     DEFV(Int,INIT(derniere_famille_de_rationnels_a_tester,DERNIERE_FAMILLE_DE_RATIONNELS_A_TESTER));
                                        /* Derniere famille de rationnels {N/1,(N-1)/2,(N-2)/3,...,2/(N-1),1/N} a tester.            */

     DEFV(Logical,INIT(editer_quelques_valeurs,EDITER_QUELQUES_VALEURS));
                                        /* Faut-il editer quelques valeurs utiles ('VRAI') ou uniquement l'approximation             */
                                        /* rationnelle ('FAUX') ? Ceci fut introduit le 20180830075031...                            */

     DEFV(Logical,INIT(simplifier_l_edition,SIMPLIFIER_L_EDITION));
                                        /* Faut-il simplifier l'edition ('VRAI') ou pas ('FAUX') ? Ceci fut introduit le             */
                                        /* 20221218112609, la valeur par defaut assurant la compatibilite anterieure...              */
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("fractions_continues=""fc=",utiliser_la_methode_des_fractions_continues);
                         GET_ARGUMENT_N("numerotage_rationnels=""nr=",utiliser_la_methode_des_fractions_continues);

                         GET_ARGUMENT_F("nombre_reel=""reel=""n=""x=",nombre_reel);

                         GET_ARGUMENT_F("epsilon=""eps=""e=",epsilon_de_coincidence);

                         GET_ARGUMENT_I("derniere_famille=""derniere=""der=",derniere_famille_de_rationnels_a_tester);

                         GET_ARGUMENT_L("editer=",editer_quelques_valeurs);
                                        /* Argument introduit le 20180830075031...                                                   */

                         GET_ARGUMENT_L("simplifier=""s=",simplifier_l_edition);
                                        /* Argument introduit le 20221218112609...                                                   */
                         )
                    );

     APPROXIMATION_RATIONNELLE_D_UN_REEL(nombre_reel
                                        ,utiliser_la_methode_des_fractions_continues
                                        ,epsilon_de_coincidence
                                        ,derniere_famille_de_rationnels_a_tester
                                        ,editer_quelques_valeurs
                                        ,simplifier_l_edition
                                         );
                                        /* Introduit sous cette forme le 20180831093737...                                           */

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.