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

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

double f_if(float a, float b2, float c) {
        float r26966 = b2;
        float r26967 = -r26966;
        float r26968 = r26966 * r26966;
        float r26969 = a;
        float r26970 = c;
        float r26971 = r26969 * r26970;
        float r26972 = r26968 - r26971;
        float r26973 = sqrt(r26972);
        float r26974 = r26967 + r26973;
        float r26975 = r26974 / r26969;
        return r26975;
}

double f_id(double a, double b2, double c) {
        double r26976 = b2;
        double r26977 = -r26976;
        double r26978 = r26976 * r26976;
        double r26979 = a;
        double r26980 = c;
        double r26981 = r26979 * r26980;
        double r26982 = r26978 - r26981;
        double r26983 = sqrt(r26982);
        double r26984 = r26977 + r26983;
        double r26985 = r26984 / r26979;
        return r26985;
}


double f_of(float a, float b2, float c) {
        float r26986 = b2;
        float r26987 = -1.48170602986717e+22f;
        bool r26988 = r26986 <= r26987;
        float r26989 = 0.5f;
        float r26990 = c;
        float r26991 = r26990 / r26986;
        float r26992 = r26989 * r26991;
        float r26993 = 2.0f;
        float r26994 = a;
        float r26995 = r26986 / r26994;
        float r26996 = r26993 * r26995;
        float r26997 = r26992 - r26996;
        float r26998 = 3.5271429953440576e-270f;
        bool r26999 = r26986 <= r26998;
        float r27000 = -r26986;
        float r27001 = r26986 * r26986;
        float r27002 = r26994 * r26990;
        float r27003 = r27001 - r27002;
        float r27004 = sqrt(r27003);
        float r27005 = r27000 + r27004;
        float r27006 = 1.0f;
        float r27007 = r27006 / r26994;
        float r27008 = r27005 * r27007;
        float r27009 = 5.573681450579778e+158f;
        bool r27010 = r26986 <= r27009;
        float r27011 = r26990 * r26994;
        float r27012 = r27000 - r27004;
        float r27013 = r27011 / r27012;
        float r27014 = r27013 / r26994;
        float r27015 = -0.5f;
        float r27016 = r26991 * r27015;
        float r27017 = r27010 ? r27014 : r27016;
        float r27018 = r26999 ? r27008 : r27017;
        float r27019 = r26988 ? r26997 : r27018;
        return r27019;
}

double f_od(double a, double b2, double c) {
        double r27020 = b2;
        double r27021 = -1.48170602986717e+22;
        bool r27022 = r27020 <= r27021;
        double r27023 = 0.5;
        double r27024 = c;
        double r27025 = r27024 / r27020;
        double r27026 = r27023 * r27025;
        double r27027 = 2.0;
        double r27028 = a;
        double r27029 = r27020 / r27028;
        double r27030 = r27027 * r27029;
        double r27031 = r27026 - r27030;
        double r27032 = 3.5271429953440576e-270;
        bool r27033 = r27020 <= r27032;
        double r27034 = -r27020;
        double r27035 = r27020 * r27020;
        double r27036 = r27028 * r27024;
        double r27037 = r27035 - r27036;
        double r27038 = sqrt(r27037);
        double r27039 = r27034 + r27038;
        double r27040 = 1.0;
        double r27041 = r27040 / r27028;
        double r27042 = r27039 * r27041;
        double r27043 = 5.573681450579778e+158;
        bool r27044 = r27020 <= r27043;
        double r27045 = r27024 * r27028;
        double r27046 = r27034 - r27038;
        double r27047 = r27045 / r27046;
        double r27048 = r27047 / r27028;
        double r27049 = -0.5;
        double r27050 = r27025 * r27049;
        double r27051 = r27044 ? r27048 : r27050;
        double r27052 = r27033 ? r27042 : r27051;
        double r27053 = r27022 ? r27031 : r27052;
        return r27053;
}

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 r27054, r27055, r27056, r27057, r27058, r27059, r27060, r27061, r27062, r27063;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r27054);
        mpfr_init(r27055);
        mpfr_init(r27056);
        mpfr_init(r27057);
        mpfr_init(r27058);
        mpfr_init(r27059);
        mpfr_init(r27060);
        mpfr_init(r27061);
        mpfr_init(r27062);
        mpfr_init(r27063);
}

