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

char *name = "NMSE p42, positive";

double f_if(float a, float b, float c) {
        float r5354234 = b;
        float r5354235 = -r5354234;
        float r5354236 = r5354234 * r5354234;
        float r5354237 = 4.0f;
        float r5354238 = a;
        float r5354239 = c;
        float r5354240 = r5354238 * r5354239;
        float r5354241 = r5354237 * r5354240;
        float r5354242 = r5354236 - r5354241;
        float r5354243 = sqrt(r5354242);
        float r5354244 = r5354235 + r5354243;
        float r5354245 = 2.0f;
        float r5354246 = r5354245 * r5354238;
        float r5354247 = r5354244 / r5354246;
        return r5354247;
}

double f_id(double a, double b, double c) {
        double r5354248 = b;
        double r5354249 = -r5354248;
        double r5354250 = r5354248 * r5354248;
        double r5354251 = 4.0;
        double r5354252 = a;
        double r5354253 = c;
        double r5354254 = r5354252 * r5354253;
        double r5354255 = r5354251 * r5354254;
        double r5354256 = r5354250 - r5354255;
        double r5354257 = sqrt(r5354256);
        double r5354258 = r5354249 + r5354257;
        double r5354259 = 2.0;
        double r5354260 = r5354259 * r5354252;
        double r5354261 = r5354258 / r5354260;
        return r5354261;
}


double f_of(float a, float b, float c) {
        float r5354262 = b;
        float r5354263 = -5.275923490878762e+150f;
        bool r5354264 = r5354262 <= r5354263;
        float r5354265 = c;
        float r5354266 = r5354265 / r5354262;
        float r5354267 = a;
        float r5354268 = r5354262 / r5354267;
        float r5354269 = r5354266 - r5354268;
        float r5354270 = -2.0044130137063892e-290f;
        bool r5354271 = r5354262 <= r5354270;
        float r5354272 = -r5354262;
        float r5354273 = r5354262 * r5354262;
        float r5354274 = 4.0f;
        float r5354275 = r5354267 * r5354265;
        float r5354276 = r5354274 * r5354275;
        float r5354277 = r5354273 - r5354276;
        float r5354278 = sqrt(r5354277);
        float r5354279 = r5354272 + r5354278;
        float r5354280 = 2.0f;
        float r5354281 = r5354280 * r5354267;
        float r5354282 = r5354279 / r5354281;
        float r5354283 = 6.193250476192916e+56f;
        bool r5354284 = r5354262 <= r5354283;
        float r5354285 = r5354274 / r5354280;
        float r5354286 = r5354262 * r5354262;
        float r5354287 = r5354265 * r5354267;
        float r5354288 = r5354274 * r5354287;
        float r5354289 = r5354286 - r5354288;
        float r5354290 = sqrt(r5354289);
        float r5354291 = r5354272 - r5354290;
        float r5354292 = r5354265 / r5354291;
        float r5354293 = r5354285 * r5354292;
        float r5354294 = r5354285 * r5354265;
        float r5354295 = r5354265 * r5354280;
        float r5354296 = r5354295 / r5354268;
        float r5354297 = r5354262 * r5354280;
        float r5354298 = r5354296 - r5354297;
        float r5354299 = r5354294 / r5354298;
        float r5354300 = r5354284 ? r5354293 : r5354299;
        float r5354301 = r5354271 ? r5354282 : r5354300;
        float r5354302 = r5354264 ? r5354269 : r5354301;
        return r5354302;
}

