#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 r53870 = x;
        float r53871 = 9.0;
        float r53872 = r53870 * r53871;
        float r53873 = y;
        float r53874 = r53872 * r53873;
        float r53875 = z;
        float r53876 = 4.0;
        float r53877 = r53875 * r53876;
        float r53878 = t;
        float r53879 = r53877 * r53878;
        float r53880 = a;
        float r53881 = r53879 * r53880;
        float r53882 = r53874 - r53881;
        float r53883 = b;
        float r53884 = r53882 + r53883;
        float r53885 = c;
        float r53886 = r53875 * r53885;
        float r53887 = r53884 / r53886;
        return r53887;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r53888 = x;
        double r53889 = 9.0;
        double r53890 = r53888 * r53889;
        double r53891 = y;
        double r53892 = r53890 * r53891;
        double r53893 = z;
        double r53894 = 4.0;
        double r53895 = r53893 * r53894;
        double r53896 = t;
        double r53897 = r53895 * r53896;
        double r53898 = a;
        double r53899 = r53897 * r53898;
        double r53900 = r53892 - r53899;
        double r53901 = b;
        double r53902 = r53900 + r53901;
        double r53903 = c;
        double r53904 = r53893 * r53903;
        double r53905 = r53902 / r53904;
        return r53905;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r53906 = z;
        float r53907 = -1.6769263863259327e+62;
        bool r53908 = r53906 <= r53907;
        float r53909 = b;
        float r53910 = r53909 / r53906;
        float r53911 = c;
        float r53912 = r53910 / r53911;
        float r53913 = 9.0;
        float r53914 = y;
        float r53915 = x;
        float r53916 = r53914 * r53915;
        float r53917 = r53906 * r53911;
        float r53918 = r53916 / r53917;
        float r53919 = r53913 * r53918;
        float r53920 = r53912 + r53919;
        float r53921 = 4.0;
        float r53922 = a;
        float r53923 = t;
        float r53924 = r53922 * r53923;
        float r53925 = r53924 / r53911;
        float r53926 = r53921 * r53925;
        float r53927 = r53920 - r53926;
        float r53928 = 137246772687.45125;
        bool r53929 = r53906 <= r53928;
        float r53930 = r53913 * r53914;
        float r53931 = r53915 * r53930;
        float r53932 = r53906 * r53921;
        float r53933 = r53932 * r53923;
        float r53934 = r53933 * r53922;
        float r53935 = r53931 - r53934;
        float r53936 = r53935 + r53909;
        float r53937 = r53936 / r53917;
        float r53938 = r53929 ? r53937 : r53927;
        float r53939 = r53908 ? r53927 : r53938;
        return r53939;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r53940 = z;
        double r53941 = -1.6769263863259327e+62;
        bool r53942 = r53940 <= r53941;
        double r53943 = b;
        double r53944 = r53943 / r53940;
        double r53945 = c;
        double r53946 = r53944 / r53945;
        double r53947 = 9.0;
        double r53948 = y;
        double r53949 = x;
        double r53950 = r53948 * r53949;
        double r53951 = r53940 * r53945;
        double r53952 = r53950 / r53951;
        double r53953 = r53947 * r53952;
        double r53954 = r53946 + r53953;
        double r53955 = 4.0;
        double r53956 = a;
        double r53957 = t;
        double r53958 = r53956 * r53957;
        double r53959 = r53958 / r53945;
        double r53960 = r53955 * r53959;
        double r53961 = r53954 - r53960;
        double r53962 = 137246772687.45125;
        bool r53963 = r53940 <= r53962;
        double r53964 = r53947 * r53948;
        double r53965 = r53949 * r53964;
        double r53966 = r53940 * r53955;
        double r53967 = r53966 * r53957;
        double r53968 = r53967 * r53956;
        double r53969 = r53965 - r53968;
        double r53970 = r53969 + r53943;
        double r53971 = r53970 / r53951;
        double r53972 = r53963 ? r53971 : r53961;
        double r53973 = r53942 ? r53961 : r53972;
        return r53973;
}

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 r53974, r53975, r53976, r53977, r53978, r53979, r53980, r53981, r53982, r53983, r53984, r53985, r53986, r53987, r53988, r53989, r53990, r53991;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53974);
        mpfr_init_set_str(r53975, "9.0", 10, MPFR_RNDN);
        mpfr_init(r53976);
        mpfr_init(r53977);
        mpfr_init(r53978);
        mpfr_init(r53979);
        mpfr_init_set_str(r53980, "4.0", 10, MPFR_RNDN);
        mpfr_init(r53981);
        mpfr_init(r53982);
        mpfr_init(r53983);
        mpfr_init(r53984);
        mpfr_init(r53985);
        mpfr_init(r53986);
        mpfr_init(r53987);
        mpfr_init(r53988);
        mpfr_init(r53989);
        mpfr_init(r53990);
        mpfr_init(r53991);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r53974, x, MPFR_RNDN);
        ;
        mpfr_mul(r53976, r53974, r53975, MPFR_RNDN);
        mpfr_set_d(r53977, y, MPFR_RNDN);
        mpfr_mul(r53978, r53976, r53977, MPFR_RNDN);
        mpfr_set_d(r53979, z, MPFR_RNDN);
        ;
        mpfr_mul(r53981, r53979, r53980, MPFR_RNDN);
        mpfr_set_d(r53982, t, MPFR_RNDN);
        mpfr_mul(r53983, r53981, r53982, MPFR_RNDN);
        mpfr_set_d(r53984, a, MPFR_RNDN);
        mpfr_mul(r53985, r53983, r53984, MPFR_RNDN);
        mpfr_sub(r53986, r53978, r53985, MPFR_RNDN);
        mpfr_set_d(r53987, b, MPFR_RNDN);
        mpfr_add(r53988, r53986, r53987, MPFR_RNDN);
        mpfr_set_d(r53989, c, MPFR_RNDN);
        mpfr_mul(r53990, r53979, r53989, MPFR_RNDN);
        mpfr_div(r53991, r53988, r53990, MPFR_RNDN);
        return mpfr_get_d(r53991, MPFR_RNDN);
}

