/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   F O N C T I O N   ' MODU(...) '  :                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtKg/MODU$K' :                                                                                                 */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20221204120955).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
@define   PRAGMA_CPP_____MODULE_NON_DERIVABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Xmin                                                                                                                          \
                    0
#define   Xmax                                                                                                                          \
                    779

#define   PRINT(valeur,origine,extremite)                                                                                               \
                    Bblock                                                                                                              \
                    DEFV(Int,INIT(x,valeur));                                                                                           \
                    DEFV(Int,INIT(y,FiMODU(x,origine,extremite)));                                                                      \
                                                                                                                                        \
                    CAL2(Prin4("%+d --> %+d dans [%+d,%+d]\n",x,y,origine,extremite));                                                  \
                                        /* On notera que :                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  CAL2(Prin4("%+d --> %+d dans [%+d,%+d]\n",valeur,x,origine,extremite));  */ \
                                        /*                                                                                           */ \
                                        /* ne fonctionne pas correctement lorsque 'valeur' est une constante negative (-1 par        */ \
                                        /* exemple qui donne alors +4294967295 lors de l'edition precedente avec 'valeur' au lieu    */ \
                                        /* de 'x'...).                                                                               */ \
                                        /*                                                                                           */ \
                                        /* La solution est donc de passer par un 'Int' intermediaire. Mais cela a conduit a          */ \
                                        /* remplacer 'MODU(...)' par 'FiMODU(...)' afin d'eviter les messages :                      */ \
                                        /*                                                                                           */ \
                                        /*                  warning: integer overflow in expression of type 'long int'               */ \
                                        /*                  results in '-2' [-Woverflow]                                             */ \
                                        /*                  ((long int)0x7fffffffffffffff)- ((long int)0x8000000000000001)))         */ \
                                        /*                  xxxx                                                                     */ \
                                        /*                  xxxx                                                                     */ \
                                        /*                  xxxx                                                                     */ \
                                        /*                  xxxx                                                                     */ \
                                        /*                                                                                           */ \
                                        /* qui disparaissent si l'on remet ''valeur' a la place de 'x', ce qui montre que le         */ \
                                        /* '$Cc' calcul les expressions constantes...                                                */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   F O N C T I O N   ' MODU(...) '  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(VIDE;)
                    );

     PRINT(PREX(Xmin),Xmin,Xmax);
     PRINT(NEUT(Xmin),Xmin,Xmax);
     PRINT(SUCX(Xmin),Xmin,Xmax);

     printf("\n");

     PRINT(PREX(Xmax),Xmin,Xmax);
     PRINT(NEUT(Xmax),Xmin,Xmax);
     PRINT(SUCX(Xmax),Xmin,Xmax);

     printf("\n");

     PRINT(0,0,1);
     PRINT(-1,0,1);
     PRINT(+1,0,1);

     printf("\n");

     PRINT(0,MOINS_L_INFINI,INFINI);
     PRINT(-1,MOINS_L_INFINI,INFINI);
     PRINT(+1,MOINS_L_INFINI,INFINI);

     printf("\n");

     PRINT(0,1,128);
     PRINT(1,1,128);
     PRINT(128,1,128);
     PRINT(129,1,128);
     PRINT(512,1,128);

     RETU_Commande;
     Eblock
ECommande



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