#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54403 = x;
        float r54404 = 18.0;
        float r54405 = r54403 * r54404;
        float r54406 = y;
        float r54407 = r54405 * r54406;
        float r54408 = z;
        float r54409 = r54407 * r54408;
        float r54410 = t;
        float r54411 = r54409 * r54410;
        float r54412 = a;
        float r54413 = 4.0;
        float r54414 = r54412 * r54413;
        float r54415 = r54414 * r54410;
        float r54416 = r54411 - r54415;
        float r54417 = b;
        float r54418 = c;
        float r54419 = r54417 * r54418;
        float r54420 = r54416 + r54419;
        float r54421 = r54403 * r54413;
        float r54422 = i;
        float r54423 = r54421 * r54422;
        float r54424 = r54420 - r54423;
        float r54425 = j;
        float r54426 = 27.0;
        float r54427 = r54425 * r54426;
        float r54428 = k;
        float r54429 = r54427 * r54428;
        float r54430 = r54424 - r54429;
        return r54430;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54431 = x;
        double r54432 = 18.0;
        double r54433 = r54431 * r54432;
        double r54434 = y;
        double r54435 = r54433 * r54434;
        double r54436 = z;
        double r54437 = r54435 * r54436;
        double r54438 = t;
        double r54439 = r54437 * r54438;
        double r54440 = a;
        double r54441 = 4.0;
        double r54442 = r54440 * r54441;
        double r54443 = r54442 * r54438;
        double r54444 = r54439 - r54443;
        double r54445 = b;
        double r54446 = c;
        double r54447 = r54445 * r54446;
        double r54448 = r54444 + r54447;
        double r54449 = r54431 * r54441;
        double r54450 = i;
        double r54451 = r54449 * r54450;
        double r54452 = r54448 - r54451;
        double r54453 = j;
        double r54454 = 27.0;
        double r54455 = r54453 * r54454;
        double r54456 = k;
        double r54457 = r54455 * r54456;
        double r54458 = r54452 - r54457;
        return r54458;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54459 = z;
        float r54460 = -5.38122143438205e-09;
        bool r54461 = r54459 <= r54460;
        float r54462 = b;
        float r54463 = c;
        float r54464 = r54462 * r54463;
        float r54465 = 4.0;
        float r54466 = x;
        float r54467 = i;
        float r54468 = r54466 * r54467;
        float r54469 = a;
        float r54470 = t;
        float r54471 = r54469 * r54470;
        float r54472 = r54468 + r54471;
        float r54473 = r54465 * r54472;
        float r54474 = r54464 - r54473;
        float r54475 = 18.0;
        float r54476 = r54475 * r54466;
        float r54477 = y;
        float r54478 = r54476 * r54477;
        float r54479 = r54470 * r54478;
        float r54480 = r54479 * r54459;
        float r54481 = 27.0;
        float r54482 = k;
        float r54483 = j;
        float r54484 = r54482 * r54483;
        float r54485 = r54481 * r54484;
        float r54486 = r54480 - r54485;
        float r54487 = r54474 + r54486;
        float r54488 = 1.620828576697051e-140;
        bool r54489 = r54459 <= r54488;
        float r54490 = r54477 * r54459;
        float r54491 = r54476 * r54490;
        float r54492 = r54470 * r54491;
        float r54493 = cbrt(r54492);
        float r54494 = r54493 * r54493;
        float r54495 = r54494 * r54493;
        float r54496 = r54495 - r54485;
        float r54497 = r54474 + r54496;
        float r54498 = r54470 * r54466;
        float r54499 = r54477 * r54498;
        float r54500 = r54459 * r54499;
        float r54501 = r54475 * r54500;
        float r54502 = r54501 - r54485;
        float r54503 = r54474 + r54502;
        float r54504 = r54489 ? r54497 : r54503;
        float r54505 = r54461 ? r54487 : r54504;
        return r54505;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54506 = z;
        double r54507 = -5.38122143438205e-09;
        bool r54508 = r54506 <= r54507;
        double r54509 = b;
        double r54510 = c;
        double r54511 = r54509 * r54510;
        double r54512 = 4.0;
        double r54513 = x;
        double r54514 = i;
        double r54515 = r54513 * r54514;
        double r54516 = a;
        double r54517 = t;
        double r54518 = r54516 * r54517;
        double r54519 = r54515 + r54518;
        double r54520 = r54512 * r54519;
        double r54521 = r54511 - r54520;
        double r54522 = 18.0;
        double r54523 = r54522 * r54513;
        double r54524 = y;
        double r54525 = r54523 * r54524;
        double r54526 = r54517 * r54525;
        double r54527 = r54526 * r54506;
        double r54528 = 27.0;
        double r54529 = k;
        double r54530 = j;
        double r54531 = r54529 * r54530;
        double r54532 = r54528 * r54531;
        double r54533 = r54527 - r54532;
        double r54534 = r54521 + r54533;
        double r54535 = 1.620828576697051e-140;
        bool r54536 = r54506 <= r54535;
        double r54537 = r54524 * r54506;
        double r54538 = r54523 * r54537;
        double r54539 = r54517 * r54538;
        double r54540 = cbrt(r54539);
        double r54541 = r54540 * r54540;
        double r54542 = r54541 * r54540;
        double r54543 = r54542 - r54532;
        double r54544 = r54521 + r54543;
        double r54545 = r54517 * r54513;
        double r54546 = r54524 * r54545;
        double r54547 = r54506 * r54546;
        double r54548 = r54522 * r54547;
        double r54549 = r54548 - r54532;
        double r54550 = r54521 + r54549;
        double r54551 = r54536 ? r54544 : r54550;
        double r54552 = r54508 ? r54534 : r54551;
        return r54552;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r54553, r54554, r54555, r54556, r54557, r54558, r54559, r54560, r54561, r54562, r54563, r54564, r54565, r54566, r54567, r54568, r54569, r54570, r54571, r54572, r54573, r54574, r54575, r54576, r54577, r54578, r54579, r54580;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54553);
        mpfr_init_set_str(r54554, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54555);
        mpfr_init(r54556);
        mpfr_init(r54557);
        mpfr_init(r54558);
        mpfr_init(r54559);
        mpfr_init(r54560);
        mpfr_init(r54561);
        mpfr_init(r54562);
        mpfr_init_set_str(r54563, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54564);
        mpfr_init(r54565);
        mpfr_init(r54566);
        mpfr_init(r54567);
        mpfr_init(r54568);
        mpfr_init(r54569);
        mpfr_init(r54570);
        mpfr_init(r54571);
        mpfr_init(r54572);
        mpfr_init(r54573);
        mpfr_init(r54574);
        mpfr_init(r54575);
        mpfr_init_set_str(r54576, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54577);
        mpfr_init(r54578);
        mpfr_init(r54579);
        mpfr_init(r54580);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54553, x, MPFR_RNDN);
        ;
        mpfr_mul(r54555, r54553, r54554, MPFR_RNDN);
        mpfr_set_d(r54556, y, MPFR_RNDN);
        mpfr_mul(r54557, r54555, r54556, MPFR_RNDN);
        mpfr_set_d(r54558, z, MPFR_RNDN);
        mpfr_mul(r54559, r54557, r54558, MPFR_RNDN);
        mpfr_set_d(r54560, t, MPFR_RNDN);
        mpfr_mul(r54561, r54559, r54560, MPFR_RNDN);
        mpfr_set_d(r54562, a, MPFR_RNDN);
        ;
        mpfr_mul(r54564, r54562, r54563, MPFR_RNDN);
        mpfr_mul(r54565, r54564, r54560, MPFR_RNDN);
        mpfr_sub(r54566, r54561, r54565, MPFR_RNDN);
        mpfr_set_d(r54567, b, MPFR_RNDN);
        mpfr_set_d(r54568, c, MPFR_RNDN);
        mpfr_mul(r54569, r54567, r54568, MPFR_RNDN);
        mpfr_add(r54570, r54566, r54569, MPFR_RNDN);
        mpfr_mul(r54571, r54553, r54563, MPFR_RNDN);
        mpfr_set_d(r54572, i, MPFR_RNDN);
        mpfr_mul(r54573, r54571, r54572, MPFR_RNDN);
        mpfr_sub(r54574, r54570, r54573, MPFR_RNDN);
        mpfr_set_d(r54575, j, MPFR_RNDN);
        ;
        mpfr_mul(r54577, r54575, r54576, MPFR_RNDN);
        mpfr_set_d(r54578, k, MPFR_RNDN);
        mpfr_mul(r54579, r54577, r54578, MPFR_RNDN);
        mpfr_sub(r54580, r54574, r54579, MPFR_RNDN);
        return mpfr_get_d(r54580, MPFR_RNDN);
}

