#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Cubic critical";

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r9892 = b;
        float r9893 = -r9892;
        float r9894 = r9892 * r9892;
        float r9895 = 3.0f;
        float r9896 = a;
        float r9897 = r9895 * r9896;
        float r9898 = c;
        float r9899 = r9897 * r9898;
        float r9900 = r9894 - r9899;
        float r9901 = sqrt(r9900);
        float r9902 = r9893 + r9901;
        float r9903 = r9902 / r9897;
        return r9903;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9904 = b;
        double r9905 = -r9904;
        double r9906 = r9904 * r9904;
        double r9907 = 3.0;
        double r9908 = a;
        double r9909 = r9907 * r9908;
        double r9910 = c;
        double r9911 = r9909 * r9910;
        double r9912 = r9906 - r9911;
        double r9913 = sqrt(r9912);
        double r9914 = r9905 + r9913;
        double r9915 = r9914 / r9909;
        return r9915;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9916 = b;
        float r9917 = -3.917356997388998e+52f;
        bool r9918 = r9916 <= r9917;
        float r9919 = -0.6666666666666666f;
        float r9920 = a;
        float r9921 = r9916 / r9920;
        float r9922 = r9919 * r9921;
        float r9923 = 4.879117888011816e-295f;
        bool r9924 = r9916 <= r9923;
        float r9925 = -r9916;
        float r9926 = r9916 * r9916;
        float r9927 = c;
        float r9928 = 3.0f;
        float r9929 = r9928 * r9920;
        float r9930 = r9927 * r9929;
        float r9931 = r9926 - r9930;
        float r9932 = sqrt(r9931);
        float r9933 = r9925 + r9932;
        float r9934 = r9933 / r9929;
        float r9935 = 6.43211392635045e+130f;
        bool r9936 = r9916 <= r9935;
        float r9937 = r9925 - r9932;
        float r9938 = r9927 / r9937;
        float r9939 = 1.5f;
        float r9940 = r9920 * r9927;
        float r9941 = r9940 / r9916;
        float r9942 = r9939 * r9941;
        float r9943 = 2.0f;
        float r9944 = r9943 * r9916;
        float r9945 = r9942 - r9944;
        float r9946 = r9927 / r9945;
        float r9947 = r9936 ? r9938 : r9946;
        float r9948 = r9924 ? r9934 : r9947;
        float r9949 = r9918 ? r9922 : r9948;
        return r9949;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9950 = b;
        double r9951 = -3.917356997388998e+52;
        bool r9952 = r9950 <= r9951;
        double r9953 = -0.6666666666666666;
        double r9954 = a;
        double r9955 = r9950 / r9954;
        double r9956 = r9953 * r9955;
        double r9957 = 4.879117888011816e-295;
        bool r9958 = r9950 <= r9957;
        double r9959 = -r9950;
        double r9960 = r9950 * r9950;
        double r9961 = c;
        double r9962 = 3.0;
        double r9963 = r9962 * r9954;
        double r9964 = r9961 * r9963;
        double r9965 = r9960 - r9964;
        double r9966 = sqrt(r9965);
        double r9967 = r9959 + r9966;
        double r9968 = r9967 / r9963;
        double r9969 = 6.43211392635045e+130;
        bool r9970 = r9950 <= r9969;
        double r9971 = r9959 - r9966;
        double r9972 = r9961 / r9971;
        double r9973 = 1.5;
        double r9974 = r9954 * r9961;
        double r9975 = r9974 / r9950;
        double r9976 = r9973 * r9975;
        double r9977 = 2.0;
        double r9978 = r9977 * r9950;
        double r9979 = r9976 - r9978;
        double r9980 = r9961 / r9979;
        double r9981 = r9970 ? r9972 : r9980;
        double r9982 = r9958 ? r9968 : r9981;
        double r9983 = r9952 ? r9956 : r9982;
        return r9983;
}

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 r9984, r9985, r9986, r9987, r9988, r9989, r9990, r9991, r9992, r9993, r9994, r9995;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init_set_str(r9987, "3", 10, MPFR_RNDN);
        mpfr_init(r9988);
        mpfr_init(r9989);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
        mpfr_init(r9994);
        mpfr_init(r9995);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9984, b, MPFR_RNDN);
        mpfr_neg(r9985, r9984, MPFR_RNDN);
        mpfr_mul(r9986, r9984, r9984, MPFR_RNDN);
        ;
        mpfr_set_d(r9988, a, MPFR_RNDN);
        mpfr_mul(r9989, r9987, r9988, MPFR_RNDN);
        mpfr_set_d(r9990, c, MPFR_RNDN);
        mpfr_mul(r9991, r9989, r9990, MPFR_RNDN);
        mpfr_sub(r9992, r9986, r9991, MPFR_RNDN);
        mpfr_sqrt(r9993, r9992, MPFR_RNDN);
        mpfr_add(r9994, r9985, r9993, MPFR_RNDN);
        mpfr_div(r9995, r9994, r9989, MPFR_RNDN);
        return mpfr_get_d(r9995, MPFR_RNDN);
}

