#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 r17525 = x;
        float r17526 = 18.0f;
        float r17527 = r17525 * r17526;
        float r17528 = y;
        float r17529 = r17527 * r17528;
        float r17530 = z;
        float r17531 = r17529 * r17530;
        float r17532 = t;
        float r17533 = r17531 * r17532;
        float r17534 = a;
        float r17535 = 4.0f;
        float r17536 = r17534 * r17535;
        float r17537 = r17536 * r17532;
        float r17538 = r17533 - r17537;
        float r17539 = b;
        float r17540 = c;
        float r17541 = r17539 * r17540;
        float r17542 = r17538 + r17541;
        float r17543 = r17525 * r17535;
        float r17544 = i;
        float r17545 = r17543 * r17544;
        float r17546 = r17542 - r17545;
        float r17547 = j;
        float r17548 = 27.0f;
        float r17549 = r17547 * r17548;
        float r17550 = k;
        float r17551 = r17549 * r17550;
        float r17552 = r17546 - r17551;
        return r17552;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r17553 = x;
        double r17554 = 18.0;
        double r17555 = r17553 * r17554;
        double r17556 = y;
        double r17557 = r17555 * r17556;
        double r17558 = z;
        double r17559 = r17557 * r17558;
        double r17560 = t;
        double r17561 = r17559 * r17560;
        double r17562 = a;
        double r17563 = 4.0;
        double r17564 = r17562 * r17563;
        double r17565 = r17564 * r17560;
        double r17566 = r17561 - r17565;
        double r17567 = b;
        double r17568 = c;
        double r17569 = r17567 * r17568;
        double r17570 = r17566 + r17569;
        double r17571 = r17553 * r17563;
        double r17572 = i;
        double r17573 = r17571 * r17572;
        double r17574 = r17570 - r17573;
        double r17575 = j;
        double r17576 = 27.0;
        double r17577 = r17575 * r17576;
        double r17578 = k;
        double r17579 = r17577 * r17578;
        double r17580 = r17574 - r17579;
        return r17580;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r17581 = y;
        float r17582 = -1407.654541015625f;
        bool r17583 = r17581 <= r17582;
        float r17584 = 18.0f;
        float r17585 = t;
        float r17586 = x;
        float r17587 = z;
        float r17588 = r17586 * r17587;
        float r17589 = r17585 * r17588;
        float r17590 = r17581 * r17589;
        float r17591 = r17584 * r17590;
        float r17592 = 4.0f;
        float r17593 = a;
        float r17594 = r17585 * r17593;
        float r17595 = i;
        float r17596 = r17595 * r17586;
        float r17597 = r17594 + r17596;
        float r17598 = r17592 * r17597;
        float r17599 = r17591 - r17598;
        float r17600 = c;
        float r17601 = b;
        float r17602 = r17600 * r17601;
        float r17603 = j;
        float r17604 = 27.0f;
        float r17605 = k;
        float r17606 = r17604 * r17605;
        float r17607 = r17603 * r17606;
        float r17608 = r17602 - r17607;
        float r17609 = r17599 + r17608;
        float r17610 = 6833.6904296875f;
        bool r17611 = r17581 <= r17610;
        float r17612 = r17586 * r17584;
        float r17613 = r17581 * r17587;
        float r17614 = r17612 * r17613;
        float r17615 = r17592 * r17593;
        float r17616 = r17614 - r17615;
        float r17617 = r17585 * r17616;
        float r17618 = r17592 * r17596;
        float r17619 = r17617 - r17618;
        float r17620 = r17619 + r17608;
        float r17621 = 1.0f;
        float r17622 = pow(r17589, r17621);
        float r17623 = r17581 * r17622;
        float r17624 = r17584 * r17623;
        float r17625 = r17624 - r17598;
        float r17626 = r17625 + r17608;
        float r17627 = r17611 ? r17620 : r17626;
        float r17628 = r17583 ? r17609 : r17627;
        return r17628;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r17629 = y;
        double r17630 = -1407.654541015625;
        bool r17631 = r17629 <= r17630;
        double r17632 = 18.0;
        double r17633 = t;
        double r17634 = x;
        double r17635 = z;
        double r17636 = r17634 * r17635;
        double r17637 = r17633 * r17636;
        double r17638 = r17629 * r17637;
        double r17639 = r17632 * r17638;
        double r17640 = 4.0;
        double r17641 = a;
        double r17642 = r17633 * r17641;
        double r17643 = i;
        double r17644 = r17643 * r17634;
        double r17645 = r17642 + r17644;
        double r17646 = r17640 * r17645;
        double r17647 = r17639 - r17646;
        double r17648 = c;
        double r17649 = b;
        double r17650 = r17648 * r17649;
        double r17651 = j;
        double r17652 = 27.0;
        double r17653 = k;
        double r17654 = r17652 * r17653;
        double r17655 = r17651 * r17654;
        double r17656 = r17650 - r17655;
        double r17657 = r17647 + r17656;
        double r17658 = 6833.6904296875;
        bool r17659 = r17629 <= r17658;
        double r17660 = r17634 * r17632;
        double r17661 = r17629 * r17635;
        double r17662 = r17660 * r17661;
        double r17663 = r17640 * r17641;
        double r17664 = r17662 - r17663;
        double r17665 = r17633 * r17664;
        double r17666 = r17640 * r17644;
        double r17667 = r17665 - r17666;
        double r17668 = r17667 + r17656;
        double r17669 = 1.0;
        double r17670 = pow(r17637, r17669);
        double r17671 = r17629 * r17670;
        double r17672 = r17632 * r17671;
        double r17673 = r17672 - r17646;
        double r17674 = r17673 + r17656;
        double r17675 = r17659 ? r17668 : r17674;
        double r17676 = r17631 ? r17657 : r17675;
        return r17676;
}

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 r17677, r17678, r17679, r17680, r17681, r17682, r17683, r17684, r17685, r17686, r17687, r17688, r17689, r17690, r17691, r17692, r17693, r17694, r17695, r17696, r17697, r17698, r17699, r17700, r17701, r17702, r17703, r17704;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r17677);
        mpfr_init_set_str(r17678, "18.0", 10, MPFR_RNDN);
        mpfr_init(r17679);
        mpfr_init(r17680);
        mpfr_init(r17681);
        mpfr_init(r17682);
        mpfr_init(r17683);
        mpfr_init(r17684);
        mpfr_init(r17685);
        mpfr_init(r17686);
        mpfr_init_set_str(r17687, "4.0", 10, MPFR_RNDN);
        mpfr_init(r17688);
        mpfr_init(r17689);
        mpfr_init(r17690);
        mpfr_init(r17691);
        mpfr_init(r17692);
        mpfr_init(r17693);
        mpfr_init(r17694);
        mpfr_init(r17695);
        mpfr_init(r17696);
        mpfr_init(r17697);
        mpfr_init(r17698);
        mpfr_init(r17699);
        mpfr_init_set_str(r17700, "27.0", 10, MPFR_RNDN);
        mpfr_init(r17701);
        mpfr_init(r17702);
        mpfr_init(r17703);
        mpfr_init(r17704);
}

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(r17677, x, MPFR_RNDN);
        ;
        mpfr_mul(r17679, r17677, r17678, MPFR_RNDN);
        mpfr_set_d(r17680, y, MPFR_RNDN);
        mpfr_mul(r17681, r17679, r17680, MPFR_RNDN);
        mpfr_set_d(r17682, z, MPFR_RNDN);
        mpfr_mul(r17683, r17681, r17682, MPFR_RNDN);
        mpfr_set_d(r17684, t, MPFR_RNDN);
        mpfr_mul(r17685, r17683, r17684, MPFR_RNDN);
        mpfr_set_d(r17686, a, MPFR_RNDN);
        ;
        mpfr_mul(r17688, r17686, r17687, MPFR_RNDN);
        mpfr_mul(r17689, r17688, r17684, MPFR_RNDN);
        mpfr_sub(r17690, r17685, r17689, MPFR_RNDN);
        mpfr_set_d(r17691, b, MPFR_RNDN);
        mpfr_set_d(r17692, c, MPFR_RNDN);
        mpfr_mul(r17693, r17691, r17692, MPFR_RNDN);
        mpfr_add(r17694, r17690, r17693, MPFR_RNDN);
        mpfr_mul(r17695, r17677, r17687, MPFR_RNDN);
        mpfr_set_d(r17696, i, MPFR_RNDN);
        mpfr_mul(r17697, r17695, r17696, MPFR_RNDN);
        mpfr_sub(r17698, r17694, r17697, MPFR_RNDN);
        mpfr_set_d(r17699, j, MPFR_RNDN);
        ;
        mpfr_mul(r17701, r17699, r17700, MPFR_RNDN);
        mpfr_set_d(r17702, k, MPFR_RNDN);
        mpfr_mul(r17703, r17701, r17702, MPFR_RNDN);
        mpfr_sub(r17704, r17698, r17703, MPFR_RNDN);
        return mpfr_get_d(r17704, MPFR_RNDN);
}