static mpfr_t r53992, r53993, r53994, r53995, r53996, r53997, r53998, r53999, r54000, r54001, r54002, r54003, r54004, r54005, r54006, r54007, r54008, r54009, r54010, r54011, r54012, r54013, r54014, r54015, r54016, r54017, r54018, r54019, r54020, r54021, r54022, r54023, r54024, r54025;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53992);
        mpfr_init_set_str(r53993, "-1.6769263863259327e+62", 10, MPFR_RNDN);
        mpfr_init(r53994);
        mpfr_init(r53995);
        mpfr_init(r53996);
        mpfr_init(r53997);
        mpfr_init(r53998);
        mpfr_init_set_str(r53999, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54000);
        mpfr_init(r54001);
        mpfr_init(r54002);
        mpfr_init(r54003);
        mpfr_init(r54004);
        mpfr_init(r54005);
        mpfr_init(r54006);
        mpfr_init_set_str(r54007, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54008);
        mpfr_init(r54009);
        mpfr_init(r54010);
        mpfr_init(r54011);
        mpfr_init(r54012);
        mpfr_init(r54013);
        mpfr_init_set_str(r54014, "137246772687.45125", 10, MPFR_RNDN);
        mpfr_init(r54015);
        mpfr_init(r54016);
        mpfr_init(r54017);
        mpfr_init(r54018);
        mpfr_init(r54019);
        mpfr_init(r54020);
        mpfr_init(r54021);
        mpfr_init(r54022);
        mpfr_init(r54023);
        mpfr_init(r54024);
        mpfr_init(r54025);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r53992, z, MPFR_RNDN);
        ;
        mpfr_set_si(r53994, mpfr_cmp(r53992, r53993) <= 0, MPFR_RNDN);
        mpfr_set_d(r53995, b, MPFR_RNDN);
        mpfr_div(r53996, r53995, r53992, MPFR_RNDN);
        mpfr_set_d(r53997, c, MPFR_RNDN);
        mpfr_div(r53998, r53996, r53997, MPFR_RNDN);
        ;
        mpfr_set_d(r54000, y, MPFR_RNDN);
        mpfr_set_d(r54001, x, MPFR_RNDN);
        mpfr_mul(r54002, r54000, r54001, MPFR_RNDN);
        mpfr_mul(r54003, r53992, r53997, MPFR_RNDN);
        mpfr_div(r54004, r54002, r54003, MPFR_RNDN);
        mpfr_mul(r54005, r53999, r54004, MPFR_RNDN);
        mpfr_add(r54006, r53998, r54005, MPFR_RNDN);
        ;
        mpfr_set_d(r54008, a, MPFR_RNDN);
        mpfr_set_d(r54009, t, MPFR_RNDN);
        mpfr_mul(r54010, r54008, r54009, MPFR_RNDN);
        mpfr_div(r54011, r54010, r53997, MPFR_RNDN);
        mpfr_mul(r54012, r54007, r54011, MPFR_RNDN);
        mpfr_sub(r54013, r54006, r54012, MPFR_RNDN);
        ;
        mpfr_set_si(r54015, mpfr_cmp(r53992, r54014) <= 0, MPFR_RNDN);
        mpfr_mul(r54016, r53999, r54000, MPFR_RNDN);
        mpfr_mul(r54017, r54001, r54016, MPFR_RNDN);
        mpfr_mul(r54018, r53992, r54007, MPFR_RNDN);
        mpfr_mul(r54019, r54018, r54009, MPFR_RNDN);
        mpfr_mul(r54020, r54019, r54008, MPFR_RNDN);
        mpfr_sub(r54021, r54017, r54020, MPFR_RNDN);
        mpfr_add(r54022, r54021, r53995, MPFR_RNDN);
        mpfr_div(r54023, r54022, r54003, MPFR_RNDN);
        if (mpfr_get_si(r54015, MPFR_RNDN)) { mpfr_set(r54024, r54023, MPFR_RNDN); } else { mpfr_set(r54024, r54013, MPFR_RNDN); };
        if (mpfr_get_si(r53994, MPFR_RNDN)) { mpfr_set(r54025, r54013, MPFR_RNDN); } else { mpfr_set(r54025, r54024, MPFR_RNDN); };
        return mpfr_get_d(r54025, MPFR_RNDN);
}

