#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 r54497 = x;
        float r54498 = 18.0;
        float r54499 = r54497 * r54498;
        float r54500 = y;
        float r54501 = r54499 * r54500;
        float r54502 = z;
        float r54503 = r54501 * r54502;
        float r54504 = t;
        float r54505 = r54503 * r54504;
        float r54506 = a;
        float r54507 = 4.0;
        float r54508 = r54506 * r54507;
        float r54509 = r54508 * r54504;
        float r54510 = r54505 - r54509;
        float r54511 = b;
        float r54512 = c;
        float r54513 = r54511 * r54512;
        float r54514 = r54510 + r54513;
        float r54515 = r54497 * r54507;
        float r54516 = i;
        float r54517 = r54515 * r54516;
        float r54518 = r54514 - r54517;
        float r54519 = j;
        float r54520 = 27.0;
        float r54521 = r54519 * r54520;
        float r54522 = k;
        float r54523 = r54521 * r54522;
        float r54524 = r54518 - r54523;
        return r54524;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54525 = x;
        double r54526 = 18.0;
        double r54527 = r54525 * r54526;
        double r54528 = y;
        double r54529 = r54527 * r54528;
        double r54530 = z;
        double r54531 = r54529 * r54530;
        double r54532 = t;
        double r54533 = r54531 * r54532;
        double r54534 = a;
        double r54535 = 4.0;
        double r54536 = r54534 * r54535;
        double r54537 = r54536 * r54532;
        double r54538 = r54533 - r54537;
        double r54539 = b;
        double r54540 = c;
        double r54541 = r54539 * r54540;
        double r54542 = r54538 + r54541;
        double r54543 = r54525 * r54535;
        double r54544 = i;
        double r54545 = r54543 * r54544;
        double r54546 = r54542 - r54545;
        double r54547 = j;
        double r54548 = 27.0;
        double r54549 = r54547 * r54548;
        double r54550 = k;
        double r54551 = r54549 * r54550;
        double r54552 = r54546 - r54551;
        return r54552;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54553 = z;
        float r54554 = -5.725307775451313e-09;
        bool r54555 = r54553 <= r54554;
        float r54556 = b;
        float r54557 = c;
        float r54558 = r54556 * r54557;
        float r54559 = 4.0;
        float r54560 = x;
        float r54561 = i;
        float r54562 = r54560 * r54561;
        float r54563 = a;
        float r54564 = t;
        float r54565 = r54563 * r54564;
        float r54566 = r54562 + r54565;
        float r54567 = r54559 * r54566;
        float r54568 = r54558 - r54567;
        float r54569 = 18.0;
        float r54570 = y;
        float r54571 = r54564 * r54560;
        float r54572 = r54570 * r54571;
        float r54573 = r54553 * r54572;
        float r54574 = r54569 * r54573;
        float r54575 = 27.0;
        float r54576 = k;
        float r54577 = r54575 * r54576;
        float r54578 = j;
        float r54579 = r54577 * r54578;
        float r54580 = r54574 - r54579;
        float r54581 = r54568 + r54580;
        float r54582 = 1.620828576697051e-140;
        bool r54583 = r54553 <= r54582;
        float r54584 = r54569 * r54560;
        float r54585 = r54570 * r54553;
        float r54586 = r54584 * r54585;
        float r54587 = r54564 * r54586;
        float r54588 = cbrt(r54587);
        float r54589 = r54588 * r54588;
        float r54590 = r54589 * r54588;
        float r54591 = r54576 * r54578;
        float r54592 = r54575 * r54591;
        float r54593 = r54590 - r54592;
        float r54594 = r54568 + r54593;
        float r54595 = r54583 ? r54594 : r54581;
        float r54596 = r54555 ? r54581 : r54595;
        return r54596;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54597 = z;
        double r54598 = -5.725307775451313e-09;
        bool r54599 = r54597 <= r54598;
        double r54600 = b;
        double r54601 = c;
        double r54602 = r54600 * r54601;
        double r54603 = 4.0;
        double r54604 = x;
        double r54605 = i;
        double r54606 = r54604 * r54605;
        double r54607 = a;
        double r54608 = t;
        double r54609 = r54607 * r54608;
        double r54610 = r54606 + r54609;
        double r54611 = r54603 * r54610;
        double r54612 = r54602 - r54611;
        double r54613 = 18.0;
        double r54614 = y;
        double r54615 = r54608 * r54604;
        double r54616 = r54614 * r54615;
        double r54617 = r54597 * r54616;
        double r54618 = r54613 * r54617;
        double r54619 = 27.0;
        double r54620 = k;
        double r54621 = r54619 * r54620;
        double r54622 = j;
        double r54623 = r54621 * r54622;
        double r54624 = r54618 - r54623;
        double r54625 = r54612 + r54624;
        double r54626 = 1.620828576697051e-140;
        bool r54627 = r54597 <= r54626;
        double r54628 = r54613 * r54604;
        double r54629 = r54614 * r54597;
        double r54630 = r54628 * r54629;
        double r54631 = r54608 * r54630;
        double r54632 = cbrt(r54631);
        double r54633 = r54632 * r54632;
        double r54634 = r54633 * r54632;
        double r54635 = r54620 * r54622;
        double r54636 = r54619 * r54635;
        double r54637 = r54634 - r54636;
        double r54638 = r54612 + r54637;
        double r54639 = r54627 ? r54638 : r54625;
        double r54640 = r54599 ? r54625 : r54639;
        return r54640;
}

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54641);
        mpfr_init_set_str(r54642, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54643);
        mpfr_init(r54644);
        mpfr_init(r54645);
        mpfr_init(r54646);
        mpfr_init(r54647);
        mpfr_init(r54648);
        mpfr_init(r54649);
        mpfr_init(r54650);
        mpfr_init_set_str(r54651, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54652);
        mpfr_init(r54653);
        mpfr_init(r54654);
        mpfr_init(r54655);
        mpfr_init(r54656);
        mpfr_init(r54657);
        mpfr_init(r54658);
        mpfr_init(r54659);
        mpfr_init(r54660);
        mpfr_init(r54661);
        mpfr_init(r54662);
        mpfr_init(r54663);
        mpfr_init_set_str(r54664, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54665);
        mpfr_init(r54666);
        mpfr_init(r54667);
        mpfr_init(r54668);
}

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(r54641, x, MPFR_RNDN);
        ;
        mpfr_mul(r54643, r54641, r54642, MPFR_RNDN);
        mpfr_set_d(r54644, y, MPFR_RNDN);
        mpfr_mul(r54645, r54643, r54644, MPFR_RNDN);
        mpfr_set_d(r54646, z, MPFR_RNDN);
        mpfr_mul(r54647, r54645, r54646, MPFR_RNDN);
        mpfr_set_d(r54648, t, MPFR_RNDN);
        mpfr_mul(r54649, r54647, r54648, MPFR_RNDN);
        mpfr_set_d(r54650, a, MPFR_RNDN);
        ;
        mpfr_mul(r54652, r54650, r54651, MPFR_RNDN);
        mpfr_mul(r54653, r54652, r54648, MPFR_RNDN);
        mpfr_sub(r54654, r54649, r54653, MPFR_RNDN);
        mpfr_set_d(r54655, b, MPFR_RNDN);
        mpfr_set_d(r54656, c, MPFR_RNDN);
        mpfr_mul(r54657, r54655, r54656, MPFR_RNDN);
        mpfr_add(r54658, r54654, r54657, MPFR_RNDN);
        mpfr_mul(r54659, r54641, r54651, MPFR_RNDN);
        mpfr_set_d(r54660, i, MPFR_RNDN);
        mpfr_mul(r54661, r54659, r54660, MPFR_RNDN);
        mpfr_sub(r54662, r54658, r54661, MPFR_RNDN);
        mpfr_set_d(r54663, j, MPFR_RNDN);
        ;
        mpfr_mul(r54665, r54663, r54664, MPFR_RNDN);
        mpfr_set_d(r54666, k, MPFR_RNDN);
        mpfr_mul(r54667, r54665, r54666, MPFR_RNDN);
        mpfr_sub(r54668, r54662, r54667, MPFR_RNDN);
        return mpfr_get_d(r54668, MPFR_RNDN);
}

