// ************************************************************************** //
//                                                                            //
//    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;
    }