#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 r54885 = x;
        float r54886 = 2.0;
        float r54887 = r54885 * r54886;
        float r54888 = y;
        float r54889 = 9.0;
        float r54890 = r54888 * r54889;
        float r54891 = z;
        float r54892 = r54890 * r54891;
        float r54893 = t;
        float r54894 = r54892 * r54893;
        float r54895 = r54887 - r54894;
        float r54896 = a;
        float r54897 = 27.0;
        float r54898 = r54896 * r54897;
        float r54899 = b;
        float r54900 = r54898 * r54899;
        float r54901 = r54895 + r54900;
        return r54901;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r54902 = x;
        double r54903 = 2.0;
        double r54904 = r54902 * r54903;
        double r54905 = y;
        double r54906 = 9.0;
        double r54907 = r54905 * r54906;
        double r54908 = z;
        double r54909 = r54907 * r54908;
        double r54910 = t;
        double r54911 = r54909 * r54910;
        double r54912 = r54904 - r54911;
        double r54913 = a;
        double r54914 = 27.0;
        double r54915 = r54913 * r54914;
        double r54916 = b;
        double r54917 = r54915 * r54916;
        double r54918 = r54912 + r54917;
        return r54918;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r54919 = y;
        float r54920 = -6.798242451867544e-115;
        bool r54921 = r54919 <= r54920;
        float r54922 = x;
        float r54923 = 2.0;
        float r54924 = r54922 * r54923;
        float r54925 = 9.0;
        float r54926 = r54919 * r54925;
        float r54927 = z;
        float r54928 = t;
        float r54929 = r54927 * r54928;
        float r54930 = r54926 * r54929;
        float r54931 = r54924 - r54930;
        float r54932 = a;
        float r54933 = 27.0;
        float r54934 = r54932 * r54933;
        float r54935 = b;
        float r54936 = r54934 * r54935;
        float r54937 = r54931 + r54936;
        float r54938 = 4.7969606968471655e-108;
        bool r54939 = r54919 <= r54938;
        float r54940 = r54935 * r54932;
        float r54941 = r54933 * r54940;
        float r54942 = r54923 * r54922;
        float r54943 = r54941 + r54942;
        float r54944 = r54927 * r54919;
        float r54945 = r54944 * r54928;
        float r54946 = r54925 * r54945;
        float r54947 = r54943 - r54946;
        float r54948 = r54939 ? r54947 : r54937;
        float r54949 = r54921 ? r54937 : r54948;
        return r54949;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r54950 = y;
        double r54951 = -6.798242451867544e-115;
        bool r54952 = r54950 <= r54951;
        double r54953 = x;
        double r54954 = 2.0;
        double r54955 = r54953 * r54954;
        double r54956 = 9.0;
        double r54957 = r54950 * r54956;
        double r54958 = z;
        double r54959 = t;
        double r54960 = r54958 * r54959;
        double r54961 = r54957 * r54960;
        double r54962 = r54955 - r54961;
        double r54963 = a;
        double r54964 = 27.0;
        double r54965 = r54963 * r54964;
        double r54966 = b;
        double r54967 = r54965 * r54966;
        double r54968 = r54962 + r54967;
        double r54969 = 4.7969606968471655e-108;
        bool r54970 = r54950 <= r54969;
        double r54971 = r54966 * r54963;
        double r54972 = r54964 * r54971;
        double r54973 = r54954 * r54953;
        double r54974 = r54972 + r54973;
        double r54975 = r54958 * r54950;
        double r54976 = r54975 * r54959;
        double r54977 = r54956 * r54976;
        double r54978 = r54974 - r54977;
        double r54979 = r54970 ? r54978 : r54968;
        double r54980 = r54952 ? r54968 : r54979;
        return r54980;
}

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 r54981, r54982, r54983, r54984, r54985, r54986, r54987, r54988, r54989, r54990, r54991, r54992, r54993, r54994, r54995, r54996, r54997;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54981);
        mpfr_init_set_str(r54982, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54983);
        mpfr_init(r54984);
        mpfr_init_set_str(r54985, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54986);
        mpfr_init(r54987);
        mpfr_init(r54988);
        mpfr_init(r54989);
        mpfr_init(r54990);
        mpfr_init(r54991);
        mpfr_init(r54992);
        mpfr_init_set_str(r54993, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54994);
        mpfr_init(r54995);
        mpfr_init(r54996);
        mpfr_init(r54997);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54981, x, MPFR_RNDN);
        ;
        mpfr_mul(r54983, r54981, r54982, MPFR_RNDN);
        mpfr_set_d(r54984, y, MPFR_RNDN);
        ;
        mpfr_mul(r54986, r54984, r54985, MPFR_RNDN);
        mpfr_set_d(r54987, z, MPFR_RNDN);
        mpfr_mul(r54988, r54986, r54987, MPFR_RNDN);
        mpfr_set_d(r54989, t, MPFR_RNDN);
        mpfr_mul(r54990, r54988, r54989, MPFR_RNDN);
        mpfr_sub(r54991, r54983, r54990, MPFR_RNDN);
        mpfr_set_d(r54992, a, MPFR_RNDN);
        ;
        mpfr_mul(r54994, r54992, r54993, MPFR_RNDN);
        mpfr_set_d(r54995, b, MPFR_RNDN);
        mpfr_mul(r54996, r54994, r54995, MPFR_RNDN);
        mpfr_add(r54997, r54991, r54996, MPFR_RNDN);
        return mpfr_get_d(r54997, MPFR_RNDN);
}