double f_od(double a, double b, double c) {
        double r5354303 = b;
        double r5354304 = -5.275923490878762e+150;
        bool r5354305 = r5354303 <= r5354304;
        double r5354306 = c;
        double r5354307 = r5354306 / r5354303;
        double r5354308 = a;
        double r5354309 = r5354303 / r5354308;
        double r5354310 = r5354307 - r5354309;
        double r5354311 = -2.0044130137063892e-290;
        bool r5354312 = r5354303 <= r5354311;
        double r5354313 = -r5354303;
        double r5354314 = r5354303 * r5354303;
        double r5354315 = 4.0;
        double r5354316 = r5354308 * r5354306;
        double r5354317 = r5354315 * r5354316;
        double r5354318 = r5354314 - r5354317;
        double r5354319 = sqrt(r5354318);
        double r5354320 = r5354313 + r5354319;
        double r5354321 = 2.0;
        double r5354322 = r5354321 * r5354308;
        double r5354323 = r5354320 / r5354322;
        double r5354324 = 6.193250476192916e+56;
        bool r5354325 = r5354303 <= r5354324;
        double r5354326 = r5354315 / r5354321;
        double r5354327 = r5354303 * r5354303;
        double r5354328 = r5354306 * r5354308;
        double r5354329 = r5354315 * r5354328;
        double r5354330 = r5354327 - r5354329;
        double r5354331 = sqrt(r5354330);
        double r5354332 = r5354313 - r5354331;
        double r5354333 = r5354306 / r5354332;
        double r5354334 = r5354326 * r5354333;
        double r5354335 = r5354326 * r5354306;
        double r5354336 = r5354306 * r5354321;
        double r5354337 = r5354336 / r5354309;
        double r5354338 = r5354303 * r5354321;
        double r5354339 = r5354337 - r5354338;
        double r5354340 = r5354335 / r5354339;
        double r5354341 = r5354325 ? r5354334 : r5354340;
        double r5354342 = r5354312 ? r5354323 : r5354341;
        double r5354343 = r5354305 ? r5354310 : r5354342;
        return r5354343;
}

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 r5354344, r5354345, r5354346, r5354347, r5354348, r5354349, r5354350, r5354351, r5354352, r5354353, r5354354, r5354355, r5354356, r5354357;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354344);
        mpfr_init(r5354345);
        mpfr_init(r5354346);
        mpfr_init_set_str(r5354347, "4", 10, MPFR_RNDN);
        mpfr_init(r5354348);
        mpfr_init(r5354349);
        mpfr_init(r5354350);
        mpfr_init(r5354351);
        mpfr_init(r5354352);
        mpfr_init(r5354353);
        mpfr_init(r5354354);
        mpfr_init_set_str(r5354355, "2", 10, MPFR_RNDN);
        mpfr_init(r5354356);
        mpfr_init(r5354357);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r5354344, b, MPFR_RNDN);
        mpfr_neg(r5354345, r5354344, MPFR_RNDN);
        mpfr_sqr(r5354346, r5354344, MPFR_RNDN);
        ;
        mpfr_set_d(r5354348, a, MPFR_RNDN);
        mpfr_set_d(r5354349, c, MPFR_RNDN);
        mpfr_mul(r5354350, r5354348, r5354349, MPFR_RNDN);
        mpfr_mul(r5354351, r5354347, r5354350, MPFR_RNDN);
        mpfr_sub(r5354352, r5354346, r5354351, MPFR_RNDN);
        mpfr_sqrt(r5354353, r5354352, MPFR_RNDN);
        mpfr_add(r5354354, r5354345, r5354353, MPFR_RNDN);
        ;
        mpfr_mul(r5354356, r5354355, r5354348, MPFR_RNDN);
        mpfr_div(r5354357, r5354354, r5354356, MPFR_RNDN);
        return mpfr_get_d(r5354357, MPFR_RNDN);
}