static mpfr_t r54581, r54582, r54583, r54584, r54585, r54586, r54587, r54588, r54589, r54590, r54591, r54592, r54593, r54594, r54595, r54596, r54597, r54598, r54599, r54600, r54601, r54602, r54603, r54604, r54605, r54606, r54607, r54608, r54609, r54610, r54611, r54612, r54613, r54614, r54615, r54616, r54617, r54618, r54619, r54620, r54621, r54622, r54623, r54624, r54625, r54626, r54627;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54581);
        mpfr_init_set_str(r54582, "-5.38122143438205e-09", 10, MPFR_RNDN);
        mpfr_init(r54583);
        mpfr_init(r54584);
        mpfr_init(r54585);
        mpfr_init(r54586);
        mpfr_init_set_str(r54587, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54588);
        mpfr_init(r54589);
        mpfr_init(r54590);
        mpfr_init(r54591);
        mpfr_init(r54592);
        mpfr_init(r54593);
        mpfr_init(r54594);
        mpfr_init(r54595);
        mpfr_init(r54596);
        mpfr_init_set_str(r54597, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54598);
        mpfr_init(r54599);
        mpfr_init(r54600);
        mpfr_init(r54601);
        mpfr_init(r54602);
        mpfr_init_set_str(r54603, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54604);
        mpfr_init(r54605);
        mpfr_init(r54606);
        mpfr_init(r54607);
        mpfr_init(r54608);
        mpfr_init(r54609);
        mpfr_init_set_str(r54610, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54611);
        mpfr_init(r54612);
        mpfr_init(r54613);
        mpfr_init(r54614);
        mpfr_init(r54615);
        mpfr_init(r54616);
        mpfr_init(r54617);
        mpfr_init(r54618);
        mpfr_init(r54619);
        mpfr_init(r54620);
        mpfr_init(r54621);
        mpfr_init(r54622);
        mpfr_init(r54623);
        mpfr_init(r54624);
        mpfr_init(r54625);
        mpfr_init(r54626);
        mpfr_init(r54627);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54581, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54583, mpfr_cmp(r54581, r54582) <= 0, MPFR_RNDN);
        mpfr_set_d(r54584, b, MPFR_RNDN);
        mpfr_set_d(r54585, c, MPFR_RNDN);
        mpfr_mul(r54586, r54584, r54585, MPFR_RNDN);
        ;
        mpfr_set_d(r54588, x, MPFR_RNDN);
        mpfr_set_d(r54589, i, MPFR_RNDN);
        mpfr_mul(r54590, r54588, r54589, MPFR_RNDN);
        mpfr_set_d(r54591, a, MPFR_RNDN);
        mpfr_set_d(r54592, t, MPFR_RNDN);
        mpfr_mul(r54593, r54591, r54592, MPFR_RNDN);
        mpfr_add(r54594, r54590, r54593, MPFR_RNDN);
        mpfr_mul(r54595, r54587, r54594, MPFR_RNDN);
        mpfr_sub(r54596, r54586, r54595, MPFR_RNDN);
        ;
        mpfr_mul(r54598, r54597, r54588, MPFR_RNDN);
        mpfr_set_d(r54599, y, MPFR_RNDN);
        mpfr_mul(r54600, r54598, r54599, MPFR_RNDN);
        mpfr_mul(r54601, r54592, r54600, MPFR_RNDN);
        mpfr_mul(r54602, r54601, r54581, MPFR_RNDN);
        ;
        mpfr_set_d(r54604, k, MPFR_RNDN);
        mpfr_set_d(r54605, j, MPFR_RNDN);
        mpfr_mul(r54606, r54604, r54605, MPFR_RNDN);
        mpfr_mul(r54607, r54603, r54606, MPFR_RNDN);
        mpfr_sub(r54608, r54602, r54607, MPFR_RNDN);
        mpfr_add(r54609, r54596, r54608, MPFR_RNDN);
        ;
        mpfr_set_si(r54611, mpfr_cmp(r54581, r54610) <= 0, MPFR_RNDN);
        mpfr_mul(r54612, r54599, r54581, MPFR_RNDN);
        mpfr_mul(r54613, r54598, r54612, MPFR_RNDN);
        mpfr_mul(r54614, r54592, r54613, MPFR_RNDN);
        mpfr_cbrt(r54615, r54614, MPFR_RNDN);
        mpfr_mul(r54616, r54615, r54615, MPFR_RNDN);
        mpfr_mul(r54617, r54616, r54615, MPFR_RNDN);
        mpfr_sub(r54618, r54617, r54607, MPFR_RNDN);
        mpfr_add(r54619, r54596, r54618, MPFR_RNDN);
        mpfr_mul(r54620, r54592, r54588, MPFR_RNDN);
        mpfr_mul(r54621, r54599, r54620, MPFR_RNDN);
        mpfr_mul(r54622, r54581, r54621, MPFR_RNDN);
        mpfr_mul(r54623, r54597, r54622, MPFR_RNDN);
        mpfr_sub(r54624, r54623, r54607, MPFR_RNDN);
        mpfr_add(r54625, r54596, r54624, MPFR_RNDN);
        if (mpfr_get_si(r54611, MPFR_RNDN)) { mpfr_set(r54626, r54619, MPFR_RNDN); } else { mpfr_set(r54626, r54625, MPFR_RNDN); };
        if (mpfr_get_si(r54583, MPFR_RNDN)) { mpfr_set(r54627, r54609, MPFR_RNDN); } else { mpfr_set(r54627, r54626, MPFR_RNDN); };
        return mpfr_get_d(r54627, MPFR_RNDN);
}