static mpfr_t r17705, r17706, r17707, r17708, r17709, r17710, r17711, r17712, r17713, r17714, r17715, r17716, r17717, r17718, r17719, r17720, r17721, r17722, r17723, r17724, r17725, r17726, r17727, r17728, r17729, r17730, r17731, r17732, r17733, r17734, r17735, r17736, r17737, r17738, r17739, r17740, r17741, r17742, r17743, r17744, r17745, r17746, r17747, r17748, r17749, r17750, r17751, r17752;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17705);
        mpfr_init_set_str(r17706, "-1407.6545f0", 10, MPFR_RNDN);
        mpfr_init(r17707);
        mpfr_init_set_str(r17708, "18.0", 10, MPFR_RNDN);
        mpfr_init(r17709);
        mpfr_init(r17710);
        mpfr_init(r17711);
        mpfr_init(r17712);
        mpfr_init(r17713);
        mpfr_init(r17714);
        mpfr_init(r17715);
        mpfr_init_set_str(r17716, "4.0", 10, MPFR_RNDN);
        mpfr_init(r17717);
        mpfr_init(r17718);
        mpfr_init(r17719);
        mpfr_init(r17720);
        mpfr_init(r17721);
        mpfr_init(r17722);
        mpfr_init(r17723);
        mpfr_init(r17724);
        mpfr_init(r17725);
        mpfr_init(r17726);
        mpfr_init(r17727);
        mpfr_init_set_str(r17728, "27.0", 10, MPFR_RNDN);
        mpfr_init(r17729);
        mpfr_init(r17730);
        mpfr_init(r17731);
        mpfr_init(r17732);
        mpfr_init(r17733);
        mpfr_init_set_str(r17734, "6833.6904f0", 10, MPFR_RNDN);
        mpfr_init(r17735);
        mpfr_init(r17736);
        mpfr_init(r17737);
        mpfr_init(r17738);
        mpfr_init(r17739);
        mpfr_init(r17740);
        mpfr_init(r17741);
        mpfr_init(r17742);
        mpfr_init(r17743);
        mpfr_init(r17744);
        mpfr_init_set_str(r17745, "1", 10, MPFR_RNDN);
        mpfr_init(r17746);
        mpfr_init(r17747);
        mpfr_init(r17748);
        mpfr_init(r17749);
        mpfr_init(r17750);
        mpfr_init(r17751);
        mpfr_init(r17752);
}

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(r17705, y, MPFR_RNDN);
        ;
        mpfr_set_si(r17707, mpfr_cmp(r17705, r17706) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r17709, t, MPFR_RNDN);
        mpfr_set_d(r17710, x, MPFR_RNDN);
        mpfr_set_d(r17711, z, MPFR_RNDN);
        mpfr_mul(r17712, r17710, r17711, MPFR_RNDN);
        mpfr_mul(r17713, r17709, r17712, MPFR_RNDN);
        mpfr_mul(r17714, r17705, r17713, MPFR_RNDN);
        mpfr_mul(r17715, r17708, r17714, MPFR_RNDN);
        ;
        mpfr_set_d(r17717, a, MPFR_RNDN);
        mpfr_mul(r17718, r17709, r17717, MPFR_RNDN);
        mpfr_set_d(r17719, i, MPFR_RNDN);
        mpfr_mul(r17720, r17719, r17710, MPFR_RNDN);
        mpfr_add(r17721, r17718, r17720, MPFR_RNDN);
        mpfr_mul(r17722, r17716, r17721, MPFR_RNDN);
        mpfr_sub(r17723, r17715, r17722, MPFR_RNDN);
        mpfr_set_d(r17724, c, MPFR_RNDN);
        mpfr_set_d(r17725, b, MPFR_RNDN);
        mpfr_mul(r17726, r17724, r17725, MPFR_RNDN);
        mpfr_set_d(r17727, j, MPFR_RNDN);
        ;
        mpfr_set_d(r17729, k, MPFR_RNDN);
        mpfr_mul(r17730, r17728, r17729, MPFR_RNDN);
        mpfr_mul(r17731, r17727, r17730, MPFR_RNDN);
        mpfr_sub(r17732, r17726, r17731, MPFR_RNDN);
        mpfr_add(r17733, r17723, r17732, MPFR_RNDN);
        ;
        mpfr_set_si(r17735, mpfr_cmp(r17705, r17734) <= 0, MPFR_RNDN);
        mpfr_mul(r17736, r17710, r17708, MPFR_RNDN);
        mpfr_mul(r17737, r17705, r17711, MPFR_RNDN);
        mpfr_mul(r17738, r17736, r17737, MPFR_RNDN);
        mpfr_mul(r17739, r17716, r17717, MPFR_RNDN);
        mpfr_sub(r17740, r17738, r17739, MPFR_RNDN);
        mpfr_mul(r17741, r17709, r17740, MPFR_RNDN);
        mpfr_mul(r17742, r17716, r17720, MPFR_RNDN);
        mpfr_sub(r17743, r17741, r17742, MPFR_RNDN);
        mpfr_add(r17744, r17743, r17732, MPFR_RNDN);
        ;
        mpfr_pow(r17746, r17713, r17745, MPFR_RNDN);
        mpfr_mul(r17747, r17705, r17746, MPFR_RNDN);
        mpfr_mul(r17748, r17708, r17747, MPFR_RNDN);
        mpfr_sub(r17749, r17748, r17722, MPFR_RNDN);
        mpfr_add(r17750, r17749, r17732, MPFR_RNDN);
        if (mpfr_get_si(r17735, MPFR_RNDN)) { mpfr_set(r17751, r17744, MPFR_RNDN); } else { mpfr_set(r17751, r17750, MPFR_RNDN); };
        if (mpfr_get_si(r17707, MPFR_RNDN)) { mpfr_set(r17752, r17733, MPFR_RNDN); } else { mpfr_set(r17752, r17751, MPFR_RNDN); };
        return mpfr_get_d(r17752, MPFR_RNDN);
}

