/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E C E R T A I N E S D E R I V E E S F O R M E L L E S A L ' O R D R E N : */ /* */ /* */ /* Nota : */ /* */ /* Ce fichier '$I' contient a son niveau */ /* un certain nombre de derivees d'operateur. */ /* Il est traite directement par 'v $xcc/cpp$Z' */ /* via 'v $xcp/DerivFormel$K .xcp.DerivFormel.I'. */ /* De cette facon la derivation de ces operateurs */ /* peut se faire car, en effet, ces dernieres se */ /* trouvent au niveau le plus bas des 'include's */ /* ('v $xcc/cpp$Z 20101213093204'). */ /* */ /* On notera un avantage important a cette facon */ /* de proceder : les operateurs ainsi definis peuvent */ /* etre l'objet du 'GooF', ce qui ne serait pas possible */ /* autrement... */ /* */ /* Ce fichier '$I' est traite comme un '$K' (par */ /* 'v $xcc/cpp$Z'), mais etant donne qu'il sert */ /* d'intermediaire pour generer lui-meme des '$I's, */ /* c'est ainsi qu'il fut baptise... */ /* */ /* */ /* Author of '$xcp/DerivFormel$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20101221135750). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_DERIVABLE /* Essentiel pour acceder a 'v $xcc/cpp$Z DordreN'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ @define PRAGMA_CPP_____DEFINE_AU_PREALABLE "NoGeneration_____maths_defen_DerivFormel_1_DEF" /* Introduit le 20161213215500 et transforme en un 'PRAGMA' le 20161214125944 car, en effet, */ /* la formulation : */ /* */ /* #define NoGeneration_____maths_defen_DerivFormel_1_DEF */ /* */ /* etait ignoree dans 'v $xcc/cpp$Z'... */ #include INCLUDES_MINI /* Le 20161218105902, 'INCLUDES_MINI' a remplace 'INCLUDES_BASE' car, en effet, cela suffit */ /* et de plus cela resoud le probleme 'v $xcc/cpp$Z 20161217101315'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S " U N I V E R S E L L E S " : */ /* */ /*************************************************************************************************************************************/ /* Ces definitions sont placees en '$PASSE_2' : en fait cela est relativement arbitraire */ /* a la condition que cela ne soit pas '$PASSE_1'. La conversion en '$PASSE_1' est faite */ /* explicitement par 'v $xcc/cpp$Z 20101221144436'... */ /* Le 20101223203957 je note que les noms ne peuvent etre 'd_MACRO(...)' ou 'MACRO(...)' */ /* est celui d'un operateur a deriver car, en effet, il y a conflit avec le derivateur */ /* formel de 'v $xcc/cpp$Z'. Ainsi un nom tel 'D_MACRO(...)' sera parfait ou mieux, le */ /* 20110105092947 'd1_MACRO(...)' fut adopte pour "Derivee Premiere -1-". */ =define d1_INTERPOLATION_CUBIQUE(Forg,d_Forg,DForg,d_DForg,Fext,d_Fext,DFext,d_DFext,lambda,d_lambda) \ %d#INTERPOLATION_CUBIQUE(Forg,DForg \ ,Fext,DFext \ ,lambda \ )% /* Derivee a l'ordre 1 de 'INTERPOLATION_CUBIQUE(...)'. */ /* */ /* Le 20101223172434 fut introduit le couple {%,%} ('v $xcp/TabRecursive$K K_POUR_CENT') */ /* afin de faciliter la tabulation du code genere... */ /* */ /* La "qualite" de l'operateur 'd1_INTERPOLATION_CUBIQUE(...)' peut etre validee grace au */ /* programme 'v $xtc/DerivFormel.01$c'... */ =define d1_ADD2(x,d_x,y,d_y) \ %d#ADD2(x,y)% =define d2_ADD2(x,d_x,d_d_x,y,d_y,d_d_y) \ %d#d#ADD2(x,y)% /* Somme de deux facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20161216102525 (surtout a des fins de test...). */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y} sont utiles... */ =define d1_ADD3(x,d_x,y,d_y,z,d_z) \ %d#ADD3(x,y,z)% =define d2_ADD3(x,d_x,d_d_x,y,d_y,d_d_y,z,d_z,d_d_z) \ %d#d#ADD3(x,y,z)% /* Somme de trois facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20161216102525 (surtout a des fins de test...). */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y,d_z} sont utiles... */ =define d1_ADD4(x,d_x,y,d_y,z,d_z,t,d_t) \ %d#ADD4(x,y,z,t)% =define d2_ADD4(x,d_x,d_d_x,y,d_y,d_d_y,z,d_z,d_d_z,t,d_t,d_d_t) \ %d#d#ADD4(x,y,z,t)% /* Somme de quatre facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20161216102525 (surtout a des fins de test...). */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y,d_z,d_t} sont utiles... */ =define d1_MUL2(x,d_x,y,d_y) \ %d#MUL2(x,y)% =define d2_MUL2(x,d_x,d_d_x,y,d_y,d_d_y) \ %d#d#MUL2(x,y)% /* Produit de deux facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20161216102525 (surtout a des fins de test...). */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y} sont utiles... */ =define d1_MUL3(x,d_x,y,d_y,z,d_z) \ %d#MUL3(x,y,z)% =define d2_MUL3(x,d_x,d_d_x,y,d_y,d_d_y,z,d_z,d_d_z) \ %d#d#MUL3(x,y,z)% /* Produit de trois facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20101228191219 (surtout a des fins de test...) */ /* et complete le 20110105095023 avec la derivee seconde. */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y,d_z} sont utiles... */ =define d1_MUL4(x,d_x,y,d_y,z,d_z,t,d_t) \ %d#MUL4(x,y,z,t)% =define d2_MUL4(x,d_x,d_d_x,y,d_y,d_d_y,z,d_z,d_d_z,t,d_t,d_d_t) \ %d#d#MUL4(x,y,z,t)% /* Produit de quatre facteurs "simples" (c'est-a-dire des variables et non pas des */ /* expressions...). Ceci fut introduit le 20101228191219 (surtout a des fins de test...) */ /* et complete le 20110105095023 avec la derivee seconde. */ /* Ces definitions sont placees en '$PASSE_2' : en fait cela est relativement arbitraire */ /* a la condition que cela ne soit pas '$PASSE_1'. La conversion en '$PASSE_1' est faite */ /* explicitement par 'v $xcc/cpp$Z 20101221144436'... */ /* Le 20101223203957 je note que les noms ne peuvent etre 'd_MACRO(...)' ou 'MACRO(...)' */ /* est celui d'un operateur a deriver car, en effet, il y a conflit avec le derivateur */ /* formel de 'v $xcc/cpp$Z'. Ainsi un nom tel 'D_MACRO(...)' sera parfait ou mieux, le */ /* 20110105092947 'd1_MACRO(...)' fut adopte pour "Derivee Premiere -1-". */ /* On notera le 20161207161106 que j'ai essaye de mettre ici : */ /* */ /* -define OPERATEUR(x,y) \ */ /* EXP2(ADD2(x,y)) */ /* =define d1_OPERATEUR(x,d_x,y,d_y) \ */ /* %d#OPERATEUR(x,y)% */ /* */ /* (le 'EXP2(ADD2(x,y))' etant tout a fait arbitraire) */ /* */ /* mais cela ne marche pas a cause de 'v $xcc/cpp$Z $CA.......$module$W.$fichierA' */ /* execute en 'passe E' car, en effet, alors le '-define OPERATEUR(' se retrouve deux */ /* fois dans le resultat ('$module$w') de la concatenation par le '$CA' ci-dessus, alors */ /* que, par exemple, '-define INTERPOLATION_CUBIQUE(' ne s'y retrouve qu'une seule fois */ /* puisqu'il est defini a l'exterieur de '$fichierA'... */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y,d_z,d_t} sont utiles... */ =define d1_ADD2_MUL2(condition,x,d_x,y,d_y) \ %OPC2(condition,d#ADD2,d#MUL2,x,y)% =define d2_ADD2_MUL2(condition,x,d_x,d_d_x,y,d_y,d_d_y) \ %OPC2(condition,d#d#ADD2,d#d#MUL2,x,y)% /* Derivee introduite le 20161216102525 pour voir ce qu'il se passe avec les 'OPC?(...)'... */ /* */ /* Le 20161217102804, je me demande si les arguments {d_x,d_y} sont utiles... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S " S P E C I F I Q U E S " : */ /* */ /*************************************************************************************************************************************/ #include xrs/huit.11.1.I" /* Definition de l'equation de la courbe en "8" dans le plan {OX,OY} destinee a */ /* 'v $xrs/huit.11$K' (introduit le 20161207094703). */ =define d1_XPlan_xrs_huit_11(u,v) \ %d#XPlan_xrs_huit_11(u,v)% =define d1_YPlan_xrs_huit_11(u,v) \ %d#YPlan_xrs_huit_11(u,v)% /* Definition des deux derivees (introduit le 20161207094703). */ /* */ /* Le 20161208100302, afin d'etre homogene avec le nom de leurs derivees, 'XPlan(u,v)' et */ /* 'YPlan(u,v)' ont ete rebaptises 'XPlan_xrs_huit_11(u,v)' et 'YPlan_xrs_huit_11(u,v)' */ /* respectivement... */ #include xrs/cylindre.31.1.I" /* Definition de l'equation de l'helice destinee a 'v $xrs/cylindre.31$K' (introduit */ /* le 20170130125404). */ =define d1_XEspace_xrs_cylindre_31(u,v) \ %d#XEspace_xrs_cylindre_31(u,v)% =define d1_YEspace_xrs_cylindre_31(u,v) \ %d#YEspace_xrs_cylindre_31(u,v)% =define d1_ZEspace_xrs_cylindre_31(u,v) \ %d#ZEspace_xrs_cylindre_31(u,v)% /* Definition des trois derivees (introduit le 20170130125404). */ #include xrs/epicycloide.11.1.I" /* Definition de l'equation de la courbe "epycycloidale" dans le plan {OX,OY} destinee a */ /* 'v $xrs/epicycloide.11$K' (introduit le 20161212104641). */ =define d1_XPlan_xrs_epicycloide_11(u,v) \ %d#XPlan_xrs_epicycloide_11(u,v)% =define d1_YPlan_xrs_epicycloide_11(u,v) \ %d#YPlan_xrs_epicycloide_11(u,v)% /* Definition des deux derivees (introduit le 20161212104641). */ #include xrs/helicoide.11.1.I" /* Definition de l'equation de l'helice destinee a 'v $xrs/helicoide.11$K' (introduit */ /* le 20161226101433). */ =define d1_XEspace_xrs_helicoide_11(u,v) \ %d#XEspace_xrs_helicoide_11(u,v)% =define d1_YEspace_xrs_helicoide_11(u,v) \ %d#YEspace_xrs_helicoide_11(u,v)% =define d1_ZEspace_xrs_helicoide_11(u,v) \ %d#ZEspace_xrs_helicoide_11(u,v)% /* Definition des trois derivees (introduit le 20161226101433). */ #include xrs/epicycloide.21.1.I" /* Definition de l'equation de la courbe "epycycloidale" dans l'espace {OX,OY,OZ} destinee a */ /* 'v $xrs/epicycloide.21$K' (introduit le 20161230093222). */ =define d1_XEspace_xrs_epicycloide_21(u,v) \ %d#XEspace_xrs_epicycloide_21(u,v)% =define d1_YEspace_xrs_epicycloide_21(u,v) \ %d#YEspace_xrs_epicycloide_21(u,v)% =define d1_ZEspace_xrs_epicycloide_21(u,v) \ %d#ZEspace_xrs_epicycloide_21(u,v)% /* Definition des trois derivees (introduit le 20161230093222). */ #include xrs/epicycloide.31.1.I" /* Definition de l'equation de la courbe "epycycloidale" dans l'espace {OX,OY,OZ} destinee a */ /* 'v $xrs/epicycloide.31$K' (introduit le 20170110130649). */ =define d1_XEspace_xrs_epicycloide_31(u,v) \ %d#XEspace_xrs_epicycloide_31(u,v)% =define d1_YEspace_xrs_epicycloide_31(u,v) \ %d#YEspace_xrs_epicycloide_31(u,v)% =define d1_ZEspace_xrs_epicycloide_31(u,v) \ %d#ZEspace_xrs_epicycloide_31(u,v)% /* Definition des trois derivees (introduit le 20170110130649). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E C E R T A I N E S D E R I V E E S F O R M E L L E S A L ' O R D R E N : */ /* */ /*************************************************************************************************************************************/