static mpfr_t r54628, r54629, r54630, r54631, r54632, r54633, r54634, r54635, r54636, r54637, r54638, r54639, r54640, r54641, r54642, r54643, r54644, r54645, r54646, r54647, r54648, r54649, r54650, r54651, r54652, r54653, r54654, r54655, r54656, r54657, r54658, r54659, r54660, r54661, r54662, r54663, r54664, r54665, r54666, r54667, r54668, r54669, r54670, r54671, r54672, r54673, r54674;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54628);
        mpfr_init_set_str(r54629, "-5.38122143438205e-09", 10, MPFR_RNDN);
        mpfr_init(r54630);
        mpfr_init(r54631);
        mpfr_init(r54632);
        mpfr_init(r54633);
        mpfr_init_set_str(r54634, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54635);
        mpfr_init(r54636);
        mpfr_init(r54637);
        mpfr_init(r54638);
        mpfr_init(r54639);
        mpfr_init(r54640);
        mpfr_init(r54641);
        mpfr_init(r54642);
        mpfr_init(r54643);
        mpfr_init_set_str(r54644, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54645);
        mpfr_init(r54646);
        mpfr_init(r54647);
        mpfr_init(r54648);
        mpfr_init(r54649);
        mpfr_init_set_str(r54650, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54651);
        mpfr_init(r54652);
        mpfr_init(r54653);
        mpfr_init(r54654);
        mpfr_init(r54655);
        mpfr_init(r54656);
        mpfr_init_set_str(r54657, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54658);
        mpfr_init(r54659);
        mpfr_init(r54660);
        mpfr_init(r54661);
        mpfr_init(r54662);
        mpfr_init(r54663);
        mpfr_init(r54664);
        mpfr_init(r54665);
        mpfr_init(r54666);
        mpfr_init(r54667);
        mpfr_init(r54668);
        mpfr_init(r54669);
        mpfr_init(r54670);
        mpfr_init(r54671);
        mpfr_init(r54672);
        mpfr_init(r54673);
        mpfr_init(r54674);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54628, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54630, mpfr_cmp(r54628, r54629) <= 0, MPFR_RNDN);
        mpfr_set_d(r54631, b, MPFR_RNDN);
        mpfr_set_d(r54632, c, MPFR_RNDN);
        mpfr_mul(r54633, r54631, r54632, MPFR_RNDN);
        ;
        mpfr_set_d(r54635, x, MPFR_RNDN);
        mpfr_set_d(r54636, i, MPFR_RNDN);
        mpfr_mul(r54637, r54635, r54636, MPFR_RNDN);
        mpfr_set_d(r54638, a, MPFR_RNDN);
        mpfr_set_d(r54639, t, MPFR_RNDN);
        mpfr_mul(r54640, r54638, r54639, MPFR_RNDN);
        mpfr_add(r54641, r54637, r54640, MPFR_RNDN);
        mpfr_mul(r54642, r54634, r54641, MPFR_RNDN);
        mpfr_sub(r54643, r54633, r54642, MPFR_RNDN);
        ;
        mpfr_mul(r54645, r54644, r54635, MPFR_RNDN);
        mpfr_set_d(r54646, y, MPFR_RNDN);
        mpfr_mul(r54647, r54645, r54646, MPFR_RNDN);
        mpfr_mul(r54648, r54639, r54647, MPFR_RNDN);
        mpfr_mul(r54649, r54648, r54628, MPFR_RNDN);
        ;
        mpfr_set_d(r54651, k, MPFR_RNDN);
        mpfr_set_d(r54652, j, MPFR_RNDN);
        mpfr_mul(r54653, r54651, r54652, MPFR_RNDN);
        mpfr_mul(r54654, r54650, r54653, MPFR_RNDN);
        mpfr_sub(r54655, r54649, r54654, MPFR_RNDN);
        mpfr_add(r54656, r54643, r54655, MPFR_RNDN);
        ;
        mpfr_set_si(r54658, mpfr_cmp(r54628, r54657) <= 0, MPFR_RNDN);
        mpfr_mul(r54659, r54646, r54628, MPFR_RNDN);
        mpfr_mul(r54660, r54645, r54659, MPFR_RNDN);
        mpfr_mul(r54661, r54639, r54660, MPFR_RNDN);
        mpfr_cbrt(r54662, r54661, MPFR_RNDN);
        mpfr_mul(r54663, r54662, r54662, MPFR_RNDN);
        mpfr_mul(r54664, r54663, r54662, MPFR_RNDN);
        mpfr_sub(r54665, r54664, r54654, MPFR_RNDN);
        mpfr_add(r54666, r54643, r54665, MPFR_RNDN);
        mpfr_mul(r54667, r54639, r54635, MPFR_RNDN);
        mpfr_mul(r54668, r54646, r54667, MPFR_RNDN);
        mpfr_mul(r54669, r54628, r54668, MPFR_RNDN);
        mpfr_mul(r54670, r54644, r54669, MPFR_RNDN);
        mpfr_sub(r54671, r54670, r54654, MPFR_RNDN);
        mpfr_add(r54672, r54643, r54671, MPFR_RNDN);
        if (mpfr_get_si(r54658, MPFR_RNDN)) { mpfr_set(r54673, r54666, MPFR_RNDN); } else { mpfr_set(r54673, r54672, MPFR_RNDN); };
        if (mpfr_get_si(r54630, MPFR_RNDN)) { mpfr_set(r54674, r54656, MPFR_RNDN); } else { mpfr_set(r54674, r54673, MPFR_RNDN); };
        return mpfr_get_d(r54674, MPFR_RNDN);
}

