#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 b_2F2, float c) {
        float r4618243 = b_2F2;
        float r4618244 = -r4618243;
        float r4618245 = r4618243 * r4618243;
        float r4618246 = a;
        float r4618247 = c;
        float r4618248 = r4618246 * r4618247;
        float r4618249 = r4618245 - r4618248;
        float r4618250 = sqrt(r4618249);
        float r4618251 = r4618244 + r4618250;
        float r4618252 = r4618251 / r4618246;
        return r4618252;
}

double f_id(double a, double b_2F2, double c) {
        double r4618253 = b_2F2;
        double r4618254 = -r4618253;
        double r4618255 = r4618253 * r4618253;
        double r4618256 = a;
        double r4618257 = c;
        double r4618258 = r4618256 * r4618257;
        double r4618259 = r4618255 - r4618258;
        double r4618260 = sqrt(r4618259);
        double r4618261 = r4618254 + r4618260;
        double r4618262 = r4618261 / r4618256;
        return r4618262;
}


double f_of(float a, float b_2F2, float c) {
        float r4618263 = b_2F2;
        float r4618264 = -1.7321058520772784e+67f;
        bool r4618265 = r4618263 <= r4618264;
        float r4618266 = -2.0f;
        float r4618267 = a;
        float r4618268 = r4618263 / r4618267;
        float r4618269 = r4618266 * r4618268;
        float r4618270 = 1.922375846709798e-232f;
        bool r4618271 = r4618263 <= r4618270;
        float r4618272 = -r4618263;
        float r4618273 = r4618263 * r4618263;
        float r4618274 = c;
        float r4618275 = r4618267 * r4618274;
        float r4618276 = r4618273 - r4618275;
        float r4618277 = sqrt(r4618276);
        float r4618278 = r4618272 + r4618277;
        float r4618279 = 1.0f;
        float r4618280 = r4618279 / r4618267;
        float r4618281 = r4618278 * r4618280;
        float r4618282 = 1438490.0801097094f;
        bool r4618283 = r4618263 <= r4618282;
        float r4618284 = r4618272 - r4618277;
        float r4618285 = r4618275 / r4618284;
        float r4618286 = r4618285 * r4618280;
        float r4618287 = r4618272 - r4618263;
        float r4618288 = 0.5f;
        float r4618289 = r4618274 * r4618288;
        float r4618290 = r4618289 / r4618268;
        float r4618291 = r4618287 + r4618290;
        float r4618292 = r4618274 / r4618291;
        float r4618293 = r4618283 ? r4618286 : r4618292;
        float r4618294 = r4618271 ? r4618281 : r4618293;
        float r4618295 = r4618265 ? r4618269 : r4618294;
        return r4618295;
}

double f_od(double a, double b_2F2, double c) {
        double r4618296 = b_2F2;
        double r4618297 = -1.7321058520772784e+67;
        bool r4618298 = r4618296 <= r4618297;
        double r4618299 = -2.0;
        double r4618300 = a;
        double r4618301 = r4618296 / r4618300;
        double r4618302 = r4618299 * r4618301;
        double r4618303 = 1.922375846709798e-232;
        bool r4618304 = r4618296 <= r4618303;
        double r4618305 = -r4618296;
        double r4618306 = r4618296 * r4618296;
        double r4618307 = c;
        double r4618308 = r4618300 * r4618307;
        double r4618309 = r4618306 - r4618308;
        double r4618310 = sqrt(r4618309);
        double r4618311 = r4618305 + r4618310;
        double r4618312 = 1.0;
        double r4618313 = r4618312 / r4618300;
        double r4618314 = r4618311 * r4618313;
        double r4618315 = 1438490.0801097094;
        bool r4618316 = r4618296 <= r4618315;
        double r4618317 = r4618305 - r4618310;
        double r4618318 = r4618308 / r4618317;
        double r4618319 = r4618318 * r4618313;
        double r4618320 = r4618305 - r4618296;
        double r4618321 = 0.5;
        double r4618322 = r4618307 * r4618321;
        double r4618323 = r4618322 / r4618301;
        double r4618324 = r4618320 + r4618323;
        double r4618325 = r4618307 / r4618324;
        double r4618326 = r4618316 ? r4618319 : r4618325;
        double r4618327 = r4618304 ? r4618314 : r4618326;
        double r4618328 = r4618298 ? r4618302 : r4618327;
        return r4618328;
}

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 r4618329, r4618330, r4618331, r4618332, r4618333, r4618334, r4618335, r4618336, r4618337, r4618338;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4618329);
        mpfr_init(r4618330);
        mpfr_init(r4618331);
        mpfr_init(r4618332);
        mpfr_init(r4618333);
        mpfr_init(r4618334);
        mpfr_init(r4618335);
        mpfr_init(r4618336);
        mpfr_init(r4618337);
        mpfr_init(r4618338);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r4618329, b_2F2, MPFR_RNDN);
        mpfr_neg(r4618330, r4618329, MPFR_RNDN);
        mpfr_sqr(r4618331, r4618329, MPFR_RNDN);
        mpfr_set_d(r4618332, a, MPFR_RNDN);
        mpfr_set_d(r4618333, c, MPFR_RNDN);
        mpfr_mul(r4618334, r4618332, r4618333, MPFR_RNDN);
        mpfr_sub(r4618335, r4618331, r4618334, MPFR_RNDN);
        mpfr_sqrt(r4618336, r4618335, MPFR_RNDN);
        mpfr_add(r4618337, r4618330, r4618336, MPFR_RNDN);
        mpfr_div(r4618338, r4618337, r4618332, MPFR_RNDN);
        return mpfr_get_d(r4618338, MPFR_RNDN);
}