static mpfr_t r17753, r17754, r17755, r17756, r17757, r17758, r17759, r17760, r17761, r17762, r17763, r17764, r17765, r17766, r17767, r17768, r17769, r17770, r17771, r17772, r17773, r17774, r17775, r17776, r17777, r17778, r17779, r17780, r17781, r17782, r17783, r17784, r17785, r17786, r17787, r17788, r17789, r17790, r17791, r17792, r17793, r17794, r17795, r17796, r17797, r17798, r17799, r17800;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17753);
        mpfr_init_set_str(r17754, "-1407.6545f0", 10, MPFR_RNDN);
        mpfr_init(r17755);
        mpfr_init_set_str(r17756, "18.0", 10, MPFR_RNDN);
        mpfr_init(r17757);
        mpfr_init(r17758);
        mpfr_init(r17759);
        mpfr_init(r17760);
        mpfr_init(r17761);
        mpfr_init(r17762);
        mpfr_init(r17763);
        mpfr_init_set_str(r17764, "4.0", 10, MPFR_RNDN);
        mpfr_init(r17765);
        mpfr_init(r17766);
        mpfr_init(r17767);
        mpfr_init(r17768);
        mpfr_init(r17769);
        mpfr_init(r17770);
        mpfr_init(r17771);
        mpfr_init(r17772);
        mpfr_init(r17773);
        mpfr_init(r17774);
        mpfr_init(r17775);
        mpfr_init_set_str(r17776, "27.0", 10, MPFR_RNDN);
        mpfr_init(r17777);
        mpfr_init(r17778);
        mpfr_init(r17779);
        mpfr_init(r17780);
        mpfr_init(r17781);
        mpfr_init_set_str(r17782, "6833.6904f0", 10, MPFR_RNDN);
        mpfr_init(r17783);
        mpfr_init(r17784);
        mpfr_init(r17785);
        mpfr_init(r17786);
        mpfr_init(r17787);
        mpfr_init(r17788);
        mpfr_init(r17789);
        mpfr_init(r17790);
        mpfr_init(r17791);
        mpfr_init(r17792);
        mpfr_init_set_str(r17793, "1", 10, MPFR_RNDN);
        mpfr_init(r17794);
        mpfr_init(r17795);
        mpfr_init(r17796);
        mpfr_init(r17797);
        mpfr_init(r17798);
        mpfr_init(r17799);
        mpfr_init(r17800);
}

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(r17753, y, MPFR_RNDN);
        ;
        mpfr_set_si(r17755, mpfr_cmp(r17753, r17754) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r17757, t, MPFR_RNDN);
        mpfr_set_d(r17758, x, MPFR_RNDN);
        mpfr_set_d(r17759, z, MPFR_RNDN);
        mpfr_mul(r17760, r17758, r17759, MPFR_RNDN);
        mpfr_mul(r17761, r17757, r17760, MPFR_RNDN);
        mpfr_mul(r17762, r17753, r17761, MPFR_RNDN);
        mpfr_mul(r17763, r17756, r17762, MPFR_RNDN);
        ;
        mpfr_set_d(r17765, a, MPFR_RNDN);
        mpfr_mul(r17766, r17757, r17765, MPFR_RNDN);
        mpfr_set_d(r17767, i, MPFR_RNDN);
        mpfr_mul(r17768, r17767, r17758, MPFR_RNDN);
        mpfr_add(r17769, r17766, r17768, MPFR_RNDN);
        mpfr_mul(r17770, r17764, r17769, MPFR_RNDN);
        mpfr_sub(r17771, r17763, r17770, MPFR_RNDN);
        mpfr_set_d(r17772, c, MPFR_RNDN);
        mpfr_set_d(r17773, b, MPFR_RNDN);
        mpfr_mul(r17774, r17772, r17773, MPFR_RNDN);
        mpfr_set_d(r17775, j, MPFR_RNDN);
        ;
        mpfr_set_d(r17777, k, MPFR_RNDN);
        mpfr_mul(r17778, r17776, r17777, MPFR_RNDN);
        mpfr_mul(r17779, r17775, r17778, MPFR_RNDN);
        mpfr_sub(r17780, r17774, r17779, MPFR_RNDN);
        mpfr_add(r17781, r17771, r17780, MPFR_RNDN);
        ;
        mpfr_set_si(r17783, mpfr_cmp(r17753, r17782) <= 0, MPFR_RNDN);
        mpfr_mul(r17784, r17758, r17756, MPFR_RNDN);
        mpfr_mul(r17785, r17753, r17759, MPFR_RNDN);
        mpfr_mul(r17786, r17784, r17785, MPFR_RNDN);
        mpfr_mul(r17787, r17764, r17765, MPFR_RNDN);
        mpfr_sub(r17788, r17786, r17787, MPFR_RNDN);
        mpfr_mul(r17789, r17757, r17788, MPFR_RNDN);
        mpfr_mul(r17790, r17764, r17768, MPFR_RNDN);
        mpfr_sub(r17791, r17789, r17790, MPFR_RNDN);
        mpfr_add(r17792, r17791, r17780, MPFR_RNDN);
        ;
        mpfr_pow(r17794, r17761, r17793, MPFR_RNDN);
        mpfr_mul(r17795, r17753, r17794, MPFR_RNDN);
        mpfr_mul(r17796, r17756, r17795, MPFR_RNDN);
        mpfr_sub(r17797, r17796, r17770, MPFR_RNDN);
        mpfr_add(r17798, r17797, r17780, MPFR_RNDN);
        if (mpfr_get_si(r17783, MPFR_RNDN)) { mpfr_set(r17799, r17792, MPFR_RNDN); } else { mpfr_set(r17799, r17798, MPFR_RNDN); };
        if (mpfr_get_si(r17755, MPFR_RNDN)) { mpfr_set(r17800, r17781, MPFR_RNDN); } else { mpfr_set(r17800, r17799, MPFR_RNDN); };
        return mpfr_get_d(r17800, MPFR_RNDN);
}

