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

char *name = "NMSE problem 3.2.1, negative";

double f_if(float a, float b2, float c) {
        float r27978 = b2;
        float r27979 = -r27978;
        float r27980 = r27978 * r27978;
        float r27981 = a;
        float r27982 = c;
        float r27983 = r27981 * r27982;
        float r27984 = r27980 - r27983;
        float r27985 = sqrt(r27984);
        float r27986 = r27979 - r27985;
        float r27987 = r27986 / r27981;
        return r27987;
}

double f_id(double a, double b2, double c) {
        double r27988 = b2;
        double r27989 = -r27988;
        double r27990 = r27988 * r27988;
        double r27991 = a;
        double r27992 = c;
        double r27993 = r27991 * r27992;
        double r27994 = r27990 - r27993;
        double r27995 = sqrt(r27994);
        double r27996 = r27989 - r27995;
        double r27997 = r27996 / r27991;
        return r27997;
}


double f_of(float a, float b2, float c) {
        float r27998 = b2;
        float r27999 = -4.028298909023817e+63;
        bool r28000 = r27998 <= r27999;
        float r28001 = c;
        float r28002 = r28001 / r27998;
        float r28003 = -1/2;
        float r28004 = r28002 * r28003;
        float r28005 = -6.162851395522511e-154;
        bool r28006 = r27998 <= r28005;
        float r28007 = a;
        float r28008 = r28001 * r28007;
        float r28009 = -r27998;
        float r28010 = r27998 * r27998;
        float r28011 = r28007 * r28001;
        float r28012 = r28010 - r28011;
        float r28013 = sqrt(r28012);
        float r28014 = r28009 + r28013;
        float r28015 = r28008 / r28014;
        float r28016 = r28015 / r28007;
        float r28017 = 4.4788708655259834e+105;
        bool r28018 = r27998 <= r28017;
        float r28019 = r28009 - r28013;
        float r28020 = r28019 / r28007;
        float r28021 = r27998 / r28007;
        float r28022 = -r28021;
        float r28023 = 1/2;
        float r28024 = r27998 / r28023;
        float r28025 = r28001 / r28024;
        float r28026 = r28021 - r28025;
        float r28027 = r28022 - r28026;
        float r28028 = r28018 ? r28020 : r28027;
        float r28029 = r28006 ? r28016 : r28028;
        float r28030 = r28000 ? r28004 : r28029;
        return r28030;
}

double f_od(double a, double b2, double c) {
        double r28031 = b2;
        double r28032 = -4.028298909023817e+63;
        bool r28033 = r28031 <= r28032;
        double r28034 = c;
        double r28035 = r28034 / r28031;
        double r28036 = -1/2;
        double r28037 = r28035 * r28036;
        double r28038 = -6.162851395522511e-154;
        bool r28039 = r28031 <= r28038;
        double r28040 = a;
        double r28041 = r28034 * r28040;
        double r28042 = -r28031;
        double r28043 = r28031 * r28031;
        double r28044 = r28040 * r28034;
        double r28045 = r28043 - r28044;
        double r28046 = sqrt(r28045);
        double r28047 = r28042 + r28046;
        double r28048 = r28041 / r28047;
        double r28049 = r28048 / r28040;
        double r28050 = 4.4788708655259834e+105;
        bool r28051 = r28031 <= r28050;
        double r28052 = r28042 - r28046;
        double r28053 = r28052 / r28040;
        double r28054 = r28031 / r28040;
        double r28055 = -r28054;
        double r28056 = 1/2;
        double r28057 = r28031 / r28056;
        double r28058 = r28034 / r28057;
        double r28059 = r28054 - r28058;
        double r28060 = r28055 - r28059;
        double r28061 = r28051 ? r28053 : r28060;
        double r28062 = r28039 ? r28049 : r28061;
        double r28063 = r28033 ? r28037 : r28062;
        return r28063;
}

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 r28064, r28065, r28066, r28067, r28068, r28069, r28070, r28071, r28072, r28073;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r28064);
        mpfr_init(r28065);
        mpfr_init(r28066);
        mpfr_init(r28067);
        mpfr_init(r28068);
        mpfr_init(r28069);
        mpfr_init(r28070);
        mpfr_init(r28071);
        mpfr_init(r28072);
        mpfr_init(r28073);
}

