// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // [33]int p; int x,y; thread EvalPolynomial { int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65; t0 = p[0]; t1 = p[1]; t2 = p[2]; t3 = p[3]; t4 = p[4]; t5 = p[5]; t6 = p[6]; t7 = p[7]; t8 = p[8]; t9 = p[9]; t10 = p[10]; t11 = p[11]; t12 = p[12]; t13 = p[13]; t14 = p[14]; t15 = p[15]; t16 = p[16]; t17 = p[17]; t18 = p[18]; t19 = p[19]; t20 = p[20]; t21 = p[21]; t22 = p[22]; t23 = p[23]; t24 = p[24]; t25 = p[25]; t26 = p[26]; t27 = p[27]; t28 = p[28]; t29 = p[29]; t30 = p[30]; t31 = p[31]; t32 = p[32]; t33 = +1; t34 = x; t35 = x; t36 = x; t37 = x; t38 = x; t39 = x; t40 = x; t41 = x; t42 = x; t43 = x; t44 = x; t45 = x; t46 = x; t47 = x; t48 = x; t49 = x; t50 = x; t51 = x; t52 = x; t53 = x; t54 = x; t55 = x; t56 = x; t57 = x; t58 = x; t59 = x; t60 = x; t61 = x; t62 = x; t63 = x; t64 = x; t65 = x; // up-level 0 t34 = t33 * t34; t36 = t35 * t36; t38 = t37 * t38; t40 = t39 * t40; t42 = t41 * t42; t44 = t43 * t44; t46 = t45 * t46; t48 = t47 * t48; t50 = t49 * t50; t52 = t51 * t52; t54 = t53 * t54; t56 = t55 * t56; t58 = t57 * t58; t60 = t59 * t60; t62 = t61 * t62; t64 = t63 * t64; // up-level 1 t36 = t34 * t36; t40 = t38 * t40; t44 = t42 * t44; t48 = t46 * t48; t52 = t50 * t52; t56 = t54 * t56; t60 = t58 * t60; t64 = t62 * t64; // up-level 2 t40 = t36 * t40; t48 = t44 * t48; t56 = t52 * t56; t64 = t60 * t64; // up-level 3 t48 = t40 * t48; t64 = t56 * t64; // up-level 4 t64 = t48 * t64; // up-level 5 // down-level 6 // down-level 7 t56 = t48 * t56; // down-level 8 t44 = t40 * t44; t52 = t48 * t52; t60 = t56 * t60; // down-level 9 t38 = t36 * t38; t42 = t40 * t42; t46 = t44 * t46; t50 = t48 * t50; t54 = t52 * t54; t58 = t56 * t58; t62 = t60 * t62; // down-level 10 t35 = t34 * t35; t37 = t36 * t37; t39 = t38 * t39; t41 = t40 * t41; t43 = t42 * t43; t45 = t44 * t45; t47 = t46 * t47; t49 = t48 * t49; t51 = t50 * t51; t53 = t52 * t53; t55 = t54 * t55; t57 = t56 * t57; t59 = t58 * t59; t61 = t60 * t61; t63 = t62 * t63; t65 = t64 * t65; // multiply p[i] with x^i t33 = t0 * t33; t34 = t1 * t34; t35 = t2 * t35; t36 = t3 * t36; t37 = t4 * t37; t38 = t5 * t38; t39 = t6 * t39; t40 = t7 * t40; t41 = t8 * t41; t42 = t9 * t42; t43 = t10 * t43; t44 = t11 * t44; t45 = t12 * t45; t46 = t13 * t46; t47 = t14 * t47; t48 = t15 * t48; t49 = t16 * t49; t50 = t17 * t50; t51 = t18 * t51; t52 = t19 * t52; t53 = t20 * t53; t54 = t21 * t54; t55 = t22 * t55; t56 = t23 * t56; t57 = t24 * t57; t58 = t25 * t58; t59 = t26 * t59; t60 = t27 * t60; t61 = t28 * t61; t62 = t29 * t62; t63 = t30 * t63; t64 = t31 * t64; t65 = t32 * t65; // sum up p[i]*x^i by a binary tree // level 0 t33 = t33 + t34; t34 = t35 + t36; t35 = t37 + t38; t36 = t39 + t40; t37 = t41 + t42; t38 = t43 + t44; t39 = t45 + t46; t40 = t47 + t48; t41 = t49 + t50; t42 = t51 + t52; t43 = t53 + t54; t44 = t55 + t56; t45 = t57 + t58; t46 = t59 + t60; t47 = t61 + t62; t48 = t63 + t64; t49 = t65; // level 0 t33 = t33 + t34; t34 = t35 + t36; t35 = t37 + t38; t36 = t39 + t40; t37 = t41 + t42; t38 = t43 + t44; t39 = t45 + t46; t40 = t47 + t48; t41 = t49; // level 0 t33 = t33 + t34; t34 = t35 + t36; t35 = t37 + t38; t36 = t39 + t40; t37 = t41; // level 0 t33 = t33 + t34; t34 = t35 + t36; t35 = t37; // level 0 t33 = t33 + t34; t34 = t35; // level 0 t33 = t33 + t34; // final result y = t33; }