/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   D E R I V A T I O N   F O R M E L L E  :                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtKg/derivees.11$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1992??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

#include  xtKg/derivees.21.I"
#include  xtKg/derivees.11.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRINT(titre,fonction,derivee_a_la_main,derivee_formelle)                                                                      \
                    Bblock                                                                                                              \
                    CAL2(Prin4("%-40s : Fonction=%#+14.^^^  Derivee (a la main)=%#+14.^^^  Derivee (formelle)=%#+14.^^^"                \
                              ,titre                                                                                                    \
                              ,fonction                                                                                                 \
                              ,derivee_a_la_main                                                                                        \
                              ,derivee_formelle                                                                                         \
                               )                                                                                                        \
                         );                                                                                                             \
                                        /* On notera l'utilisation de "%f" (et non pas de "%g" comme a l'habitude) a cause d'un bug  */ \
                                        /* explicite dans 'v $Dbugs/SGIND424$D/IRIX$D/CC$D/printf.01$c'.                             */ \
                                        /*                                                                                           */ \
                                        /* Le 20060106161256, le format "18f" est passe a "^^f" pour plus de souplesse...            */ \
                                        /*                                                                                           */ \
                                        /* Le 20091123123707, le format "^^g" est passe a "^^^" pour plus de souplesse...            */ \
                    Test(sfIFEQ(derivee_a_la_main,derivee_formelle))                                                                    \
                                        /* On notera le remplacement le 20040424120543 de 'IFEQ(...)' par 'sfIFEQ(...)' a cause      */ \
                                        /* de '$LACT15' et du probleme 'v $Fcompilers 20040220103647'...                             */ \
                         Bblock                                                                                                         \
                         CAL2(Prin0("   OK\n"));                                                                                        \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         CAL2(Prin0("   ERREUR\n"));                                                                                    \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   TEST_DE_LA_DERIVATION_FORMELLE_DANS_C                                                                                         \
                    Bblock                                                                                                              \
                    PRINT("d1 : fonction composee dans un '$K'"                                                                         \
                         ,Fonction_C(x4)                                                                                                \
                         ,ADD2(MUL2(INVE(x4),d_x4),MUL2(NEUT(COSX(x4)),d_x4))                                                           \
                         ,d#Fonction_C(x4)                                                                                              \
                          );                                                                                                            \
                    Eblock                                                                                                              \
                                        /* Test dans la derivation formelle dans le fichier principal '$K'.                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   D E R I V A T I O N   F O R M E L L E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(x1,FLOT(UN)));
     DEFV(Float,INIT(d_x1,d_FVARIABLES_DE_DERIVATION));

     DEFV(Float,INIT(x2,FLOT(DEUX)));
     DEFV(Float,INIT(d_x2,d_FVARIABLES_DE_DERIVATION));

     DEFV(Float,INIT(x3,FLOT(TROIS)));
     DEFV(Float,INIT(d_x3,d_FVARIABLES_DE_DERIVATION));

     DEFV(Float,INIT(x4,FLOT(QUATRE)));
     DEFV(Float,INIT(d_x4,d_FVARIABLES_DE_DERIVATION));
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(VIDE;)
                    );

     PRINT("d1 : somme de quatre termes"
          ,ADD4(x1,x2,x3,x4)
          ,ADD4(d_x1,d_x2,d_x3,d_x4)
          ,d#ADD4(x1,x2,x3,x4)
           );

     PRINT("d1 : produit de deux facteurs"
          ,MUL2(x1,x2)
          ,ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2))
          ,d#MUL2(x1,x2)
           );
     PRINT("d2 : produit de deux facteurs"
          ,MUL2(x1,x2)
          ,d#ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2))
          ,d#d#MUL2(x1,x2)
           );
     PRINT("d3 : produit de deux facteurs"
          ,MUL2(x1,x2)
          ,d#d#ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2))
          ,d#d#d#MUL2(x1,x2)
           );
     PRINT("d4 : produit de deux facteurs"
          ,MUL2(x1,x2)
          ,d#d#d#ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2))
          ,d#d#d#d#MUL2(x1,x2)
           );
     PRINT("d4 : produit de deux facteurs"
          ,MUL2(x1,x2)
          ,d#d#d#ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2))
          ,d-{ORDRE4}-MUL2(x1,x2)
           );

     PRINT("d1 : produit de trois facteurs"
          ,MUL3(x1,x2,x3)
          ,ADD2(MUL2(ADD2(MUL2(d_x1,x2),MUL2(x1,d_x2)),x3),MUL2(MUL2(x1,x2),d_x3))
          ,d#MUL3(x1,x2,x3)
           );

     PRINT("d1 : quotient"
          ,DIVI(x1,x2)
          ,DIVI(SOUS(MUL2(d_x1,x2),MUL2(x1,d_x2)),EXP2(x2))
          ,d#DIVI(x1,x2)
           );

     PRINT("d1 : puissance troisieme"
          ,EXP3(x1)
          ,MUL3(TROIS,EXP2(x1),d_x1)
          ,d#EXP3(x1)
           );
     PRINT("d1 : puissance quatrieme"
          ,EXP4(x3)
          ,MUL3(QUATRE,EXP3(x3),d_x3)
          ,d#PUIX(x3,QUATRE)
           );

     PRINT("d1 : exponentielle"
          ,EXPX(x3)
          ,EXPX(x3)
          ,d#EXPX(x3)
           );

     PRINT("d1 : racine carree"
          ,RACX(x4)
          ,MUL2(INVE(GRO2(RACX(x4))),d_x4)
          ,d#RACX(x4)
           );

     PRINT("d1 : logarithme neperien"
          ,LOGX(x4)
          ,MUL2(INVE(x4),d_x4)
          ,d#LOGX(x4)
           );
     PRINT("d1 : logarithme decimal"
          ,LO1X(x4)
          ,MUL2(DIVI(INVE(x4),LOGX(FLOT(DIX))),d_x4)
          ,d#LO1X(x4)
           );

     PRINT("d1 : exponentielle generalisee"
          ,PUIX(x2,x4)
          ,MUL2(PUIX(x2,x4),ADD2(MUL2(d_x4,LOGX(x2)),MUL2(x4,DIVI(d_x2,x2))))
          ,d#PUIX(x2,x4)
           );

     PRINT("d1 : cosinus"
          ,COSX(x1)
          ,MUL2(NEGA(SINX(x1)),d_x1)
          ,d#COSX(x1)
           );
     PRINT("d1 : sinus"
          ,SINX(x1)
          ,MUL2(NEUT(COSX(x1)),d_x1)
          ,d#SINX(x1)
           );

     PRINT("d1 : cosinus conditionnel"
          ,COSX(x1)
          ,MUL2(NEGA(SINX(x1)),d_x1)
          ,d#COND(TOUJOURS_VRAI,COSX(x1),SINX(x1))
           );
     PRINT("d1 : sinus conditionnel"
          ,SINX(x1)
          ,MUL2(NEUT(COSX(x1)),d_x1)
          ,d#COND(TOUJOURS_FAUX,COSX(x1),SINX(x1))
           );

     PRINT("d1 : fonction composee dans un '$K'"
          ,Fonction_C(x4)
          ,ADD2(MUL2(INVE(x4),d_x4),MUL2(NEUT(COSX(x4)),d_x4))
          ,d#Fonction_C(x4)
           );
     TEST_DE_LA_DERIVATION_FORMELLE_DANS_C;
#include  xtKg/derivees.12.I"
     TEST_DE_LA_DERIVATION_FORMELLE_DANS_I(ORDRE2);

     PRINT("d1 : derivee premiere"
          ,Fonction_0(x2)
          ,MUL2(INVE(x2),d_x2)
          ,Fonction_1(x2)
           );

     CAL2(Prin0("\n"));

     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.