static mpfr_t r54669, r54670, r54671, r54672, r54673, r54674, r54675, r54676, r54677, r54678, r54679, r54680, r54681, r54682, r54683, r54684, r54685, r54686, r54687, r54688, r54689, r54690, r54691, r54692, r54693, r54694, r54695, r54696, r54697, r54698, r54699, r54700, r54701, r54702, r54703, r54704, r54705, r54706, r54707, r54708, r54709, r54710, r54711, r54712;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54669);
        mpfr_init_set_str(r54670, "-5.725307775451313e-09", 10, MPFR_RNDN);
        mpfr_init(r54671);
        mpfr_init(r54672);
        mpfr_init(r54673);
        mpfr_init(r54674);
        mpfr_init_set_str(r54675, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54676);
        mpfr_init(r54677);
        mpfr_init(r54678);
        mpfr_init(r54679);
        mpfr_init(r54680);
        mpfr_init(r54681);
        mpfr_init(r54682);
        mpfr_init(r54683);
        mpfr_init(r54684);
        mpfr_init_set_str(r54685, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54686);
        mpfr_init(r54687);
        mpfr_init(r54688);
        mpfr_init(r54689);
        mpfr_init(r54690);
        mpfr_init_set_str(r54691, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54692);
        mpfr_init(r54693);
        mpfr_init(r54694);
        mpfr_init(r54695);
        mpfr_init(r54696);
        mpfr_init(r54697);
        mpfr_init_set_str(r54698, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54699);
        mpfr_init(r54700);
        mpfr_init(r54701);
        mpfr_init(r54702);
        mpfr_init(r54703);
        mpfr_init(r54704);
        mpfr_init(r54705);
        mpfr_init(r54706);
        mpfr_init(r54707);
        mpfr_init(r54708);
        mpfr_init(r54709);
        mpfr_init(r54710);
        mpfr_init(r54711);
        mpfr_init(r54712);
}

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(r54669, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54671, mpfr_cmp(r54669, r54670) <= 0, MPFR_RNDN);
        mpfr_set_d(r54672, b, MPFR_RNDN);
        mpfr_set_d(r54673, c, MPFR_RNDN);
        mpfr_mul(r54674, r54672, r54673, MPFR_RNDN);
        ;
        mpfr_set_d(r54676, x, MPFR_RNDN);
        mpfr_set_d(r54677, i, MPFR_RNDN);
        mpfr_mul(r54678, r54676, r54677, MPFR_RNDN);
        mpfr_set_d(r54679, a, MPFR_RNDN);
        mpfr_set_d(r54680, t, MPFR_RNDN);
        mpfr_mul(r54681, r54679, r54680, MPFR_RNDN);
        mpfr_add(r54682, r54678, r54681, MPFR_RNDN);
        mpfr_mul(r54683, r54675, r54682, MPFR_RNDN);
        mpfr_sub(r54684, r54674, r54683, MPFR_RNDN);
        ;
        mpfr_set_d(r54686, y, MPFR_RNDN);
        mpfr_mul(r54687, r54680, r54676, MPFR_RNDN);
        mpfr_mul(r54688, r54686, r54687, MPFR_RNDN);
        mpfr_mul(r54689, r54669, r54688, MPFR_RNDN);
        mpfr_mul(r54690, r54685, r54689, MPFR_RNDN);
        ;
        mpfr_set_d(r54692, k, MPFR_RNDN);
        mpfr_mul(r54693, r54691, r54692, MPFR_RNDN);
        mpfr_set_d(r54694, j, MPFR_RNDN);
        mpfr_mul(r54695, r54693, r54694, MPFR_RNDN);
        mpfr_sub(r54696, r54690, r54695, MPFR_RNDN);
        mpfr_add(r54697, r54684, r54696, MPFR_RNDN);
        ;
        mpfr_set_si(r54699, mpfr_cmp(r54669, r54698) <= 0, MPFR_RNDN);
        mpfr_mul(r54700, r54685, r54676, MPFR_RNDN);
        mpfr_mul(r54701, r54686, r54669, MPFR_RNDN);
        mpfr_mul(r54702, r54700, r54701, MPFR_RNDN);
        mpfr_mul(r54703, r54680, r54702, MPFR_RNDN);
        mpfr_cbrt(r54704, r54703, MPFR_RNDN);
        mpfr_mul(r54705, r54704, r54704, MPFR_RNDN);
        mpfr_mul(r54706, r54705, r54704, MPFR_RNDN);
        mpfr_mul(r54707, r54692, r54694, MPFR_RNDN);
        mpfr_mul(r54708, r54691, r54707, MPFR_RNDN);
        mpfr_sub(r54709, r54706, r54708, MPFR_RNDN);
        mpfr_add(r54710, r54684, r54709, MPFR_RNDN);
        if (mpfr_get_si(r54699, MPFR_RNDN)) { mpfr_set(r54711, r54710, MPFR_RNDN); } else { mpfr_set(r54711, r54697, MPFR_RNDN); };
        if (mpfr_get_si(r54671, MPFR_RNDN)) { mpfr_set(r54712, r54697, MPFR_RNDN); } else { mpfr_set(r54712, r54711, MPFR_RNDN); };
        return mpfr_get_d(r54712, MPFR_RNDN);
}

