#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 r34422 = x;
        float r34423 = 18.0;
        float r34424 = r34422 * r34423;
        float r34425 = y;
        float r34426 = r34424 * r34425;
        float r34427 = z;
        float r34428 = r34426 * r34427;
        float r34429 = t;
        float r34430 = r34428 * r34429;
        float r34431 = a;
        float r34432 = 4.0;
        float r34433 = r34431 * r34432;
        float r34434 = r34433 * r34429;
        float r34435 = r34430 - r34434;
        float r34436 = b;
        float r34437 = c;
        float r34438 = r34436 * r34437;
        float r34439 = r34435 + r34438;
        float r34440 = r34422 * r34432;
        float r34441 = i;
        float r34442 = r34440 * r34441;
        float r34443 = r34439 - r34442;
        float r34444 = j;
        float r34445 = 27.0;
        float r34446 = r34444 * r34445;
        float r34447 = k;
        float r34448 = r34446 * r34447;
        float r34449 = r34443 - r34448;
        return r34449;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34450 = x;
        double r34451 = 18.0;
        double r34452 = r34450 * r34451;
        double r34453 = y;
        double r34454 = r34452 * r34453;
        double r34455 = z;
        double r34456 = r34454 * r34455;
        double r34457 = t;
        double r34458 = r34456 * r34457;
        double r34459 = a;
        double r34460 = 4.0;
        double r34461 = r34459 * r34460;
        double r34462 = r34461 * r34457;
        double r34463 = r34458 - r34462;
        double r34464 = b;
        double r34465 = c;
        double r34466 = r34464 * r34465;
        double r34467 = r34463 + r34466;
        double r34468 = r34450 * r34460;
        double r34469 = i;
        double r34470 = r34468 * r34469;
        double r34471 = r34467 - r34470;
        double r34472 = j;
        double r34473 = 27.0;
        double r34474 = r34472 * r34473;
        double r34475 = k;
        double r34476 = r34474 * r34475;
        double r34477 = r34471 - r34476;
        return r34477;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r34478 = z;
        float r34479 = -3.56778379361355e-72;
        bool r34480 = r34478 <= r34479;
        float r34481 = b;
        float r34482 = c;
        float r34483 = r34481 * r34482;
        float r34484 = 4.0;
        float r34485 = x;
        float r34486 = i;
        float r34487 = r34485 * r34486;
        float r34488 = a;
        float r34489 = t;
        float r34490 = r34488 * r34489;
        float r34491 = r34487 + r34490;
        float r34492 = r34484 * r34491;
        float r34493 = r34483 - r34492;
        float r34494 = 18.0;
        float r34495 = y;
        float r34496 = r34489 * r34485;
        float r34497 = r34495 * r34496;
        float r34498 = r34478 * r34497;
        float r34499 = r34494 * r34498;
        float r34500 = 27.0;
        float r34501 = k;
        float r34502 = j;
        float r34503 = r34501 * r34502;
        float r34504 = r34500 * r34503;
        float r34505 = r34499 - r34504;
        float r34506 = r34493 + r34505;
        float r34507 = 7.489366441064326e-235;
        bool r34508 = r34478 <= r34507;
        float r34509 = r34482 * r34481;
        float r34510 = r34500 * r34502;
        float r34511 = r34510 * r34501;
        float r34512 = r34509 - r34511;
        float r34513 = r34489 * r34488;
        float r34514 = r34486 * r34485;
        float r34515 = r34513 + r34514;
        float r34516 = r34515 * r34484;
        float r34517 = r34512 - r34516;
        float r34518 = r34508 ? r34517 : r34506;
        float r34519 = r34480 ? r34506 : r34518;
        return r34519;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34520 = z;
        double r34521 = -3.56778379361355e-72;
        bool r34522 = r34520 <= r34521;
        double r34523 = b;
        double r34524 = c;
        double r34525 = r34523 * r34524;
        double r34526 = 4.0;
        double r34527 = x;
        double r34528 = i;
        double r34529 = r34527 * r34528;
        double r34530 = a;
        double r34531 = t;
        double r34532 = r34530 * r34531;
        double r34533 = r34529 + r34532;
        double r34534 = r34526 * r34533;
        double r34535 = r34525 - r34534;
        double r34536 = 18.0;
        double r34537 = y;
        double r34538 = r34531 * r34527;
        double r34539 = r34537 * r34538;
        double r34540 = r34520 * r34539;
        double r34541 = r34536 * r34540;
        double r34542 = 27.0;
        double r34543 = k;
        double r34544 = j;
        double r34545 = r34543 * r34544;
        double r34546 = r34542 * r34545;
        double r34547 = r34541 - r34546;
        double r34548 = r34535 + r34547;
        double r34549 = 7.489366441064326e-235;
        bool r34550 = r34520 <= r34549;
        double r34551 = r34524 * r34523;
        double r34552 = r34542 * r34544;
        double r34553 = r34552 * r34543;
        double r34554 = r34551 - r34553;
        double r34555 = r34531 * r34530;
        double r34556 = r34528 * r34527;
        double r34557 = r34555 + r34556;
        double r34558 = r34557 * r34526;
        double r34559 = r34554 - r34558;
        double r34560 = r34550 ? r34559 : r34548;
        double r34561 = r34522 ? r34548 : r34560;
        return r34561;
}

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 r34562, r34563, r34564, r34565, r34566, r34567, r34568, r34569, r34570, r34571, r34572, r34573, r34574, r34575, r34576, r34577, r34578, r34579, r34580, r34581, r34582, r34583, r34584, r34585, r34586, r34587, r34588, r34589;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34562);
        mpfr_init_set_str(r34563, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34564);
        mpfr_init(r34565);
        mpfr_init(r34566);
        mpfr_init(r34567);
        mpfr_init(r34568);
        mpfr_init(r34569);
        mpfr_init(r34570);
        mpfr_init(r34571);
        mpfr_init_set_str(r34572, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34573);
        mpfr_init(r34574);
        mpfr_init(r34575);
        mpfr_init(r34576);
        mpfr_init(r34577);
        mpfr_init(r34578);
        mpfr_init(r34579);
        mpfr_init(r34580);
        mpfr_init(r34581);
        mpfr_init(r34582);
        mpfr_init(r34583);
        mpfr_init(r34584);
        mpfr_init_set_str(r34585, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34586);
        mpfr_init(r34587);
        mpfr_init(r34588);
        mpfr_init(r34589);
}

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(r34562, x, MPFR_RNDN);
        ;
        mpfr_mul(r34564, r34562, r34563, MPFR_RNDN);
        mpfr_set_d(r34565, y, MPFR_RNDN);
        mpfr_mul(r34566, r34564, r34565, MPFR_RNDN);
        mpfr_set_d(r34567, z, MPFR_RNDN);
        mpfr_mul(r34568, r34566, r34567, MPFR_RNDN);
        mpfr_set_d(r34569, t, MPFR_RNDN);
        mpfr_mul(r34570, r34568, r34569, MPFR_RNDN);
        mpfr_set_d(r34571, a, MPFR_RNDN);
        ;
        mpfr_mul(r34573, r34571, r34572, MPFR_RNDN);
        mpfr_mul(r34574, r34573, r34569, MPFR_RNDN);
        mpfr_sub(r34575, r34570, r34574, MPFR_RNDN);
        mpfr_set_d(r34576, b, MPFR_RNDN);
        mpfr_set_d(r34577, c, MPFR_RNDN);
        mpfr_mul(r34578, r34576, r34577, MPFR_RNDN);
        mpfr_add(r34579, r34575, r34578, MPFR_RNDN);
        mpfr_mul(r34580, r34562, r34572, MPFR_RNDN);
        mpfr_set_d(r34581, i, MPFR_RNDN);
        mpfr_mul(r34582, r34580, r34581, MPFR_RNDN);
        mpfr_sub(r34583, r34579, r34582, MPFR_RNDN);
        mpfr_set_d(r34584, j, MPFR_RNDN);
        ;
        mpfr_mul(r34586, r34584, r34585, MPFR_RNDN);
        mpfr_set_d(r34587, k, MPFR_RNDN);
        mpfr_mul(r34588, r34586, r34587, MPFR_RNDN);
        mpfr_sub(r34589, r34583, r34588, MPFR_RNDN);
        return mpfr_get_d(r34589, MPFR_RNDN);
}

