#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 r9875 = b;
        float r9876 = -r9875;
        float r9877 = r9875 * r9875;
        float r9878 = 3.0f;
        float r9879 = a;
        float r9880 = r9878 * r9879;
        float r9881 = c;
        float r9882 = r9880 * r9881;
        float r9883 = r9877 - r9882;
        float r9884 = sqrt(r9883);
        float r9885 = r9876 + r9884;
        float r9886 = r9885 / r9880;
        return r9886;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9887 = b;
        double r9888 = -r9887;
        double r9889 = r9887 * r9887;
        double r9890 = 3.0;
        double r9891 = a;
        double r9892 = r9890 * r9891;
        double r9893 = c;
        double r9894 = r9892 * r9893;
        double r9895 = r9889 - r9894;
        double r9896 = sqrt(r9895);
        double r9897 = r9888 + r9896;
        double r9898 = r9897 / r9892;
        return r9898;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9899 = b;
        float r9900 = -1.3303061683842245e+154f;
        bool r9901 = r9899 <= r9900;
        float r9902 = c;
        float r9903 = -r9902;
        float r9904 = -1.5f;
        float r9905 = -1.0f;
        float r9906 = r9905 / r9902;
        float r9907 = r9904 / r9906;
        float r9908 = r9905 / r9899;
        float r9909 = a;
        float r9910 = r9905 / r9909;
        float r9911 = r9908 / r9910;
        float r9912 = r9907 * r9911;
        float r9913 = r9903 / r9912;
        float r9914 = 1.8954867238545677e-295f;
        bool r9915 = r9899 <= r9914;
        float r9916 = 1.0f;
        float r9917 = 3.0f;
        float r9918 = r9916 / r9917;
        float r9919 = r9917 * r9909;
        float r9920 = r9899 * r9899;
        float r9921 = fma(r9919, r9903, r9920);
        float r9922 = sqrt(r9921);
        float r9923 = r9922 - r9899;
        float r9924 = r9923 / r9909;
        float r9925 = r9918 * r9924;
        float r9926 = 9.93738894680191e+126f;
        bool r9927 = r9899 <= r9926;
        float r9928 = r9899 + r9922;
        float r9929 = r9903 / r9928;
        float r9930 = r9899 + r9899;
        float r9931 = r9903 / r9930;
        float r9932 = r9927 ? r9929 : r9931;
        float r9933 = r9915 ? r9925 : r9932;
        float r9934 = r9901 ? r9913 : r9933;
        return r9934;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9935 = b;
        double r9936 = -1.3303061683842245e+154;
        bool r9937 = r9935 <= r9936;
        double r9938 = c;
        double r9939 = -r9938;
        double r9940 = -1.5;
        double r9941 = -1.0;
        double r9942 = r9941 / r9938;
        double r9943 = r9940 / r9942;
        double r9944 = r9941 / r9935;
        double r9945 = a;
        double r9946 = r9941 / r9945;
        double r9947 = r9944 / r9946;
        double r9948 = r9943 * r9947;
        double r9949 = r9939 / r9948;
        double r9950 = 1.8954867238545677e-295;
        bool r9951 = r9935 <= r9950;
        double r9952 = 1.0;
        double r9953 = 3.0;
        double r9954 = r9952 / r9953;
        double r9955 = r9953 * r9945;
        double r9956 = r9935 * r9935;
        double r9957 = fma(r9955, r9939, r9956);
        double r9958 = sqrt(r9957);
        double r9959 = r9958 - r9935;
        double r9960 = r9959 / r9945;
        double r9961 = r9954 * r9960;
        double r9962 = 9.93738894680191e+126;
        bool r9963 = r9935 <= r9962;
        double r9964 = r9935 + r9958;
        double r9965 = r9939 / r9964;
        double r9966 = r9935 + r9935;
        double r9967 = r9939 / r9966;
        double r9968 = r9963 ? r9965 : r9967;
        double r9969 = r9951 ? r9961 : r9968;
        double r9970 = r9937 ? r9949 : r9969;
        return r9970;
}

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 r9971, r9972, r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init_set_str(r9974, "3", 10, MPFR_RNDN);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init(r9977);
        mpfr_init(r9978);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9971, b, MPFR_RNDN);
        mpfr_neg(r9972, r9971, MPFR_RNDN);
        mpfr_mul(r9973, r9971, r9971, MPFR_RNDN);
        ;
        mpfr_set_d(r9975, a, MPFR_RNDN);
        mpfr_mul(r9976, r9974, r9975, MPFR_RNDN);
        mpfr_set_d(r9977, c, MPFR_RNDN);
        mpfr_mul(r9978, r9976, r9977, MPFR_RNDN);
        mpfr_sub(r9979, r9973, r9978, MPFR_RNDN);
        mpfr_sqrt(r9980, r9979, MPFR_RNDN);
        mpfr_add(r9981, r9972, r9980, MPFR_RNDN);
        mpfr_div(r9982, r9981, r9976, MPFR_RNDN);
        return mpfr_get_d(r9982, MPFR_RNDN);
}

