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

double f_if(float x, float y, float z, float t, float a, float b, float c) {
        float r52601 = x;
        float r52602 = 9.0f;
        float r52603 = r52601 * r52602;
        float r52604 = y;
        float r52605 = r52603 * r52604;
        float r52606 = z;
        float r52607 = 4.0f;
        float r52608 = r52606 * r52607;
        float r52609 = t;
        float r52610 = r52608 * r52609;
        float r52611 = a;
        float r52612 = r52610 * r52611;
        float r52613 = r52605 - r52612;
        float r52614 = b;
        float r52615 = r52613 + r52614;
        float r52616 = c;
        float r52617 = r52606 * r52616;
        float r52618 = r52615 / r52617;
        return r52618;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r52619 = x;
        double r52620 = 9.0;
        double r52621 = r52619 * r52620;
        double r52622 = y;
        double r52623 = r52621 * r52622;
        double r52624 = z;
        double r52625 = 4.0;
        double r52626 = r52624 * r52625;
        double r52627 = t;
        double r52628 = r52626 * r52627;
        double r52629 = a;
        double r52630 = r52628 * r52629;
        double r52631 = r52623 - r52630;
        double r52632 = b;
        double r52633 = r52631 + r52632;
        double r52634 = c;
        double r52635 = r52624 * r52634;
        double r52636 = r52633 / r52635;
        return r52636;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r52637 = x;
        float r52638 = 9.0f;
        float r52639 = r52637 * r52638;
        float r52640 = y;
        float r52641 = r52639 * r52640;
        float r52642 = z;
        float r52643 = 4.0f;
        float r52644 = r52642 * r52643;
        float r52645 = t;
        float r52646 = r52644 * r52645;
        float r52647 = a;
        float r52648 = r52646 * r52647;
        float r52649 = r52641 - r52648;
        float r52650 = b;
        float r52651 = r52649 + r52650;
        float r52652 = c;
        float r52653 = r52642 * r52652;
        float r52654 = r52651 / r52653;
        float r52655 = -2.1533033503554896e-227f;
        bool r52656 = r52654 <= r52655;
        float r52657 = r52652 * r52642;
        float r52658 = r52657 / r52637;
        float r52659 = r52640 / r52658;
        float r52660 = r52638 * r52659;
        float r52661 = r52650 / r52657;
        float r52662 = r52660 + r52661;
        float r52663 = r52645 * r52647;
        float r52664 = r52663 / r52652;
        float r52665 = r52643 * r52664;
        float r52666 = r52662 - r52665;
        float r52667 = 0.0f;
        bool r52668 = r52654 <= r52667;
        float r52669 = r52651 / r52642;
        float r52670 = r52669 / r52652;
        float r52671 = r52640 * r52637;
        float r52672 = r52671 / r52657;
        float r52673 = r52638 * r52672;
        float r52674 = r52673 + r52661;
        float r52675 = r52645 / r52652;
        float r52676 = r52675 * r52647;
        float r52677 = r52643 * r52676;
        float r52678 = r52674 - r52677;
        float r52679 = r52668 ? r52670 : r52678;
        float r52680 = r52656 ? r52666 : r52679;
        return r52680;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r52681 = x;
        double r52682 = 9.0;
        double r52683 = r52681 * r52682;
        double r52684 = y;
        double r52685 = r52683 * r52684;
        double r52686 = z;
        double r52687 = 4.0;
        double r52688 = r52686 * r52687;
        double r52689 = t;
        double r52690 = r52688 * r52689;
        double r52691 = a;
        double r52692 = r52690 * r52691;
        double r52693 = r52685 - r52692;
        double r52694 = b;
        double r52695 = r52693 + r52694;
        double r52696 = c;
        double r52697 = r52686 * r52696;
        double r52698 = r52695 / r52697;
        double r52699 = -2.1533033503554896e-227;
        bool r52700 = r52698 <= r52699;
        double r52701 = r52696 * r52686;
        double r52702 = r52701 / r52681;
        double r52703 = r52684 / r52702;
        double r52704 = r52682 * r52703;
        double r52705 = r52694 / r52701;
        double r52706 = r52704 + r52705;
        double r52707 = r52689 * r52691;
        double r52708 = r52707 / r52696;
        double r52709 = r52687 * r52708;
        double r52710 = r52706 - r52709;
        double r52711 = 0.0;
        bool r52712 = r52698 <= r52711;
        double r52713 = r52695 / r52686;
        double r52714 = r52713 / r52696;
        double r52715 = r52684 * r52681;
        double r52716 = r52715 / r52701;
        double r52717 = r52682 * r52716;
        double r52718 = r52717 + r52705;
        double r52719 = r52689 / r52696;
        double r52720 = r52719 * r52691;
        double r52721 = r52687 * r52720;
        double r52722 = r52718 - r52721;
        double r52723 = r52712 ? r52714 : r52722;
        double r52724 = r52700 ? r52710 : r52723;
        return r52724;
}

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 r52725, r52726, r52727, r52728, r52729, r52730, r52731, r52732, r52733, r52734, r52735, r52736, r52737, r52738, r52739, r52740, r52741, r52742;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r52725);
        mpfr_init_set_str(r52726, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52727);
        mpfr_init(r52728);
        mpfr_init(r52729);
        mpfr_init(r52730);
        mpfr_init_set_str(r52731, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52732);
        mpfr_init(r52733);
        mpfr_init(r52734);
        mpfr_init(r52735);
        mpfr_init(r52736);
        mpfr_init(r52737);
        mpfr_init(r52738);
        mpfr_init(r52739);
        mpfr_init(r52740);
        mpfr_init(r52741);
        mpfr_init(r52742);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52725, x, MPFR_RNDN);
        ;
        mpfr_mul(r52727, r52725, r52726, MPFR_RNDN);
        mpfr_set_d(r52728, y, MPFR_RNDN);
        mpfr_mul(r52729, r52727, r52728, MPFR_RNDN);
        mpfr_set_d(r52730, z, MPFR_RNDN);
        ;
        mpfr_mul(r52732, r52730, r52731, MPFR_RNDN);
        mpfr_set_d(r52733, t, MPFR_RNDN);
        mpfr_mul(r52734, r52732, r52733, MPFR_RNDN);
        mpfr_set_d(r52735, a, MPFR_RNDN);
        mpfr_mul(r52736, r52734, r52735, MPFR_RNDN);
        mpfr_sub(r52737, r52729, r52736, MPFR_RNDN);
        mpfr_set_d(r52738, b, MPFR_RNDN);
        mpfr_add(r52739, r52737, r52738, MPFR_RNDN);
        mpfr_set_d(r52740, c, MPFR_RNDN);
        mpfr_mul(r52741, r52730, r52740, MPFR_RNDN);
        mpfr_div(r52742, r52739, r52741, MPFR_RNDN);
        return mpfr_get_d(r52742, MPFR_RNDN);
}

