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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r53872 = 2.0;
        float r53873 = x;
        float r53874 = sqrt(r53873);
        float r53875 = r53872 * r53874;
        float r53876 = y;
        float r53877 = z;
        float r53878 = t;
        float r53879 = r53877 * r53878;
        float r53880 = 3.0;
        float r53881 = r53879 / r53880;
        float r53882 = r53876 - r53881;
        float r53883 = cos(r53882);
        float r53884 = r53875 * r53883;
        float r53885 = a;
        float r53886 = b;
        float r53887 = r53886 * r53880;
        float r53888 = r53885 / r53887;
        float r53889 = r53884 - r53888;
        return r53889;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r53890 = 2.0;
        double r53891 = x;
        double r53892 = sqrt(r53891);
        double r53893 = r53890 * r53892;
        double r53894 = y;
        double r53895 = z;
        double r53896 = t;
        double r53897 = r53895 * r53896;
        double r53898 = 3.0;
        double r53899 = r53897 / r53898;
        double r53900 = r53894 - r53899;
        double r53901 = cos(r53900);
        double r53902 = r53893 * r53901;
        double r53903 = a;
        double r53904 = b;
        double r53905 = r53904 * r53898;
        double r53906 = r53903 / r53905;
        double r53907 = r53902 - r53906;
        return r53907;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r53908 = y;
        float r53909 = z;
        float r53910 = t;
        float r53911 = r53909 * r53910;
        float r53912 = 3.0;
        float r53913 = r53911 / r53912;
        float r53914 = r53908 - r53913;
        float r53915 = -inf.0;
        bool r53916 = r53914 <= r53915;
        float r53917 = 2.0;
        float r53918 = x;
        float r53919 = sqrt(r53918);
        float r53920 = r53917 * r53919;
        float r53921 = 1;
        float r53922 = r53921 / r53908;
        float r53923 = 0.3333333333333333;
        float r53924 = r53923 / r53911;
        float r53925 = r53922 - r53924;
        float r53926 = cos(r53925);
        float r53927 = r53920 * r53926;
        float r53928 = a;
        float r53929 = b;
        float r53930 = r53929 * r53912;
        float r53931 = r53928 / r53930;
        float r53932 = r53927 - r53931;
        float r53933 = 4.4715459573037013e+303;
        bool r53934 = r53914 <= r53933;
        float r53935 = cos(r53908);
        float r53936 = cos(r53913);
        float r53937 = r53935 * r53936;
        float r53938 = sin(r53908);
        float r53939 = sin(r53913);
        float r53940 = r53938 * r53939;
        float r53941 = exp(r53940);
        float r53942 = log(r53941);
        float r53943 = r53937 + r53942;
        float r53944 = r53920 * r53943;
        float r53945 = r53944 - r53931;
        float r53946 = r53934 ? r53945 : r53932;
        float r53947 = r53916 ? r53932 : r53946;
        return r53947;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r53948 = y;
        double r53949 = z;
        double r53950 = t;
        double r53951 = r53949 * r53950;
        double r53952 = 3.0;
        double r53953 = r53951 / r53952;
        double r53954 = r53948 - r53953;
        double r53955 = -inf.0;
        bool r53956 = r53954 <= r53955;
        double r53957 = 2.0;
        double r53958 = x;
        double r53959 = sqrt(r53958);
        double r53960 = r53957 * r53959;
        double r53961 = 1;
        double r53962 = r53961 / r53948;
        double r53963 = 0.3333333333333333;
        double r53964 = r53963 / r53951;
        double r53965 = r53962 - r53964;
        double r53966 = cos(r53965);
        double r53967 = r53960 * r53966;
        double r53968 = a;
        double r53969 = b;
        double r53970 = r53969 * r53952;
        double r53971 = r53968 / r53970;
        double r53972 = r53967 - r53971;
        double r53973 = 4.4715459573037013e+303;
        bool r53974 = r53954 <= r53973;
        double r53975 = cos(r53948);
        double r53976 = cos(r53953);
        double r53977 = r53975 * r53976;
        double r53978 = sin(r53948);
        double r53979 = sin(r53953);
        double r53980 = r53978 * r53979;
        double r53981 = exp(r53980);
        double r53982 = log(r53981);
        double r53983 = r53977 + r53982;
        double r53984 = r53960 * r53983;
        double r53985 = r53984 - r53971;
        double r53986 = r53974 ? r53985 : r53972;
        double r53987 = r53956 ? r53972 : r53986;
        return r53987;
}

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 r53988, r53989, r53990, r53991, r53992, r53993, r53994, r53995, r53996, r53997, r53998, r53999, r54000, r54001, r54002, r54003, r54004, r54005;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r53988, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53989);
        mpfr_init(r53990);
        mpfr_init(r53991);
        mpfr_init(r53992);
        mpfr_init(r53993);
        mpfr_init(r53994);
        mpfr_init(r53995);
        mpfr_init_set_str(r53996, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53997);
        mpfr_init(r53998);
        mpfr_init(r53999);
        mpfr_init(r54000);
        mpfr_init(r54001);
        mpfr_init(r54002);
        mpfr_init(r54003);
        mpfr_init(r54004);
        mpfr_init(r54005);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        ;
        mpfr_set_d(r53989, x, MPFR_RNDN);
        mpfr_sqrt(r53990, r53989, MPFR_RNDN);
        mpfr_mul(r53991, r53988, r53990, MPFR_RNDN);
        mpfr_set_d(r53992, y, MPFR_RNDN);
        mpfr_set_d(r53993, z, MPFR_RNDN);
        mpfr_set_d(r53994, t, MPFR_RNDN);
        mpfr_mul(r53995, r53993, r53994, MPFR_RNDN);
        ;
        mpfr_div(r53997, r53995, r53996, MPFR_RNDN);
        mpfr_sub(r53998, r53992, r53997, MPFR_RNDN);
        mpfr_cos(r53999, r53998, MPFR_RNDN);
        mpfr_mul(r54000, r53991, r53999, MPFR_RNDN);
        mpfr_set_d(r54001, a, MPFR_RNDN);
        mpfr_set_d(r54002, b, MPFR_RNDN);
        mpfr_mul(r54003, r54002, r53996, MPFR_RNDN);
        mpfr_div(r54004, r54001, r54003, MPFR_RNDN);
        mpfr_sub(r54005, r54000, r54004, MPFR_RNDN);
        return mpfr_get_d(r54005, MPFR_RNDN);
}

