_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        O U T I L S   " F O L K L O R I Q U E S "   P O U R   L E S   N O M B R E S   C O M P L E X E S  :                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Dans ce fichier se trouve quelques                                                                             */
/*                  fonctions utiles definies pour les                                                                               */
/*                  nombres complexes.                                                                                               */
/*                                                                                                                                   */
/*                    On notera qu'avant le 20181211102826                                                                           */
/*                  ces outils "folkloriques" etaient dans                                                                           */
/*                  'v $ximcf/fonction$FON'. Or les fonctions                                                                        */
/*                                                                                                                                   */
/*                                      FgCsomme____Reelle______folklorique(...)                                                     */
/*                                      FgCsomme____Imaginaire__folklorique(...)                                                     */
/*                                      FgCproduit__Reelle______folklorique(...)                                                     */
/*                                      FgCproduit__Imaginaire__folklorique(...)                                                     */
/*                                                                                                                                   */
/*                  etaient utiles un peu plus loin dans les                                                                         */
/*                  fonctions 'fFCfamma_Euler_Gauss(...)', jusqu'a                                                                   */
/*                  'fFCtangente_hyperbolique(...') via les procedures                                                               */
/*                  'Csomme(...)' et 'Cproduit(...)'. Cela avait alors                                                               */
/*                  contraient a reduire le nombre de blocs de compilation,                                                          */
/*                  ce qui etait un peu ennuyeux, d'ou cette solution...                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Notations :                                                                                                                */
/*                                                                                                                                   */
/*                    Les correspondances entre les coefficients                                                                     */
/*                  'aNNNN' et les differents produits possibles                                                                     */
/*                  de 1 a 4 des parties Reelles et Imaginaires                                                                      */
/*                  {R1,I1} et {R2,I2} sont les suivantes :                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      a1111          -->  I2xR2xI1xR1                                                              */
/*                                      a1110          -->  I2xR2xI1                                                                 */
/*                                      a1101          -->  I2xR2xR1                                                                 */
/*                                      a1100          -->  I2xR2                                                                    */
/*                                      a1011          -->  I2xI1xR1                                                                 */
/*                                      a1010          -->  I2xI1                                                                    */
/*                                      a1001          -->  I2xR1                                                                    */
/*                                      a1000          -->  I2                                                                       */
/*                                      a0111          -->  R2xI1xR1                                                                 */
/*                                      a0110          -->  R2xI1                                                                    */
/*                                      a0101          -->  R2xR1                                                                    */
/*                                      a0100          -->  R2                                                                       */
/*                                      a0011          -->  I1xR1                                                                    */
/*                                      a0010          -->  I1                                                                       */
/*                                      a0001          -->  R1                                                                       */
/*                                      a0000          -->  constante                                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  soit encore :                                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      I2xR2xI1xR1    -->  a1111                                                                    */
/*                                                                                                                                   */
/*                                      I2xR2xR1       -->  a1101                                                                    */
/*                                      I2xR2xI1       -->  a1110                                                                    */
/*                                      I2xI1xR1       -->  a1011                                                                    */
/*                                      R2xI1xR1       -->  a0111                                                                    */
/*                                                                                                                                   */
/*                                      R2xR1          -->  a0101                                                                    */
/*                                      R2xI1          -->  a0110                                                                    */
/*                                      I1xR1          -->  a0011                                                                    */
/*                                      I2xI1          -->  a1010                                                                    */
/*                                      I2xR1          -->  a1001                                                                    */
/*                                      I2xR2          -->  a1100                                                                    */
/*                                                                                                                                   */
/*                                      R2             -->  a0100                                                                    */
/*                                      I2             -->  a1000                                                                    */
/*                                      I1             -->  a0010                                                                    */
/*                                      R1             -->  a0001                                                                    */
/*                                                                                                                                   */
/*                                      constante      -->  a0000                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$ximcf/outils$FON' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20181211102826).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L S   " F O L K L O R I Q U E S "   P O U R   L E S   N O M B R E S   C O M P L E X E S  :                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Aux environs du 20220902180541, j'ai tente d'automatiser la generation                                         */
/*                  des parametres {a1111,a1110,...,a0001,a0000} comme cela peut se voir dans l'archive                              */
/*                  'v $Darchives/includes/mathematiques/complexes/fonctions/20220902180723/outils$FON PARAMS_FOLKLORIQUES'.         */
/*                  Malheureusement, bien que le code genere fut correct, cela ne peut etre utilise et ce a cause                    */
/*                  de 'v $xcg/gen$EXT$Z' qui n'est pas capable d'interpreter des procedures generant des 'Common's...               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Aux environs du 20220902180541, j'ai tente d'automatiser la generation des parametres     */
                                        /* {a1111,a1110,...,a0001,a0000} , j'ai tente d'automatiser la generation des parametres     */

#define   CALCUL_FOLKLORIQUE_GENERAL_POUR_LES_NOMBRE_COMPLEXES                                                                          \
                    HORNER_4_01(R1,I1,R2,I2                                                                                             \
                               ,NomDeLaFonctionCourante QD@@__ _____a1111                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1110                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1101                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1100                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1011                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1010                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1001                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a1000                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0111                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0110                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0101                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0100                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0011                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0010                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0001                                                               \
                               ,NomDeLaFonctionCourante QD@@__ _____a0000                                                               \
                                )

#define   GENERE__FonctionF_FgC_____folklorique(nom_et_arguments_de_la_fonction)                                                        \
                                        /* ATTENTION : le nom de la fonction est suivi de ses arguments pour des raisons liees       */ \
                                        /* a la recuperation automatique des fichiers d'arguments.                                   */ \
