/*************************************************************************************************************************************/ /* */ /* F O N C T I O N ' HORNER_2_04(...) ' A V E C P E R M U T A T I O N D E */ /* L ' A D D I T I O N E T D E L A M U L T I P L I C A T I O N : */ /* */ /* */ /* Author of '$xtc/HORNER_2_04.etendu.01$c' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20181123115528). */ /* */ /*************************************************************************************************************************************/ #include <stdio.h> #define P4(x) (((((((a44+x*a43)+x)*a42)+x)*a41)+x)*a40) #define P3(x) (((((((a34+x*a33)+x)*a32)+x)*a31)+x)*a30) #define P2(x) (((((((a24+x*a23)+x)*a22)+x)*a21)+x)*a20) #define P1(x) (((((((a14+x*a13)+x)*a12)+x)*a11)+x)*a10) #define P0(x) (((((((a04+x*a03)+x)*a02)+x)*a01)+x)*a00) #define HORNER_2_04(x,y) (((((((P4(x)+y)*P3(x))+y)*P2(x))+y)*P1(x))+y)*P0(x) /* On notera donc la permutation de "+" et de "*" par rapport a la definition "standard" */ /* ('v $xiii/tri_image$FON 20181119120731'). */ main() { double a44=1; double a43=1; double a42=1; double a41=1; double a40=1; /* Definition du premier polynome en 'X' (puissance la plus elevee de 'Y'). */ double a34=1; double a33=1; double a32=1; double a31=1; double a30=1; /* Definition du second polynome en 'X'. */ double a24=1; double a23=1; double a22=1; double a21=1; double a20=1; /* Definition du troisieme polynome en 'X'. */ double a14=1; double a13=1; double a12=1; double a11=1; double a10=1; /* Definition du quatrieme polynome en 'X'. */ double a04=1; double a03=1; double a02=1; double a01=1; double a00=1; /* Definition du dernier polynome en 'X' (puissance la plus faible de 'Y'). */ double x=2,y=3; printf("HORNER=%f\n",HORNER_2_04(x,y)); }