static mpfr_t r52743, r52744, r52745, r52746, r52747, r52748, r52749, r52750, r52751, r52752, r52753, r52754, r52755, r52756, r52757, r52758, r52759, r52760, r52761, r52762, r52763, r52764, r52765, r52766, r52767, r52768, r52769, r52770, r52771, r52772, r52773, r52774, r52775, r52776, r52777, r52778, r52779, r52780, r52781, r52782, r52783, r52784, r52785, r52786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52743);
        mpfr_init_set_str(r52744, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52745);
        mpfr_init(r52746);
        mpfr_init(r52747);
        mpfr_init(r52748);
        mpfr_init_set_str(r52749, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52750);
        mpfr_init(r52751);
        mpfr_init(r52752);
        mpfr_init(r52753);
        mpfr_init(r52754);
        mpfr_init(r52755);
        mpfr_init(r52756);
        mpfr_init(r52757);
        mpfr_init(r52758);
        mpfr_init(r52759);
        mpfr_init(r52760);
        mpfr_init_set_str(r52761, "-2.1533033503554896e-227", 10, MPFR_RNDN);
        mpfr_init(r52762);
        mpfr_init(r52763);
        mpfr_init(r52764);
        mpfr_init(r52765);
        mpfr_init(r52766);
        mpfr_init(r52767);
        mpfr_init(r52768);
        mpfr_init(r52769);
        mpfr_init(r52770);
        mpfr_init(r52771);
        mpfr_init(r52772);
        mpfr_init_set_str(r52773, "0.0", 10, MPFR_RNDN);
        mpfr_init(r52774);
        mpfr_init(r52775);
        mpfr_init(r52776);
        mpfr_init(r52777);
        mpfr_init(r52778);
        mpfr_init(r52779);
        mpfr_init(r52780);
        mpfr_init(r52781);
        mpfr_init(r52782);
        mpfr_init(r52783);
        mpfr_init(r52784);
        mpfr_init(r52785);
        mpfr_init(r52786);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52743, x, MPFR_RNDN);
        ;
        mpfr_mul(r52745, r52743, r52744, MPFR_RNDN);
        mpfr_set_d(r52746, y, MPFR_RNDN);
        mpfr_mul(r52747, r52745, r52746, MPFR_RNDN);
        mpfr_set_d(r52748, z, MPFR_RNDN);
        ;
        mpfr_mul(r52750, r52748, r52749, MPFR_RNDN);
        mpfr_set_d(r52751, t, MPFR_RNDN);
        mpfr_mul(r52752, r52750, r52751, MPFR_RNDN);
        mpfr_set_d(r52753, a, MPFR_RNDN);
        mpfr_mul(r52754, r52752, r52753, MPFR_RNDN);
        mpfr_sub(r52755, r52747, r52754, MPFR_RNDN);
        mpfr_set_d(r52756, b, MPFR_RNDN);
        mpfr_add(r52757, r52755, r52756, MPFR_RNDN);
        mpfr_set_d(r52758, c, MPFR_RNDN);
        mpfr_mul(r52759, r52748, r52758, MPFR_RNDN);
        mpfr_div(r52760, r52757, r52759, MPFR_RNDN);
        ;
        mpfr_set_si(r52762, mpfr_cmp(r52760, r52761) <= 0, MPFR_RNDN);
        mpfr_mul(r52763, r52758, r52748, MPFR_RNDN);
        mpfr_div(r52764, r52763, r52743, MPFR_RNDN);
        mpfr_div(r52765, r52746, r52764, MPFR_RNDN);
        mpfr_mul(r52766, r52744, r52765, MPFR_RNDN);
        mpfr_div(r52767, r52756, r52763, MPFR_RNDN);
        mpfr_add(r52768, r52766, r52767, MPFR_RNDN);
        mpfr_mul(r52769, r52751, r52753, MPFR_RNDN);
        mpfr_div(r52770, r52769, r52758, MPFR_RNDN);
        mpfr_mul(r52771, r52749, r52770, MPFR_RNDN);
        mpfr_sub(r52772, r52768, r52771, MPFR_RNDN);
        ;
        mpfr_set_si(r52774, mpfr_cmp(r52760, r52773) <= 0, MPFR_RNDN);
        mpfr_div(r52775, r52757, r52748, MPFR_RNDN);
        mpfr_div(r52776, r52775, r52758, MPFR_RNDN);
        mpfr_mul(r52777, r52746, r52743, MPFR_RNDN);
        mpfr_div(r52778, r52777, r52763, MPFR_RNDN);
        mpfr_mul(r52779, r52744, r52778, MPFR_RNDN);
        mpfr_add(r52780, r52779, r52767, MPFR_RNDN);
        mpfr_div(r52781, r52751, r52758, MPFR_RNDN);
        mpfr_mul(r52782, r52781, r52753, MPFR_RNDN);
        mpfr_mul(r52783, r52749, r52782, MPFR_RNDN);
        mpfr_sub(r52784, r52780, r52783, MPFR_RNDN);
        if (mpfr_get_si(r52774, MPFR_RNDN)) { mpfr_set(r52785, r52776, MPFR_RNDN); } else { mpfr_set(r52785, r52784, MPFR_RNDN); };
        if (mpfr_get_si(r52762, MPFR_RNDN)) { mpfr_set(r52786, r52772, MPFR_RNDN); } else { mpfr_set(r52786, r52785, MPFR_RNDN); };
        return mpfr_get_d(r52786, MPFR_RNDN);
}

