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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r53665 = x;
        float r53666 = 2.0f;
        float r53667 = r53665 * r53666;
        float r53668 = y;
        float r53669 = 9.0f;
        float r53670 = r53668 * r53669;
        float r53671 = z;
        float r53672 = r53670 * r53671;
        float r53673 = t;
        float r53674 = r53672 * r53673;
        float r53675 = r53667 - r53674;
        float r53676 = a;
        float r53677 = 27.0f;
        float r53678 = r53676 * r53677;
        float r53679 = b;
        float r53680 = r53678 * r53679;
        float r53681 = r53675 + r53680;
        return r53681;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r53682 = x;
        double r53683 = 2.0;
        double r53684 = r53682 * r53683;
        double r53685 = y;
        double r53686 = 9.0;
        double r53687 = r53685 * r53686;
        double r53688 = z;
        double r53689 = r53687 * r53688;
        double r53690 = t;
        double r53691 = r53689 * r53690;
        double r53692 = r53684 - r53691;
        double r53693 = a;
        double r53694 = 27.0;
        double r53695 = r53693 * r53694;
        double r53696 = b;
        double r53697 = r53695 * r53696;
        double r53698 = r53692 + r53697;
        return r53698;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r53699 = z;
        float r53700 = -2.2705645183745452e-110f;
        bool r53701 = r53699 <= r53700;
        float r53702 = x;
        float r53703 = 2.0f;
        float r53704 = r53702 * r53703;
        float r53705 = 9.0f;
        float r53706 = y;
        float r53707 = t;
        float r53708 = r53706 * r53707;
        float r53709 = r53699 * r53708;
        float r53710 = r53705 * r53709;
        float r53711 = r53704 - r53710;
        float r53712 = a;
        float r53713 = 27.0f;
        float r53714 = r53712 * r53713;
        float r53715 = b;
        float r53716 = r53714 * r53715;
        float r53717 = r53711 + r53716;
        float r53718 = 3.312219404886358e+35f;
        bool r53719 = r53699 <= r53718;
        float r53720 = r53699 * r53706;
        float r53721 = r53705 * r53720;
        float r53722 = r53721 * r53707;
        float r53723 = r53704 - r53722;
        float r53724 = r53723 + r53716;
        float r53725 = r53719 ? r53724 : r53717;
        float r53726 = r53701 ? r53717 : r53725;
        return r53726;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r53727 = z;
        double r53728 = -2.2705645183745452e-110;
        bool r53729 = r53727 <= r53728;
        double r53730 = x;
        double r53731 = 2.0;
        double r53732 = r53730 * r53731;
        double r53733 = 9.0;
        double r53734 = y;
        double r53735 = t;
        double r53736 = r53734 * r53735;
        double r53737 = r53727 * r53736;
        double r53738 = r53733 * r53737;
        double r53739 = r53732 - r53738;
        double r53740 = a;
        double r53741 = 27.0;
        double r53742 = r53740 * r53741;
        double r53743 = b;
        double r53744 = r53742 * r53743;
        double r53745 = r53739 + r53744;
        double r53746 = 3.312219404886358e+35;
        bool r53747 = r53727 <= r53746;
        double r53748 = r53727 * r53734;
        double r53749 = r53733 * r53748;
        double r53750 = r53749 * r53735;
        double r53751 = r53732 - r53750;
        double r53752 = r53751 + r53744;
        double r53753 = r53747 ? r53752 : r53745;
        double r53754 = r53729 ? r53745 : r53753;
        return r53754;
}

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 r53755, r53756, r53757, r53758, r53759, r53760, r53761, r53762, r53763, r53764, r53765, r53766, r53767, r53768, r53769, r53770, r53771;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r53755);
        mpfr_init_set_str(r53756, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53757);
        mpfr_init(r53758);
        mpfr_init_set_str(r53759, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53760);
        mpfr_init(r53761);
        mpfr_init(r53762);
        mpfr_init(r53763);
        mpfr_init(r53764);
        mpfr_init(r53765);
        mpfr_init(r53766);
        mpfr_init_set_str(r53767, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53768);
        mpfr_init(r53769);
        mpfr_init(r53770);
        mpfr_init(r53771);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53755, x, MPFR_RNDN);
        ;
        mpfr_mul(r53757, r53755, r53756, MPFR_RNDN);
        mpfr_set_d(r53758, y, MPFR_RNDN);
        ;
        mpfr_mul(r53760, r53758, r53759, MPFR_RNDN);
        mpfr_set_d(r53761, z, MPFR_RNDN);
        mpfr_mul(r53762, r53760, r53761, MPFR_RNDN);
        mpfr_set_d(r53763, t, MPFR_RNDN);
        mpfr_mul(r53764, r53762, r53763, MPFR_RNDN);
        mpfr_sub(r53765, r53757, r53764, MPFR_RNDN);
        mpfr_set_d(r53766, a, MPFR_RNDN);
        ;
        mpfr_mul(r53768, r53766, r53767, MPFR_RNDN);
        mpfr_set_d(r53769, b, MPFR_RNDN);
        mpfr_mul(r53770, r53768, r53769, MPFR_RNDN);
        mpfr_add(r53771, r53765, r53770, MPFR_RNDN);
        return mpfr_get_d(r53771, MPFR_RNDN);
}