static mpfr_t r5354358, r5354359, r5354360, r5354361, r5354362, r5354363, r5354364, r5354365, r5354366, r5354367, r5354368, r5354369, r5354370, r5354371, r5354372, r5354373, r5354374, r5354375, r5354376, r5354377, r5354378, r5354379, r5354380, r5354381, r5354382, r5354383, r5354384, r5354385, r5354386, r5354387, r5354388, r5354389, r5354390, r5354391, r5354392, r5354393, r5354394, r5354395, r5354396, r5354397, r5354398;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354358);
        mpfr_init_set_str(r5354359, "-5.275923490878762e+150", 10, MPFR_RNDN);
        mpfr_init(r5354360);
        mpfr_init(r5354361);
        mpfr_init(r5354362);
        mpfr_init(r5354363);
        mpfr_init(r5354364);
        mpfr_init(r5354365);
        mpfr_init_set_str(r5354366, "-2.0044130137063892e-290", 10, MPFR_RNDN);
        mpfr_init(r5354367);
        mpfr_init(r5354368);
        mpfr_init(r5354369);
        mpfr_init_set_str(r5354370, "4", 10, MPFR_RNDN);
        mpfr_init(r5354371);
        mpfr_init(r5354372);
        mpfr_init(r5354373);
        mpfr_init(r5354374);
        mpfr_init(r5354375);
        mpfr_init_set_str(r5354376, "2", 10, MPFR_RNDN);
        mpfr_init(r5354377);
        mpfr_init(r5354378);
        mpfr_init_set_str(r5354379, "6.193250476192916e+56", 10, MPFR_RNDN);
        mpfr_init(r5354380);
        mpfr_init(r5354381);
        mpfr_init(r5354382);
        mpfr_init(r5354383);
        mpfr_init(r5354384);
        mpfr_init(r5354385);
        mpfr_init(r5354386);
        mpfr_init(r5354387);
        mpfr_init(r5354388);
        mpfr_init(r5354389);
        mpfr_init(r5354390);
        mpfr_init(r5354391);
        mpfr_init(r5354392);
        mpfr_init(r5354393);
        mpfr_init(r5354394);
        mpfr_init(r5354395);
        mpfr_init(r5354396);
        mpfr_init(r5354397);
        mpfr_init(r5354398);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r5354358, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5354360, mpfr_cmp(r5354358, r5354359) <= 0, MPFR_RNDN);
        mpfr_set_d(r5354361, c, MPFR_RNDN);
        mpfr_div(r5354362, r5354361, r5354358, MPFR_RNDN);
        mpfr_set_d(r5354363, a, MPFR_RNDN);
        mpfr_div(r5354364, r5354358, r5354363, MPFR_RNDN);
        mpfr_sub(r5354365, r5354362, r5354364, MPFR_RNDN);
        ;
        mpfr_set_si(r5354367, mpfr_cmp(r5354358, r5354366) <= 0, MPFR_RNDN);
        mpfr_neg(r5354368, r5354358, MPFR_RNDN);
        mpfr_sqr(r5354369, r5354358, MPFR_RNDN);
        ;
        mpfr_mul(r5354371, r5354363, r5354361, MPFR_RNDN);
        mpfr_mul(r5354372, r5354370, r5354371, MPFR_RNDN);
        mpfr_sub(r5354373, r5354369, r5354372, MPFR_RNDN);
        mpfr_sqrt(r5354374, r5354373, MPFR_RNDN);
        mpfr_add(r5354375, r5354368, r5354374, MPFR_RNDN);
        ;
        mpfr_mul(r5354377, r5354376, r5354363, MPFR_RNDN);
        mpfr_div(r5354378, r5354375, r5354377, MPFR_RNDN);
        ;
        mpfr_set_si(r5354380, mpfr_cmp(r5354358, r5354379) <= 0, MPFR_RNDN);
        mpfr_div(r5354381, r5354370, r5354376, MPFR_RNDN);
        mpfr_mul(r5354382, r5354358, r5354358, MPFR_RNDN);
        mpfr_mul(r5354383, r5354361, r5354363, MPFR_RNDN);
        mpfr_mul(r5354384, r5354370, r5354383, MPFR_RNDN);
        mpfr_sub(r5354385, r5354382, r5354384, MPFR_RNDN);
        mpfr_sqrt(r5354386, r5354385, MPFR_RNDN);
        mpfr_sub(r5354387, r5354368, r5354386, MPFR_RNDN);
        mpfr_div(r5354388, r5354361, r5354387, MPFR_RNDN);
        mpfr_mul(r5354389, r5354381, r5354388, MPFR_RNDN);
        mpfr_mul(r5354390, r5354381, r5354361, MPFR_RNDN);
        mpfr_mul(r5354391, r5354361, r5354376, MPFR_RNDN);
        mpfr_div(r5354392, r5354391, r5354364, MPFR_RNDN);
        mpfr_mul(r5354393, r5354358, r5354376, MPFR_RNDN);
        mpfr_sub(r5354394, r5354392, r5354393, MPFR_RNDN);
        mpfr_div(r5354395, r5354390, r5354394, MPFR_RNDN);
        if (mpfr_get_si(r5354380, MPFR_RNDN)) { mpfr_set(r5354396, r5354389, MPFR_RNDN); } else { mpfr_set(r5354396, r5354395, MPFR_RNDN); };
        if (mpfr_get_si(r5354367, MPFR_RNDN)) { mpfr_set(r5354397, r5354378, MPFR_RNDN); } else { mpfr_set(r5354397, r5354396, MPFR_RNDN); };
        if (mpfr_get_si(r5354360, MPFR_RNDN)) { mpfr_set(r5354398, r5354365, MPFR_RNDN); } else { mpfr_set(r5354398, r5354397, MPFR_RNDN); };
        return mpfr_get_d(r5354398, MPFR_RNDN);
}

