/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   R E L A T I V E S   A   L A   D E R I V A T I O N   F O R M E L L E                                */
/*        D ' U N E   S U R F A C E   D E   H O R N E R   " L I N E A I R E "   D U   Q U A T R I E M E   D E G R E  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/Horner24.11$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20201120102800).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' F '  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition de la surface ('v $xrs/Horner24.11$K') :                                                                        */
/*                                                                                                                                   */
/*                    La surface 'lineaire' de Horner                                                                                */
/*                  est definie parametriquement                                                                                     */
/*                  en fonction des deux parametres 'u'                                                                              */
/*                  (appele aussi 'distance polaire' ou                                                                              */
/*                  'theta' ou encore 'latitude') et 'v'                                                                             */
/*                  (appele aussi 'longitude' ou 'phi') :                                                                            */
/*                                                                                                                                   */
/*                                      F (u,v) = RX.HORNER_2_04(u,v,{pXij})                                                         */
/*                                       x                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = RY.HORNER_2_04(u,v,{pYij})                                                         */
/*                                       y                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = RZ.HORNER_2_04(u,v,{pZij})                                                         */
/*                                       z                                                                                           */
/*                                                                                                                                   */
/*                  ('v $ximd/operator.1$FON HORNER_2_04') avec :                                                                    */
/*                                                                                                                                   */
/*                                      {pXij} un ensemble de coefficients (i,j E {0,1,2,3,4})                                       */
/*                                      {pYij} un ensemble de coefficients (i,j E {0,1,2,3,4})                                       */
/*                                      {pZij} un ensemble de coefficients (i,j E {0,1,2,3,4})                                       */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      u E [ -1 , +1 ]                                                                              */
/*                                                                                                                                   */
/*                                      v E [ -1 , +1 ]                                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* ATTENTION, il est imperatif que les fonctions derivables formellement soient definies     */
                                        /* dans un fichier a part afin qu'elles ne soient pas l'objet d'une double definition. En    */
                                        /* effet, on trouve dans 'v $xcc/cpp$Z' :                                                    */
                                        /*                                                                                           */
                                        /*                  $CA  $module$w                                                           */
                                        /*                                 | $xcp/cpp$X          ... -c$PASSE_D -e$PASSE_5           */
                                        /*                                                                              > $fichierR  */
                                        /*                                                                                           */
                                        /* Ainsi, si par exemple la definition de 'Fx(u,v)' etait faite localement dans le           */
                                        /* fichier '$xrf/recursif.11$K', cette definition apparaitrait deux fois dans le fichier     */
                                        /* '$module$w' : une premiere fois en tete, provenant de '$PASSE_D' ou l'on ne trouve que    */
                                        /* les definitions du type '-define ...', puis une deuxieme fois a la suite, la ou se trouve */
                                        /* concatene au fichier '$module$W' des '-define ...' le fichier '$fichierA' a compiler...   */

#define   Fx_Horner24_1(u,v)                                                                                                            \
                    MUL2(parametre_RX                                                                                                   \
                        ,HORNER_2_04(u,v                                                                                                \
                                    ,pX_a44,pX_a43,pX_a42,pX_a41,pX_a40                                                                 \
                                    ,pX_a34,pX_a33,pX_a32,pX_a31,pX_a30                                                                 \
                                    ,pX_a24,pX_a23,pX_a22,pX_a21,pX_a20                                                                 \
                                    ,pX_a14,pX_a13,pX_a12,pX_a11,pX_a10                                                                 \
                                    ,pX_a04,pX_a03,pX_a02,pX_a01,pX_a00                                                                 \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            x                                                              */
#define   Fy_Horner24_1(u,v)                                                                                                            \
                    MUL2(parametre_RY                                                                                                   \
                        ,HORNER_2_04(u,v                                                                                                \
                                    ,pY_a44,pY_a43,pY_a42,pY_a41,pY_a40                                                                 \
                                    ,pY_a34,pY_a33,pY_a32,pY_a31,pY_a30                                                                 \
                                    ,pY_a24,pY_a23,pY_a22,pY_a21,pY_a20                                                                 \
                                    ,pY_a14,pY_a13,pY_a12,pY_a11,pY_a10                                                                 \
                                    ,pY_a04,pY_a03,pY_a02,pY_a01,pY_a00                                                                 \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            y                                                              */
#define   Fz_Horner24_1(u,v)                                                                                                            \
                    MUL2(parametre_RZ                                                                                                   \
                        ,HORNER_2_04(u,v                                                                                                \
                                    ,pZ_a44,pZ_a43,pZ_a42,pZ_a41,pZ_a40                                                                 \
                                    ,pZ_a34,pZ_a33,pZ_a32,pZ_a31,pZ_a30                                                                 \
                                    ,pZ_a24,pZ_a23,pZ_a22,pZ_a21,pZ_a20                                                                 \
                                    ,pZ_a14,pZ_a13,pZ_a12,pZ_a11,pZ_a10                                                                 \
                                    ,pZ_a04,pZ_a03,pZ_a02,pZ_a01,pZ_a00                                                                 \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N S   R E L A T I V E S   A   L A   P S E U D O - P R O J E C T I O N  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Pxyz_Horner24_1                                                                                                               \
                    Bblock                                                                                                              \
                    BLOC(VIDE;);                                                                                                        \
                    Eblock
                                        /* Initialisations specifiques a cette surface destinees a permettre la reinjection des      */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project2D.11$K'...                                                                */



Copyright © Jean-François Colonna, 2020-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2020-2021.