#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 r25961 = b_2;
        float r25962 = -r25961;
        float r25963 = r25961 * r25961;
        float r25964 = a;
        float r25965 = c;
        float r25966 = r25964 * r25965;
        float r25967 = r25963 - r25966;
        float r25968 = sqrt(r25967);
        float r25969 = r25962 - r25968;
        float r25970 = r25969 / r25964;
        return r25970;
}

double f_id(double a, double b_2, double c) {
        double r25971 = b_2;
        double r25972 = -r25971;
        double r25973 = r25971 * r25971;
        double r25974 = a;
        double r25975 = c;
        double r25976 = r25974 * r25975;
        double r25977 = r25973 - r25976;
        double r25978 = sqrt(r25977);
        double r25979 = r25972 - r25978;
        double r25980 = r25979 / r25974;
        return r25980;
}


double f_of(float a, float b_2, float c) {
        float r25981 = b_2;
        float r25982 = -9.364913351832592e+42;
        bool r25983 = r25981 <= r25982;
        float r25984 = c;
        float r25985 = 1/2;
        float r25986 = r25985 * r25984;
        float r25987 = a;
        float r25988 = r25981 / r25987;
        float r25989 = r25986 / r25988;
        float r25990 = r25981 + r25981;
        float r25991 = r25989 - r25990;
        float r25992 = r25984 / r25991;
        float r25993 = -4.099879830209986e-284;
        bool r25994 = r25981 <= r25993;
        float r25995 = r25984 * r25987;
        float r25996 = r25981 * r25981;
        float r25997 = r25987 * r25984;
        float r25998 = r25996 - r25997;
        float r25999 = sqrt(r25998);
        float r26000 = r25999 - r25981;
        float r26001 = r25995 / r26000;
        float r26002 = r26001 / r25987;
        float r26003 = 5.317885823358275e+67;
        bool r26004 = r25981 <= r26003;
        float r26005 = -r25981;
        float r26006 = r26005 - r25999;
        float r26007 = 1;
        float r26008 = r26007 / r25987;
        float r26009 = r26006 * r26008;
        float r26010 = -2;
        float r26011 = r26010 * r25988;
        float r26012 = r26004 ? r26009 : r26011;
        float r26013 = r25994 ? r26002 : r26012;
        float r26014 = r25983 ? r25992 : r26013;
        return r26014;
}

double f_od(double a, double b_2, double c) {
        double r26015 = b_2;
        double r26016 = -9.364913351832592e+42;
        bool r26017 = r26015 <= r26016;
        double r26018 = c;
        double r26019 = 1/2;
        double r26020 = r26019 * r26018;
        double r26021 = a;
        double r26022 = r26015 / r26021;
        double r26023 = r26020 / r26022;
        double r26024 = r26015 + r26015;
        double r26025 = r26023 - r26024;
        double r26026 = r26018 / r26025;
        double r26027 = -4.099879830209986e-284;
        bool r26028 = r26015 <= r26027;
        double r26029 = r26018 * r26021;
        double r26030 = r26015 * r26015;
        double r26031 = r26021 * r26018;
        double r26032 = r26030 - r26031;
        double r26033 = sqrt(r26032);
        double r26034 = r26033 - r26015;
        double r26035 = r26029 / r26034;
        double r26036 = r26035 / r26021;
        double r26037 = 5.317885823358275e+67;
        bool r26038 = r26015 <= r26037;
        double r26039 = -r26015;
        double r26040 = r26039 - r26033;
        double r26041 = 1;
        double r26042 = r26041 / r26021;
        double r26043 = r26040 * r26042;
        double r26044 = -2;
        double r26045 = r26044 * r26022;
        double r26046 = r26038 ? r26043 : r26045;
        double r26047 = r26028 ? r26036 : r26046;
        double r26048 = r26017 ? r26026 : r26047;
        return r26048;
}

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 r26049, r26050, r26051, r26052, r26053, r26054, r26055, r26056, r26057, r26058;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26049);
        mpfr_init(r26050);
        mpfr_init(r26051);
        mpfr_init(r26052);
        mpfr_init(r26053);
        mpfr_init(r26054);
        mpfr_init(r26055);
        mpfr_init(r26056);
        mpfr_init(r26057);
        mpfr_init(r26058);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r26049, b_2, MPFR_RNDN);
        mpfr_neg(r26050, r26049, MPFR_RNDN);
        mpfr_mul(r26051, r26049, r26049, MPFR_RNDN);
        mpfr_set_d(r26052, a, MPFR_RNDN);
        mpfr_set_d(r26053, c, MPFR_RNDN);
        mpfr_mul(r26054, r26052, r26053, MPFR_RNDN);
        mpfr_sub(r26055, r26051, r26054, MPFR_RNDN);
        mpfr_sqrt(r26056, r26055, MPFR_RNDN);
        mpfr_sub(r26057, r26050, r26056, MPFR_RNDN);
        mpfr_div(r26058, r26057, r26052, MPFR_RNDN);
        return mpfr_get_d(r26058, MPFR_RNDN);
}

