// ************************************************************************** // // // // 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 // // // // ************************************************************************** // [17]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; 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 = +1; t18 = x; t19 = x; t20 = x; t21 = x; t22 = x; t23 = x; t24 = x; t25 = x; t26 = x; t27 = x; t28 = x; t29 = x; t30 = x; t31 = x; t32 = x; t33 = x; // up-level 0 t18 = t17 * t18; t20 = t19 * t20; t22 = t21 * t22; t24 = t23 * t24; t26 = t25 * t26; t28 = t27 * t28; t30 = t29 * t30; t32 = t31 * t32; // up-level 1 t20 = t18 * t20; t24 = t22 * t24; t28 = t26 * t28; t32 = t30 * t32; // up-level 2 t24 = t20 * t24; t32 = t28 * t32; // up-level 3 t32 = t24 * t32; // up-level 4 // down-level 5 // down-level 6 t28 = t24 * t28; // down-level 7 t22 = t20 * t22; t26 = t24 * t26; t30 = t28 * t30; // down-level 8 t19 = t18 * t19; t21 = t20 * t21; t23 = t22 * t23; t25 = t24 * t25; t27 = t26 * t27; t29 = t28 * t29; t31 = t30 * t31; t33 = t32 * t33; // multiply p[i] with x^i t17 = t0 * t17; t18 = t1 * t18; t19 = t2 * t19; t20 = t3 * t20; t21 = t4 * t21; t22 = t5 * t22; t23 = t6 * t23; t24 = t7 * t24; t25 = t8 * t25; t26 = t9 * t26; t27 = t10 * t27; t28 = t11 * t28; t29 = t12 * t29; t30 = t13 * t30; t31 = t14 * t31; t32 = t15 * t32; t33 = t16 * t33; // sum up p[i]*x^i by a binary tree // level 0 t17 = t17 + t18; t18 = t19 + t20; t19 = t21 + t22; t20 = t23 + t24; t21 = t25 + t26; t22 = t27 + t28; t23 = t29 + t30; t24 = t31 + t32; t25 = t33; // level 0 t17 = t17 + t18; t18 = t19 + t20; t19 = t21 + t22; t20 = t23 + t24; t21 = t25; // level 0 t17 = t17 + t18; t18 = t19 + t20; t19 = t21; // level 0 t17 = t17 + t18; t18 = t19; // level 0 t17 = t17 + t18; // final result y = t17; }