static mpfr_t r9983, r9984, r9985, r9986, r9987, r9988, r9989, r9990, r9991, r9992, r9993, r9994, r9995, r9996, r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011, r10012, r10013, r10014, r10015, r10016, r10017, r10018;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9983);
        mpfr_init_set_str(r9984, "-1.3303061683842245e+154", 10, MPFR_RNDN);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init(r9987);
        mpfr_init_set_str(r9988, "-3/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9989, "-1", 10, MPFR_RNDN);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
        mpfr_init(r9994);
        mpfr_init(r9995);
        mpfr_init(r9996);
        mpfr_init(r9997);
        mpfr_init_set_str(r9998, "1.8954867238545677e-295", 10, MPFR_RNDN);
        mpfr_init(r9999);
        mpfr_init_set_str(r10000, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10001, "3", 10, MPFR_RNDN);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
        mpfr_init_set_str(r10010, "9.93738894680191e+126", 10, MPFR_RNDN);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9983, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9985, mpfr_cmp(r9983, r9984) <= 0, MPFR_RNDN);
        mpfr_set_d(r9986, c, MPFR_RNDN);
        mpfr_neg(r9987, r9986, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9990, r9989, r9986, MPFR_RNDN);
        mpfr_div(r9991, r9988, r9990, MPFR_RNDN);
        mpfr_div(r9992, r9989, r9983, MPFR_RNDN);
        mpfr_set_d(r9993, a, MPFR_RNDN);
        mpfr_div(r9994, r9989, r9993, MPFR_RNDN);
        mpfr_div(r9995, r9992, r9994, MPFR_RNDN);
        mpfr_mul(r9996, r9991, r9995, MPFR_RNDN);
        mpfr_div(r9997, r9987, r9996, MPFR_RNDN);
        ;
        mpfr_set_si(r9999, mpfr_cmp(r9983, r9998) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10002, r10000, r10001, MPFR_RNDN);
        mpfr_mul(r10003, r10001, r9993, MPFR_RNDN);
        mpfr_mul(r10004, r9983, r9983, MPFR_RNDN);
        mpfr_fma(r10005, r10003, r9987, r10004, MPFR_RNDN);
        mpfr_sqrt(r10006, r10005, MPFR_RNDN);
        mpfr_sub(r10007, r10006, r9983, MPFR_RNDN);
        mpfr_div(r10008, r10007, r9993, MPFR_RNDN);
        mpfr_mul(r10009, r10002, r10008, MPFR_RNDN);
        ;
        mpfr_set_si(r10011, mpfr_cmp(r9983, r10010) <= 0, MPFR_RNDN);
        mpfr_add(r10012, r9983, r10006, MPFR_RNDN);
        mpfr_div(r10013, r9987, r10012, MPFR_RNDN);
        mpfr_add(r10014, r9983, r9983, MPFR_RNDN);
        mpfr_div(r10015, r9987, r10014, MPFR_RNDN);
        if (mpfr_get_si(r10011, MPFR_RNDN)) { mpfr_set(r10016, r10013, MPFR_RNDN); } else { mpfr_set(r10016, r10015, MPFR_RNDN); };
        if (mpfr_get_si(r9999, MPFR_RNDN)) { mpfr_set(r10017, r10009, MPFR_RNDN); } else { mpfr_set(r10017, r10016, MPFR_RNDN); };
        if (mpfr_get_si(r9985, MPFR_RNDN)) { mpfr_set(r10018, r9997, MPFR_RNDN); } else { mpfr_set(r10018, r10017, MPFR_RNDN); };
        return mpfr_get_d(r10018, MPFR_RNDN);
}