static mpfr_t r9996, r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011, r10012, r10013, r10014, r10015, r10016, r10017, r10018, r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9996);
        mpfr_init_set_str(r9997, "-3.917356997388998e+52", 10, MPFR_RNDN);
        mpfr_init(r9998);
        mpfr_init_set_str(r9999, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10000);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init_set_str(r10003, "4.879117888011816e-295", 10, MPFR_RNDN);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init_set_str(r10008, "3", 10, MPFR_RNDN);
        mpfr_init(r10009);
        mpfr_init(r10010);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init_set_str(r10015, "6.43211392635045e+130", 10, MPFR_RNDN);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init_set_str(r10019, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init_set_str(r10023, "2", 10, MPFR_RNDN);
        mpfr_init(r10024);
        mpfr_init(r10025);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
        mpfr_init(r10029);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9996, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9998, mpfr_cmp(r9996, r9997) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10000, a, MPFR_RNDN);
        mpfr_div(r10001, r9996, r10000, MPFR_RNDN);
        mpfr_mul(r10002, r9999, r10001, MPFR_RNDN);
        ;
        mpfr_set_si(r10004, mpfr_cmp(r9996, r10003) <= 0, MPFR_RNDN);
        mpfr_neg(r10005, r9996, MPFR_RNDN);
        mpfr_mul(r10006, r9996, r9996, MPFR_RNDN);
        mpfr_set_d(r10007, c, MPFR_RNDN);
        ;
        mpfr_mul(r10009, r10008, r10000, MPFR_RNDN);
        mpfr_mul(r10010, r10007, r10009, MPFR_RNDN);
        mpfr_sub(r10011, r10006, r10010, MPFR_RNDN);
        mpfr_sqrt(r10012, r10011, MPFR_RNDN);
        mpfr_add(r10013, r10005, r10012, MPFR_RNDN);
        mpfr_div(r10014, r10013, r10009, MPFR_RNDN);
        ;
        mpfr_set_si(r10016, mpfr_cmp(r9996, r10015) <= 0, MPFR_RNDN);
        mpfr_sub(r10017, r10005, r10012, MPFR_RNDN);
        mpfr_div(r10018, r10007, r10017, MPFR_RNDN);
        ;
        mpfr_mul(r10020, r10000, r10007, MPFR_RNDN);
        mpfr_div(r10021, r10020, r9996, MPFR_RNDN);
        mpfr_mul(r10022, r10019, r10021, MPFR_RNDN);
        ;
        mpfr_mul(r10024, r10023, r9996, MPFR_RNDN);
        mpfr_sub(r10025, r10022, r10024, MPFR_RNDN);
        mpfr_div(r10026, r10007, r10025, MPFR_RNDN);
        if (mpfr_get_si(r10016, MPFR_RNDN)) { mpfr_set(r10027, r10018, MPFR_RNDN); } else { mpfr_set(r10027, r10026, MPFR_RNDN); };
        if (mpfr_get_si(r10004, MPFR_RNDN)) { mpfr_set(r10028, r10014, MPFR_RNDN); } else { mpfr_set(r10028, r10027, MPFR_RNDN); };
        if (mpfr_get_si(r9998, MPFR_RNDN)) { mpfr_set(r10029, r10002, MPFR_RNDN); } else { mpfr_set(r10029, r10028, MPFR_RNDN); };
        return mpfr_get_d(r10029, MPFR_RNDN);
}