static mpfr_t r54006, r54007, r54008, r54009, r54010, r54011, r54012, r54013, r54014, r54015, r54016, r54017, r54018, r54019, r54020, r54021, r54022, r54023, r54024, r54025, r54026, r54027, r54028, r54029, r54030, r54031, r54032, r54033, r54034, r54035, r54036, r54037, r54038, r54039, r54040, r54041, r54042, r54043, r54044, r54045;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r54006);
        mpfr_init(r54007);
        mpfr_init(r54008);
        mpfr_init(r54009);
        mpfr_init_set_str(r54010, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54011);
        mpfr_init(r54012);
        mpfr_init_set_str(r54013, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r54014);
        mpfr_init_set_str(r54015, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54016);
        mpfr_init(r54017);
        mpfr_init(r54018);
        mpfr_init_set_str(r54019, "1", 10, MPFR_RNDN);
        mpfr_init(r54020);
        mpfr_init_set_str(r54021, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r54022);
        mpfr_init(r54023);
        mpfr_init(r54024);
        mpfr_init(r54025);
        mpfr_init(r54026);
        mpfr_init(r54027);
        mpfr_init(r54028);
        mpfr_init(r54029);
        mpfr_init(r54030);
        mpfr_init_set_str(r54031, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r54032);
        mpfr_init(r54033);
        mpfr_init(r54034);
        mpfr_init(r54035);
        mpfr_init(r54036);
        mpfr_init(r54037);
        mpfr_init(r54038);
        mpfr_init(r54039);
        mpfr_init(r54040);
        mpfr_init(r54041);
        mpfr_init(r54042);
        mpfr_init(r54043);
        mpfr_init(r54044);
        mpfr_init(r54045);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54006, y, MPFR_RNDN);
        mpfr_set_d(r54007, z, MPFR_RNDN);
        mpfr_set_d(r54008, t, MPFR_RNDN);
        mpfr_mul(r54009, r54007, r54008, MPFR_RNDN);
        ;
        mpfr_div(r54011, r54009, r54010, MPFR_RNDN);
        mpfr_sub(r54012, r54006, r54011, MPFR_RNDN);
        ;
        mpfr_set_si(r54014, mpfr_cmp(r54012, r54013) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r54016, x, MPFR_RNDN);
        mpfr_sqrt(r54017, r54016, MPFR_RNDN);
        mpfr_mul(r54018, r54015, r54017, MPFR_RNDN);
        ;
        mpfr_div(r54020, r54019, r54006, MPFR_RNDN);
        ;
        mpfr_div(r54022, r54021, r54009, MPFR_RNDN);
        mpfr_sub(r54023, r54020, r54022, MPFR_RNDN);
        mpfr_cos(r54024, r54023, MPFR_RNDN);
        mpfr_mul(r54025, r54018, r54024, MPFR_RNDN);
        mpfr_set_d(r54026, a, MPFR_RNDN);
        mpfr_set_d(r54027, b, MPFR_RNDN);
        mpfr_mul(r54028, r54027, r54010, MPFR_RNDN);
        mpfr_div(r54029, r54026, r54028, MPFR_RNDN);
        mpfr_sub(r54030, r54025, r54029, MPFR_RNDN);
        ;
        mpfr_set_si(r54032, mpfr_cmp(r54012, r54031) <= 0, MPFR_RNDN);
        mpfr_cos(r54033, r54006, MPFR_RNDN);
        mpfr_cos(r54034, r54011, MPFR_RNDN);
        mpfr_mul(r54035, r54033, r54034, MPFR_RNDN);
        mpfr_sin(r54036, r54006, MPFR_RNDN);
        mpfr_sin(r54037, r54011, MPFR_RNDN);
        mpfr_mul(r54038, r54036, r54037, MPFR_RNDN);
        mpfr_exp(r54039, r54038, MPFR_RNDN);
        mpfr_log(r54040, r54039, MPFR_RNDN);
        mpfr_add(r54041, r54035, r54040, MPFR_RNDN);
        mpfr_mul(r54042, r54018, r54041, MPFR_RNDN);
        mpfr_sub(r54043, r54042, r54029, MPFR_RNDN);
        if (mpfr_get_si(r54032, MPFR_RNDN)) { mpfr_set(r54044, r54043, MPFR_RNDN); } else { mpfr_set(r54044, r54030, MPFR_RNDN); };
        if (mpfr_get_si(r54014, MPFR_RNDN)) { mpfr_set(r54045, r54030, MPFR_RNDN); } else { mpfr_set(r54045, r54044, MPFR_RNDN); };
        return mpfr_get_d(r54045, MPFR_RNDN);
}