static mpfr_t r54713, r54714, r54715, r54716, r54717, r54718, r54719, r54720, r54721, r54722, r54723, r54724, r54725, r54726, r54727, r54728, r54729, r54730, r54731, r54732, r54733, r54734, r54735, r54736, r54737, r54738, r54739, r54740, r54741, r54742, r54743, r54744, r54745, r54746, r54747, r54748, r54749, r54750, r54751, r54752, r54753, r54754, r54755, r54756;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54713);
        mpfr_init_set_str(r54714, "-5.725307775451313e-09", 10, MPFR_RNDN);
        mpfr_init(r54715);
        mpfr_init(r54716);
        mpfr_init(r54717);
        mpfr_init(r54718);
        mpfr_init_set_str(r54719, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54720);
        mpfr_init(r54721);
        mpfr_init(r54722);
        mpfr_init(r54723);
        mpfr_init(r54724);
        mpfr_init(r54725);
        mpfr_init(r54726);
        mpfr_init(r54727);
        mpfr_init(r54728);
        mpfr_init_set_str(r54729, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54730);
        mpfr_init(r54731);
        mpfr_init(r54732);
        mpfr_init(r54733);
        mpfr_init(r54734);
        mpfr_init_set_str(r54735, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54736);
        mpfr_init(r54737);
        mpfr_init(r54738);
        mpfr_init(r54739);
        mpfr_init(r54740);
        mpfr_init(r54741);
        mpfr_init_set_str(r54742, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54743);
        mpfr_init(r54744);
        mpfr_init(r54745);
        mpfr_init(r54746);
        mpfr_init(r54747);
        mpfr_init(r54748);
        mpfr_init(r54749);
        mpfr_init(r54750);
        mpfr_init(r54751);
        mpfr_init(r54752);
        mpfr_init(r54753);
        mpfr_init(r54754);
        mpfr_init(r54755);
        mpfr_init(r54756);
}

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(r54713, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54715, mpfr_cmp(r54713, r54714) <= 0, MPFR_RNDN);
        mpfr_set_d(r54716, b, MPFR_RNDN);
        mpfr_set_d(r54717, c, MPFR_RNDN);
        mpfr_mul(r54718, r54716, r54717, MPFR_RNDN);
        ;
        mpfr_set_d(r54720, x, MPFR_RNDN);
        mpfr_set_d(r54721, i, MPFR_RNDN);
        mpfr_mul(r54722, r54720, r54721, MPFR_RNDN);
        mpfr_set_d(r54723, a, MPFR_RNDN);
        mpfr_set_d(r54724, t, MPFR_RNDN);
        mpfr_mul(r54725, r54723, r54724, MPFR_RNDN);
        mpfr_add(r54726, r54722, r54725, MPFR_RNDN);
        mpfr_mul(r54727, r54719, r54726, MPFR_RNDN);
        mpfr_sub(r54728, r54718, r54727, MPFR_RNDN);
        ;
        mpfr_set_d(r54730, y, MPFR_RNDN);
        mpfr_mul(r54731, r54724, r54720, MPFR_RNDN);
        mpfr_mul(r54732, r54730, r54731, MPFR_RNDN);
        mpfr_mul(r54733, r54713, r54732, MPFR_RNDN);
        mpfr_mul(r54734, r54729, r54733, MPFR_RNDN);
        ;
        mpfr_set_d(r54736, k, MPFR_RNDN);
        mpfr_mul(r54737, r54735, r54736, MPFR_RNDN);
        mpfr_set_d(r54738, j, MPFR_RNDN);
        mpfr_mul(r54739, r54737, r54738, MPFR_RNDN);
        mpfr_sub(r54740, r54734, r54739, MPFR_RNDN);
        mpfr_add(r54741, r54728, r54740, MPFR_RNDN);
        ;
        mpfr_set_si(r54743, mpfr_cmp(r54713, r54742) <= 0, MPFR_RNDN);
        mpfr_mul(r54744, r54729, r54720, MPFR_RNDN);
        mpfr_mul(r54745, r54730, r54713, MPFR_RNDN);
        mpfr_mul(r54746, r54744, r54745, MPFR_RNDN);
        mpfr_mul(r54747, r54724, r54746, MPFR_RNDN);
        mpfr_cbrt(r54748, r54747, MPFR_RNDN);
        mpfr_mul(r54749, r54748, r54748, MPFR_RNDN);
        mpfr_mul(r54750, r54749, r54748, MPFR_RNDN);
        mpfr_mul(r54751, r54736, r54738, MPFR_RNDN);
        mpfr_mul(r54752, r54735, r54751, MPFR_RNDN);
        mpfr_sub(r54753, r54750, r54752, MPFR_RNDN);
        mpfr_add(r54754, r54728, r54753, MPFR_RNDN);
        if (mpfr_get_si(r54743, MPFR_RNDN)) { mpfr_set(r54755, r54754, MPFR_RNDN); } else { mpfr_set(r54755, r54741, MPFR_RNDN); };
        if (mpfr_get_si(r54715, MPFR_RNDN)) { mpfr_set(r54756, r54741, MPFR_RNDN); } else { mpfr_set(r54756, r54755, MPFR_RNDN); };
        return mpfr_get_d(r54756, MPFR_RNDN);
}

