#include <math.h>

void generated_function(double* A0, const double x3D, const double y3D, const double P11_1, const double P11_2, const double P11_3, const double P11_4, const double P12_1, const double P12_2, const double P12_3, const double P12_4, const double P13_1, const double P13_2, const double P13_3, const double P13_4, const double P21_1, const double P21_2, const double P21_3, const double P21_4, const double P22_1, const double P22_2, const double P22_3, const double P22_4, const double P23_1, const double P23_2, const double P23_3, const double P23_4, const double x11, const double x12, const double x13, const double x21, const double x22, const double x23, const double G1_1, const double G1_2, const double G1_3, const double G1_4, const double G1_5, const double G1_6, const double G1_7, const double G1_8, const double G2_1, const double G2_2, const double G2_3, const double G2_4, const double G2_5, const double G2_6, const double G2_7, const double G2_8, const double G3_1, const double G3_2, const double G3_3, const double G3_4, const double G3_5, const double G3_6, const double G3_7, const double G3_8, const double alpha) {
    const double t2 = P11_1*x3D;
    const double t3 = P12_1*x3D;
    const double t4 = P13_1*x3D;
    const double t5 = P21_1*x3D;
    const double t6 = P22_1*x3D;
    const double t7 = P23_1*x3D;
    const double t8 = P11_2*y3D;
    const double t9 = P12_2*y3D;
    const double t10 = P13_2*y3D;
    const double t11 = P21_2*y3D;
    const double t12 = P22_2*y3D;
    const double t13 = P23_2*y3D;
    const double t14 = G1_1*2.0;
    const double t15 = G1_2*2.0;
    const double t16 = G1_3*2.0;
    const double t17 = G1_4*2.0;
    const double t18 = G1_5*2.0;
    const double t19 = G1_6*2.0;
    const double t20 = G1_7*2.0;
    const double t21 = G1_8*2.0;
    const double t22 = G2_1*2.0;
    const double t23 = G2_2*2.0;
    const double t24 = G2_3*2.0;
    const double t25 = G2_4*2.0;
    const double t26 = G2_5*2.0;
    const double t27 = G2_6*2.0;
    const double t28 = G2_7*2.0;
    const double t29 = G2_8*2.0;
    const double t30 = x3D*2.0;
    const double t31 = y3D*2.0;
    const double t32 = -x3D;
    const double t34 = -y3D;
    const double t33 = -t30;
    const double t35 = -t31;
    const double t36 = G1_1+t32;
    const double t37 = G1_2+t32;
    const double t38 = G1_3+t32;
    const double t39 = G1_4+t32;
    const double t40 = G1_5+t32;
    const double t41 = G1_6+t32;
    const double t42 = G1_7+t32;
    const double t43 = G1_8+t32;
    const double t44 = G2_1+t34;
    const double t45 = G2_2+t34;
    const double t46 = G2_3+t34;
    const double t47 = G2_4+t34;
    const double t48 = G2_5+t34;
    const double t49 = G2_6+t34;
    const double t50 = G2_7+t34;
    const double t51 = G2_8+t34;
    const double t52 = t14+t33;
    const double t53 = t15+t33;
    const double t54 = t16+t33;
    const double t55 = t17+t33;
    const double t56 = t18+t33;
    const double t57 = t19+t33;
    const double t58 = t20+t33;
    const double t59 = t21+t33;
    const double t60 = t36*t36;
    const double t61 = t37*t37;
    const double t62 = t38*t38;
    const double t63 = t39*t39;
    const double t64 = t40*t40;
    const double t65 = t41*t41;
    const double t66 = t42*t42;
    const double t67 = t43*t43;
    const double t68 = t22+t35;
    const double t69 = t23+t35;
    const double t70 = t24+t35;
    const double t71 = t25+t35;
    const double t72 = t26+t35;
    const double t73 = t27+t35;
    const double t74 = t28+t35;
    const double t75 = t29+t35;
    const double t76 = t44*t44;
    const double t77 = t45*t45;
    const double t78 = t46*t46;
    const double t79 = t47*t47;
    const double t80 = t48*t48;
    const double t81 = t49*t49;
    const double t82 = t50*t50;
    const double t83 = t51*t51;
    const double t84 = t60+t76;
    const double t85 = t61+t77;
    const double t86 = t62+t78;
    const double t87 = t63+t79;
    const double t88 = t64+t80;
    const double t89 = t65+t81;
    const double t90 = t66+t82;
    const double t91 = t67+t83;
    const double t92 = sqrt(t84);
    const double t93 = sqrt(t85);
    const double t94 = sqrt(t86);
    const double t95 = sqrt(t87);
    const double t96 = sqrt(t88);
    const double t97 = sqrt(t89);
    const double t98 = sqrt(t90);
    const double t99 = sqrt(t91);
    const double t100 = 1.0/t92;
    const double t101 = 1.0/t93;
    const double t102 = 1.0/t94;
    const double t103 = 1.0/t95;
    const double t104 = 1.0/t96;
    const double t105 = 1.0/t97;
    const double t106 = 1.0/t98;
    const double t107 = 1.0/t99;
    const double t108 = alpha*t92;
    const double t109 = alpha*t93;
    const double t110 = alpha*t94;
    const double t111 = alpha*t95;
    const double t112 = alpha*t96;
    const double t113 = alpha*t97;
    const double t114 = alpha*t98;
    const double t115 = alpha*t99;
    const double t116 = -t108;
    const double t117 = -t109;
    const double t118 = -t110;
    const double t119 = -t111;
    const double t120 = -t112;
    const double t121 = -t113;
    const double t122 = -t114;
    const double t123 = -t115;
    const double t124 = exp(t116);
    const double t125 = exp(t117);
    const double t126 = exp(t118);
    const double t127 = exp(t119);
    const double t128 = exp(t120);
    const double t129 = exp(t121);
    const double t130 = exp(t122);
    const double t131 = exp(t123);
    const double t132 = G3_1*t124;
    const double t133 = G3_2*t125;
    const double t134 = G3_3*t126;
    const double t135 = G3_4*t127;
    const double t136 = G3_5*t128;
    const double t137 = G3_6*t129;
    const double t138 = G3_7*t130;
    const double t139 = G3_8*t131;
    const double t140 = (alpha*t52*t100*t124)/2.0;
    const double t141 = (alpha*t53*t101*t125)/2.0;
    const double t142 = (alpha*t54*t102*t126)/2.0;
    const double t143 = (alpha*t55*t103*t127)/2.0;
    const double t144 = (alpha*t56*t104*t128)/2.0;
    const double t145 = (alpha*t57*t105*t129)/2.0;
    const double t146 = (alpha*t58*t106*t130)/2.0;
    const double t147 = (alpha*t59*t107*t131)/2.0;
    const double t148 = (alpha*t68*t100*t124)/2.0;
    const double t149 = (alpha*t69*t101*t125)/2.0;
    const double t150 = (alpha*t70*t102*t126)/2.0;
    const double t151 = (alpha*t71*t103*t127)/2.0;
    const double t152 = (alpha*t72*t104*t128)/2.0;
    const double t153 = (alpha*t73*t105*t129)/2.0;
    const double t154 = (alpha*t74*t106*t130)/2.0;
    const double t155 = (alpha*t75*t107*t131)/2.0;
    const double t172 = t124+t125+t126+t127+t128+t129+t130+t131;
    const double t156 = (alpha*t52*t100*t132)/2.0;
    const double t157 = (alpha*t53*t101*t133)/2.0;
    const double t158 = (alpha*t54*t102*t134)/2.0;
    const double t159 = (alpha*t55*t103*t135)/2.0;
    const double t160 = (alpha*t56*t104*t136)/2.0;
    const double t161 = (alpha*t57*t105*t137)/2.0;
    const double t162 = (alpha*t58*t106*t138)/2.0;
    const double t163 = (alpha*t59*t107*t139)/2.0;
    const double t164 = (alpha*t68*t100*t132)/2.0;
    const double t165 = (alpha*t69*t101*t133)/2.0;
    const double t166 = (alpha*t70*t102*t134)/2.0;
    const double t167 = (alpha*t71*t103*t135)/2.0;
    const double t168 = (alpha*t72*t104*t136)/2.0;
    const double t169 = (alpha*t73*t105*t137)/2.0;
    const double t170 = (alpha*t74*t106*t138)/2.0;
    const double t171 = (alpha*t75*t107*t139)/2.0;
    const double t173 = 1.0/t172;
    const double t175 = t132+t133+t134+t135+t136+t137+t138+t139;
    const double t192 = t140+t141+t142+t143+t144+t145+t146+t147;
    const double t193 = t148+t149+t150+t151+t152+t153+t154+t155;
    const double t174 = t173*t173;
    const double t176 = P11_3*t173*t175;
    const double t177 = P12_3*t173*t175;
    const double t178 = P13_3*t173*t175;
    const double t179 = P21_3*t173*t175;
    const double t180 = P22_3*t173*t175;
    const double t181 = P23_3*t173*t175;
    const double t194 = t156+t157+t158+t159+t160+t161+t162+t163;
    const double t195 = t164+t165+t166+t167+t168+t169+t170+t171;
    const double t182 = P11_4+t2+t8+t176;
    const double t183 = P12_4+t3+t9+t177;
    const double t184 = P13_4+t4+t10+t178;
    const double t185 = P21_4+t5+t11+t179;
    const double t186 = P22_4+t6+t12+t180;
    const double t187 = P23_4+t7+t13+t181;
    const double t196 = P13_3*t173*t194;
    const double t197 = P23_3*t173*t194;
    const double t198 = P13_3*t173*t195;
    const double t199 = P23_3*t173*t195;
    const double t200 = P13_3*t174*t175*t192;
    const double t201 = P23_3*t174*t175*t192;
    const double t202 = P13_3*t174*t175*t193;
    const double t203 = P23_3*t174*t175*t193;
    const double t188 = 1.0/t184;
    const double t190 = 1.0/t187;
    const double t204 = -t200;
    const double t205 = -t201;
    const double t206 = -t202;
    const double t207 = -t203;
    const double t189 = t188*t188;
    const double t191 = t190*t190;
    const double t208 = P13_1+t196+t204;
    const double t209 = P23_1+t197+t205;
    const double t210 = P13_2+t198+t206;
    const double t211 = P23_2+t199+t207;
    A0[0] = t188*(P11_1+P11_3*t173*t194-P11_3*t174*t175*t192)-t182*t189*t208;
    A0[1] = t188*(P11_2+P11_3*t173*t195-P11_3*t174*t175*t193)-t182*t189*t210;
    A0[2] = t188*(P12_1+P12_3*t173*t194-P12_3*t174*t175*t192)-t183*t189*t208;
    A0[3] = t188*(P12_2+P12_3*t173*t195-P12_3*t174*t175*t193)-t183*t189*t210;
    A0[4] = t190*(P21_1+P21_3*t173*t194-P21_3*t174*t175*t192)-t185*t191*t209;
    A0[5] = t190*(P21_2+P21_3*t173*t195-P21_3*t174*t175*t193)-t185*t191*t211;
    A0[6] = t190*(P22_1+P22_3*t173*t194-P22_3*t174*t175*t192)-t186*t191*t209;
    A0[7] = t190*(P22_2+P22_3*t173*t195-P22_3*t174*t175*t193)-t186*t191*t211;
}

void main(double* out, double* data) {
    generated_function(out, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[16], data[17], data[18], data[19], data[20], data[21], data[22], data[23], data[24], data[25], data[26], data[27], data[28], data[29], data[30], data[31], data[32], data[33], data[34], data[35], data[36], data[37], data[38], data[39], data[40], data[41], data[42], data[43], data[44], data[45], data[46], data[47], data[48], data[49], data[50], data[51], data[52], data[53], data[54], data[55], data[56]);
}
/* Output matrix should be of size 4 x 2 */