static mpfr_t r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048, r10049, r10050, r10051, r10052, r10053, r10054, r10055, r10056, r10057, r10058, r10059, r10060, r10061, r10062, r10063;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10030);
        mpfr_init_set_str(r10031, "-3.917356997388998e+52", 10, MPFR_RNDN);
        mpfr_init(r10032);
        mpfr_init_set_str(r10033, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10034);
        mpfr_init(r10035);
        mpfr_init(r10036);
        mpfr_init_set_str(r10037, "4.879117888011816e-295", 10, MPFR_RNDN);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
        mpfr_init_set_str(r10042, "3", 10, MPFR_RNDN);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
        mpfr_init(r10048);
        mpfr_init_set_str(r10049, "6.43211392635045e+130", 10, MPFR_RNDN);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init_set_str(r10053, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
        mpfr_init_set_str(r10057, "2", 10, MPFR_RNDN);
        mpfr_init(r10058);
        mpfr_init(r10059);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
        mpfr_init(r10063);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10030, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10032, mpfr_cmp(r10030, r10031) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10034, a, MPFR_RNDN);
        mpfr_div(r10035, r10030, r10034, MPFR_RNDN);
        mpfr_mul(r10036, r10033, r10035, MPFR_RNDN);
        ;
        mpfr_set_si(r10038, mpfr_cmp(r10030, r10037) <= 0, MPFR_RNDN);
        mpfr_neg(r10039, r10030, MPFR_RNDN);
        mpfr_mul(r10040, r10030, r10030, MPFR_RNDN);
        mpfr_set_d(r10041, c, MPFR_RNDN);
        ;
        mpfr_mul(r10043, r10042, r10034, MPFR_RNDN);
        mpfr_mul(r10044, r10041, r10043, MPFR_RNDN);
        mpfr_sub(r10045, r10040, r10044, MPFR_RNDN);
        mpfr_sqrt(r10046, r10045, MPFR_RNDN);
        mpfr_add(r10047, r10039, r10046, MPFR_RNDN);
        mpfr_div(r10048, r10047, r10043, MPFR_RNDN);
        ;
        mpfr_set_si(r10050, mpfr_cmp(r10030, r10049) <= 0, MPFR_RNDN);
        mpfr_sub(r10051, r10039, r10046, MPFR_RNDN);
        mpfr_div(r10052, r10041, r10051, MPFR_RNDN);
        ;
        mpfr_mul(r10054, r10034, r10041, MPFR_RNDN);
        mpfr_div(r10055, r10054, r10030, MPFR_RNDN);
        mpfr_mul(r10056, r10053, r10055, MPFR_RNDN);
        ;
        mpfr_mul(r10058, r10057, r10030, MPFR_RNDN);
        mpfr_sub(r10059, r10056, r10058, MPFR_RNDN);
        mpfr_div(r10060, r10041, r10059, MPFR_RNDN);
        if (mpfr_get_si(r10050, MPFR_RNDN)) { mpfr_set(r10061, r10052, MPFR_RNDN); } else { mpfr_set(r10061, r10060, MPFR_RNDN); };
        if (mpfr_get_si(r10038, MPFR_RNDN)) { mpfr_set(r10062, r10048, MPFR_RNDN); } else { mpfr_set(r10062, r10061, MPFR_RNDN); };
        if (mpfr_get_si(r10032, MPFR_RNDN)) { mpfr_set(r10063, r10036, MPFR_RNDN); } else { mpfr_set(r10063, r10062, MPFR_RNDN); };
        return mpfr_get_d(r10063, MPFR_RNDN);
}

