#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";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r10504 = x;
        float r10505 = 18.0f;
        float r10506 = r10504 * r10505;
        float r10507 = y;
        float r10508 = r10506 * r10507;
        float r10509 = z;
        float r10510 = r10508 * r10509;
        float r10511 = t;
        float r10512 = r10510 * r10511;
        float r10513 = a;
        float r10514 = 4.0f;
        float r10515 = r10513 * r10514;
        float r10516 = r10515 * r10511;
        float r10517 = r10512 - r10516;
        float r10518 = b;
        float r10519 = c;
        float r10520 = r10518 * r10519;
        float r10521 = r10517 + r10520;
        float r10522 = r10504 * r10514;
        float r10523 = i;
        float r10524 = r10522 * r10523;
        float r10525 = r10521 - r10524;
        float r10526 = j;
        float r10527 = 27.0f;
        float r10528 = r10526 * r10527;
        float r10529 = k;
        float r10530 = r10528 * r10529;
        float r10531 = r10525 - r10530;
        return r10531;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r10532 = x;
        double r10533 = 18.0;
        double r10534 = r10532 * r10533;
        double r10535 = y;
        double r10536 = r10534 * r10535;
        double r10537 = z;
        double r10538 = r10536 * r10537;
        double r10539 = t;
        double r10540 = r10538 * r10539;
        double r10541 = a;
        double r10542 = 4.0;
        double r10543 = r10541 * r10542;
        double r10544 = r10543 * r10539;
        double r10545 = r10540 - r10544;
        double r10546 = b;
        double r10547 = c;
        double r10548 = r10546 * r10547;
        double r10549 = r10545 + r10548;
        double r10550 = r10532 * r10542;
        double r10551 = i;
        double r10552 = r10550 * r10551;
        double r10553 = r10549 - r10552;
        double r10554 = j;
        double r10555 = 27.0;
        double r10556 = r10554 * r10555;
        double r10557 = k;
        double r10558 = r10556 * r10557;
        double r10559 = r10553 - r10558;
        return r10559;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r10560 = x;
        float r10561 = z;
        float r10562 = r10560 * r10561;
        float r10563 = 18.0f;
        float r10564 = r10562 * r10563;
        float r10565 = t;
        float r10566 = y;
        float r10567 = r10565 * r10566;
        float r10568 = 4.0f;
        float r10569 = a;
        float r10570 = r10568 * r10569;
        float r10571 = -r10565;
        float r10572 = c;
        float r10573 = b;
        float r10574 = r10572 * r10573;
        float r10575 = fma(r10570, r10571, r10574);
        float r10576 = fma(r10564, r10567, r10575);
        float r10577 = j;
        float r10578 = k;
        float r10579 = 27.0f;
        float r10580 = r10578 * r10579;
        float r10581 = r10568 * r10560;
        float r10582 = i;
        float r10583 = r10581 * r10582;
        float r10584 = fma(r10577, r10580, r10583);
        float r10585 = r10576 - r10584;
        float r10586 = -2.0707316172178072e+305f;
        bool r10587 = r10585 <= r10586;
        float r10588 = 2.129683746951944e+305f;
        bool r10589 = r10585 <= r10588;
        float r10590 = !r10589;
        bool r10591 = r10587 || r10590;
        float r10592 = r10565 * r10561;
        float r10593 = r10563 * r10560;
        float r10594 = r10593 * r10566;
        float r10595 = r10592 * r10594;
        float r10596 = r10565 * r10570;
        float r10597 = r10595 - r10596;
        float r10598 = r10597 + r10574;
        float r10599 = r10598 - r10583;
        float r10600 = r10577 * r10579;
        float r10601 = r10578 * r10600;
        float r10602 = r10599 - r10601;
        float r10603 = r10591 ? r10602 : r10585;
        return r10603;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r10604 = x;
        double r10605 = z;
        double r10606 = r10604 * r10605;
        double r10607 = 18.0;
        double r10608 = r10606 * r10607;
        double r10609 = t;
        double r10610 = y;
        double r10611 = r10609 * r10610;
        double r10612 = 4.0;
        double r10613 = a;
        double r10614 = r10612 * r10613;
        double r10615 = -r10609;
        double r10616 = c;
        double r10617 = b;
        double r10618 = r10616 * r10617;
        double r10619 = fma(r10614, r10615, r10618);
        double r10620 = fma(r10608, r10611, r10619);
        double r10621 = j;
        double r10622 = k;
        double r10623 = 27.0;
        double r10624 = r10622 * r10623;
        double r10625 = r10612 * r10604;
        double r10626 = i;
        double r10627 = r10625 * r10626;
        double r10628 = fma(r10621, r10624, r10627);
        double r10629 = r10620 - r10628;
        double r10630 = -2.0707316172178072e+305;
        bool r10631 = r10629 <= r10630;
        double r10632 = 2.129683746951944e+305;
        bool r10633 = r10629 <= r10632;
        double r10634 = !r10633;
        bool r10635 = r10631 || r10634;
        double r10636 = r10609 * r10605;
        double r10637 = r10607 * r10604;
        double r10638 = r10637 * r10610;
        double r10639 = r10636 * r10638;
        double r10640 = r10609 * r10614;
        double r10641 = r10639 - r10640;
        double r10642 = r10641 + r10618;
        double r10643 = r10642 - r10627;
        double r10644 = r10621 * r10623;
        double r10645 = r10622 * r10644;
        double r10646 = r10643 - r10645;
        double r10647 = r10635 ? r10646 : r10629;
        return r10647;
}

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 r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655, r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666, r10667, r10668, r10669, r10670, r10671, r10672, r10673, r10674, r10675;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10648);
        mpfr_init_set_str(r10649, "18.0", 10, MPFR_RNDN);
        mpfr_init(r10650);
        mpfr_init(r10651);
        mpfr_init(r10652);
        mpfr_init(r10653);
        mpfr_init(r10654);
        mpfr_init(r10655);
        mpfr_init(r10656);
        mpfr_init(r10657);
        mpfr_init_set_str(r10658, "4.0", 10, MPFR_RNDN);
        mpfr_init(r10659);
        mpfr_init(r10660);
        mpfr_init(r10661);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init(r10666);
        mpfr_init(r10667);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init(r10670);
        mpfr_init_set_str(r10671, "27.0", 10, MPFR_RNDN);
        mpfr_init(r10672);
        mpfr_init(r10673);
        mpfr_init(r10674);
        mpfr_init(r10675);
}

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(r10648, x, MPFR_RNDN);
        ;
        mpfr_mul(r10650, r10648, r10649, MPFR_RNDN);
        mpfr_set_d(r10651, y, MPFR_RNDN);
        mpfr_mul(r10652, r10650, r10651, MPFR_RNDN);
        mpfr_set_d(r10653, z, MPFR_RNDN);
        mpfr_mul(r10654, r10652, r10653, MPFR_RNDN);
        mpfr_set_d(r10655, t, MPFR_RNDN);
        mpfr_mul(r10656, r10654, r10655, MPFR_RNDN);
        mpfr_set_d(r10657, a, MPFR_RNDN);
        ;
        mpfr_mul(r10659, r10657, r10658, MPFR_RNDN);
        mpfr_mul(r10660, r10659, r10655, MPFR_RNDN);
        mpfr_sub(r10661, r10656, r10660, MPFR_RNDN);
        mpfr_set_d(r10662, b, MPFR_RNDN);
        mpfr_set_d(r10663, c, MPFR_RNDN);
        mpfr_mul(r10664, r10662, r10663, MPFR_RNDN);
        mpfr_add(r10665, r10661, r10664, MPFR_RNDN);
        mpfr_mul(r10666, r10648, r10658, MPFR_RNDN);
        mpfr_set_d(r10667, i, MPFR_RNDN);
        mpfr_mul(r10668, r10666, r10667, MPFR_RNDN);
        mpfr_sub(r10669, r10665, r10668, MPFR_RNDN);
        mpfr_set_d(r10670, j, MPFR_RNDN);
        ;
        mpfr_mul(r10672, r10670, r10671, MPFR_RNDN);
        mpfr_set_d(r10673, k, MPFR_RNDN);
        mpfr_mul(r10674, r10672, r10673, MPFR_RNDN);
        mpfr_sub(r10675, r10669, r10674, MPFR_RNDN);
        return mpfr_get_d(r10675, MPFR_RNDN);
}