DEFV(FonctionF,nom_et_arguments_de_la_fonction)                                                                                         \
                                        /* Le 20221130130028 je note la definition des fonctions via un 'FonctionL' alors qu'il      */ \
                                        /* devait s'agir evidemment d'un 'FonctionF'...                                              */ \
                                        /*                                                                                           */ \
                                        /* Grace a 'v $xtc/HORNER_4_01.folklorique.01$c', les fonctions suivantes peuvent etre       */ \
                                        /* testees tres finement...                                                                  */ \
DEFV(Argument,DEFV(Float,R1));                                                                                                          \
DEFV(Argument,DEFV(Float,I1));                                                                                                          \
DEFV(Argument,DEFV(Float,R2));                                                                                                          \
DEFV(Argument,DEFV(Float,I2));                                                                                                          \
                                        /* Quatre nombres reels (a priori les parties Reelles et Imaginaires de deux nombres         */ \
                                        /* complexes 'z1={R1,I1}' et z2={R2,I2}')...                                                 */ \
/*-----------------------------------------------------------------------------------------------------------------------------------*/ \
     Bblock                                                                                                                             \
     /*..............................................................................................................................*/ \
     RETU(CALCUL_FOLKLORIQUE_GENERAL_POUR_LES_NOMBRE_COMPLEXES);                                                                        \
     Eblock                                                                                                                             \
                                        /* Procedure introduite le 20220902140925...                                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   " F O L K L O R I Q U E "   D E   L A   P A R T I E   R E E L L E   D E   ' FgCsomme__(...) '  :             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a1000,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0100,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0001,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Reelle______folklorique_____a0000,FZERO)));
                                        /* Parametres de 'HORNER_4_01(...)' initialise sur la valeur correcte de la partie           */
                                        /* Reelle de 'FgCsomme__(...)' ('v $xtc/HORNER_4_01$c Reelle.de..FgCsomme.....').            */
                                        /*                                                                                           */
                                        /* Les valeurs par defaut correspondent au calcul de l'expression :                          */
                                        /*                                                                                           */
                                        /*                  R2 + R1                                                                  */
                                        /*                                                                                           */

DEFV(Common,GENERE__FonctionF_FgC_____folklorique(FgCsomme____Reelle______folklorique(R1,I1,R2,I2)))     /* Common,DEFV(Fonction,) : */

EFonctionF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   " F O L K L O R I Q U E "   D E   L A   P A R T I E   I M A G I N A I R E   D E   ' FgCsomme__(...) '  :     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a1000,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0010,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCsomme____Imaginaire__folklorique_____a0000,FZERO)));
                                        /* Parametres de 'HORNER_4_01(...)' initialise sur la valeur correcte de la partie           */
                                        /* Imaginaire de 'FgCsomme__(...)' ('v $xtc/HORNER_4_01$c Imaginaire.de..FgCsomme.....').    */
                                        /*                                                                                           */
                                        /* Les valeurs par defaut correspondent au calcul de l'expression :                          */
                                        /*                                                                                           */
                                        /*                  I2 + I1                                                                  */
                                        /*                                                                                           */

DEFV(Common,GENERE__FonctionF_FgC_____folklorique(FgCsomme____Imaginaire__folklorique(R1,I1,R2,I2)))     /* Common,DEFV(Fonction,) : */
                                        /* Fonction introduite le 20181210111156...                                                  */

EFonctionF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   " F O L K L O R I Q U E "   D E   L A   P A R T I E   R E E L L E   D E   ' FgCproduit(...) '  :             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1010,NEGA(FU))));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a1000,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0101,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Reelle______folklorique_____a0000,FZERO)));
                                        /* Parametres de 'HORNER_4_01(...)' initialise sur la valeur correcte de la partie           */
                                        /* Reelle de 'FgCproduit(...)' ('v $xtc/HORNER_4_01$c Reelle.de..FgCproduit.....').          */
                                        /*                                                                                           */
                                        /* Les valeurs par defaut correspondent au calcul de l'expression :                          */
                                        /*                                                                                           */
                                        /*                  R2xR1 - I2xI1                                                            */
                                        /*                                                                                           */

DEFV(Common,GENERE__FonctionF_FgC_____folklorique(FgCproduit__Reelle______folklorique(R1,I1,R2,I2)))     /* Common,DEFV(Fonction,) : */
                                        /* Fonction introduite le 20181210111156...                                                  */

EFonctionF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   " F O L K L O R I Q U E "   D E   L A   P A R T I E   I M A G I N A I R E   D E   ' FgCproduit(...) '  :     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1110,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1001,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a1000,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0111,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0110,NEUT(FU))));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0101,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0100,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0011,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0010,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0001,FZERO)));
DEFV(Common,DEFV(Float,SINT(FgCproduit__Imaginaire__folklorique_____a0000,FZERO)));
                                        /* Parametres de 'HORNER_4_01(...)' initialise sur la valeur correcte de la partie           */
                                        /* Imaginaire de 'FgCproduit(...)' ('v $xtc/HORNER_4_01$c Imaginaire.de..FgCproduit.....').  */
                                        /*                                                                                           */
                                        /* Les valeurs par defaut correspondent au calcul de l'expression :                          */
                                        /*                                                                                           */
                                        /*                  I2xR1 + R2xI1                                                            */
                                        /*                                                                                           */

DEFV(Common,GENERE__FonctionF_FgC_____folklorique(FgCproduit__Imaginaire__folklorique(R1,I1,R2,I2)))     /* Common,DEFV(Fonction,) : */
                                        /* Fonction introduite le 20181210111156...                                                  */

EFonctionF

#undef    GENERE__FonctionF_FgC_____folklorique

#undef    CALCUL_FOLKLORIQUE_GENERAL_POUR_LES_NOMBRE_COMPLEXES

_______________________________________________________________________________________________________________________________________



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.