double f_im(double a, double b2, double c) {
        mpfr_set_d(r28064, b2, MPFR_RNDN);
        mpfr_neg(r28065, r28064, MPFR_RNDN);
        mpfr_mul(r28066, r28064, r28064, MPFR_RNDN);
        mpfr_set_d(r28067, a, MPFR_RNDN);
        mpfr_set_d(r28068, c, MPFR_RNDN);
        mpfr_mul(r28069, r28067, r28068, MPFR_RNDN);
        mpfr_sub(r28070, r28066, r28069, MPFR_RNDN);
        mpfr_sqrt(r28071, r28070, MPFR_RNDN);
        mpfr_sub(r28072, r28065, r28071, MPFR_RNDN);
        mpfr_div(r28073, r28072, r28067, MPFR_RNDN);
        return mpfr_get_d(r28073, MPFR_RNDN);
}

static mpfr_t r28074, r28075, r28076, r28077, r28078, r28079, r28080, r28081, r28082, r28083, r28084, r28085, r28086, r28087, r28088, r28089, r28090, r28091, r28092, r28093, r28094, r28095, r28096, r28097, r28098, r28099, r28100, r28101, r28102, r28103, r28104, r28105, r28106;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r28074);
        mpfr_init_set_str(r28075, "-4.028298909023817e+63", 10, MPFR_RNDN);
        mpfr_init(r28076);
        mpfr_init(r28077);
        mpfr_init(r28078);
        mpfr_init_set_str(r28079, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r28080);
        mpfr_init_set_str(r28081, "-6.162851395522511e-154", 10, MPFR_RNDN);
        mpfr_init(r28082);
        mpfr_init(r28083);
        mpfr_init(r28084);
        mpfr_init(r28085);
        mpfr_init(r28086);
        mpfr_init(r28087);
        mpfr_init(r28088);
        mpfr_init(r28089);
        mpfr_init(r28090);
        mpfr_init(r28091);
        mpfr_init(r28092);
        mpfr_init_set_str(r28093, "4.4788708655259834e+105", 10, MPFR_RNDN);
        mpfr_init(r28094);
        mpfr_init(r28095);
        mpfr_init(r28096);
        mpfr_init(r28097);
        mpfr_init(r28098);
        mpfr_init_set_str(r28099, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28100);
        mpfr_init(r28101);
        mpfr_init(r28102);
        mpfr_init(r28103);
        mpfr_init(r28104);
        mpfr_init(r28105);
        mpfr_init(r28106);
}

double f_fm(double a, double b2, double c) {
        mpfr_set_d(r28074, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r28076, mpfr_cmp(r28074, r28075) <= 0, MPFR_RNDN);
        mpfr_set_d(r28077, c, MPFR_RNDN);
        mpfr_div(r28078, r28077, r28074, MPFR_RNDN);
        ;
        mpfr_mul(r28080, r28078, r28079, MPFR_RNDN);
        ;
        mpfr_set_si(r28082, mpfr_cmp(r28074, r28081) <= 0, MPFR_RNDN);
        mpfr_set_d(r28083, a, MPFR_RNDN);
        mpfr_mul(r28084, r28077, r28083, MPFR_RNDN);
        mpfr_neg(r28085, r28074, MPFR_RNDN);
        mpfr_mul(r28086, r28074, r28074, MPFR_RNDN);
        mpfr_mul(r28087, r28083, r28077, MPFR_RNDN);
        mpfr_sub(r28088, r28086, r28087, MPFR_RNDN);
        mpfr_sqrt(r28089, r28088, MPFR_RNDN);
        mpfr_add(r28090, r28085, r28089, MPFR_RNDN);
        mpfr_div(r28091, r28084, r28090, MPFR_RNDN);
        mpfr_div(r28092, r28091, r28083, MPFR_RNDN);
        ;
        mpfr_set_si(r28094, mpfr_cmp(r28074, r28093) <= 0, MPFR_RNDN);
        mpfr_sub(r28095, r28085, r28089, MPFR_RNDN);
        mpfr_div(r28096, r28095, r28083, MPFR_RNDN);
        mpfr_div(r28097, r28074, r28083, MPFR_RNDN);
        mpfr_neg(r28098, r28097, MPFR_RNDN);
        ;
        mpfr_div(r28100, r28074, r28099, MPFR_RNDN);
        mpfr_div(r28101, r28077, r28100, MPFR_RNDN);
        mpfr_sub(r28102, r28097, r28101, MPFR_RNDN);
        mpfr_sub(r28103, r28098, r28102, MPFR_RNDN);
        if (mpfr_get_si(r28094, MPFR_RNDN)) { mpfr_set(r28104, r28096, MPFR_RNDN); } else { mpfr_set(r28104, r28103, MPFR_RNDN); };
        if (mpfr_get_si(r28082, MPFR_RNDN)) { mpfr_set(r28105, r28092, MPFR_RNDN); } else { mpfr_set(r28105, r28104, MPFR_RNDN); };
        if (mpfr_get_si(r28076, MPFR_RNDN)) { mpfr_set(r28106, r28080, MPFR_RNDN); } else { mpfr_set(r28106, r28105, MPFR_RNDN); };
        return mpfr_get_d(r28106, MPFR_RNDN);
}