static mpfr_t r54046, r54047, r54048, r54049, r54050, r54051, r54052, r54053, r54054, r54055, r54056, r54057, r54058, r54059, r54060, r54061, r54062, r54063, r54064, r54065, r54066, r54067, r54068, r54069, r54070, r54071, r54072, r54073, r54074, r54075, r54076, r54077, r54078, r54079, r54080, r54081, r54082, r54083, r54084, r54085;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r54046);
        mpfr_init(r54047);
        mpfr_init(r54048);
        mpfr_init(r54049);
        mpfr_init_set_str(r54050, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54051);
        mpfr_init(r54052);
        mpfr_init_set_str(r54053, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r54054);
        mpfr_init_set_str(r54055, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54056);
        mpfr_init(r54057);
        mpfr_init(r54058);
        mpfr_init_set_str(r54059, "1", 10, MPFR_RNDN);
        mpfr_init(r54060);
        mpfr_init_set_str(r54061, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r54062);
        mpfr_init(r54063);
        mpfr_init(r54064);
        mpfr_init(r54065);
        mpfr_init(r54066);
        mpfr_init(r54067);
        mpfr_init(r54068);
        mpfr_init(r54069);
        mpfr_init(r54070);
        mpfr_init_set_str(r54071, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r54072);
        mpfr_init(r54073);
        mpfr_init(r54074);
        mpfr_init(r54075);
        mpfr_init(r54076);
        mpfr_init(r54077);
        mpfr_init(r54078);
        mpfr_init(r54079);
        mpfr_init(r54080);
        mpfr_init(r54081);
        mpfr_init(r54082);
        mpfr_init(r54083);
        mpfr_init(r54084);
        mpfr_init(r54085);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54046, y, MPFR_RNDN);
        mpfr_set_d(r54047, z, MPFR_RNDN);
        mpfr_set_d(r54048, t, MPFR_RNDN);
        mpfr_mul(r54049, r54047, r54048, MPFR_RNDN);
        ;
        mpfr_div(r54051, r54049, r54050, MPFR_RNDN);
        mpfr_sub(r54052, r54046, r54051, MPFR_RNDN);
        ;
        mpfr_set_si(r54054, mpfr_cmp(r54052, r54053) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r54056, x, MPFR_RNDN);
        mpfr_sqrt(r54057, r54056, MPFR_RNDN);
        mpfr_mul(r54058, r54055, r54057, MPFR_RNDN);
        ;
        mpfr_div(r54060, r54059, r54046, MPFR_RNDN);
        ;
        mpfr_div(r54062, r54061, r54049, MPFR_RNDN);
        mpfr_sub(r54063, r54060, r54062, MPFR_RNDN);
        mpfr_cos(r54064, r54063, MPFR_RNDN);
        mpfr_mul(r54065, r54058, r54064, MPFR_RNDN);
        mpfr_set_d(r54066, a, MPFR_RNDN);
        mpfr_set_d(r54067, b, MPFR_RNDN);
        mpfr_mul(r54068, r54067, r54050, MPFR_RNDN);
        mpfr_div(r54069, r54066, r54068, MPFR_RNDN);
        mpfr_sub(r54070, r54065, r54069, MPFR_RNDN);
        ;
        mpfr_set_si(r54072, mpfr_cmp(r54052, r54071) <= 0, MPFR_RNDN);
        mpfr_cos(r54073, r54046, MPFR_RNDN);
        mpfr_cos(r54074, r54051, MPFR_RNDN);
        mpfr_mul(r54075, r54073, r54074, MPFR_RNDN);
        mpfr_sin(r54076, r54046, MPFR_RNDN);
        mpfr_sin(r54077, r54051, MPFR_RNDN);
        mpfr_mul(r54078, r54076, r54077, MPFR_RNDN);
        mpfr_exp(r54079, r54078, MPFR_RNDN);
        mpfr_log(r54080, r54079, MPFR_RNDN);
        mpfr_add(r54081, r54075, r54080, MPFR_RNDN);
        mpfr_mul(r54082, r54058, r54081, MPFR_RNDN);
        mpfr_sub(r54083, r54082, r54069, MPFR_RNDN);
        if (mpfr_get_si(r54072, MPFR_RNDN)) { mpfr_set(r54084, r54083, MPFR_RNDN); } else { mpfr_set(r54084, r54070, MPFR_RNDN); };
        if (mpfr_get_si(r54054, MPFR_RNDN)) { mpfr_set(r54085, r54070, MPFR_RNDN); } else { mpfr_set(r54085, r54084, MPFR_RNDN); };
        return mpfr_get_d(r54085, MPFR_RNDN);
}

