#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 b_2F2, float c) {
        float r5319170 = b_2F2;
        float r5319171 = -r5319170;
        float r5319172 = r5319170 * r5319170;
        float r5319173 = a;
        float r5319174 = c;
        float r5319175 = r5319173 * r5319174;
        float r5319176 = r5319172 - r5319175;
        float r5319177 = sqrt(r5319176);
        float r5319178 = r5319171 - r5319177;
        float r5319179 = r5319178 / r5319173;
        return r5319179;
}

double f_id(double a, double b_2F2, double c) {
        double r5319180 = b_2F2;
        double r5319181 = -r5319180;
        double r5319182 = r5319180 * r5319180;
        double r5319183 = a;
        double r5319184 = c;
        double r5319185 = r5319183 * r5319184;
        double r5319186 = r5319182 - r5319185;
        double r5319187 = sqrt(r5319186);
        double r5319188 = r5319181 - r5319187;
        double r5319189 = r5319188 / r5319183;
        return r5319189;
}


double f_of(float a, float b_2F2, float c) {
        float r5319190 = b_2F2;
        float r5319191 = -1.8998412403685708e+84f;
        bool r5319192 = r5319190 <= r5319191;
        float r5319193 = c;
        float r5319194 = 0.5f;
        float r5319195 = r5319193 * r5319194;
        float r5319196 = a;
        float r5319197 = r5319196 / r5319190;
        float r5319198 = r5319195 * r5319197;
        float r5319199 = -r5319190;
        float r5319200 = r5319190 - r5319199;
        float r5319201 = r5319198 - r5319200;
        float r5319202 = r5319193 / r5319201;
        float r5319203 = -1.713213751714826e-168f;
        bool r5319204 = r5319190 <= r5319203;
        float r5319205 = r5319190 * r5319190;
        float r5319206 = r5319193 * r5319196;
        float r5319207 = r5319205 - r5319206;
        float r5319208 = sqrt(r5319207);
        float r5319209 = r5319208 + r5319199;
        float r5319210 = r5319193 / r5319209;
        float r5319211 = cbrt(r5319210);
        float r5319212 = r5319211 * (r5319211 * r5319211);
        float r5319213 = 1.4221487181389516e+74f;
        bool r5319214 = r5319190 <= r5319213;
        float r5319215 = r5319196 * r5319193;
        float r5319216 = r5319205 - r5319215;
        float r5319217 = sqrt(r5319216);
        float r5319218 = r5319199 - r5319217;
        float r5319219 = r5319218 / r5319196;
        float r5319220 = r5319194 / r5319190;
        float r5319221 = r5319220 * r5319193;
        float r5319222 = 2.0f;
        float r5319223 = r5319190 / r5319196;
        float r5319224 = r5319222 * r5319223;
        float r5319225 = r5319221 - r5319224;
        float r5319226 = r5319214 ? r5319219 : r5319225;
        float r5319227 = r5319204 ? r5319212 : r5319226;
        float r5319228 = r5319192 ? r5319202 : r5319227;
        return r5319228;
}