static mpfr_t r54998, r54999, r55000, r55001, r55002, r55003, r55004, r55005, r55006, r55007, r55008, r55009, r55010, r55011, r55012, r55013, r55014, r55015, r55016, r55017, r55018, r55019, r55020, r55021, r55022, r55023, r55024, r55025, r55026, r55027, r55028;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54998);
        mpfr_init_set_str(r54999, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r55000);
        mpfr_init(r55001);
        mpfr_init_set_str(r55002, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55003);
        mpfr_init_set_str(r55004, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55005);
        mpfr_init(r55006);
        mpfr_init(r55007);
        mpfr_init(r55008);
        mpfr_init(r55009);
        mpfr_init(r55010);
        mpfr_init(r55011);
        mpfr_init_set_str(r55012, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55013);
        mpfr_init(r55014);
        mpfr_init(r55015);
        mpfr_init(r55016);
        mpfr_init_set_str(r55017, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r55018);
        mpfr_init(r55019);
        mpfr_init(r55020);
        mpfr_init(r55021);
        mpfr_init(r55022);
        mpfr_init(r55023);
        mpfr_init(r55024);
        mpfr_init(r55025);
        mpfr_init(r55026);
        mpfr_init(r55027);
        mpfr_init(r55028);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54998, y, MPFR_RNDN);
        ;
        mpfr_set_si(r55000, mpfr_cmp(r54998, r54999) <= 0, MPFR_RNDN);
        mpfr_set_d(r55001, x, MPFR_RNDN);
        ;
        mpfr_mul(r55003, r55001, r55002, MPFR_RNDN);
        ;
        mpfr_mul(r55005, r54998, r55004, MPFR_RNDN);
        mpfr_set_d(r55006, z, MPFR_RNDN);
        mpfr_set_d(r55007, t, MPFR_RNDN);
        mpfr_mul(r55008, r55006, r55007, MPFR_RNDN);
        mpfr_mul(r55009, r55005, r55008, MPFR_RNDN);
        mpfr_sub(r55010, r55003, r55009, MPFR_RNDN);
        mpfr_set_d(r55011, a, MPFR_RNDN);
        ;
        mpfr_mul(r55013, r55011, r55012, MPFR_RNDN);
        mpfr_set_d(r55014, b, MPFR_RNDN);
        mpfr_mul(r55015, r55013, r55014, MPFR_RNDN);
        mpfr_add(r55016, r55010, r55015, MPFR_RNDN);
        ;
        mpfr_set_si(r55018, mpfr_cmp(r54998, r55017) <= 0, MPFR_RNDN);
        mpfr_mul(r55019, r55014, r55011, MPFR_RNDN);
        mpfr_mul(r55020, r55012, r55019, MPFR_RNDN);
        mpfr_mul(r55021, r55002, r55001, MPFR_RNDN);
        mpfr_add(r55022, r55020, r55021, MPFR_RNDN);
        mpfr_mul(r55023, r55006, r54998, MPFR_RNDN);
        mpfr_mul(r55024, r55023, r55007, MPFR_RNDN);
        mpfr_mul(r55025, r55004, r55024, MPFR_RNDN);
        mpfr_sub(r55026, r55022, r55025, MPFR_RNDN);
        if (mpfr_get_si(r55018, MPFR_RNDN)) { mpfr_set(r55027, r55026, MPFR_RNDN); } else { mpfr_set(r55027, r55016, MPFR_RNDN); };
        if (mpfr_get_si(r55000, MPFR_RNDN)) { mpfr_set(r55028, r55016, MPFR_RNDN); } else { mpfr_set(r55028, r55027, MPFR_RNDN); };
        return mpfr_get_d(r55028, MPFR_RNDN);
}