static mpfr_t r54026, r54027, r54028, r54029, r54030, r54031, r54032, r54033, r54034, r54035, r54036, r54037, r54038, r54039, r54040, r54041, r54042, r54043, r54044, r54045, r54046, r54047, r54048, r54049, r54050, r54051, r54052, r54053, r54054, r54055, r54056, r54057, r54058, r54059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54026);
        mpfr_init_set_str(r54027, "-1.6769263863259327e+62", 10, MPFR_RNDN);
        mpfr_init(r54028);
        mpfr_init(r54029);
        mpfr_init(r54030);
        mpfr_init(r54031);
        mpfr_init(r54032);
        mpfr_init_set_str(r54033, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54034);
        mpfr_init(r54035);
        mpfr_init(r54036);
        mpfr_init(r54037);
        mpfr_init(r54038);
        mpfr_init(r54039);
        mpfr_init(r54040);
        mpfr_init_set_str(r54041, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54042);
        mpfr_init(r54043);
        mpfr_init(r54044);
        mpfr_init(r54045);
        mpfr_init(r54046);
        mpfr_init(r54047);
        mpfr_init_set_str(r54048, "137246772687.45125", 10, MPFR_RNDN);
        mpfr_init(r54049);
        mpfr_init(r54050);
        mpfr_init(r54051);
        mpfr_init(r54052);
        mpfr_init(r54053);
        mpfr_init(r54054);
        mpfr_init(r54055);
        mpfr_init(r54056);
        mpfr_init(r54057);
        mpfr_init(r54058);
        mpfr_init(r54059);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r54026, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54028, mpfr_cmp(r54026, r54027) <= 0, MPFR_RNDN);
        mpfr_set_d(r54029, b, MPFR_RNDN);
        mpfr_div(r54030, r54029, r54026, MPFR_RNDN);
        mpfr_set_d(r54031, c, MPFR_RNDN);
        mpfr_div(r54032, r54030, r54031, MPFR_RNDN);
        ;
        mpfr_set_d(r54034, y, MPFR_RNDN);
        mpfr_set_d(r54035, x, MPFR_RNDN);
        mpfr_mul(r54036, r54034, r54035, MPFR_RNDN);
        mpfr_mul(r54037, r54026, r54031, MPFR_RNDN);
        mpfr_div(r54038, r54036, r54037, MPFR_RNDN);
        mpfr_mul(r54039, r54033, r54038, MPFR_RNDN);
        mpfr_add(r54040, r54032, r54039, MPFR_RNDN);
        ;
        mpfr_set_d(r54042, a, MPFR_RNDN);
        mpfr_set_d(r54043, t, MPFR_RNDN);
        mpfr_mul(r54044, r54042, r54043, MPFR_RNDN);
        mpfr_div(r54045, r54044, r54031, MPFR_RNDN);
        mpfr_mul(r54046, r54041, r54045, MPFR_RNDN);
        mpfr_sub(r54047, r54040, r54046, MPFR_RNDN);
        ;
        mpfr_set_si(r54049, mpfr_cmp(r54026, r54048) <= 0, MPFR_RNDN);
        mpfr_mul(r54050, r54033, r54034, MPFR_RNDN);
        mpfr_mul(r54051, r54035, r54050, MPFR_RNDN);
        mpfr_mul(r54052, r54026, r54041, MPFR_RNDN);
        mpfr_mul(r54053, r54052, r54043, MPFR_RNDN);
        mpfr_mul(r54054, r54053, r54042, MPFR_RNDN);
        mpfr_sub(r54055, r54051, r54054, MPFR_RNDN);
        mpfr_add(r54056, r54055, r54029, MPFR_RNDN);
        mpfr_div(r54057, r54056, r54037, MPFR_RNDN);
        if (mpfr_get_si(r54049, MPFR_RNDN)) { mpfr_set(r54058, r54057, MPFR_RNDN); } else { mpfr_set(r54058, r54047, MPFR_RNDN); };
        if (mpfr_get_si(r54028, MPFR_RNDN)) { mpfr_set(r54059, r54047, MPFR_RNDN); } else { mpfr_set(r54059, r54058, MPFR_RNDN); };
        return mpfr_get_d(r54059, MPFR_RNDN);
}