static mpfr_t r34590, r34591, r34592, r34593, r34594, r34595, r34596, r34597, r34598, r34599, r34600, r34601, r34602, r34603, r34604, r34605, r34606, r34607, r34608, r34609, r34610, r34611, r34612, r34613, r34614, r34615, r34616, r34617, r34618, r34619, r34620, r34621, r34622, r34623, r34624, r34625, r34626, r34627, r34628, r34629, r34630, r34631;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34590);
        mpfr_init_set_str(r34591, "-3.56778379361355e-72", 10, MPFR_RNDN);
        mpfr_init(r34592);
        mpfr_init(r34593);
        mpfr_init(r34594);
        mpfr_init(r34595);
        mpfr_init_set_str(r34596, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34597);
        mpfr_init(r34598);
        mpfr_init(r34599);
        mpfr_init(r34600);
        mpfr_init(r34601);
        mpfr_init(r34602);
        mpfr_init(r34603);
        mpfr_init(r34604);
        mpfr_init(r34605);
        mpfr_init_set_str(r34606, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34607);
        mpfr_init(r34608);
        mpfr_init(r34609);
        mpfr_init(r34610);
        mpfr_init(r34611);
        mpfr_init_set_str(r34612, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34613);
        mpfr_init(r34614);
        mpfr_init(r34615);
        mpfr_init(r34616);
        mpfr_init(r34617);
        mpfr_init(r34618);
        mpfr_init_set_str(r34619, "7.489366441064326e-235", 10, MPFR_RNDN);
        mpfr_init(r34620);
        mpfr_init(r34621);
        mpfr_init(r34622);
        mpfr_init(r34623);
        mpfr_init(r34624);
        mpfr_init(r34625);
        mpfr_init(r34626);
        mpfr_init(r34627);
        mpfr_init(r34628);
        mpfr_init(r34629);
        mpfr_init(r34630);
        mpfr_init(r34631);
}

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(r34590, z, MPFR_RNDN);
        ;
        mpfr_set_si(r34592, mpfr_cmp(r34590, r34591) <= 0, MPFR_RNDN);
        mpfr_set_d(r34593, b, MPFR_RNDN);
        mpfr_set_d(r34594, c, MPFR_RNDN);
        mpfr_mul(r34595, r34593, r34594, MPFR_RNDN);
        ;
        mpfr_set_d(r34597, x, MPFR_RNDN);
        mpfr_set_d(r34598, i, MPFR_RNDN);
        mpfr_mul(r34599, r34597, r34598, MPFR_RNDN);
        mpfr_set_d(r34600, a, MPFR_RNDN);
        mpfr_set_d(r34601, t, MPFR_RNDN);
        mpfr_mul(r34602, r34600, r34601, MPFR_RNDN);
        mpfr_add(r34603, r34599, r34602, MPFR_RNDN);
        mpfr_mul(r34604, r34596, r34603, MPFR_RNDN);
        mpfr_sub(r34605, r34595, r34604, MPFR_RNDN);
        ;
        mpfr_set_d(r34607, y, MPFR_RNDN);
        mpfr_mul(r34608, r34601, r34597, MPFR_RNDN);
        mpfr_mul(r34609, r34607, r34608, MPFR_RNDN);
        mpfr_mul(r34610, r34590, r34609, MPFR_RNDN);
        mpfr_mul(r34611, r34606, r34610, MPFR_RNDN);
        ;
        mpfr_set_d(r34613, k, MPFR_RNDN);
        mpfr_set_d(r34614, j, MPFR_RNDN);
        mpfr_mul(r34615, r34613, r34614, MPFR_RNDN);
        mpfr_mul(r34616, r34612, r34615, MPFR_RNDN);
        mpfr_sub(r34617, r34611, r34616, MPFR_RNDN);
        mpfr_add(r34618, r34605, r34617, MPFR_RNDN);
        ;
        mpfr_set_si(r34620, mpfr_cmp(r34590, r34619) <= 0, MPFR_RNDN);
        mpfr_mul(r34621, r34594, r34593, MPFR_RNDN);
        mpfr_mul(r34622, r34612, r34614, MPFR_RNDN);
        mpfr_mul(r34623, r34622, r34613, MPFR_RNDN);
        mpfr_sub(r34624, r34621, r34623, MPFR_RNDN);
        mpfr_mul(r34625, r34601, r34600, MPFR_RNDN);
        mpfr_mul(r34626, r34598, r34597, MPFR_RNDN);
        mpfr_add(r34627, r34625, r34626, MPFR_RNDN);
        mpfr_mul(r34628, r34627, r34596, MPFR_RNDN);
        mpfr_sub(r34629, r34624, r34628, MPFR_RNDN);
        if (mpfr_get_si(r34620, MPFR_RNDN)) { mpfr_set(r34630, r34629, MPFR_RNDN); } else { mpfr_set(r34630, r34618, MPFR_RNDN); };
        if (mpfr_get_si(r34592, MPFR_RNDN)) { mpfr_set(r34631, r34618, MPFR_RNDN); } else { mpfr_set(r34631, r34630, MPFR_RNDN); };
        return mpfr_get_d(r34631, MPFR_RNDN);
}