static mpfr_t r26059, r26060, r26061, r26062, r26063, r26064, r26065, r26066, r26067, r26068, r26069, r26070, r26071, r26072, r26073, r26074, r26075, r26076, r26077, r26078, r26079, r26080, r26081, r26082, r26083, r26084, r26085, r26086, r26087, r26088, r26089, r26090, r26091, r26092;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26059);
        mpfr_init_set_str(r26060, "-9.364913351832592e+42", 10, MPFR_RNDN);
        mpfr_init(r26061);
        mpfr_init(r26062);
        mpfr_init_set_str(r26063, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26064);
        mpfr_init(r26065);
        mpfr_init(r26066);
        mpfr_init(r26067);
        mpfr_init(r26068);
        mpfr_init(r26069);
        mpfr_init(r26070);
        mpfr_init_set_str(r26071, "-4.099879830209986e-284", 10, MPFR_RNDN);
        mpfr_init(r26072);
        mpfr_init(r26073);
        mpfr_init(r26074);
        mpfr_init(r26075);
        mpfr_init(r26076);
        mpfr_init(r26077);
        mpfr_init(r26078);
        mpfr_init(r26079);
        mpfr_init(r26080);
        mpfr_init_set_str(r26081, "5.317885823358275e+67", 10, MPFR_RNDN);
        mpfr_init(r26082);
        mpfr_init(r26083);
        mpfr_init(r26084);
        mpfr_init_set_str(r26085, "1", 10, MPFR_RNDN);
        mpfr_init(r26086);
        mpfr_init(r26087);
        mpfr_init_set_str(r26088, "-2", 10, MPFR_RNDN);
        mpfr_init(r26089);
        mpfr_init(r26090);
        mpfr_init(r26091);
        mpfr_init(r26092);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r26059, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r26061, mpfr_cmp(r26059, r26060) <= 0, MPFR_RNDN);
        mpfr_set_d(r26062, c, MPFR_RNDN);
        ;
        mpfr_mul(r26064, r26063, r26062, MPFR_RNDN);
        mpfr_set_d(r26065, a, MPFR_RNDN);
        mpfr_div(r26066, r26059, r26065, MPFR_RNDN);
        mpfr_div(r26067, r26064, r26066, MPFR_RNDN);
        mpfr_add(r26068, r26059, r26059, MPFR_RNDN);
        mpfr_sub(r26069, r26067, r26068, MPFR_RNDN);
        mpfr_div(r26070, r26062, r26069, MPFR_RNDN);
        ;
        mpfr_set_si(r26072, mpfr_cmp(r26059, r26071) <= 0, MPFR_RNDN);
        mpfr_mul(r26073, r26062, r26065, MPFR_RNDN);
        mpfr_mul(r26074, r26059, r26059, MPFR_RNDN);
        mpfr_mul(r26075, r26065, r26062, MPFR_RNDN);
        mpfr_sub(r26076, r26074, r26075, MPFR_RNDN);
        mpfr_sqrt(r26077, r26076, MPFR_RNDN);
        mpfr_sub(r26078, r26077, r26059, MPFR_RNDN);
        mpfr_div(r26079, r26073, r26078, MPFR_RNDN);
        mpfr_div(r26080, r26079, r26065, MPFR_RNDN);
        ;
        mpfr_set_si(r26082, mpfr_cmp(r26059, r26081) <= 0, MPFR_RNDN);
        mpfr_neg(r26083, r26059, MPFR_RNDN);
        mpfr_sub(r26084, r26083, r26077, MPFR_RNDN);
        ;
        mpfr_div(r26086, r26085, r26065, MPFR_RNDN);
        mpfr_mul(r26087, r26084, r26086, MPFR_RNDN);
        ;
        mpfr_mul(r26089, r26088, r26066, MPFR_RNDN);
        if (mpfr_get_si(r26082, MPFR_RNDN)) { mpfr_set(r26090, r26087, MPFR_RNDN); } else { mpfr_set(r26090, r26089, MPFR_RNDN); };
        if (mpfr_get_si(r26072, MPFR_RNDN)) { mpfr_set(r26091, r26080, MPFR_RNDN); } else { mpfr_set(r26091, r26090, MPFR_RNDN); };
        if (mpfr_get_si(r26061, MPFR_RNDN)) { mpfr_set(r26092, r26070, MPFR_RNDN); } else { mpfr_set(r26092, r26091, MPFR_RNDN); };
        return mpfr_get_d(r26092, MPFR_RNDN);
}

