#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 r9923 = b_2;
        float r9924 = -r9923;
        float r9925 = r9923 * r9923;
        float r9926 = a;
        float r9927 = c;
        float r9928 = r9926 * r9927;
        float r9929 = r9925 - r9928;
        float r9930 = sqrt(r9929);
        float r9931 = r9924 - r9930;
        float r9932 = r9931 / r9926;
        return r9932;
}

double f_id(double a, double b_2, double c) {
        double r9933 = b_2;
        double r9934 = -r9933;
        double r9935 = r9933 * r9933;
        double r9936 = a;
        double r9937 = c;
        double r9938 = r9936 * r9937;
        double r9939 = r9935 - r9938;
        double r9940 = sqrt(r9939);
        double r9941 = r9934 - r9940;
        double r9942 = r9941 / r9936;
        return r9942;
}


double f_of(float a, float b_2, float c) {
        float r9943 = b_2;
        float r9944 = -0.023046085366440986;
        bool r9945 = r9943 <= r9944;
        float r9946 = -1/2;
        float r9947 = c;
        float r9948 = r9946 * r9947;
        float r9949 = r9948 / r9943;
        float r9950 = -2.5319625255424875e-142;
        bool r9951 = r9943 <= r9950;
        float r9952 = r9943 * r9943;
        float r9953 = a;
        float r9954 = r9947 * r9953;
        float r9955 = r9952 - r9954;
        float r9956 = sqrt(r9955);
        float r9957 = r9956 - r9943;
        float r9958 = cbrt(r9957);
        float r9959 = r9958 * r9958;
        float r9960 = r9947 / r9959;
        float r9961 = r9953 / r9958;
        float r9962 = r9960 * r9961;
        float r9963 = r9962 / r9953;
        float r9964 = 1.156979912524877e+82;
        bool r9965 = r9943 <= r9964;
        float r9966 = 1;
        float r9967 = -r9943;
        float r9968 = r9953 * r9947;
        float r9969 = r9952 - r9968;
        float r9970 = sqrt(r9969);
        float r9971 = r9967 - r9970;
        float r9972 = r9953 / r9971;
        float r9973 = r9966 / r9972;
        float r9974 = -2;
        float r9975 = r9943 / r9953;
        float r9976 = r9974 * r9975;
        float r9977 = r9965 ? r9973 : r9976;
        float r9978 = r9951 ? r9963 : r9977;
        float r9979 = r9945 ? r9949 : r9978;
        return r9979;
}

double f_od(double a, double b_2, double c) {
        double r9980 = b_2;
        double r9981 = -0.023046085366440986;
        bool r9982 = r9980 <= r9981;
        double r9983 = -1/2;
        double r9984 = c;
        double r9985 = r9983 * r9984;
        double r9986 = r9985 / r9980;
        double r9987 = -2.5319625255424875e-142;
        bool r9988 = r9980 <= r9987;
        double r9989 = r9980 * r9980;
        double r9990 = a;
        double r9991 = r9984 * r9990;
        double r9992 = r9989 - r9991;
        double r9993 = sqrt(r9992);
        double r9994 = r9993 - r9980;
        double r9995 = cbrt(r9994);
        double r9996 = r9995 * r9995;
        double r9997 = r9984 / r9996;
        double r9998 = r9990 / r9995;
        double r9999 = r9997 * r9998;
        double r10000 = r9999 / r9990;
        double r10001 = 1.156979912524877e+82;
        bool r10002 = r9980 <= r10001;
        double r10003 = 1;
        double r10004 = -r9980;
        double r10005 = r9990 * r9984;
        double r10006 = r9989 - r10005;
        double r10007 = sqrt(r10006);
        double r10008 = r10004 - r10007;
        double r10009 = r9990 / r10008;
        double r10010 = r10003 / r10009;
        double r10011 = -2;
        double r10012 = r9980 / r9990;
        double r10013 = r10011 * r10012;
        double r10014 = r10002 ? r10010 : r10013;
        double r10015 = r9988 ? r10000 : r10014;
        double r10016 = r9982 ? r9986 : r10015;
        return r10016;
}

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 r10017, r10018, r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init(r10023);
        mpfr_init(r10024);
        mpfr_init(r10025);
        mpfr_init(r10026);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r10017, b_2, MPFR_RNDN);
        mpfr_neg(r10018, r10017, MPFR_RNDN);
        mpfr_mul(r10019, r10017, r10017, MPFR_RNDN);
        mpfr_set_d(r10020, a, MPFR_RNDN);
        mpfr_set_d(r10021, c, MPFR_RNDN);
        mpfr_mul(r10022, r10020, r10021, MPFR_RNDN);
        mpfr_sub(r10023, r10019, r10022, MPFR_RNDN);
        mpfr_sqrt(r10024, r10023, MPFR_RNDN);
        mpfr_sub(r10025, r10018, r10024, MPFR_RNDN);
        mpfr_div(r10026, r10025, r10020, MPFR_RNDN);
        return mpfr_get_d(r10026, MPFR_RNDN);
}