static mpfr_t r34632, r34633, r34634, r34635, r34636, r34637, r34638, r34639, 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, r34668, r34669, r34670, r34671, r34672, r34673;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34632);
        mpfr_init_set_str(r34633, "-3.56778379361355e-72", 10, MPFR_RNDN);
        mpfr_init(r34634);
        mpfr_init(r34635);
        mpfr_init(r34636);
        mpfr_init(r34637);
        mpfr_init_set_str(r34638, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34639);
        mpfr_init(r34640);
        mpfr_init(r34641);
        mpfr_init(r34642);
        mpfr_init(r34643);
        mpfr_init(r34644);
        mpfr_init(r34645);
        mpfr_init(r34646);
        mpfr_init(r34647);
        mpfr_init_set_str(r34648, "18.0", 10, MPFR_RNDN);
        mpfr_init(r34649);
        mpfr_init(r34650);
        mpfr_init(r34651);
        mpfr_init(r34652);
        mpfr_init(r34653);
        mpfr_init_set_str(r34654, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34655);
        mpfr_init(r34656);
        mpfr_init(r34657);
        mpfr_init(r34658);
        mpfr_init(r34659);
        mpfr_init(r34660);
        mpfr_init_set_str(r34661, "7.489366441064326e-235", 10, MPFR_RNDN);
        mpfr_init(r34662);
        mpfr_init(r34663);
        mpfr_init(r34664);
        mpfr_init(r34665);
        mpfr_init(r34666);
        mpfr_init(r34667);
        mpfr_init(r34668);
        mpfr_init(r34669);
        mpfr_init(r34670);
        mpfr_init(r34671);
        mpfr_init(r34672);
        mpfr_init(r34673);
}

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(r34632, z, MPFR_RNDN);
        ;
        mpfr_set_si(r34634, mpfr_cmp(r34632, r34633) <= 0, MPFR_RNDN);
        mpfr_set_d(r34635, b, MPFR_RNDN);
        mpfr_set_d(r34636, c, MPFR_RNDN);
        mpfr_mul(r34637, r34635, r34636, MPFR_RNDN);
        ;
        mpfr_set_d(r34639, x, MPFR_RNDN);
        mpfr_set_d(r34640, i, MPFR_RNDN);
        mpfr_mul(r34641, r34639, r34640, MPFR_RNDN);
        mpfr_set_d(r34642, a, MPFR_RNDN);
        mpfr_set_d(r34643, t, MPFR_RNDN);
        mpfr_mul(r34644, r34642, r34643, MPFR_RNDN);
        mpfr_add(r34645, r34641, r34644, MPFR_RNDN);
        mpfr_mul(r34646, r34638, r34645, MPFR_RNDN);
        mpfr_sub(r34647, r34637, r34646, MPFR_RNDN);
        ;
        mpfr_set_d(r34649, y, MPFR_RNDN);
        mpfr_mul(r34650, r34643, r34639, MPFR_RNDN);
        mpfr_mul(r34651, r34649, r34650, MPFR_RNDN);
        mpfr_mul(r34652, r34632, r34651, MPFR_RNDN);
        mpfr_mul(r34653, r34648, r34652, MPFR_RNDN);
        ;
        mpfr_set_d(r34655, k, MPFR_RNDN);
        mpfr_set_d(r34656, j, MPFR_RNDN);
        mpfr_mul(r34657, r34655, r34656, MPFR_RNDN);
        mpfr_mul(r34658, r34654, r34657, MPFR_RNDN);
        mpfr_sub(r34659, r34653, r34658, MPFR_RNDN);
        mpfr_add(r34660, r34647, r34659, MPFR_RNDN);
        ;
        mpfr_set_si(r34662, mpfr_cmp(r34632, r34661) <= 0, MPFR_RNDN);
        mpfr_mul(r34663, r34636, r34635, MPFR_RNDN);
        mpfr_mul(r34664, r34654, r34656, MPFR_RNDN);
        mpfr_mul(r34665, r34664, r34655, MPFR_RNDN);
        mpfr_sub(r34666, r34663, r34665, MPFR_RNDN);
        mpfr_mul(r34667, r34643, r34642, MPFR_RNDN);
        mpfr_mul(r34668, r34640, r34639, MPFR_RNDN);
        mpfr_add(r34669, r34667, r34668, MPFR_RNDN);
        mpfr_mul(r34670, r34669, r34638, MPFR_RNDN);
        mpfr_sub(r34671, r34666, r34670, MPFR_RNDN);
        if (mpfr_get_si(r34662, MPFR_RNDN)) { mpfr_set(r34672, r34671, MPFR_RNDN); } else { mpfr_set(r34672, r34660, MPFR_RNDN); };
        if (mpfr_get_si(r34634, MPFR_RNDN)) { mpfr_set(r34673, r34660, MPFR_RNDN); } else { mpfr_set(r34673, r34672, MPFR_RNDN); };
        return mpfr_get_d(r34673, MPFR_RNDN);
}