static mpfr_t r52787, r52788, r52789, r52790, r52791, r52792, r52793, r52794, r52795, r52796, r52797, r52798, r52799, r52800, r52801, r52802, r52803, r52804, r52805, r52806, r52807, r52808, r52809, r52810, r52811, r52812, r52813, r52814, r52815, r52816, r52817, r52818, r52819, r52820, r52821, r52822, r52823, r52824, r52825, r52826, r52827, r52828, r52829, r52830;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52787);
        mpfr_init_set_str(r52788, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52789);
        mpfr_init(r52790);
        mpfr_init(r52791);
        mpfr_init(r52792);
        mpfr_init_set_str(r52793, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52794);
        mpfr_init(r52795);
        mpfr_init(r52796);
        mpfr_init(r52797);
        mpfr_init(r52798);
        mpfr_init(r52799);
        mpfr_init(r52800);
        mpfr_init(r52801);
        mpfr_init(r52802);
        mpfr_init(r52803);
        mpfr_init(r52804);
        mpfr_init_set_str(r52805, "-2.1533033503554896e-227", 10, MPFR_RNDN);
        mpfr_init(r52806);
        mpfr_init(r52807);
        mpfr_init(r52808);
        mpfr_init(r52809);
        mpfr_init(r52810);
        mpfr_init(r52811);
        mpfr_init(r52812);
        mpfr_init(r52813);
        mpfr_init(r52814);
        mpfr_init(r52815);
        mpfr_init(r52816);
        mpfr_init_set_str(r52817, "0.0", 10, MPFR_RNDN);
        mpfr_init(r52818);
        mpfr_init(r52819);
        mpfr_init(r52820);
        mpfr_init(r52821);
        mpfr_init(r52822);
        mpfr_init(r52823);
        mpfr_init(r52824);
        mpfr_init(r52825);
        mpfr_init(r52826);
        mpfr_init(r52827);
        mpfr_init(r52828);
        mpfr_init(r52829);
        mpfr_init(r52830);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52787, x, MPFR_RNDN);
        ;
        mpfr_mul(r52789, r52787, r52788, MPFR_RNDN);
        mpfr_set_d(r52790, y, MPFR_RNDN);
        mpfr_mul(r52791, r52789, r52790, MPFR_RNDN);
        mpfr_set_d(r52792, z, MPFR_RNDN);
        ;
        mpfr_mul(r52794, r52792, r52793, MPFR_RNDN);
        mpfr_set_d(r52795, t, MPFR_RNDN);
        mpfr_mul(r52796, r52794, r52795, MPFR_RNDN);
        mpfr_set_d(r52797, a, MPFR_RNDN);
        mpfr_mul(r52798, r52796, r52797, MPFR_RNDN);
        mpfr_sub(r52799, r52791, r52798, MPFR_RNDN);
        mpfr_set_d(r52800, b, MPFR_RNDN);
        mpfr_add(r52801, r52799, r52800, MPFR_RNDN);
        mpfr_set_d(r52802, c, MPFR_RNDN);
        mpfr_mul(r52803, r52792, r52802, MPFR_RNDN);
        mpfr_div(r52804, r52801, r52803, MPFR_RNDN);
        ;
        mpfr_set_si(r52806, mpfr_cmp(r52804, r52805) <= 0, MPFR_RNDN);
        mpfr_mul(r52807, r52802, r52792, MPFR_RNDN);
        mpfr_div(r52808, r52807, r52787, MPFR_RNDN);
        mpfr_div(r52809, r52790, r52808, MPFR_RNDN);
        mpfr_mul(r52810, r52788, r52809, MPFR_RNDN);
        mpfr_div(r52811, r52800, r52807, MPFR_RNDN);
        mpfr_add(r52812, r52810, r52811, MPFR_RNDN);
        mpfr_mul(r52813, r52795, r52797, MPFR_RNDN);
        mpfr_div(r52814, r52813, r52802, MPFR_RNDN);
        mpfr_mul(r52815, r52793, r52814, MPFR_RNDN);
        mpfr_sub(r52816, r52812, r52815, MPFR_RNDN);
        ;
        mpfr_set_si(r52818, mpfr_cmp(r52804, r52817) <= 0, MPFR_RNDN);
        mpfr_div(r52819, r52801, r52792, MPFR_RNDN);
        mpfr_div(r52820, r52819, r52802, MPFR_RNDN);
        mpfr_mul(r52821, r52790, r52787, MPFR_RNDN);
        mpfr_div(r52822, r52821, r52807, MPFR_RNDN);
        mpfr_mul(r52823, r52788, r52822, MPFR_RNDN);
        mpfr_add(r52824, r52823, r52811, MPFR_RNDN);
        mpfr_div(r52825, r52795, r52802, MPFR_RNDN);
        mpfr_mul(r52826, r52825, r52797, MPFR_RNDN);
        mpfr_mul(r52827, r52793, r52826, MPFR_RNDN);
        mpfr_sub(r52828, r52824, r52827, MPFR_RNDN);
        if (mpfr_get_si(r52818, MPFR_RNDN)) { mpfr_set(r52829, r52820, MPFR_RNDN); } else { mpfr_set(r52829, r52828, MPFR_RNDN); };
        if (mpfr_get_si(r52806, MPFR_RNDN)) { mpfr_set(r52830, r52816, MPFR_RNDN); } else { mpfr_set(r52830, r52829, MPFR_RNDN); };
        return mpfr_get_d(r52830, MPFR_RNDN);
}