static mpfr_t r53772, r53773, r53774, r53775, r53776, r53777, r53778, r53779, r53780, r53781, r53782, r53783, r53784, r53785, r53786, r53787, r53788, r53789, r53790, r53791, r53792, r53793, r53794, r53795, r53796, r53797, r53798, r53799;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r53772);
        mpfr_init_set_str(r53773, "-2.2705645183745452e-110", 10, MPFR_RNDN);
        mpfr_init(r53774);
        mpfr_init(r53775);
        mpfr_init_set_str(r53776, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53777);
        mpfr_init_set_str(r53778, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53779);
        mpfr_init(r53780);
        mpfr_init(r53781);
        mpfr_init(r53782);
        mpfr_init(r53783);
        mpfr_init(r53784);
        mpfr_init(r53785);
        mpfr_init_set_str(r53786, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53787);
        mpfr_init(r53788);
        mpfr_init(r53789);
        mpfr_init(r53790);
        mpfr_init_set_str(r53791, "3.312219404886358e+35", 10, MPFR_RNDN);
        mpfr_init(r53792);
        mpfr_init(r53793);
        mpfr_init(r53794);
        mpfr_init(r53795);
        mpfr_init(r53796);
        mpfr_init(r53797);
        mpfr_init(r53798);
        mpfr_init(r53799);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53772, z, MPFR_RNDN);
        ;
        mpfr_set_si(r53774, mpfr_cmp(r53772, r53773) <= 0, MPFR_RNDN);
        mpfr_set_d(r53775, x, MPFR_RNDN);
        ;
        mpfr_mul(r53777, r53775, r53776, MPFR_RNDN);
        ;
        mpfr_set_d(r53779, y, MPFR_RNDN);
        mpfr_set_d(r53780, t, MPFR_RNDN);
        mpfr_mul(r53781, r53779, r53780, MPFR_RNDN);
        mpfr_mul(r53782, r53772, r53781, MPFR_RNDN);
        mpfr_mul(r53783, r53778, r53782, MPFR_RNDN);
        mpfr_sub(r53784, r53777, r53783, MPFR_RNDN);
        mpfr_set_d(r53785, a, MPFR_RNDN);
        ;
        mpfr_mul(r53787, r53785, r53786, MPFR_RNDN);
        mpfr_set_d(r53788, b, MPFR_RNDN);
        mpfr_mul(r53789, r53787, r53788, MPFR_RNDN);
        mpfr_add(r53790, r53784, r53789, MPFR_RNDN);
        ;
        mpfr_set_si(r53792, mpfr_cmp(r53772, r53791) <= 0, MPFR_RNDN);
        mpfr_mul(r53793, r53772, r53779, MPFR_RNDN);
        mpfr_mul(r53794, r53778, r53793, MPFR_RNDN);
        mpfr_mul(r53795, r53794, r53780, MPFR_RNDN);
        mpfr_sub(r53796, r53777, r53795, MPFR_RNDN);
        mpfr_add(r53797, r53796, r53789, MPFR_RNDN);
        if (mpfr_get_si(r53792, MPFR_RNDN)) { mpfr_set(r53798, r53797, MPFR_RNDN); } else { mpfr_set(r53798, r53790, MPFR_RNDN); };
        if (mpfr_get_si(r53774, MPFR_RNDN)) { mpfr_set(r53799, r53790, MPFR_RNDN); } else { mpfr_set(r53799, r53798, MPFR_RNDN); };
        return mpfr_get_d(r53799, MPFR_RNDN);
}