static mpfr_t r4618339, r4618340, r4618341, r4618342, r4618343, r4618344, r4618345, r4618346, r4618347, r4618348, r4618349, r4618350, r4618351, r4618352, r4618353, r4618354, r4618355, r4618356, r4618357, r4618358, r4618359, r4618360, r4618361, r4618362, r4618363, r4618364, r4618365, r4618366, r4618367, r4618368, r4618369, r4618370, r4618371;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4618339);
        mpfr_init_set_str(r4618340, "-1.7321058520772784e+67", 10, MPFR_RNDN);
        mpfr_init(r4618341);
        mpfr_init_set_str(r4618342, "-2", 10, MPFR_RNDN);
        mpfr_init(r4618343);
        mpfr_init(r4618344);
        mpfr_init(r4618345);
        mpfr_init_set_str(r4618346, "1.922375846709798e-232", 10, MPFR_RNDN);
        mpfr_init(r4618347);
        mpfr_init(r4618348);
        mpfr_init(r4618349);
        mpfr_init(r4618350);
        mpfr_init(r4618351);
        mpfr_init(r4618352);
        mpfr_init(r4618353);
        mpfr_init(r4618354);
        mpfr_init_set_str(r4618355, "1", 10, MPFR_RNDN);
        mpfr_init(r4618356);
        mpfr_init(r4618357);
        mpfr_init_set_str(r4618358, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4618359);
        mpfr_init(r4618360);
        mpfr_init(r4618361);
        mpfr_init(r4618362);
        mpfr_init(r4618363);
        mpfr_init_set_str(r4618364, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4618365);
        mpfr_init(r4618366);
        mpfr_init(r4618367);
        mpfr_init(r4618368);
        mpfr_init(r4618369);
        mpfr_init(r4618370);
        mpfr_init(r4618371);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r4618339, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r4618341, mpfr_cmp(r4618339, r4618340) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4618343, a, MPFR_RNDN);
        mpfr_div(r4618344, r4618339, r4618343, MPFR_RNDN);
        mpfr_mul(r4618345, r4618342, r4618344, MPFR_RNDN);
        ;
        mpfr_set_si(r4618347, mpfr_cmp(r4618339, r4618346) <= 0, MPFR_RNDN);
        mpfr_neg(r4618348, r4618339, MPFR_RNDN);
        mpfr_sqr(r4618349, r4618339, MPFR_RNDN);
        mpfr_set_d(r4618350, c, MPFR_RNDN);
        mpfr_mul(r4618351, r4618343, r4618350, MPFR_RNDN);
        mpfr_sub(r4618352, r4618349, r4618351, MPFR_RNDN);
        mpfr_sqrt(r4618353, r4618352, MPFR_RNDN);
        mpfr_add(r4618354, r4618348, r4618353, MPFR_RNDN);
        ;
        mpfr_div(r4618356, r4618355, r4618343, MPFR_RNDN);
        mpfr_mul(r4618357, r4618354, r4618356, MPFR_RNDN);
        ;
        mpfr_set_si(r4618359, mpfr_cmp(r4618339, r4618358) <= 0, MPFR_RNDN);
        mpfr_sub(r4618360, r4618348, r4618353, MPFR_RNDN);
        mpfr_div(r4618361, r4618351, r4618360, MPFR_RNDN);
        mpfr_mul(r4618362, r4618361, r4618356, MPFR_RNDN);
        mpfr_sub(r4618363, r4618348, r4618339, MPFR_RNDN);
        ;
        mpfr_mul(r4618365, r4618350, r4618364, MPFR_RNDN);
        mpfr_div(r4618366, r4618365, r4618344, MPFR_RNDN);
        mpfr_add(r4618367, r4618363, r4618366, MPFR_RNDN);
        mpfr_div(r4618368, r4618350, r4618367, MPFR_RNDN);
        if (mpfr_get_si(r4618359, MPFR_RNDN)) { mpfr_set(r4618369, r4618362, MPFR_RNDN); } else { mpfr_set(r4618369, r4618368, MPFR_RNDN); };
        if (mpfr_get_si(r4618347, MPFR_RNDN)) { mpfr_set(r4618370, r4618357, MPFR_RNDN); } else { mpfr_set(r4618370, r4618369, MPFR_RNDN); };
        if (mpfr_get_si(r4618341, MPFR_RNDN)) { mpfr_set(r4618371, r4618345, MPFR_RNDN); } else { mpfr_set(r4618371, r4618370, MPFR_RNDN); };
        return mpfr_get_d(r4618371, MPFR_RNDN);
}

