#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 r34500 = x;
        float r34501 = 18.0;
        float r34502 = r34500 * r34501;
        float r34503 = y;
        float r34504 = r34502 * r34503;
        float r34505 = z;
        float r34506 = r34504 * r34505;
        float r34507 = t;
        float r34508 = r34506 * r34507;
        float r34509 = a;
        float r34510 = 4.0;
        float r34511 = r34509 * r34510;
        float r34512 = r34511 * r34507;
        float r34513 = r34508 - r34512;
        float r34514 = b;
        float r34515 = c;
        float r34516 = r34514 * r34515;
        float r34517 = r34513 + r34516;
        float r34518 = r34500 * r34510;
        float r34519 = i;
        float r34520 = r34518 * r34519;
        float r34521 = r34517 - r34520;
        float r34522 = j;
        float r34523 = 27.0;
        float r34524 = r34522 * r34523;
        float r34525 = k;
        float r34526 = r34524 * r34525;
        float r34527 = r34521 - r34526;
        return r34527;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34528 = x;
        double r34529 = 18.0;
        double r34530 = r34528 * r34529;
        double r34531 = y;
        double r34532 = r34530 * r34531;
        double r34533 = z;
        double r34534 = r34532 * r34533;
        double r34535 = t;
        double r34536 = r34534 * r34535;
        double r34537 = a;
        double r34538 = 4.0;
        double r34539 = r34537 * r34538;
        double r34540 = r34539 * r34535;
        double r34541 = r34536 - r34540;
        double r34542 = b;
        double r34543 = c;
        double r34544 = r34542 * r34543;
        double r34545 = r34541 + r34544;
        double r34546 = r34528 * r34538;
        double r34547 = i;
        double r34548 = r34546 * r34547;
        double r34549 = r34545 - r34548;
        double r34550 = j;
        double r34551 = 27.0;
        double r34552 = r34550 * r34551;
        double r34553 = k;
        double r34554 = r34552 * r34553;
        double r34555 = r34549 - r34554;
        return r34555;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r34556 = z;
        float r34557 = -3.050748612494024e-80;
        bool r34558 = r34556 <= r34557;
        float r34559 = b;
        float r34560 = c;
        float r34561 = r34559 * r34560;
        float r34562 = 4.0;
        float r34563 = x;
        float r34564 = i;
        float r34565 = r34563 * r34564;
        float r34566 = a;
        float r34567 = t;
        float r34568 = r34566 * r34567;
        float r34569 = r34565 + r34568;
        float r34570 = r34562 * r34569;
        float r34571 = r34561 - r34570;
        float r34572 = 18.0;
        float r34573 = y;
        float r34574 = r34567 * r34563;
        float r34575 = r34573 * r34574;
        float r34576 = r34556 * r34575;
        float r34577 = r34572 * r34576;
        float r34578 = 27.0;
        float r34579 = k;
        float r34580 = j;
        float r34581 = r34579 * r34580;
        float r34582 = r34578 * r34581;
        float r34583 = r34577 - r34582;
        float r34584 = r34571 + r34583;
        float r34585 = 1.5124306376275835e-234;
        bool r34586 = r34556 <= r34585;
        float r34587 = r34560 * r34559;
        float r34588 = r34578 * r34580;
        float r34589 = r34588 * r34579;
        float r34590 = r34587 - r34589;
        float r34591 = r34567 * r34566;
        float r34592 = r34564 * r34563;
        float r34593 = r34591 + r34592;
        float r34594 = r34593 * r34562;
        float r34595 = r34590 - r34594;
        float r34596 = r34586 ? r34595 : r34584;
        float r34597 = r34558 ? r34584 : r34596;
        return r34597;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34598 = z;
        double r34599 = -3.050748612494024e-80;
        bool r34600 = r34598 <= r34599;
        double r34601 = b;
        double r34602 = c;
        double r34603 = r34601 * r34602;
        double r34604 = 4.0;
        double r34605 = x;
        double r34606 = i;
        double r34607 = r34605 * r34606;
        double r34608 = a;
        double r34609 = t;
        double r34610 = r34608 * r34609;
        double r34611 = r34607 + r34610;
        double r34612 = r34604 * r34611;
        double r34613 = r34603 - r34612;
        double r34614 = 18.0;
        double r34615 = y;
        double r34616 = r34609 * r34605;
        double r34617 = r34615 * r34616;
        double r34618 = r34598 * r34617;
        double r34619 = r34614 * r34618;
        double r34620 = 27.0;
        double r34621 = k;
        double r34622 = j;
        double r34623 = r34621 * r34622;
        double r34624 = r34620 * r34623;
        double r34625 = r34619 - r34624;
        double r34626 = r34613 + r34625;
        double r34627 = 1.5124306376275835e-234;
        bool r34628 = r34598 <= r34627;
        double r34629 = r34602 * r34601;
        double r34630 = r34620 * r34622;
        double r34631 = r34630 * r34621;
        double r34632 = r34629 - r34631;
        double r34633 = r34609 * r34608;
        double r34634 = r34606 * r34605;
        double r34635 = r34633 + r34634;
        double r34636 = r34635 * r34604;
        double r34637 = r34632 - r34636;
        double r34638 = r34628 ? r34637 : r34626;
        double r34639 = r34600 ? r34626 : r34638;
        return r34639;
}

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 r34640, r34641, r34642, r34643, r34644, r34645, r34646, r34647, r34648, r34649, r34650, r34651, r34652, r34653, r34654, r34655, r34656, r34657, r34658, r34659, r34660, r34661, r34662, r34663, r34664, r34665, r34666, r34667;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34640);
        mpfr_init_set_str(r34641, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34642);
        mpfr_init(r34643);
        mpfr_init(r34644);
        mpfr_init(r34645);
        mpfr_init(r34646);
        mpfr_init(r34647);
        mpfr_init(r34648);
        mpfr_init(r34649);
        mpfr_init_set_str(r34650, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34651);
        mpfr_init(r34652);
        mpfr_init(r34653);
        mpfr_init(r34654);
        mpfr_init(r34655);
        mpfr_init(r34656);
        mpfr_init(r34657);
        mpfr_init(r34658);
        mpfr_init(r34659);
        mpfr_init(r34660);
        mpfr_init(r34661);
        mpfr_init(r34662);
        mpfr_init_set_str(r34663, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34664);
        mpfr_init(r34665);
        mpfr_init(r34666);
        mpfr_init(r34667);
}

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(r34640, x, MPFR_RNDN);
        ;
        mpfr_mul(r34642, r34640, r34641, MPFR_RNDN);
        mpfr_set_d(r34643, y, MPFR_RNDN);
        mpfr_mul(r34644, r34642, r34643, MPFR_RNDN);
        mpfr_set_d(r34645, z, MPFR_RNDN);
        mpfr_mul(r34646, r34644, r34645, MPFR_RNDN);
        mpfr_set_d(r34647, t, MPFR_RNDN);
        mpfr_mul(r34648, r34646, r34647, MPFR_RNDN);
        mpfr_set_d(r34649, a, MPFR_RNDN);
        ;
        mpfr_mul(r34651, r34649, r34650, MPFR_RNDN);
        mpfr_mul(r34652, r34651, r34647, MPFR_RNDN);
        mpfr_sub(r34653, r34648, r34652, MPFR_RNDN);
        mpfr_set_d(r34654, b, MPFR_RNDN);
        mpfr_set_d(r34655, c, MPFR_RNDN);
        mpfr_mul(r34656, r34654, r34655, MPFR_RNDN);
        mpfr_add(r34657, r34653, r34656, MPFR_RNDN);
        mpfr_mul(r34658, r34640, r34650, MPFR_RNDN);
        mpfr_set_d(r34659, i, MPFR_RNDN);
        mpfr_mul(r34660, r34658, r34659, MPFR_RNDN);
        mpfr_sub(r34661, r34657, r34660, MPFR_RNDN);
        mpfr_set_d(r34662, j, MPFR_RNDN);
        ;
        mpfr_mul(r34664, r34662, r34663, MPFR_RNDN);
        mpfr_set_d(r34665, k, MPFR_RNDN);
        mpfr_mul(r34666, r34664, r34665, MPFR_RNDN);
        mpfr_sub(r34667, r34661, r34666, MPFR_RNDN);
        return mpfr_get_d(r34667, MPFR_RNDN);
}