static mpfr_t r28107, r28108, r28109, r28110, r28111, r28112, r28113, r28114, r28115, r28116, r28117, r28118, r28119, r28120, r28121, r28122, r28123, r28124, r28125, r28126, r28127, r28128, r28129, r28130, r28131, r28132, r28133, r28134, r28135, r28136, r28137, r28138, r28139;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r28107);
        mpfr_init_set_str(r28108, "-4.028298909023817e+63", 10, MPFR_RNDN);
        mpfr_init(r28109);
        mpfr_init(r28110);
        mpfr_init(r28111);
        mpfr_init_set_str(r28112, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r28113);
        mpfr_init_set_str(r28114, "-6.162851395522511e-154", 10, MPFR_RNDN);
        mpfr_init(r28115);
        mpfr_init(r28116);
        mpfr_init(r28117);
        mpfr_init(r28118);
        mpfr_init(r28119);
        mpfr_init(r28120);
        mpfr_init(r28121);
        mpfr_init(r28122);
        mpfr_init(r28123);
        mpfr_init(r28124);
        mpfr_init(r28125);
        mpfr_init_set_str(r28126, "4.4788708655259834e+105", 10, MPFR_RNDN);
        mpfr_init(r28127);
        mpfr_init(r28128);
        mpfr_init(r28129);
        mpfr_init(r28130);
        mpfr_init(r28131);
        mpfr_init_set_str(r28132, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28133);
        mpfr_init(r28134);
        mpfr_init(r28135);
        mpfr_init(r28136);
        mpfr_init(r28137);
        mpfr_init(r28138);
        mpfr_init(r28139);
}

double f_dm(double a, double b2, double c) {
        mpfr_set_d(r28107, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r28109, mpfr_cmp(r28107, r28108) <= 0, MPFR_RNDN);
        mpfr_set_d(r28110, c, MPFR_RNDN);
        mpfr_div(r28111, r28110, r28107, MPFR_RNDN);
        ;
        mpfr_mul(r28113, r28111, r28112, MPFR_RNDN);
        ;
        mpfr_set_si(r28115, mpfr_cmp(r28107, r28114) <= 0, MPFR_RNDN);
        mpfr_set_d(r28116, a, MPFR_RNDN);
        mpfr_mul(r28117, r28110, r28116, MPFR_RNDN);
        mpfr_neg(r28118, r28107, MPFR_RNDN);
        mpfr_mul(r28119, r28107, r28107, MPFR_RNDN);
        mpfr_mul(r28120, r28116, r28110, MPFR_RNDN);
        mpfr_sub(r28121, r28119, r28120, MPFR_RNDN);
        mpfr_sqrt(r28122, r28121, MPFR_RNDN);
        mpfr_add(r28123, r28118, r28122, MPFR_RNDN);
        mpfr_div(r28124, r28117, r28123, MPFR_RNDN);
        mpfr_div(r28125, r28124, r28116, MPFR_RNDN);
        ;
        mpfr_set_si(r28127, mpfr_cmp(r28107, r28126) <= 0, MPFR_RNDN);
        mpfr_sub(r28128, r28118, r28122, MPFR_RNDN);
        mpfr_div(r28129, r28128, r28116, MPFR_RNDN);
        mpfr_div(r28130, r28107, r28116, MPFR_RNDN);
        mpfr_neg(r28131, r28130, MPFR_RNDN);
        ;
        mpfr_div(r28133, r28107, r28132, MPFR_RNDN);
        mpfr_div(r28134, r28110, r28133, MPFR_RNDN);
        mpfr_sub(r28135, r28130, r28134, MPFR_RNDN);
        mpfr_sub(r28136, r28131, r28135, MPFR_RNDN);
        if (mpfr_get_si(r28127, MPFR_RNDN)) { mpfr_set(r28137, r28129, MPFR_RNDN); } else { mpfr_set(r28137, r28136, MPFR_RNDN); };
        if (mpfr_get_si(r28115, MPFR_RNDN)) { mpfr_set(r28138, r28125, MPFR_RNDN); } else { mpfr_set(r28138, r28137, MPFR_RNDN); };
        if (mpfr_get_si(r28109, MPFR_RNDN)) { mpfr_set(r28139, r28113, MPFR_RNDN); } else { mpfr_set(r28139, r28138, MPFR_RNDN); };
        return mpfr_get_d(r28139, MPFR_RNDN);
}