double f_im(double a, double b2, double c) {
        mpfr_set_d(r27054, b2, MPFR_RNDN);
        mpfr_neg(r27055, r27054, MPFR_RNDN);
        mpfr_mul(r27056, r27054, r27054, MPFR_RNDN);
        mpfr_set_d(r27057, a, MPFR_RNDN);
        mpfr_set_d(r27058, c, MPFR_RNDN);
        mpfr_mul(r27059, r27057, r27058, MPFR_RNDN);
        mpfr_sub(r27060, r27056, r27059, MPFR_RNDN);
        mpfr_sqrt(r27061, r27060, MPFR_RNDN);
        mpfr_add(r27062, r27055, r27061, MPFR_RNDN);
        mpfr_div(r27063, r27062, r27057, MPFR_RNDN);
        return mpfr_get_d(r27063, MPFR_RNDN);
}

static mpfr_t r27064, r27065, r27066, r27067, r27068, r27069, r27070, r27071, r27072, r27073, r27074, r27075, r27076, r27077, r27078, r27079, r27080, r27081, r27082, r27083, r27084, r27085, r27086, r27087, r27088, r27089, r27090, r27091, r27092, r27093, r27094, r27095, r27096, r27097;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r27064);
        mpfr_init_set_str(r27065, "-1.48170602986717e+22", 10, MPFR_RNDN);
        mpfr_init(r27066);
        mpfr_init_set_str(r27067, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27068);
        mpfr_init(r27069);
        mpfr_init(r27070);
        mpfr_init_set_str(r27071, "2", 10, MPFR_RNDN);
        mpfr_init(r27072);
        mpfr_init(r27073);
        mpfr_init(r27074);
        mpfr_init(r27075);
        mpfr_init_set_str(r27076, "3.5271429953440576e-270", 10, MPFR_RNDN);
        mpfr_init(r27077);
        mpfr_init(r27078);
        mpfr_init(r27079);
        mpfr_init(r27080);
        mpfr_init(r27081);
        mpfr_init(r27082);
        mpfr_init(r27083);
        mpfr_init_set_str(r27084, "1", 10, MPFR_RNDN);
        mpfr_init(r27085);
        mpfr_init(r27086);
        mpfr_init_set_str(r27087, "5.573681450579778e+158", 10, MPFR_RNDN);
        mpfr_init(r27088);
        mpfr_init(r27089);
        mpfr_init(r27090);
        mpfr_init(r27091);
        mpfr_init(r27092);
        mpfr_init_set_str(r27093, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r27094);
        mpfr_init(r27095);
        mpfr_init(r27096);
        mpfr_init(r27097);
}

double f_fm(double a, double b2, double c) {
        mpfr_set_d(r27064, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r27066, mpfr_cmp(r27064, r27065) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27068, c, MPFR_RNDN);
        mpfr_div(r27069, r27068, r27064, MPFR_RNDN);
        mpfr_mul(r27070, r27067, r27069, MPFR_RNDN);
        ;
        mpfr_set_d(r27072, a, MPFR_RNDN);
        mpfr_div(r27073, r27064, r27072, MPFR_RNDN);
        mpfr_mul(r27074, r27071, r27073, MPFR_RNDN);
        mpfr_sub(r27075, r27070, r27074, MPFR_RNDN);
        ;
        mpfr_set_si(r27077, mpfr_cmp(r27064, r27076) <= 0, MPFR_RNDN);
        mpfr_neg(r27078, r27064, MPFR_RNDN);
        mpfr_mul(r27079, r27064, r27064, MPFR_RNDN);
        mpfr_mul(r27080, r27072, r27068, MPFR_RNDN);
        mpfr_sub(r27081, r27079, r27080, MPFR_RNDN);
        mpfr_sqrt(r27082, r27081, MPFR_RNDN);
        mpfr_add(r27083, r27078, r27082, MPFR_RNDN);
        ;
        mpfr_div(r27085, r27084, r27072, MPFR_RNDN);
        mpfr_mul(r27086, r27083, r27085, MPFR_RNDN);
        ;
        mpfr_set_si(r27088, mpfr_cmp(r27064, r27087) <= 0, MPFR_RNDN);
        mpfr_mul(r27089, r27068, r27072, MPFR_RNDN);
        mpfr_sub(r27090, r27078, r27082, MPFR_RNDN);
        mpfr_div(r27091, r27089, r27090, MPFR_RNDN);
        mpfr_div(r27092, r27091, r27072, MPFR_RNDN);
        ;
        mpfr_mul(r27094, r27069, r27093, MPFR_RNDN);
        if (mpfr_get_si(r27088, MPFR_RNDN)) { mpfr_set(r27095, r27092, MPFR_RNDN); } else { mpfr_set(r27095, r27094, MPFR_RNDN); };
        if (mpfr_get_si(r27077, MPFR_RNDN)) { mpfr_set(r27096, r27086, MPFR_RNDN); } else { mpfr_set(r27096, r27095, MPFR_RNDN); };
        if (mpfr_get_si(r27066, MPFR_RNDN)) { mpfr_set(r27097, r27075, MPFR_RNDN); } else { mpfr_set(r27097, r27096, MPFR_RNDN); };
        return mpfr_get_d(r27097, MPFR_RNDN);
}