static mpfr_t r55029, r55030, r55031, r55032, r55033, r55034, r55035, r55036, r55037, r55038, r55039, r55040, r55041, r55042, r55043, r55044, r55045, r55046, r55047, r55048, r55049, r55050, r55051, r55052, r55053, r55054, r55055, r55056, r55057, r55058, r55059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55029);
        mpfr_init_set_str(r55030, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r55031);
        mpfr_init(r55032);
        mpfr_init_set_str(r55033, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55034);
        mpfr_init_set_str(r55035, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55036);
        mpfr_init(r55037);
        mpfr_init(r55038);
        mpfr_init(r55039);
        mpfr_init(r55040);
        mpfr_init(r55041);
        mpfr_init(r55042);
        mpfr_init_set_str(r55043, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55044);
        mpfr_init(r55045);
        mpfr_init(r55046);
        mpfr_init(r55047);
        mpfr_init_set_str(r55048, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r55049);
        mpfr_init(r55050);
        mpfr_init(r55051);
        mpfr_init(r55052);
        mpfr_init(r55053);
        mpfr_init(r55054);
        mpfr_init(r55055);
        mpfr_init(r55056);
        mpfr_init(r55057);
        mpfr_init(r55058);
        mpfr_init(r55059);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55029, y, MPFR_RNDN);
        ;
        mpfr_set_si(r55031, mpfr_cmp(r55029, r55030) <= 0, MPFR_RNDN);
        mpfr_set_d(r55032, x, MPFR_RNDN);
        ;
        mpfr_mul(r55034, r55032, r55033, MPFR_RNDN);
        ;
        mpfr_mul(r55036, r55029, r55035, MPFR_RNDN);
        mpfr_set_d(r55037, z, MPFR_RNDN);
        mpfr_set_d(r55038, t, MPFR_RNDN);
        mpfr_mul(r55039, r55037, r55038, MPFR_RNDN);
        mpfr_mul(r55040, r55036, r55039, MPFR_RNDN);
        mpfr_sub(r55041, r55034, r55040, MPFR_RNDN);
        mpfr_set_d(r55042, a, MPFR_RNDN);
        ;
        mpfr_mul(r55044, r55042, r55043, MPFR_RNDN);
        mpfr_set_d(r55045, b, MPFR_RNDN);
        mpfr_mul(r55046, r55044, r55045, MPFR_RNDN);
        mpfr_add(r55047, r55041, r55046, MPFR_RNDN);
        ;
        mpfr_set_si(r55049, mpfr_cmp(r55029, r55048) <= 0, MPFR_RNDN);
        mpfr_mul(r55050, r55045, r55042, MPFR_RNDN);
        mpfr_mul(r55051, r55043, r55050, MPFR_RNDN);
        mpfr_mul(r55052, r55033, r55032, MPFR_RNDN);
        mpfr_add(r55053, r55051, r55052, MPFR_RNDN);
        mpfr_mul(r55054, r55037, r55029, MPFR_RNDN);
        mpfr_mul(r55055, r55054, r55038, MPFR_RNDN);
        mpfr_mul(r55056, r55035, r55055, MPFR_RNDN);
        mpfr_sub(r55057, r55053, r55056, MPFR_RNDN);
        if (mpfr_get_si(r55049, MPFR_RNDN)) { mpfr_set(r55058, r55057, MPFR_RNDN); } else { mpfr_set(r55058, r55047, MPFR_RNDN); };
        if (mpfr_get_si(r55031, MPFR_RNDN)) { mpfr_set(r55059, r55047, MPFR_RNDN); } else { mpfr_set(r55059, r55058, MPFR_RNDN); };
        return mpfr_get_d(r55059, MPFR_RNDN);
}

