/*************************************************************************************************************************************/ /* */ /* 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 V A R I E T E 1 D E H O R N E R " H Y P E R B O L I Q U E " D U D E U X I E M E D E G R E : */ /* */ /* */ /* Author of '$xrs/Horner61.21$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20201123100426). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 variete ('v $xrs/Horner61.21$K') : */ /* */ /* La variete 'hyperbolique' 1 de Horner */ /* est definie parametriquement */ /* en fonction des trois parametres 'u', */ /* 'v' et 'W' : */ /* */ /* F (u,v,w) = RX.HORNER_6_01(ch(u),sh(u),ch(v),sh(v),ch(w),sh(w),{pXijklm}) */ /* x */ /* */ /* F (u,v,w) = RY.HORNER_6_01(ch(u),sh(u),ch(v),sh(v),ch(w),sh(w),{pYijklm}) */ /* y */ /* */ /* F (u,v,w) = RZ.HORNER_6_01(ch(u),sh(u),ch(v),sh(v),ch(w),sh(w),{pZijklm}) */ /* z */ /* */ /* ('v $ximd/operator.1$FON HORNER_6_01') avec : */ /* */ /* {pXijklm} un ensemble de coefficients (i,j,k,l,m E {0,1}) */ /* {pYijklm} un ensemble de coefficients (i,j,k,l,m E {0,1}) */ /* {pZijklm} un ensemble de coefficients (i,j,k,l,m E {0,1}) */ /* */ /* et : */ /* u E [ -1 , +1 ] */ /* */ /* v E [ -1 , +1 ] */ /* */ /* w 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,w)' 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_Horner61_2(u,v,w) \ MUL2(parametre_RX \ ,HORNER_6_01(COHX(u),SIHX(u),COHX(v),SIHX(v),COHX(w),SIHX(w) \ ,pX_a111111,pX_a111110,pX_a111101,pX_a111100,pX_a111011,pX_a111010,pX_a111001,pX_a111000 \ ,pX_a110111,pX_a110110,pX_a110101,pX_a110100,pX_a110011,pX_a110010,pX_a110001,pX_a110000 \ ,pX_a101111,pX_a101110,pX_a101101,pX_a101100,pX_a101011,pX_a101010,pX_a101001,pX_a101000 \ ,pX_a100111,pX_a100110,pX_a100101,pX_a100100,pX_a100011,pX_a100010,pX_a100001,pX_a100000 \ ,pX_a011111,pX_a011110,pX_a011101,pX_a011100,pX_a011011,pX_a011010,pX_a011001,pX_a011000 \ ,pX_a010111,pX_a010110,pX_a010101,pX_a010100,pX_a010011,pX_a010010,pX_a010001,pX_a010000 \ ,pX_a001111,pX_a001110,pX_a001101,pX_a001100,pX_a001011,pX_a001010,pX_a001001,pX_a001000 \ ,pX_a000111,pX_a000110,pX_a000101,pX_a000100,pX_a000011,pX_a000010,pX_a000001,pX_a000000 \ ) \ ) /* Definition de la fonction F (u,v,w). */ /* x */ #define Fy_Horner61_2(u,v,w) \ MUL2(parametre_RY \ ,HORNER_6_01(COHX(u),SIHX(u),COHX(v),SIHX(v),COHX(w),SIHX(w) \ ,pY_a111111,pY_a111110,pY_a111101,pY_a111100,pY_a111011,pY_a111010,pY_a111001,pY_a111000 \ ,pY_a110111,pY_a110110,pY_a110101,pY_a110100,pY_a110011,pY_a110010,pY_a110001,pY_a110000 \ ,pY_a101111,pY_a101110,pY_a101101,pY_a101100,pY_a101011,pY_a101010,pY_a101001,pY_a101000 \ ,pY_a100111,pY_a100110,pY_a100101,pY_a100100,pY_a100011,pY_a100010,pY_a100001,pY_a100000 \ ,pY_a011111,pY_a011110,pY_a011101,pY_a011100,pY_a011011,pY_a011010,pY_a011001,pY_a011000 \ ,pY_a010111,pY_a010110,pY_a010101,pY_a010100,pY_a010011,pY_a010010,pY_a010001,pY_a010000 \ ,pY_a001111,pY_a001110,pY_a001101,pY_a001100,pY_a001011,pY_a001010,pY_a001001,pY_a001000 \ ,pY_a000111,pY_a000110,pY_a000101,pY_a000100,pY_a000011,pY_a000010,pY_a000001,pY_a000000 \ ) \ ) /* Definition de la fonction F (u,v,w). */ /* y */ #define Fz_Horner61_2(u,v,w) \ MUL2(parametre_RZ \ ,HORNER_6_01(COHX(u),SIHX(u),COHX(v),SIHX(v),COHX(w),SIHX(w) \ ,pZ_a111111,pZ_a111110,pZ_a111101,pZ_a111100,pZ_a111011,pZ_a111010,pZ_a111001,pZ_a111000 \ ,pZ_a110111,pZ_a110110,pZ_a110101,pZ_a110100,pZ_a110011,pZ_a110010,pZ_a110001,pZ_a110000 \ ,pZ_a101111,pZ_a101110,pZ_a101101,pZ_a101100,pZ_a101011,pZ_a101010,pZ_a101001,pZ_a101000 \ ,pZ_a100111,pZ_a100110,pZ_a100101,pZ_a100100,pZ_a100011,pZ_a100010,pZ_a100001,pZ_a100000 \ ,pZ_a011111,pZ_a011110,pZ_a011101,pZ_a011100,pZ_a011011,pZ_a011010,pZ_a011001,pZ_a011000 \ ,pZ_a010111,pZ_a010110,pZ_a010101,pZ_a010100,pZ_a010011,pZ_a010010,pZ_a010001,pZ_a010000 \ ,pZ_a001111,pZ_a001110,pZ_a001101,pZ_a001100,pZ_a001011,pZ_a001010,pZ_a001001,pZ_a001000 \ ,pZ_a000111,pZ_a000110,pZ_a000101,pZ_a000100,pZ_a000011,pZ_a000010,pZ_a000001,pZ_a000000 \ ) \ ) /* Definition de la fonction F (u,v,w). */ /* 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_Horner61_2 \ Bblock \ BLOC(VIDE;); \ Eblock /* Initialisations specifiques a cette variete destinees a permettre la reinjection des */ /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans */ /* 'v $xrs/project2D.11$K'... */