static mpfr_t r10676, r10677, r10678, r10679, r10680, r10681, r10682, r10683, r10684, r10685, r10686, r10687, r10688, r10689, r10690, r10691, r10692, r10693, r10694, r10695, r10696, r10697, r10698, r10699, r10700, r10701, r10702, r10703, r10704, r10705, r10706, r10707, r10708, r10709, r10710, r10711, r10712, r10713, r10714, r10715, r10716, r10717, r10718, r10719;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10676);
        mpfr_init(r10677);
        mpfr_init(r10678);
        mpfr_init_set_str(r10679, "18.0", 10, MPFR_RNDN);
        mpfr_init(r10680);
        mpfr_init(r10681);
        mpfr_init(r10682);
        mpfr_init(r10683);
        mpfr_init_set_str(r10684, "4.0", 10, MPFR_RNDN);
        mpfr_init(r10685);
        mpfr_init(r10686);
        mpfr_init(r10687);
        mpfr_init(r10688);
        mpfr_init(r10689);
        mpfr_init(r10690);
        mpfr_init(r10691);
        mpfr_init(r10692);
        mpfr_init(r10693);
        mpfr_init(r10694);
        mpfr_init_set_str(r10695, "27.0", 10, MPFR_RNDN);
        mpfr_init(r10696);
        mpfr_init(r10697);
        mpfr_init(r10698);
        mpfr_init(r10699);
        mpfr_init(r10700);
        mpfr_init(r10701);
        mpfr_init_set_str(r10702, "-2.0707316172178072e+305", 10, MPFR_RNDN);
        mpfr_init(r10703);
        mpfr_init_set_str(r10704, "2.129683746951944e+305", 10, MPFR_RNDN);
        mpfr_init(r10705);
        mpfr_init(r10706);
        mpfr_init(r10707);
        mpfr_init(r10708);
        mpfr_init(r10709);
        mpfr_init(r10710);
        mpfr_init(r10711);
        mpfr_init(r10712);
        mpfr_init(r10713);
        mpfr_init(r10714);
        mpfr_init(r10715);
        mpfr_init(r10716);
        mpfr_init(r10717);
        mpfr_init(r10718);
        mpfr_init(r10719);
}

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(r10676, x, MPFR_RNDN);
        mpfr_set_d(r10677, z, MPFR_RNDN);
        mpfr_mul(r10678, r10676, r10677, MPFR_RNDN);
        ;
        mpfr_mul(r10680, r10678, r10679, MPFR_RNDN);
        mpfr_set_d(r10681, t, MPFR_RNDN);
        mpfr_set_d(r10682, y, MPFR_RNDN);
        mpfr_mul(r10683, r10681, r10682, MPFR_RNDN);
        ;
        mpfr_set_d(r10685, a, MPFR_RNDN);
        mpfr_mul(r10686, r10684, r10685, MPFR_RNDN);
        mpfr_neg(r10687, r10681, MPFR_RNDN);
        mpfr_set_d(r10688, c, MPFR_RNDN);
        mpfr_set_d(r10689, b, MPFR_RNDN);
        mpfr_mul(r10690, r10688, r10689, MPFR_RNDN);
        mpfr_fma(r10691, r10686, r10687, r10690, MPFR_RNDN);
        mpfr_fma(r10692, r10680, r10683, r10691, MPFR_RNDN);
        mpfr_set_d(r10693, j, MPFR_RNDN);
        mpfr_set_d(r10694, k, MPFR_RNDN);
        ;
        mpfr_mul(r10696, r10694, r10695, MPFR_RNDN);
        mpfr_mul(r10697, r10684, r10676, MPFR_RNDN);
        mpfr_set_d(r10698, i, MPFR_RNDN);
        mpfr_mul(r10699, r10697, r10698, MPFR_RNDN);
        mpfr_fma(r10700, r10693, r10696, r10699, MPFR_RNDN);
        mpfr_sub(r10701, r10692, r10700, MPFR_RNDN);
        ;
        mpfr_set_si(r10703, mpfr_cmp(r10701, r10702) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10705, mpfr_cmp(r10701, r10704) <= 0, MPFR_RNDN);
        mpfr_set_si(r10706, !mpfr_get_si(r10705, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10707, mpfr_get_si(r10703, MPFR_RNDN) || mpfr_get_si(r10706, MPFR_RNDN), MPFR_RNDN);
        mpfr_mul(r10708, r10681, r10677, MPFR_RNDN);
        mpfr_mul(r10709, r10679, r10676, MPFR_RNDN);
        mpfr_mul(r10710, r10709, r10682, MPFR_RNDN);
        mpfr_mul(r10711, r10708, r10710, MPFR_RNDN);
        mpfr_mul(r10712, r10681, r10686, MPFR_RNDN);
        mpfr_sub(r10713, r10711, r10712, MPFR_RNDN);
        mpfr_add(r10714, r10713, r10690, MPFR_RNDN);
        mpfr_sub(r10715, r10714, r10699, MPFR_RNDN);
        mpfr_mul(r10716, r10693, r10695, MPFR_RNDN);
        mpfr_mul(r10717, r10694, r10716, MPFR_RNDN);
        mpfr_sub(r10718, r10715, r10717, MPFR_RNDN);
        if (mpfr_get_si(r10707, MPFR_RNDN)) { mpfr_set(r10719, r10718, MPFR_RNDN); } else { mpfr_set(r10719, r10701, MPFR_RNDN); };
        return mpfr_get_d(r10719, MPFR_RNDN);
}