double f_od(double a, double b_2F2, double c) {
        double r5319229 = b_2F2;
        double r5319230 = -1.8998412403685708e+84;
        bool r5319231 = r5319229 <= r5319230;
        double r5319232 = c;
        double r5319233 = 0.5;
        double r5319234 = r5319232 * r5319233;
        double r5319235 = a;
        double r5319236 = r5319235 / r5319229;
        double r5319237 = r5319234 * r5319236;
        double r5319238 = -r5319229;
        double r5319239 = r5319229 - r5319238;
        double r5319240 = r5319237 - r5319239;
        double r5319241 = r5319232 / r5319240;
        double r5319242 = -1.713213751714826e-168;
        bool r5319243 = r5319229 <= r5319242;
        double r5319244 = r5319229 * r5319229;
        double r5319245 = r5319232 * r5319235;
        double r5319246 = r5319244 - r5319245;
        double r5319247 = sqrt(r5319246);
        double r5319248 = r5319247 + r5319238;
        double r5319249 = r5319232 / r5319248;
        double r5319250 = cbrt(r5319249);
        double r5319251 = r5319250 * (r5319250 * r5319250);
        double r5319252 = 1.4221487181389516e+74;
        bool r5319253 = r5319229 <= r5319252;
        double r5319254 = r5319235 * r5319232;
        double r5319255 = r5319244 - r5319254;
        double r5319256 = sqrt(r5319255);
        double r5319257 = r5319238 - r5319256;
        double r5319258 = r5319257 / r5319235;
        double r5319259 = r5319233 / r5319229;
        double r5319260 = r5319259 * r5319232;
        double r5319261 = 2.0;
        double r5319262 = r5319229 / r5319235;
        double r5319263 = r5319261 * r5319262;
        double r5319264 = r5319260 - r5319263;
        double r5319265 = r5319253 ? r5319258 : r5319264;
        double r5319266 = r5319243 ? r5319251 : r5319265;
        double r5319267 = r5319231 ? r5319241 : r5319266;
        return r5319267;
}

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 r5319268, r5319269, r5319270, r5319271, r5319272, r5319273, r5319274, r5319275, r5319276, r5319277;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319268);
        mpfr_init(r5319269);
        mpfr_init(r5319270);
        mpfr_init(r5319271);
        mpfr_init(r5319272);
        mpfr_init(r5319273);
        mpfr_init(r5319274);
        mpfr_init(r5319275);
        mpfr_init(r5319276);
        mpfr_init(r5319277);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r5319268, b_2F2, MPFR_RNDN);
        mpfr_neg(r5319269, r5319268, MPFR_RNDN);
        mpfr_sqr(r5319270, r5319268, MPFR_RNDN);
        mpfr_set_d(r5319271, a, MPFR_RNDN);
        mpfr_set_d(r5319272, c, MPFR_RNDN);
        mpfr_mul(r5319273, r5319271, r5319272, MPFR_RNDN);
        mpfr_sub(r5319274, r5319270, r5319273, MPFR_RNDN);
        mpfr_sqrt(r5319275, r5319274, MPFR_RNDN);
        mpfr_sub(r5319276, r5319269, r5319275, MPFR_RNDN);
        mpfr_div(r5319277, r5319276, r5319271, MPFR_RNDN);
        return mpfr_get_d(r5319277, MPFR_RNDN);
}