static mpfr_t r53800, r53801, r53802, r53803, r53804, r53805, r53806, r53807, r53808, r53809, r53810, r53811, r53812, r53813, r53814, r53815, r53816, r53817, r53818, r53819, r53820, r53821, r53822, r53823, r53824, r53825, r53826, r53827;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r53800);
        mpfr_init_set_str(r53801, "-2.2705645183745452e-110", 10, MPFR_RNDN);
        mpfr_init(r53802);
        mpfr_init(r53803);
        mpfr_init_set_str(r53804, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53805);
        mpfr_init_set_str(r53806, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53807);
        mpfr_init(r53808);
        mpfr_init(r53809);
        mpfr_init(r53810);
        mpfr_init(r53811);
        mpfr_init(r53812);
        mpfr_init(r53813);
        mpfr_init_set_str(r53814, "27.0", 10, MPFR_RNDN);
        mpfr_init(r53815);
        mpfr_init(r53816);
        mpfr_init(r53817);
        mpfr_init(r53818);
        mpfr_init_set_str(r53819, "3.312219404886358e+35", 10, MPFR_RNDN);
        mpfr_init(r53820);
        mpfr_init(r53821);
        mpfr_init(r53822);
        mpfr_init(r53823);
        mpfr_init(r53824);
        mpfr_init(r53825);
        mpfr_init(r53826);
        mpfr_init(r53827);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r53800, z, MPFR_RNDN);
        ;
        mpfr_set_si(r53802, mpfr_cmp(r53800, r53801) <= 0, MPFR_RNDN);
        mpfr_set_d(r53803, x, MPFR_RNDN);
        ;
        mpfr_mul(r53805, r53803, r53804, MPFR_RNDN);
        ;
        mpfr_set_d(r53807, y, MPFR_RNDN);
        mpfr_set_d(r53808, t, MPFR_RNDN);
        mpfr_mul(r53809, r53807, r53808, MPFR_RNDN);
        mpfr_mul(r53810, r53800, r53809, MPFR_RNDN);
        mpfr_mul(r53811, r53806, r53810, MPFR_RNDN);
        mpfr_sub(r53812, r53805, r53811, MPFR_RNDN);
        mpfr_set_d(r53813, a, MPFR_RNDN);
        ;
        mpfr_mul(r53815, r53813, r53814, MPFR_RNDN);
        mpfr_set_d(r53816, b, MPFR_RNDN);
        mpfr_mul(r53817, r53815, r53816, MPFR_RNDN);
        mpfr_add(r53818, r53812, r53817, MPFR_RNDN);
        ;
        mpfr_set_si(r53820, mpfr_cmp(r53800, r53819) <= 0, MPFR_RNDN);
        mpfr_mul(r53821, r53800, r53807, MPFR_RNDN);
        mpfr_mul(r53822, r53806, r53821, MPFR_RNDN);
        mpfr_mul(r53823, r53822, r53808, MPFR_RNDN);
        mpfr_sub(r53824, r53805, r53823, MPFR_RNDN);
        mpfr_add(r53825, r53824, r53817, MPFR_RNDN);
        if (mpfr_get_si(r53820, MPFR_RNDN)) { mpfr_set(r53826, r53825, MPFR_RNDN); } else { mpfr_set(r53826, r53818, MPFR_RNDN); };
        if (mpfr_get_si(r53802, MPFR_RNDN)) { mpfr_set(r53827, r53818, MPFR_RNDN); } else { mpfr_set(r53827, r53826, MPFR_RNDN); };
        return mpfr_get_d(r53827, MPFR_RNDN);
}