static mpfr_t r10720, r10721, r10722, r10723, r10724, r10725, r10726, r10727, r10728, r10729, r10730, r10731, r10732, r10733, r10734, r10735, r10736, r10737, r10738, r10739, r10740, r10741, r10742, r10743, r10744, r10745, r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753, r10754, r10755, r10756, r10757, r10758, r10759, r10760, r10761, r10762, r10763;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10720);
        mpfr_init(r10721);
        mpfr_init(r10722);
        mpfr_init_set_str(r10723, "18.0", 10, MPFR_RNDN);
        mpfr_init(r10724);
        mpfr_init(r10725);
        mpfr_init(r10726);
        mpfr_init(r10727);
        mpfr_init_set_str(r10728, "4.0", 10, MPFR_RNDN);
        mpfr_init(r10729);
        mpfr_init(r10730);
        mpfr_init(r10731);
        mpfr_init(r10732);
        mpfr_init(r10733);
        mpfr_init(r10734);
        mpfr_init(r10735);
        mpfr_init(r10736);
        mpfr_init(r10737);
        mpfr_init(r10738);
        mpfr_init_set_str(r10739, "27.0", 10, MPFR_RNDN);
        mpfr_init(r10740);
        mpfr_init(r10741);
        mpfr_init(r10742);
        mpfr_init(r10743);
        mpfr_init(r10744);
        mpfr_init(r10745);
        mpfr_init_set_str(r10746, "-2.0707316172178072e+305", 10, MPFR_RNDN);
        mpfr_init(r10747);
        mpfr_init_set_str(r10748, "2.129683746951944e+305", 10, MPFR_RNDN);
        mpfr_init(r10749);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
        mpfr_init(r10753);
        mpfr_init(r10754);
        mpfr_init(r10755);
        mpfr_init(r10756);
        mpfr_init(r10757);
        mpfr_init(r10758);
        mpfr_init(r10759);
        mpfr_init(r10760);
        mpfr_init(r10761);
        mpfr_init(r10762);
        mpfr_init(r10763);
}

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(r10720, x, MPFR_RNDN);
        mpfr_set_d(r10721, z, MPFR_RNDN);
        mpfr_mul(r10722, r10720, r10721, MPFR_RNDN);
        ;
        mpfr_mul(r10724, r10722, r10723, MPFR_RNDN);
        mpfr_set_d(r10725, t, MPFR_RNDN);
        mpfr_set_d(r10726, y, MPFR_RNDN);
        mpfr_mul(r10727, r10725, r10726, MPFR_RNDN);
        ;
        mpfr_set_d(r10729, a, MPFR_RNDN);
        mpfr_mul(r10730, r10728, r10729, MPFR_RNDN);
        mpfr_neg(r10731, r10725, MPFR_RNDN);
        mpfr_set_d(r10732, c, MPFR_RNDN);
        mpfr_set_d(r10733, b, MPFR_RNDN);
        mpfr_mul(r10734, r10732, r10733, MPFR_RNDN);
        mpfr_fma(r10735, r10730, r10731, r10734, MPFR_RNDN);
        mpfr_fma(r10736, r10724, r10727, r10735, MPFR_RNDN);
        mpfr_set_d(r10737, j, MPFR_RNDN);
        mpfr_set_d(r10738, k, MPFR_RNDN);
        ;
        mpfr_mul(r10740, r10738, r10739, MPFR_RNDN);
        mpfr_mul(r10741, r10728, r10720, MPFR_RNDN);
        mpfr_set_d(r10742, i, MPFR_RNDN);
        mpfr_mul(r10743, r10741, r10742, MPFR_RNDN);
        mpfr_fma(r10744, r10737, r10740, r10743, MPFR_RNDN);
        mpfr_sub(r10745, r10736, r10744, MPFR_RNDN);
        ;
        mpfr_set_si(r10747, mpfr_cmp(r10745, r10746) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10749, mpfr_cmp(r10745, r10748) <= 0, MPFR_RNDN);
        mpfr_set_si(r10750, !mpfr_get_si(r10749, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10751, mpfr_get_si(r10747, MPFR_RNDN) || mpfr_get_si(r10750, MPFR_RNDN), MPFR_RNDN);
        mpfr_mul(r10752, r10725, r10721, MPFR_RNDN);
        mpfr_mul(r10753, r10723, r10720, MPFR_RNDN);
        mpfr_mul(r10754, r10753, r10726, MPFR_RNDN);
        mpfr_mul(r10755, r10752, r10754, MPFR_RNDN);
        mpfr_mul(r10756, r10725, r10730, MPFR_RNDN);
        mpfr_sub(r10757, r10755, r10756, MPFR_RNDN);
        mpfr_add(r10758, r10757, r10734, MPFR_RNDN);
        mpfr_sub(r10759, r10758, r10743, MPFR_RNDN);
        mpfr_mul(r10760, r10737, r10739, MPFR_RNDN);
        mpfr_mul(r10761, r10738, r10760, MPFR_RNDN);
        mpfr_sub(r10762, r10759, r10761, MPFR_RNDN);
        if (mpfr_get_si(r10751, MPFR_RNDN)) { mpfr_set(r10763, r10762, MPFR_RNDN); } else { mpfr_set(r10763, r10745, MPFR_RNDN); };
        return mpfr_get_d(r10763, MPFR_RNDN);
}