static mpfr_t r5319278, r5319279, r5319280, r5319281, r5319282, r5319283, r5319284, r5319285, r5319286, r5319287, r5319288, r5319289, r5319290, r5319291, r5319292, r5319293, r5319294, r5319295, r5319296, r5319297, r5319298, r5319299, r5319300, r5319301, r5319302, r5319303, r5319304, r5319305, r5319306, r5319307, r5319308, r5319309, r5319310, r5319311, r5319312, r5319313, r5319314, r5319315, r5319316;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319278);
        mpfr_init_set_str(r5319279, "-1.8998412403685708e+84", 10, MPFR_RNDN);
        mpfr_init(r5319280);
        mpfr_init(r5319281);
        mpfr_init_set_str(r5319282, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5319283);
        mpfr_init(r5319284);
        mpfr_init(r5319285);
        mpfr_init(r5319286);
        mpfr_init(r5319287);
        mpfr_init(r5319288);
        mpfr_init(r5319289);
        mpfr_init(r5319290);
        mpfr_init_set_str(r5319291, "-1.713213751714826e-168", 10, MPFR_RNDN);
        mpfr_init(r5319292);
        mpfr_init(r5319293);
        mpfr_init(r5319294);
        mpfr_init(r5319295);
        mpfr_init(r5319296);
        mpfr_init(r5319297);
        mpfr_init(r5319298);
        mpfr_init(r5319299);
        mpfr_init(r5319300);
        mpfr_init_set_str(r5319301, "1.4221487181389516e+74", 10, MPFR_RNDN);
        mpfr_init(r5319302);
        mpfr_init(r5319303);
        mpfr_init(r5319304);
        mpfr_init(r5319305);
        mpfr_init(r5319306);
        mpfr_init(r5319307);
        mpfr_init(r5319308);
        mpfr_init(r5319309);
        mpfr_init_set_str(r5319310, "2", 10, MPFR_RNDN);
        mpfr_init(r5319311);
        mpfr_init(r5319312);
        mpfr_init(r5319313);
        mpfr_init(r5319314);
        mpfr_init(r5319315);
        mpfr_init(r5319316);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r5319278, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r5319280, mpfr_cmp(r5319278, r5319279) <= 0, MPFR_RNDN);
        mpfr_set_d(r5319281, c, MPFR_RNDN);
        ;
        mpfr_mul(r5319283, r5319281, r5319282, MPFR_RNDN);
        mpfr_set_d(r5319284, a, MPFR_RNDN);
        mpfr_div(r5319285, r5319284, r5319278, MPFR_RNDN);
        mpfr_mul(r5319286, r5319283, r5319285, MPFR_RNDN);
        mpfr_neg(r5319287, r5319278, MPFR_RNDN);
        mpfr_sub(r5319288, r5319278, r5319287, MPFR_RNDN);
        mpfr_sub(r5319289, r5319286, r5319288, MPFR_RNDN);
        mpfr_div(r5319290, r5319281, r5319289, MPFR_RNDN);
        ;
        mpfr_set_si(r5319292, mpfr_cmp(r5319278, r5319291) <= 0, MPFR_RNDN);
        mpfr_sqr(r5319293, r5319278, MPFR_RNDN);
        mpfr_mul(r5319294, r5319281, r5319284, MPFR_RNDN);
        mpfr_sub(r5319295, r5319293, r5319294, MPFR_RNDN);
        mpfr_sqrt(r5319296, r5319295, MPFR_RNDN);
        mpfr_add(r5319297, r5319296, r5319287, MPFR_RNDN);
        mpfr_div(r5319298, r5319281, r5319297, MPFR_RNDN);
        mpfr_cbrt(r5319299, r5319298, MPFR_RNDN);
        mpfr_mul(r5319300, r5319299, r5319299, MPFR_RNDN); mpfr_mul(r5319300, r5319300, r5319299, MPFR_RNDN);
        ;
        mpfr_set_si(r5319302, mpfr_cmp(r5319278, r5319301) <= 0, MPFR_RNDN);
        mpfr_mul(r5319303, r5319284, r5319281, MPFR_RNDN);
        mpfr_sub(r5319304, r5319293, r5319303, MPFR_RNDN);
        mpfr_sqrt(r5319305, r5319304, MPFR_RNDN);
        mpfr_sub(r5319306, r5319287, r5319305, MPFR_RNDN);
        mpfr_div(r5319307, r5319306, r5319284, MPFR_RNDN);
        mpfr_div(r5319308, r5319282, r5319278, MPFR_RNDN);
        mpfr_mul(r5319309, r5319308, r5319281, MPFR_RNDN);
        ;
        mpfr_div(r5319311, r5319278, r5319284, MPFR_RNDN);
        mpfr_mul(r5319312, r5319310, r5319311, MPFR_RNDN);
        mpfr_sub(r5319313, r5319309, r5319312, MPFR_RNDN);
        if (mpfr_get_si(r5319302, MPFR_RNDN)) { mpfr_set(r5319314, r5319307, MPFR_RNDN); } else { mpfr_set(r5319314, r5319313, MPFR_RNDN); };
        if (mpfr_get_si(r5319292, MPFR_RNDN)) { mpfr_set(r5319315, r5319300, MPFR_RNDN); } else { mpfr_set(r5319315, r5319314, MPFR_RNDN); };
        if (mpfr_get_si(r5319280, MPFR_RNDN)) { mpfr_set(r5319316, r5319290, MPFR_RNDN); } else { mpfr_set(r5319316, r5319315, MPFR_RNDN); };
        return mpfr_get_d(r5319316, MPFR_RNDN);
}