static mpfr_t r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10019);
        mpfr_init_set_str(r10020, "-1.3303061683842245e+154", 10, MPFR_RNDN);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init(r10023);
        mpfr_init_set_str(r10024, "-3/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10025, "-1", 10, MPFR_RNDN);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init(r10032);
        mpfr_init(r10033);
        mpfr_init_set_str(r10034, "1.8954867238545677e-295", 10, MPFR_RNDN);
        mpfr_init(r10035);
        mpfr_init_set_str(r10036, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10037, "3", 10, MPFR_RNDN);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init_set_str(r10046, "9.93738894680191e+126", 10, MPFR_RNDN);
        mpfr_init(r10047);
        mpfr_init(r10048);
        mpfr_init(r10049);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10019, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10021, mpfr_cmp(r10019, r10020) <= 0, MPFR_RNDN);
        mpfr_set_d(r10022, c, MPFR_RNDN);
        mpfr_neg(r10023, r10022, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10026, r10025, r10022, MPFR_RNDN);
        mpfr_div(r10027, r10024, r10026, MPFR_RNDN);
        mpfr_div(r10028, r10025, r10019, MPFR_RNDN);
        mpfr_set_d(r10029, a, MPFR_RNDN);
        mpfr_div(r10030, r10025, r10029, MPFR_RNDN);
        mpfr_div(r10031, r10028, r10030, MPFR_RNDN);
        mpfr_mul(r10032, r10027, r10031, MPFR_RNDN);
        mpfr_div(r10033, r10023, r10032, MPFR_RNDN);
        ;
        mpfr_set_si(r10035, mpfr_cmp(r10019, r10034) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10038, r10036, r10037, MPFR_RNDN);
        mpfr_mul(r10039, r10037, r10029, MPFR_RNDN);
        mpfr_mul(r10040, r10019, r10019, MPFR_RNDN);
        mpfr_fma(r10041, r10039, r10023, r10040, MPFR_RNDN);
        mpfr_sqrt(r10042, r10041, MPFR_RNDN);
        mpfr_sub(r10043, r10042, r10019, MPFR_RNDN);
        mpfr_div(r10044, r10043, r10029, MPFR_RNDN);
        mpfr_mul(r10045, r10038, r10044, MPFR_RNDN);
        ;
        mpfr_set_si(r10047, mpfr_cmp(r10019, r10046) <= 0, MPFR_RNDN);
        mpfr_add(r10048, r10019, r10042, MPFR_RNDN);
        mpfr_div(r10049, r10023, r10048, MPFR_RNDN);
        mpfr_add(r10050, r10019, r10019, MPFR_RNDN);
        mpfr_div(r10051, r10023, r10050, MPFR_RNDN);
        if (mpfr_get_si(r10047, MPFR_RNDN)) { mpfr_set(r10052, r10049, MPFR_RNDN); } else { mpfr_set(r10052, r10051, MPFR_RNDN); };
        if (mpfr_get_si(r10035, MPFR_RNDN)) { mpfr_set(r10053, r10045, MPFR_RNDN); } else { mpfr_set(r10053, r10052, MPFR_RNDN); };
        if (mpfr_get_si(r10021, MPFR_RNDN)) { mpfr_set(r10054, r10033, MPFR_RNDN); } else { mpfr_set(r10054, r10053, MPFR_RNDN); };
        return mpfr_get_d(r10054, MPFR_RNDN);
}