static mpfr_t r5354399, r5354400, r5354401, r5354402, r5354403, r5354404, r5354405, r5354406, r5354407, r5354408, r5354409, r5354410, r5354411, r5354412, r5354413, r5354414, r5354415, r5354416, r5354417, r5354418, r5354419, r5354420, r5354421, r5354422, r5354423, r5354424, r5354425, r5354426, r5354427, r5354428, r5354429, r5354430, r5354431, r5354432, r5354433, r5354434, r5354435, r5354436, r5354437, r5354438, r5354439;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354399);
        mpfr_init_set_str(r5354400, "-5.275923490878762e+150", 10, MPFR_RNDN);
        mpfr_init(r5354401);
        mpfr_init(r5354402);
        mpfr_init(r5354403);
        mpfr_init(r5354404);
        mpfr_init(r5354405);
        mpfr_init(r5354406);
        mpfr_init_set_str(r5354407, "-2.0044130137063892e-290", 10, MPFR_RNDN);
        mpfr_init(r5354408);
        mpfr_init(r5354409);
        mpfr_init(r5354410);
        mpfr_init_set_str(r5354411, "4", 10, MPFR_RNDN);
        mpfr_init(r5354412);
        mpfr_init(r5354413);
        mpfr_init(r5354414);
        mpfr_init(r5354415);
        mpfr_init(r5354416);
        mpfr_init_set_str(r5354417, "2", 10, MPFR_RNDN);
        mpfr_init(r5354418);
        mpfr_init(r5354419);
        mpfr_init_set_str(r5354420, "6.193250476192916e+56", 10, MPFR_RNDN);
        mpfr_init(r5354421);
        mpfr_init(r5354422);
        mpfr_init(r5354423);
        mpfr_init(r5354424);
        mpfr_init(r5354425);
        mpfr_init(r5354426);
        mpfr_init(r5354427);
        mpfr_init(r5354428);
        mpfr_init(r5354429);
        mpfr_init(r5354430);
        mpfr_init(r5354431);
        mpfr_init(r5354432);
        mpfr_init(r5354433);
        mpfr_init(r5354434);
        mpfr_init(r5354435);
        mpfr_init(r5354436);
        mpfr_init(r5354437);
        mpfr_init(r5354438);
        mpfr_init(r5354439);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r5354399, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5354401, mpfr_cmp(r5354399, r5354400) <= 0, MPFR_RNDN);
        mpfr_set_d(r5354402, c, MPFR_RNDN);
        mpfr_div(r5354403, r5354402, r5354399, MPFR_RNDN);
        mpfr_set_d(r5354404, a, MPFR_RNDN);
        mpfr_div(r5354405, r5354399, r5354404, MPFR_RNDN);
        mpfr_sub(r5354406, r5354403, r5354405, MPFR_RNDN);
        ;
        mpfr_set_si(r5354408, mpfr_cmp(r5354399, r5354407) <= 0, MPFR_RNDN);
        mpfr_neg(r5354409, r5354399, MPFR_RNDN);
        mpfr_sqr(r5354410, r5354399, MPFR_RNDN);
        ;
        mpfr_mul(r5354412, r5354404, r5354402, MPFR_RNDN);
        mpfr_mul(r5354413, r5354411, r5354412, MPFR_RNDN);
        mpfr_sub(r5354414, r5354410, r5354413, MPFR_RNDN);
        mpfr_sqrt(r5354415, r5354414, MPFR_RNDN);
        mpfr_add(r5354416, r5354409, r5354415, MPFR_RNDN);
        ;
        mpfr_mul(r5354418, r5354417, r5354404, MPFR_RNDN);
        mpfr_div(r5354419, r5354416, r5354418, MPFR_RNDN);
        ;
        mpfr_set_si(r5354421, mpfr_cmp(r5354399, r5354420) <= 0, MPFR_RNDN);
        mpfr_div(r5354422, r5354411, r5354417, MPFR_RNDN);
        mpfr_mul(r5354423, r5354399, r5354399, MPFR_RNDN);
        mpfr_mul(r5354424, r5354402, r5354404, MPFR_RNDN);
        mpfr_mul(r5354425, r5354411, r5354424, MPFR_RNDN);
        mpfr_sub(r5354426, r5354423, r5354425, MPFR_RNDN);
        mpfr_sqrt(r5354427, r5354426, MPFR_RNDN);
        mpfr_sub(r5354428, r5354409, r5354427, MPFR_RNDN);
        mpfr_div(r5354429, r5354402, r5354428, MPFR_RNDN);
        mpfr_mul(r5354430, r5354422, r5354429, MPFR_RNDN);
        mpfr_mul(r5354431, r5354422, r5354402, MPFR_RNDN);
        mpfr_mul(r5354432, r5354402, r5354417, MPFR_RNDN);
        mpfr_div(r5354433, r5354432, r5354405, MPFR_RNDN);
        mpfr_mul(r5354434, r5354399, r5354417, MPFR_RNDN);
        mpfr_sub(r5354435, r5354433, r5354434, MPFR_RNDN);
        mpfr_div(r5354436, r5354431, r5354435, MPFR_RNDN);
        if (mpfr_get_si(r5354421, MPFR_RNDN)) { mpfr_set(r5354437, r5354430, MPFR_RNDN); } else { mpfr_set(r5354437, r5354436, MPFR_RNDN); };
        if (mpfr_get_si(r5354408, MPFR_RNDN)) { mpfr_set(r5354438, r5354419, MPFR_RNDN); } else { mpfr_set(r5354438, r5354437, MPFR_RNDN); };
        if (mpfr_get_si(r5354401, MPFR_RNDN)) { mpfr_set(r5354439, r5354406, MPFR_RNDN); } else { mpfr_set(r5354439, r5354438, MPFR_RNDN); };
        return mpfr_get_d(r5354439, MPFR_RNDN);
}

