// ************************************************************************** // // // // 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 // // // // ************************************************************************** // [129]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,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128; t0 = +1; t1 = x; t2 = x; t3 = x; t4 = x; t5 = x; t6 = x; t7 = x; t8 = x; t9 = x; t10 = x; t11 = x; t12 = x; t13 = x; t14 = x; t15 = x; t16 = x; t17 = x; 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; 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; t66 = x; t67 = x; t68 = x; t69 = x; t70 = x; t71 = x; t72 = x; t73 = x; t74 = x; t75 = x; t76 = x; t77 = x; t78 = x; t79 = x; t80 = x; t81 = x; t82 = x; t83 = x; t84 = x; t85 = x; t86 = x; t87 = x; t88 = x; t89 = x; t90 = x; t91 = x; t92 = x; t93 = x; t94 = x; t95 = x; t96 = x; t97 = x; t98 = x; t99 = x; t100 = x; t101 = x; t102 = x; t103 = x; t104 = x; t105 = x; t106 = x; t107 = x; t108 = x; t109 = x; t110 = x; t111 = x; t112 = x; t113 = x; t114 = x; t115 = x; t116 = x; t117 = x; t118 = x; t119 = x; t120 = x; t121 = x; t122 = x; t123 = x; t124 = x; t125 = x; t126 = x; t127 = x; t128 = x; // up-level 0 t1 = t0 * t1; t3 = t2 * t3; t5 = t4 * t5; t7 = t6 * t7; t9 = t8 * t9; t11 = t10 * t11; t13 = t12 * t13; t15 = t14 * t15; t17 = t16 * t17; t19 = t18 * t19; t21 = t20 * t21; t23 = t22 * t23; t25 = t24 * t25; t27 = t26 * t27; t29 = t28 * t29; t31 = t30 * t31; t33 = t32 * t33; 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; t67 = t66 * t67; t69 = t68 * t69; t71 = t70 * t71; t73 = t72 * t73; t75 = t74 * t75; t77 = t76 * t77; t79 = t78 * t79; t81 = t80 * t81; t83 = t82 * t83; t85 = t84 * t85; t87 = t86 * t87; t89 = t88 * t89; t91 = t90 * t91; t93 = t92 * t93; t95 = t94 * t95; t97 = t96 * t97; t99 = t98 * t99; t101 = t100 * t101; t103 = t102 * t103; t105 = t104 * t105; t107 = t106 * t107; t109 = t108 * t109; t111 = t110 * t111; t113 = t112 * t113; t115 = t114 * t115; t117 = t116 * t117; t119 = t118 * t119; t121 = t120 * t121; t123 = t122 * t123; t125 = t124 * t125; t127 = t126 * t127; // up-level 1 t3 = t1 * t3; t7 = t5 * t7; t11 = t9 * t11; t15 = t13 * t15; t19 = t17 * t19; t23 = t21 * t23; t27 = t25 * t27; t31 = t29 * t31; t35 = t33 * t35; t39 = t37 * t39; t43 = t41 * t43; t47 = t45 * t47; t51 = t49 * t51; t55 = t53 * t55; t59 = t57 * t59; t63 = t61 * t63; t67 = t65 * t67; t71 = t69 * t71; t75 = t73 * t75; t79 = t77 * t79; t83 = t81 * t83; t87 = t85 * t87; t91 = t89 * t91; t95 = t93 * t95; t99 = t97 * t99; t103 = t101 * t103; t107 = t105 * t107; t111 = t109 * t111; t115 = t113 * t115; t119 = t117 * t119; t123 = t121 * t123; t127 = t125 * t127; // up-level 2 t7 = t3 * t7; t15 = t11 * t15; t23 = t19 * t23; t31 = t27 * t31; t39 = t35 * t39; t47 = t43 * t47; t55 = t51 * t55; t63 = t59 * t63; t71 = t67 * t71; t79 = t75 * t79; t87 = t83 * t87; t95 = t91 * t95; t103 = t99 * t103; t111 = t107 * t111; t119 = t115 * t119; t127 = t123 * t127; // up-level 3 t15 = t7 * t15; t31 = t23 * t31; t47 = t39 * t47; t63 = t55 * t63; t79 = t71 * t79; t95 = t87 * t95; t111 = t103 * t111; t127 = t119 * t127; // up-level 4 t31 = t15 * t31; t63 = t47 * t63; t95 = t79 * t95; t127 = t111 * t127; // up-level 5 t63 = t31 * t63; t127 = t95 * t127; // up-level 6 t127 = t63 * t127; // up-level 7 // down-level 8 // down-level 9 t95 = t63 * t95; // down-level 10 t47 = t31 * t47; t79 = t63 * t79; t111 = t95 * t111; // down-level 11 t23 = t15 * t23; t39 = t31 * t39; t55 = t47 * t55; t71 = t63 * t71; t87 = t79 * t87; t103 = t95 * t103; t119 = t111 * t119; // down-level 12 t11 = t7 * t11; t19 = t15 * t19; t27 = t23 * t27; t35 = t31 * t35; t43 = t39 * t43; t51 = t47 * t51; t59 = t55 * t59; t67 = t63 * t67; t75 = t71 * t75; t83 = t79 * t83; t91 = t87 * t91; t99 = t95 * t99; t107 = t103 * t107; t115 = t111 * t115; t123 = t119 * t123; // down-level 13 t5 = t3 * t5; t9 = t7 * t9; t13 = t11 * t13; t17 = t15 * t17; t21 = t19 * t21; t25 = t23 * t25; t29 = t27 * t29; t33 = t31 * t33; t37 = t35 * t37; t41 = t39 * t41; t45 = t43 * t45; t49 = t47 * t49; t53 = t51 * t53; t57 = t55 * t57; t61 = t59 * t61; t65 = t63 * t65; t69 = t67 * t69; t73 = t71 * t73; t77 = t75 * t77; t81 = t79 * t81; t85 = t83 * t85; t89 = t87 * t89; t93 = t91 * t93; t97 = t95 * t97; t101 = t99 * t101; t105 = t103 * t105; t109 = t107 * t109; t113 = t111 * t113; t117 = t115 * t117; t121 = t119 * t121; t125 = t123 * t125; // down-level 14 t2 = t1 * t2; t4 = t3 * t4; t6 = t5 * t6; t8 = t7 * t8; t10 = t9 * t10; t12 = t11 * t12; t14 = t13 * t14; t16 = t15 * t16; t18 = t17 * t18; t20 = t19 * t20; t22 = t21 * t22; t24 = t23 * t24; t26 = t25 * t26; t28 = t27 * t28; t30 = t29 * t30; t32 = t31 * t32; 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; t66 = t65 * t66; t68 = t67 * t68; t70 = t69 * t70; t72 = t71 * t72; t74 = t73 * t74; t76 = t75 * t76; t78 = t77 * t78; t80 = t79 * t80; t82 = t81 * t82; t84 = t83 * t84; t86 = t85 * t86; t88 = t87 * t88; t90 = t89 * t90; t92 = t91 * t92; t94 = t93 * t94; t96 = t95 * t96; t98 = t97 * t98; t100 = t99 * t100; t102 = t101 * t102; t104 = t103 * t104; t106 = t105 * t106; t108 = t107 * t108; t110 = t109 * t110; t112 = t111 * t112; t114 = t113 * t114; t116 = t115 * t116; t118 = t117 * t118; t120 = t119 * t120; t122 = t121 * t122; t124 = t123 * t124; t126 = t125 * t126; t128 = t127 * t128; // multiply p[i] with x^i t0 = p[0] * t0; t1 = p[1] * t1; t2 = p[2] * t2; t3 = p[3] * t3; t4 = p[4] * t4; t5 = p[5] * t5; t6 = p[6] * t6; t7 = p[7] * t7; t8 = p[8] * t8; t9 = p[9] * t9; t10 = p[10] * t10; t11 = p[11] * t11; t12 = p[12] * t12; t13 = p[13] * t13; t14 = p[14] * t14; t15 = p[15] * t15; t16 = p[16] * t16; t17 = p[17] * t17; t18 = p[18] * t18; t19 = p[19] * t19; t20 = p[20] * t20; t21 = p[21] * t21; t22 = p[22] * t22; t23 = p[23] * t23; t24 = p[24] * t24; t25 = p[25] * t25; t26 = p[26] * t26; t27 = p[27] * t27; t28 = p[28] * t28; t29 = p[29] * t29; t30 = p[30] * t30; t31 = p[31] * t31; t32 = p[32] * t32; t33 = p[33] * t33; t34 = p[34] * t34; t35 = p[35] * t35; t36 = p[36] * t36; t37 = p[37] * t37; t38 = p[38] * t38; t39 = p[39] * t39; t40 = p[40] * t40; t41 = p[41] * t41; t42 = p[42] * t42; t43 = p[43] * t43; t44 = p[44] * t44; t45 = p[45] * t45; t46 = p[46] * t46; t47 = p[47] * t47; t48 = p[48] * t48; t49 = p[49] * t49; t50 = p[50] * t50; t51 = p[51] * t51; t52 = p[52] * t52; t53 = p[53] * t53; t54 = p[54] * t54; t55 = p[55] * t55; t56 = p[56] * t56; t57 = p[57] * t57; t58 = p[58] * t58; t59 = p[59] * t59; t60 = p[60] * t60; t61 = p[61] * t61; t62 = p[62] * t62; t63 = p[63] * t63; t64 = p[64] * t64; t65 = p[65] * t65; t66 = p[66] * t66; t67 = p[67] * t67; t68 = p[68] * t68; t69 = p[69] * t69; t70 = p[70] * t70; t71 = p[71] * t71; t72 = p[72] * t72; t73 = p[73] * t73; t74 = p[74] * t74; t75 = p[75] * t75; t76 = p[76] * t76; t77 = p[77] * t77; t78 = p[78] * t78; t79 = p[79] * t79; t80 = p[80] * t80; t81 = p[81] * t81; t82 = p[82] * t82; t83 = p[83] * t83; t84 = p[84] * t84; t85 = p[85] * t85; t86 = p[86] * t86; t87 = p[87] * t87; t88 = p[88] * t88; t89 = p[89] * t89; t90 = p[90] * t90; t91 = p[91] * t91; t92 = p[92] * t92; t93 = p[93] * t93; t94 = p[94] * t94; t95 = p[95] * t95; t96 = p[96] * t96; t97 = p[97] * t97; t98 = p[98] * t98; t99 = p[99] * t99; t100 = p[100] * t100; t101 = p[101] * t101; t102 = p[102] * t102; t103 = p[103] * t103; t104 = p[104] * t104; t105 = p[105] * t105; t106 = p[106] * t106; t107 = p[107] * t107; t108 = p[108] * t108; t109 = p[109] * t109; t110 = p[110] * t110; t111 = p[111] * t111; t112 = p[112] * t112; t113 = p[113] * t113; t114 = p[114] * t114; t115 = p[115] * t115; t116 = p[116] * t116; t117 = p[117] * t117; t118 = p[118] * t118; t119 = p[119] * t119; t120 = p[120] * t120; t121 = p[121] * t121; t122 = p[122] * t122; t123 = p[123] * t123; t124 = p[124] * t124; t125 = p[125] * t125; t126 = p[126] * t126; t127 = p[127] * t127; t128 = p[128] * t128; // sum up p[i]*x^i by a binary tree // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4 + t5; t3 = t6 + t7; t4 = t8 + t9; t5 = t10 + t11; t6 = t12 + t13; t7 = t14 + t15; t8 = t16 + t17; t9 = t18 + t19; t10 = t20 + t21; t11 = t22 + t23; t12 = t24 + t25; t13 = t26 + t27; t14 = t28 + t29; t15 = t30 + t31; t16 = t32 + t33; t17 = t34 + t35; t18 = t36 + t37; t19 = t38 + t39; t20 = t40 + t41; t21 = t42 + t43; t22 = t44 + t45; t23 = t46 + t47; t24 = t48 + t49; t25 = t50 + t51; t26 = t52 + t53; t27 = t54 + t55; t28 = t56 + t57; t29 = t58 + t59; t30 = t60 + t61; t31 = t62 + t63; t32 = t64 + t65; t33 = t66 + t67; t34 = t68 + t69; t35 = t70 + t71; t36 = t72 + t73; t37 = t74 + t75; t38 = t76 + t77; t39 = t78 + t79; t40 = t80 + t81; t41 = t82 + t83; t42 = t84 + t85; t43 = t86 + t87; t44 = t88 + t89; t45 = t90 + t91; t46 = t92 + t93; t47 = t94 + t95; t48 = t96 + t97; t49 = t98 + t99; t50 = t100 + t101; t51 = t102 + t103; t52 = t104 + t105; t53 = t106 + t107; t54 = t108 + t109; t55 = t110 + t111; t56 = t112 + t113; t57 = t114 + t115; t58 = t116 + t117; t59 = t118 + t119; t60 = t120 + t121; t61 = t122 + t123; t62 = t124 + t125; t63 = t126 + t127; t64 = t128; // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4 + t5; t3 = t6 + t7; t4 = t8 + t9; t5 = t10 + t11; t6 = t12 + t13; t7 = t14 + t15; t8 = t16 + t17; t9 = t18 + t19; t10 = t20 + t21; t11 = t22 + t23; t12 = t24 + t25; t13 = t26 + t27; t14 = t28 + t29; t15 = t30 + t31; t16 = t32 + t33; t17 = t34 + t35; t18 = t36 + t37; t19 = t38 + t39; t20 = t40 + t41; t21 = t42 + t43; t22 = t44 + t45; t23 = t46 + t47; t24 = t48 + t49; t25 = t50 + t51; t26 = t52 + t53; t27 = t54 + t55; t28 = t56 + t57; t29 = t58 + t59; t30 = t60 + t61; t31 = t62 + t63; t32 = t64; // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4 + t5; t3 = t6 + t7; t4 = t8 + t9; t5 = t10 + t11; t6 = t12 + t13; t7 = t14 + t15; t8 = t16 + t17; t9 = t18 + t19; t10 = t20 + t21; t11 = t22 + t23; t12 = t24 + t25; t13 = t26 + t27; t14 = t28 + t29; t15 = t30 + t31; t16 = t32; // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4 + t5; t3 = t6 + t7; t4 = t8 + t9; t5 = t10 + t11; t6 = t12 + t13; t7 = t14 + t15; t8 = t16; // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4 + t5; t3 = t6 + t7; t4 = t8; // level 0 t0 = t0 + t1; t1 = t2 + t3; t2 = t4; // level 0 t0 = t0 + t1; t1 = t2; // level 0 t0 = t0 + t1; // final result y = t0; }