static mpfr_t 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, r10063;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10027);
        mpfr_init_set_str(r10028, "-0.023046085366440986", 10, MPFR_RNDN);
        mpfr_init(r10029);
        mpfr_init_set_str(r10030, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10031);
        mpfr_init(r10032);
        mpfr_init(r10033);
        mpfr_init_set_str(r10034, "-2.5319625255424875e-142", 10, MPFR_RNDN);
        mpfr_init(r10035);
        mpfr_init(r10036);
        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(r10047);
        mpfr_init_set_str(r10048, "1.156979912524877e+82", 10, MPFR_RNDN);
        mpfr_init(r10049);
        mpfr_init_set_str(r10050, "1", 10, MPFR_RNDN);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
        mpfr_init(r10057);
        mpfr_init_set_str(r10058, "-2", 10, MPFR_RNDN);
        mpfr_init(r10059);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
        mpfr_init(r10063);
}

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

static mpfr_t r10064, r10065, r10066, r10067, r10068, r10069, r10070, r10071, r10072, r10073, r10074, r10075, r10076, r10077, r10078, r10079, r10080, r10081, r10082, r10083, r10084, r10085, r10086, r10087, r10088, r10089, r10090, r10091, r10092, r10093, r10094, r10095, r10096, r10097, r10098, r10099, r10100;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10064);
        mpfr_init_set_str(r10065, "-0.023046085366440986", 10, MPFR_RNDN);
        mpfr_init(r10066);
        mpfr_init_set_str(r10067, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10068);
        mpfr_init(r10069);
        mpfr_init(r10070);
        mpfr_init_set_str(r10071, "-2.5319625255424875e-142", 10, MPFR_RNDN);
        mpfr_init(r10072);
        mpfr_init(r10073);
        mpfr_init(r10074);
        mpfr_init(r10075);
        mpfr_init(r10076);
        mpfr_init(r10077);
        mpfr_init(r10078);
        mpfr_init(r10079);
        mpfr_init(r10080);
        mpfr_init(r10081);
        mpfr_init(r10082);
        mpfr_init(r10083);
        mpfr_init(r10084);
        mpfr_init_set_str(r10085, "1.156979912524877e+82", 10, MPFR_RNDN);
        mpfr_init(r10086);
        mpfr_init_set_str(r10087, "1", 10, MPFR_RNDN);
        mpfr_init(r10088);
        mpfr_init(r10089);
        mpfr_init(r10090);
        mpfr_init(r10091);
        mpfr_init(r10092);
        mpfr_init(r10093);
        mpfr_init(r10094);
        mpfr_init_set_str(r10095, "-2", 10, MPFR_RNDN);
        mpfr_init(r10096);
        mpfr_init(r10097);
        mpfr_init(r10098);
        mpfr_init(r10099);
        mpfr_init(r10100);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r10064, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r10066, mpfr_cmp(r10064, r10065) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10068, c, MPFR_RNDN);
        mpfr_mul(r10069, r10067, r10068, MPFR_RNDN);
        mpfr_div(r10070, r10069, r10064, MPFR_RNDN);
        ;
        mpfr_set_si(r10072, mpfr_cmp(r10064, r10071) <= 0, MPFR_RNDN);
        mpfr_mul(r10073, r10064, r10064, MPFR_RNDN);
        mpfr_set_d(r10074, a, MPFR_RNDN);
        mpfr_mul(r10075, r10068, r10074, MPFR_RNDN);
        mpfr_sub(r10076, r10073, r10075, MPFR_RNDN);
        mpfr_sqrt(r10077, r10076, MPFR_RNDN);
        mpfr_sub(r10078, r10077, r10064, MPFR_RNDN);
        mpfr_cbrt(r10079, r10078, MPFR_RNDN);
        mpfr_mul(r10080, r10079, r10079, MPFR_RNDN);
        mpfr_div(r10081, r10068, r10080, MPFR_RNDN);
        mpfr_div(r10082, r10074, r10079, MPFR_RNDN);
        mpfr_mul(r10083, r10081, r10082, MPFR_RNDN);
        mpfr_div(r10084, r10083, r10074, MPFR_RNDN);
        ;
        mpfr_set_si(r10086, mpfr_cmp(r10064, r10085) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r10088, r10064, MPFR_RNDN);
        mpfr_mul(r10089, r10074, r10068, MPFR_RNDN);
        mpfr_sub(r10090, r10073, r10089, MPFR_RNDN);
        mpfr_sqrt(r10091, r10090, MPFR_RNDN);
        mpfr_sub(r10092, r10088, r10091, MPFR_RNDN);
        mpfr_div(r10093, r10074, r10092, MPFR_RNDN);
        mpfr_div(r10094, r10087, r10093, MPFR_RNDN);
        ;
        mpfr_div(r10096, r10064, r10074, MPFR_RNDN);
        mpfr_mul(r10097, r10095, r10096, MPFR_RNDN);
        if (mpfr_get_si(r10086, MPFR_RNDN)) { mpfr_set(r10098, r10094, MPFR_RNDN); } else { mpfr_set(r10098, r10097, MPFR_RNDN); };
        if (mpfr_get_si(r10072, MPFR_RNDN)) { mpfr_set(r10099, r10084, MPFR_RNDN); } else { mpfr_set(r10099, r10098, MPFR_RNDN); };
        if (mpfr_get_si(r10066, MPFR_RNDN)) { mpfr_set(r10100, r10070, MPFR_RNDN); } else { mpfr_set(r10100, r10099, MPFR_RNDN); };
        return mpfr_get_d(r10100, MPFR_RNDN);
}