static mpfr_t r34668, r34669, r34670, r34671, r34672, r34673, r34674, r34675, r34676, r34677, r34678, r34679, r34680, r34681, r34682, r34683, r34684, r34685, r34686, r34687, r34688, r34689, r34690, r34691, r34692, r34693, r34694, r34695, r34696, r34697, r34698, r34699, r34700, r34701, r34702, r34703, r34704, r34705, r34706, r34707, r34708, r34709;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34668);
        mpfr_init_set_str(r34669, "-3.050748612494024e-80", 10, MPFR_RNDN);
        mpfr_init(r34670);
        mpfr_init(r34671);
        mpfr_init(r34672);
        mpfr_init(r34673);
        mpfr_init_set_str(r34674, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34675);
        mpfr_init(r34676);
        mpfr_init(r34677);
        mpfr_init(r34678);
        mpfr_init(r34679);
        mpfr_init(r34680);
        mpfr_init(r34681);
        mpfr_init(r34682);
        mpfr_init(r34683);
        mpfr_init_set_str(r34684, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34685);
        mpfr_init(r34686);
        mpfr_init(r34687);
        mpfr_init(r34688);
        mpfr_init(r34689);
        mpfr_init_set_str(r34690, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34691);
        mpfr_init(r34692);
        mpfr_init(r34693);
        mpfr_init(r34694);
        mpfr_init(r34695);
        mpfr_init(r34696);
        mpfr_init_set_str(r34697, "1.5124306376275835e-234", 10, MPFR_RNDN);
        mpfr_init(r34698);
        mpfr_init(r34699);
        mpfr_init(r34700);
        mpfr_init(r34701);
        mpfr_init(r34702);
        mpfr_init(r34703);
        mpfr_init(r34704);
        mpfr_init(r34705);
        mpfr_init(r34706);
        mpfr_init(r34707);
        mpfr_init(r34708);
        mpfr_init(r34709);
}

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(r34668, z, MPFR_RNDN);
        ;
        mpfr_set_si(r34670, mpfr_cmp(r34668, r34669) <= 0, MPFR_RNDN);
        mpfr_set_d(r34671, b, MPFR_RNDN);
        mpfr_set_d(r34672, c, MPFR_RNDN);
        mpfr_mul(r34673, r34671, r34672, MPFR_RNDN);
        ;
        mpfr_set_d(r34675, x, MPFR_RNDN);
        mpfr_set_d(r34676, i, MPFR_RNDN);
        mpfr_mul(r34677, r34675, r34676, MPFR_RNDN);
        mpfr_set_d(r34678, a, MPFR_RNDN);
        mpfr_set_d(r34679, t, MPFR_RNDN);
        mpfr_mul(r34680, r34678, r34679, MPFR_RNDN);
        mpfr_add(r34681, r34677, r34680, MPFR_RNDN);
        mpfr_mul(r34682, r34674, r34681, MPFR_RNDN);
        mpfr_sub(r34683, r34673, r34682, MPFR_RNDN);
        ;
        mpfr_set_d(r34685, y, MPFR_RNDN);
        mpfr_mul(r34686, r34679, r34675, MPFR_RNDN);
        mpfr_mul(r34687, r34685, r34686, MPFR_RNDN);
        mpfr_mul(r34688, r34668, r34687, MPFR_RNDN);
        mpfr_mul(r34689, r34684, r34688, MPFR_RNDN);
        ;
        mpfr_set_d(r34691, k, MPFR_RNDN);
        mpfr_set_d(r34692, j, MPFR_RNDN);
        mpfr_mul(r34693, r34691, r34692, MPFR_RNDN);
        mpfr_mul(r34694, r34690, r34693, MPFR_RNDN);
        mpfr_sub(r34695, r34689, r34694, MPFR_RNDN);
        mpfr_add(r34696, r34683, r34695, MPFR_RNDN);
        ;
        mpfr_set_si(r34698, mpfr_cmp(r34668, r34697) <= 0, MPFR_RNDN);
        mpfr_mul(r34699, r34672, r34671, MPFR_RNDN);
        mpfr_mul(r34700, r34690, r34692, MPFR_RNDN);
        mpfr_mul(r34701, r34700, r34691, MPFR_RNDN);
        mpfr_sub(r34702, r34699, r34701, MPFR_RNDN);
        mpfr_mul(r34703, r34679, r34678, MPFR_RNDN);
        mpfr_mul(r34704, r34676, r34675, MPFR_RNDN);
        mpfr_add(r34705, r34703, r34704, MPFR_RNDN);
        mpfr_mul(r34706, r34705, r34674, MPFR_RNDN);
        mpfr_sub(r34707, r34702, r34706, MPFR_RNDN);
        if (mpfr_get_si(r34698, MPFR_RNDN)) { mpfr_set(r34708, r34707, MPFR_RNDN); } else { mpfr_set(r34708, r34696, MPFR_RNDN); };
        if (mpfr_get_si(r34670, MPFR_RNDN)) { mpfr_set(r34709, r34696, MPFR_RNDN); } else { mpfr_set(r34709, r34708, MPFR_RNDN); };
        return mpfr_get_d(r34709, MPFR_RNDN);
}

