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

char *name = "NMSE problem 3.2.1";

double f_if(float a, float b_2, float c) {
        float r9873 = b_2;
        float r9874 = -r9873;
        float r9875 = r9873 * r9873;
        float r9876 = a;
        float r9877 = c;
        float r9878 = r9876 * r9877;
        float r9879 = r9875 - r9878;
        float r9880 = sqrt(r9879);
        float r9881 = r9874 - r9880;
        float r9882 = r9881 / r9876;
        return r9882;
}

double f_id(double a, double b_2, double c) {
        double r9883 = b_2;
        double r9884 = -r9883;
        double r9885 = r9883 * r9883;
        double r9886 = a;
        double r9887 = c;
        double r9888 = r9886 * r9887;
        double r9889 = r9885 - r9888;
        double r9890 = sqrt(r9889);
        double r9891 = r9884 - r9890;
        double r9892 = r9891 / r9886;
        return r9892;
}


double f_of(float a, float b_2, float c) {
        float r9893 = b_2;
        float r9894 = -1.8905229956434865e+98;
        bool r9895 = r9893 <= r9894;
        float r9896 = c;
        float r9897 = a;
        float r9898 = r9897 / r9893;
        float r9899 = 1/2;
        float r9900 = r9899 * r9896;
        float r9901 = r9898 * r9900;
        float r9902 = 2;
        float r9903 = r9902 * r9893;
        float r9904 = r9901 - r9903;
        float r9905 = r9896 / r9904;
        float r9906 = -2.101916032066834e-22;
        bool r9907 = r9893 <= r9906;
        float r9908 = r9897 * r9896;
        float r9909 = r9893 * r9893;
        float r9910 = r9909 - r9908;
        float r9911 = sqrt(r9910);
        float r9912 = r9911 - r9893;
        float r9913 = sqrt(r9912);
        float r9914 = r9913 * r9913;
        float r9915 = r9908 / r9914;
        float r9916 = r9915 / r9897;
        float r9917 = -6.141293241181732e-109;
        bool r9918 = r9893 <= r9917;
        float r9919 = 6.959770719239994e+151;
        bool r9920 = r9893 <= r9919;
        float r9921 = -r9893;
        float r9922 = r9921 - r9911;
        float r9923 = r9922 / r9897;
        float r9924 = r9899 / r9893;
        float r9925 = r9896 * r9924;
        float r9926 = r9897 / r9902;
        float r9927 = r9893 / r9926;
        float r9928 = r9925 - r9927;
        float r9929 = r9920 ? r9923 : r9928;
        float r9930 = r9918 ? r9905 : r9929;
        float r9931 = r9907 ? r9916 : r9930;
        float r9932 = r9895 ? r9905 : r9931;
        return r9932;
}

double f_od(double a, double b_2, double c) {
        double r9933 = b_2;
        double r9934 = -1.8905229956434865e+98;
        bool r9935 = r9933 <= r9934;
        double r9936 = c;
        double r9937 = a;
        double r9938 = r9937 / r9933;
        double r9939 = 1/2;
        double r9940 = r9939 * r9936;
        double r9941 = r9938 * r9940;
        double r9942 = 2;
        double r9943 = r9942 * r9933;
        double r9944 = r9941 - r9943;
        double r9945 = r9936 / r9944;
        double r9946 = -2.101916032066834e-22;
        bool r9947 = r9933 <= r9946;
        double r9948 = r9937 * r9936;
        double r9949 = r9933 * r9933;
        double r9950 = r9949 - r9948;
        double r9951 = sqrt(r9950);
        double r9952 = r9951 - r9933;
        double r9953 = sqrt(r9952);
        double r9954 = r9953 * r9953;
        double r9955 = r9948 / r9954;
        double r9956 = r9955 / r9937;
        double r9957 = -6.141293241181732e-109;
        bool r9958 = r9933 <= r9957;
        double r9959 = 6.959770719239994e+151;
        bool r9960 = r9933 <= r9959;
        double r9961 = -r9933;
        double r9962 = r9961 - r9951;
        double r9963 = r9962 / r9937;
        double r9964 = r9939 / r9933;
        double r9965 = r9936 * r9964;
        double r9966 = r9937 / r9942;
        double r9967 = r9933 / r9966;
        double r9968 = r9965 - r9967;
        double r9969 = r9960 ? r9963 : r9968;
        double r9970 = r9958 ? r9945 : r9969;
        double r9971 = r9947 ? r9956 : r9970;
        double r9972 = r9935 ? r9945 : r9971;
        return r9972;
}

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9973);
        mpfr_init(r9974);
        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_2, double c) {
        mpfr_set_d(r9973, b_2, MPFR_RNDN);
        mpfr_neg(r9974, r9973, MPFR_RNDN);
        mpfr_mul(r9975, r9973, r9973, MPFR_RNDN);
        mpfr_set_d(r9976, a, MPFR_RNDN);
        mpfr_set_d(r9977, c, MPFR_RNDN);
        mpfr_mul(r9978, r9976, r9977, MPFR_RNDN);
        mpfr_sub(r9979, r9975, r9978, MPFR_RNDN);
        mpfr_sqrt(r9980, r9979, MPFR_RNDN);
        mpfr_sub(r9981, r9974, 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, r10019, r10020, r10021, r10022;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9983);
        mpfr_init_set_str(r9984, "-1.8905229956434865e+98", 10, MPFR_RNDN);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init(r9987);
        mpfr_init(r9988);
        mpfr_init_set_str(r9989, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init_set_str(r9992, "2", 10, MPFR_RNDN);
        mpfr_init(r9993);
        mpfr_init(r9994);
        mpfr_init(r9995);
        mpfr_init_set_str(r9996, "-2.101916032066834e-22", 10, MPFR_RNDN);
        mpfr_init(r9997);
        mpfr_init(r9998);
        mpfr_init(r9999);
        mpfr_init(r10000);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init_set_str(r10007, "-6.141293241181732e-109", 10, MPFR_RNDN);
        mpfr_init(r10008);
        mpfr_init_set_str(r10009, "6.959770719239994e+151", 10, MPFR_RNDN);
        mpfr_init(r10010);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
}

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

static mpfr_t 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, r10055, r10056, r10057, r10058, r10059, r10060, r10061, r10062;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10023);
        mpfr_init_set_str(r10024, "-1.8905229956434865e+98", 10, MPFR_RNDN);
        mpfr_init(r10025);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
        mpfr_init_set_str(r10029, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init_set_str(r10032, "2", 10, MPFR_RNDN);
        mpfr_init(r10033);
        mpfr_init(r10034);
        mpfr_init(r10035);
        mpfr_init_set_str(r10036, "-2.101916032066834e-22", 10, MPFR_RNDN);
        mpfr_init(r10037);
        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(r10046);
        mpfr_init_set_str(r10047, "-6.141293241181732e-109", 10, MPFR_RNDN);
        mpfr_init(r10048);
        mpfr_init_set_str(r10049, "6.959770719239994e+151", 10, MPFR_RNDN);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
        mpfr_init(r10057);
        mpfr_init(r10058);
        mpfr_init(r10059);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
}

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

