// ************************************************************************** // // // // 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 // // // // ************************************************************************** // [5]int p; int x,y; thread EvalPolynomial { int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9; t0 = p[0]; t1 = p[1]; t2 = p[2]; t3 = p[3]; t4 = p[4]; t5 = +1; t6 = x; t7 = x; t8 = x; t9 = x; // up-level 0 t6 = t5 * t6; t8 = t7 * t8; // up-level 1 t8 = t6 * t8; // up-level 2 // down-level 3 // down-level 4 t7 = t6 * t7; t9 = t8 * t9; // multiply p[i] with x^i t5 = t0 * t5; t6 = t1 * t6; t7 = t2 * t7; t8 = t3 * t8; t9 = t4 * t9; // sum up p[i]*x^i by a binary tree // level 0 t5 = t5 + t6; t6 = t7 + t8; t7 = t9; // level 0 t5 = t5 + t6; t6 = t7; // level 0 t5 = t5 + t6; // final result y = t5; }