static mpfr_t r26093, r26094, r26095, r26096, r26097, r26098, r26099, r26100, r26101, r26102, r26103, r26104, r26105, r26106, r26107, r26108, r26109, r26110, r26111, r26112, r26113, r26114, r26115, r26116, r26117, r26118, r26119, r26120, r26121, r26122, r26123, r26124, r26125, r26126;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26093);
        mpfr_init_set_str(r26094, "-9.364913351832592e+42", 10, MPFR_RNDN);
        mpfr_init(r26095);
        mpfr_init(r26096);
        mpfr_init_set_str(r26097, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26098);
        mpfr_init(r26099);
        mpfr_init(r26100);
        mpfr_init(r26101);
        mpfr_init(r26102);
        mpfr_init(r26103);
        mpfr_init(r26104);
        mpfr_init_set_str(r26105, "-4.099879830209986e-284", 10, MPFR_RNDN);
        mpfr_init(r26106);
        mpfr_init(r26107);
        mpfr_init(r26108);
        mpfr_init(r26109);
        mpfr_init(r26110);
        mpfr_init(r26111);
        mpfr_init(r26112);
        mpfr_init(r26113);
        mpfr_init(r26114);
        mpfr_init_set_str(r26115, "5.317885823358275e+67", 10, MPFR_RNDN);
        mpfr_init(r26116);
        mpfr_init(r26117);
        mpfr_init(r26118);
        mpfr_init_set_str(r26119, "1", 10, MPFR_RNDN);
        mpfr_init(r26120);
        mpfr_init(r26121);
        mpfr_init_set_str(r26122, "-2", 10, MPFR_RNDN);
        mpfr_init(r26123);
        mpfr_init(r26124);
        mpfr_init(r26125);
        mpfr_init(r26126);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r26093, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r26095, mpfr_cmp(r26093, r26094) <= 0, MPFR_RNDN);
        mpfr_set_d(r26096, c, MPFR_RNDN);
        ;
        mpfr_mul(r26098, r26097, r26096, MPFR_RNDN);
        mpfr_set_d(r26099, a, MPFR_RNDN);
        mpfr_div(r26100, r26093, r26099, MPFR_RNDN);
        mpfr_div(r26101, r26098, r26100, MPFR_RNDN);
        mpfr_add(r26102, r26093, r26093, MPFR_RNDN);
        mpfr_sub(r26103, r26101, r26102, MPFR_RNDN);
        mpfr_div(r26104, r26096, r26103, MPFR_RNDN);
        ;
        mpfr_set_si(r26106, mpfr_cmp(r26093, r26105) <= 0, MPFR_RNDN);
        mpfr_mul(r26107, r26096, r26099, MPFR_RNDN);
        mpfr_mul(r26108, r26093, r26093, MPFR_RNDN);
        mpfr_mul(r26109, r26099, r26096, MPFR_RNDN);
        mpfr_sub(r26110, r26108, r26109, MPFR_RNDN);
        mpfr_sqrt(r26111, r26110, MPFR_RNDN);
        mpfr_sub(r26112, r26111, r26093, MPFR_RNDN);
        mpfr_div(r26113, r26107, r26112, MPFR_RNDN);
        mpfr_div(r26114, r26113, r26099, MPFR_RNDN);
        ;
        mpfr_set_si(r26116, mpfr_cmp(r26093, r26115) <= 0, MPFR_RNDN);
        mpfr_neg(r26117, r26093, MPFR_RNDN);
        mpfr_sub(r26118, r26117, r26111, MPFR_RNDN);
        ;
        mpfr_div(r26120, r26119, r26099, MPFR_RNDN);
        mpfr_mul(r26121, r26118, r26120, MPFR_RNDN);
        ;
        mpfr_mul(r26123, r26122, r26100, MPFR_RNDN);
        if (mpfr_get_si(r26116, MPFR_RNDN)) { mpfr_set(r26124, r26121, MPFR_RNDN); } else { mpfr_set(r26124, r26123, MPFR_RNDN); };
        if (mpfr_get_si(r26106, MPFR_RNDN)) { mpfr_set(r26125, r26114, MPFR_RNDN); } else { mpfr_set(r26125, r26124, MPFR_RNDN); };
        if (mpfr_get_si(r26095, MPFR_RNDN)) { mpfr_set(r26126, r26104, MPFR_RNDN); } else { mpfr_set(r26126, r26125, MPFR_RNDN); };
        return mpfr_get_d(r26126, MPFR_RNDN);
}