static mpfr_t r34710, r34711, r34712, r34713, r34714, r34715, r34716, r34717, r34718, r34719, r34720, r34721, r34722, r34723, r34724, r34725, r34726, r34727, r34728, r34729, r34730, r34731, r34732, r34733, r34734, r34735, r34736, r34737, r34738, r34739, r34740, r34741, r34742, r34743, r34744, r34745, r34746, r34747, r34748, r34749, r34750, r34751;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34710);
        mpfr_init_set_str(r34711, "-3.050748612494024e-80", 10, MPFR_RNDN);
        mpfr_init(r34712);
        mpfr_init(r34713);
        mpfr_init(r34714);
        mpfr_init(r34715);
        mpfr_init_set_str(r34716, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34717);
        mpfr_init(r34718);
        mpfr_init(r34719);
        mpfr_init(r34720);
        mpfr_init(r34721);
        mpfr_init(r34722);
        mpfr_init(r34723);
        mpfr_init(r34724);
        mpfr_init(r34725);
        mpfr_init_set_str(r34726, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34727);
        mpfr_init(r34728);
        mpfr_init(r34729);
        mpfr_init(r34730);
        mpfr_init(r34731);
        mpfr_init_set_str(r34732, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34733);
        mpfr_init(r34734);
        mpfr_init(r34735);
        mpfr_init(r34736);
        mpfr_init(r34737);
        mpfr_init(r34738);
        mpfr_init_set_str(r34739, "1.5124306376275835e-234", 10, MPFR_RNDN);
        mpfr_init(r34740);
        mpfr_init(r34741);
        mpfr_init(r34742);
        mpfr_init(r34743);
        mpfr_init(r34744);
        mpfr_init(r34745);
        mpfr_init(r34746);
        mpfr_init(r34747);
        mpfr_init(r34748);
        mpfr_init(r34749);
        mpfr_init(r34750);
        mpfr_init(r34751);
}

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(r34710, z, MPFR_RNDN);
        ;
        mpfr_set_si(r34712, mpfr_cmp(r34710, r34711) <= 0, MPFR_RNDN);
        mpfr_set_d(r34713, b, MPFR_RNDN);
        mpfr_set_d(r34714, c, MPFR_RNDN);
        mpfr_mul(r34715, r34713, r34714, MPFR_RNDN);
        ;
        mpfr_set_d(r34717, x, MPFR_RNDN);
        mpfr_set_d(r34718, i, MPFR_RNDN);
        mpfr_mul(r34719, r34717, r34718, MPFR_RNDN);
        mpfr_set_d(r34720, a, MPFR_RNDN);
        mpfr_set_d(r34721, t, MPFR_RNDN);
        mpfr_mul(r34722, r34720, r34721, MPFR_RNDN);
        mpfr_add(r34723, r34719, r34722, MPFR_RNDN);
        mpfr_mul(r34724, r34716, r34723, MPFR_RNDN);
        mpfr_sub(r34725, r34715, r34724, MPFR_RNDN);
        ;
        mpfr_set_d(r34727, y, MPFR_RNDN);
        mpfr_mul(r34728, r34721, r34717, MPFR_RNDN);
        mpfr_mul(r34729, r34727, r34728, MPFR_RNDN);
        mpfr_mul(r34730, r34710, r34729, MPFR_RNDN);
        mpfr_mul(r34731, r34726, r34730, MPFR_RNDN);
        ;
        mpfr_set_d(r34733, k, MPFR_RNDN);
        mpfr_set_d(r34734, j, MPFR_RNDN);
        mpfr_mul(r34735, r34733, r34734, MPFR_RNDN);
        mpfr_mul(r34736, r34732, r34735, MPFR_RNDN);
        mpfr_sub(r34737, r34731, r34736, MPFR_RNDN);
        mpfr_add(r34738, r34725, r34737, MPFR_RNDN);
        ;
        mpfr_set_si(r34740, mpfr_cmp(r34710, r34739) <= 0, MPFR_RNDN);
        mpfr_mul(r34741, r34714, r34713, MPFR_RNDN);
        mpfr_mul(r34742, r34732, r34734, MPFR_RNDN);
        mpfr_mul(r34743, r34742, r34733, MPFR_RNDN);
        mpfr_sub(r34744, r34741, r34743, MPFR_RNDN);
        mpfr_mul(r34745, r34721, r34720, MPFR_RNDN);
        mpfr_mul(r34746, r34718, r34717, MPFR_RNDN);
        mpfr_add(r34747, r34745, r34746, MPFR_RNDN);
        mpfr_mul(r34748, r34747, r34716, MPFR_RNDN);
        mpfr_sub(r34749, r34744, r34748, MPFR_RNDN);
        if (mpfr_get_si(r34740, MPFR_RNDN)) { mpfr_set(r34750, r34749, MPFR_RNDN); } else { mpfr_set(r34750, r34738, MPFR_RNDN); };
        if (mpfr_get_si(r34712, MPFR_RNDN)) { mpfr_set(r34751, r34738, MPFR_RNDN); } else { mpfr_set(r34751, r34750, MPFR_RNDN); };
        return mpfr_get_d(r34751, MPFR_RNDN);
}