static mpfr_t r4618372, r4618373, r4618374, r4618375, r4618376, r4618377, r4618378, r4618379, r4618380, r4618381, r4618382, r4618383, r4618384, r4618385, r4618386, r4618387, r4618388, r4618389, r4618390, r4618391, r4618392, r4618393, r4618394, r4618395, r4618396, r4618397, r4618398, r4618399, r4618400, r4618401, r4618402, r4618403, r4618404;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4618372);
        mpfr_init_set_str(r4618373, "-1.7321058520772784e+67", 10, MPFR_RNDN);
        mpfr_init(r4618374);
        mpfr_init_set_str(r4618375, "-2", 10, MPFR_RNDN);
        mpfr_init(r4618376);
        mpfr_init(r4618377);
        mpfr_init(r4618378);
        mpfr_init_set_str(r4618379, "1.922375846709798e-232", 10, MPFR_RNDN);
        mpfr_init(r4618380);
        mpfr_init(r4618381);
        mpfr_init(r4618382);
        mpfr_init(r4618383);
        mpfr_init(r4618384);
        mpfr_init(r4618385);
        mpfr_init(r4618386);
        mpfr_init(r4618387);
        mpfr_init_set_str(r4618388, "1", 10, MPFR_RNDN);
        mpfr_init(r4618389);
        mpfr_init(r4618390);
        mpfr_init_set_str(r4618391, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4618392);
        mpfr_init(r4618393);
        mpfr_init(r4618394);
        mpfr_init(r4618395);
        mpfr_init(r4618396);
        mpfr_init_set_str(r4618397, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4618398);
        mpfr_init(r4618399);
        mpfr_init(r4618400);
        mpfr_init(r4618401);
        mpfr_init(r4618402);
        mpfr_init(r4618403);
        mpfr_init(r4618404);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r4618372, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r4618374, mpfr_cmp(r4618372, r4618373) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4618376, a, MPFR_RNDN);
        mpfr_div(r4618377, r4618372, r4618376, MPFR_RNDN);
        mpfr_mul(r4618378, r4618375, r4618377, MPFR_RNDN);
        ;
        mpfr_set_si(r4618380, mpfr_cmp(r4618372, r4618379) <= 0, MPFR_RNDN);
        mpfr_neg(r4618381, r4618372, MPFR_RNDN);
        mpfr_sqr(r4618382, r4618372, MPFR_RNDN);
        mpfr_set_d(r4618383, c, MPFR_RNDN);
        mpfr_mul(r4618384, r4618376, r4618383, MPFR_RNDN);
        mpfr_sub(r4618385, r4618382, r4618384, MPFR_RNDN);
        mpfr_sqrt(r4618386, r4618385, MPFR_RNDN);
        mpfr_add(r4618387, r4618381, r4618386, MPFR_RNDN);
        ;
        mpfr_div(r4618389, r4618388, r4618376, MPFR_RNDN);
        mpfr_mul(r4618390, r4618387, r4618389, MPFR_RNDN);
        ;
        mpfr_set_si(r4618392, mpfr_cmp(r4618372, r4618391) <= 0, MPFR_RNDN);
        mpfr_sub(r4618393, r4618381, r4618386, MPFR_RNDN);
        mpfr_div(r4618394, r4618384, r4618393, MPFR_RNDN);
        mpfr_mul(r4618395, r4618394, r4618389, MPFR_RNDN);
        mpfr_sub(r4618396, r4618381, r4618372, MPFR_RNDN);
        ;
        mpfr_mul(r4618398, r4618383, r4618397, MPFR_RNDN);
        mpfr_div(r4618399, r4618398, r4618377, MPFR_RNDN);
        mpfr_add(r4618400, r4618396, r4618399, MPFR_RNDN);
        mpfr_div(r4618401, r4618383, r4618400, MPFR_RNDN);
        if (mpfr_get_si(r4618392, MPFR_RNDN)) { mpfr_set(r4618402, r4618395, MPFR_RNDN); } else { mpfr_set(r4618402, r4618401, MPFR_RNDN); };
        if (mpfr_get_si(r4618380, MPFR_RNDN)) { mpfr_set(r4618403, r4618390, MPFR_RNDN); } else { mpfr_set(r4618403, r4618402, MPFR_RNDN); };
        if (mpfr_get_si(r4618374, MPFR_RNDN)) { mpfr_set(r4618404, r4618378, MPFR_RNDN); } else { mpfr_set(r4618404, r4618403, MPFR_RNDN); };
        return mpfr_get_d(r4618404, MPFR_RNDN);
}