static mpfr_t r5319317, r5319318, r5319319, r5319320, r5319321, r5319322, r5319323, r5319324, r5319325, r5319326, r5319327, r5319328, r5319329, r5319330, r5319331, r5319332, r5319333, r5319334, r5319335, r5319336, r5319337, r5319338, r5319339, r5319340, r5319341, r5319342, r5319343, r5319344, r5319345, r5319346, r5319347, r5319348, r5319349, r5319350, r5319351, r5319352, r5319353, r5319354, r5319355;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319317);
        mpfr_init_set_str(r5319318, "-1.8998412403685708e+84", 10, MPFR_RNDN);
        mpfr_init(r5319319);
        mpfr_init(r5319320);
        mpfr_init_set_str(r5319321, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5319322);
        mpfr_init(r5319323);
        mpfr_init(r5319324);
        mpfr_init(r5319325);
        mpfr_init(r5319326);
        mpfr_init(r5319327);
        mpfr_init(r5319328);
        mpfr_init(r5319329);
        mpfr_init_set_str(r5319330, "-1.713213751714826e-168", 10, MPFR_RNDN);
        mpfr_init(r5319331);
        mpfr_init(r5319332);
        mpfr_init(r5319333);
        mpfr_init(r5319334);
        mpfr_init(r5319335);
        mpfr_init(r5319336);
        mpfr_init(r5319337);
        mpfr_init(r5319338);
        mpfr_init(r5319339);
        mpfr_init_set_str(r5319340, "1.4221487181389516e+74", 10, MPFR_RNDN);
        mpfr_init(r5319341);
        mpfr_init(r5319342);
        mpfr_init(r5319343);
        mpfr_init(r5319344);
        mpfr_init(r5319345);
        mpfr_init(r5319346);
        mpfr_init(r5319347);
        mpfr_init(r5319348);
        mpfr_init_set_str(r5319349, "2", 10, MPFR_RNDN);
        mpfr_init(r5319350);
        mpfr_init(r5319351);
        mpfr_init(r5319352);
        mpfr_init(r5319353);
        mpfr_init(r5319354);
        mpfr_init(r5319355);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r5319317, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r5319319, mpfr_cmp(r5319317, r5319318) <= 0, MPFR_RNDN);
        mpfr_set_d(r5319320, c, MPFR_RNDN);
        ;
        mpfr_mul(r5319322, r5319320, r5319321, MPFR_RNDN);
        mpfr_set_d(r5319323, a, MPFR_RNDN);
        mpfr_div(r5319324, r5319323, r5319317, MPFR_RNDN);
        mpfr_mul(r5319325, r5319322, r5319324, MPFR_RNDN);
        mpfr_neg(r5319326, r5319317, MPFR_RNDN);
        mpfr_sub(r5319327, r5319317, r5319326, MPFR_RNDN);
        mpfr_sub(r5319328, r5319325, r5319327, MPFR_RNDN);
        mpfr_div(r5319329, r5319320, r5319328, MPFR_RNDN);
        ;
        mpfr_set_si(r5319331, mpfr_cmp(r5319317, r5319330) <= 0, MPFR_RNDN);
        mpfr_sqr(r5319332, r5319317, MPFR_RNDN);
        mpfr_mul(r5319333, r5319320, r5319323, MPFR_RNDN);
        mpfr_sub(r5319334, r5319332, r5319333, MPFR_RNDN);
        mpfr_sqrt(r5319335, r5319334, MPFR_RNDN);
        mpfr_add(r5319336, r5319335, r5319326, MPFR_RNDN);
        mpfr_div(r5319337, r5319320, r5319336, MPFR_RNDN);
        mpfr_cbrt(r5319338, r5319337, MPFR_RNDN);
        mpfr_mul(r5319339, r5319338, r5319338, MPFR_RNDN); mpfr_mul(r5319339, r5319339, r5319338, MPFR_RNDN);
        ;
        mpfr_set_si(r5319341, mpfr_cmp(r5319317, r5319340) <= 0, MPFR_RNDN);
        mpfr_mul(r5319342, r5319323, r5319320, MPFR_RNDN);
        mpfr_sub(r5319343, r5319332, r5319342, MPFR_RNDN);
        mpfr_sqrt(r5319344, r5319343, MPFR_RNDN);
        mpfr_sub(r5319345, r5319326, r5319344, MPFR_RNDN);
        mpfr_div(r5319346, r5319345, r5319323, MPFR_RNDN);
        mpfr_div(r5319347, r5319321, r5319317, MPFR_RNDN);
        mpfr_mul(r5319348, r5319347, r5319320, MPFR_RNDN);
        ;
        mpfr_div(r5319350, r5319317, r5319323, MPFR_RNDN);
        mpfr_mul(r5319351, r5319349, r5319350, MPFR_RNDN);
        mpfr_sub(r5319352, r5319348, r5319351, MPFR_RNDN);
        if (mpfr_get_si(r5319341, MPFR_RNDN)) { mpfr_set(r5319353, r5319346, MPFR_RNDN); } else { mpfr_set(r5319353, r5319352, MPFR_RNDN); };
        if (mpfr_get_si(r5319331, MPFR_RNDN)) { mpfr_set(r5319354, r5319339, MPFR_RNDN); } else { mpfr_set(r5319354, r5319353, MPFR_RNDN); };
        if (mpfr_get_si(r5319319, MPFR_RNDN)) { mpfr_set(r5319355, r5319329, MPFR_RNDN); } else { mpfr_set(r5319355, r5319354, MPFR_RNDN); };
        return mpfr_get_d(r5319355, MPFR_RNDN);
}