static mpfr_t r27098, r27099, r27100, r27101, r27102, r27103, r27104, r27105, r27106, r27107, r27108, r27109, r27110, r27111, r27112, r27113, r27114, r27115, r27116, r27117, r27118, r27119, r27120, r27121, r27122, r27123, r27124, r27125, r27126, r27127, r27128, r27129, r27130, r27131;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r27098);
        mpfr_init_set_str(r27099, "-1.48170602986717e+22", 10, MPFR_RNDN);
        mpfr_init(r27100);
        mpfr_init_set_str(r27101, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27102);
        mpfr_init(r27103);
        mpfr_init(r27104);
        mpfr_init_set_str(r27105, "2", 10, MPFR_RNDN);
        mpfr_init(r27106);
        mpfr_init(r27107);
        mpfr_init(r27108);
        mpfr_init(r27109);
        mpfr_init_set_str(r27110, "3.5271429953440576e-270", 10, MPFR_RNDN);
        mpfr_init(r27111);
        mpfr_init(r27112);
        mpfr_init(r27113);
        mpfr_init(r27114);
        mpfr_init(r27115);
        mpfr_init(r27116);
        mpfr_init(r27117);
        mpfr_init_set_str(r27118, "1", 10, MPFR_RNDN);
        mpfr_init(r27119);
        mpfr_init(r27120);
        mpfr_init_set_str(r27121, "5.573681450579778e+158", 10, MPFR_RNDN);
        mpfr_init(r27122);
        mpfr_init(r27123);
        mpfr_init(r27124);
        mpfr_init(r27125);
        mpfr_init(r27126);
        mpfr_init_set_str(r27127, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r27128);
        mpfr_init(r27129);
        mpfr_init(r27130);
        mpfr_init(r27131);
}

double f_dm(double a, double b2, double c) {
        mpfr_set_d(r27098, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r27100, mpfr_cmp(r27098, r27099) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27102, c, MPFR_RNDN);
        mpfr_div(r27103, r27102, r27098, MPFR_RNDN);
        mpfr_mul(r27104, r27101, r27103, MPFR_RNDN);
        ;
        mpfr_set_d(r27106, a, MPFR_RNDN);
        mpfr_div(r27107, r27098, r27106, MPFR_RNDN);
        mpfr_mul(r27108, r27105, r27107, MPFR_RNDN);
        mpfr_sub(r27109, r27104, r27108, MPFR_RNDN);
        ;
        mpfr_set_si(r27111, mpfr_cmp(r27098, r27110) <= 0, MPFR_RNDN);
        mpfr_neg(r27112, r27098, MPFR_RNDN);
        mpfr_mul(r27113, r27098, r27098, MPFR_RNDN);
        mpfr_mul(r27114, r27106, r27102, MPFR_RNDN);
        mpfr_sub(r27115, r27113, r27114, MPFR_RNDN);
        mpfr_sqrt(r27116, r27115, MPFR_RNDN);
        mpfr_add(r27117, r27112, r27116, MPFR_RNDN);
        ;
        mpfr_div(r27119, r27118, r27106, MPFR_RNDN);
        mpfr_mul(r27120, r27117, r27119, MPFR_RNDN);
        ;
        mpfr_set_si(r27122, mpfr_cmp(r27098, r27121) <= 0, MPFR_RNDN);
        mpfr_mul(r27123, r27102, r27106, MPFR_RNDN);
        mpfr_sub(r27124, r27112, r27116, MPFR_RNDN);
        mpfr_div(r27125, r27123, r27124, MPFR_RNDN);
        mpfr_div(r27126, r27125, r27106, MPFR_RNDN);
        ;
        mpfr_mul(r27128, r27103, r27127, MPFR_RNDN);
        if (mpfr_get_si(r27122, MPFR_RNDN)) { mpfr_set(r27129, r27126, MPFR_RNDN); } else { mpfr_set(r27129, r27128, MPFR_RNDN); };
        if (mpfr_get_si(r27111, MPFR_RNDN)) { mpfr_set(r27130, r27120, MPFR_RNDN); } else { mpfr_set(r27130, r27129, MPFR_RNDN); };
        if (mpfr_get_si(r27100, MPFR_RNDN)) { mpfr_set(r27131, r27109, MPFR_RNDN); } else { mpfr_set(r27131, r27130, MPFR_RNDN); };
        return mpfr_get_d(r27131, MPFR_RNDN);
}

