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

char *name = "NMSE p42, negative";

double f_if(float a, float b, float c) {
        float r5041221 = b;
        float r5041222 = -r5041221;
        float r5041223 = r5041221 * r5041221;
        float r5041224 = 4.0f;
        float r5041225 = a;
        float r5041226 = c;
        float r5041227 = r5041225 * r5041226;
        float r5041228 = r5041224 * r5041227;
        float r5041229 = r5041223 - r5041228;
        float r5041230 = sqrt(r5041229);
        float r5041231 = r5041222 - r5041230;
        float r5041232 = 2.0f;
        float r5041233 = r5041232 * r5041225;
        float r5041234 = r5041231 / r5041233;
        return r5041234;
}

double f_id(double a, double b, double c) {
        double r5041235 = b;
        double r5041236 = -r5041235;
        double r5041237 = r5041235 * r5041235;
        double r5041238 = 4.0;
        double r5041239 = a;
        double r5041240 = c;
        double r5041241 = r5041239 * r5041240;
        double r5041242 = r5041238 * r5041241;
        double r5041243 = r5041237 - r5041242;
        double r5041244 = sqrt(r5041243);
        double r5041245 = r5041236 - r5041244;
        double r5041246 = 2.0;
        double r5041247 = r5041246 * r5041239;
        double r5041248 = r5041245 / r5041247;
        return r5041248;
}


double f_of(float a, float b, float c) {
        float r5041249 = b;
        float r5041250 = -7.355523810646533e-17f;
        bool r5041251 = r5041249 <= r5041250;
        float r5041252 = -r5041249;
        float r5041253 = r5041249 + r5041252;
        float r5041254 = 2.0f;
        float r5041255 = a;
        float r5041256 = r5041254 * r5041255;
        float r5041257 = r5041253 / r5041256;
        float r5041258 = c;
        float r5041259 = r5041258 / r5041249;
        float r5041260 = r5041257 - r5041259;
        float r5041261 = -1.4796916138221627e-93f;
        bool r5041262 = r5041249 <= r5041261;
        float r5041263 = 4.0f;
        float r5041264 = r5041255 * r5041258;
        float r5041265 = r5041263 * r5041264;
        float r5041266 = r5041249 * r5041249;
        float r5041267 = r5041266 - r5041265;
        float r5041268 = sqrt(r5041267);
        float r5041269 = r5041252 + r5041268;
        float r5041270 = r5041265 / r5041269;
        float r5041271 = r5041270 / r5041256;
        float r5041272 = 9.656800156747535e+100f;
        bool r5041273 = r5041249 <= r5041272;
        float r5041274 = r5041249 * r5041249;
        float r5041275 = r5041263 * r5041258;
        float r5041276 = r5041275 * r5041255;
        float r5041277 = r5041274 - r5041276;
        float r5041278 = sqrt(r5041277);
        float r5041279 = r5041252 - r5041278;
        float r5041280 = r5041255 * r5041254;
        float r5041281 = r5041279 / r5041280;
        float r5041282 = r5041252 / r5041255;
        float r5041283 = r5041273 ? r5041281 : r5041282;
        float r5041284 = r5041262 ? r5041271 : r5041283;
        float r5041285 = r5041251 ? r5041260 : r5041284;
        return r5041285;
}

double f_od(double a, double b, double c) {
        double r5041286 = b;
        double r5041287 = -7.355523810646533e-17;
        bool r5041288 = r5041286 <= r5041287;
        double r5041289 = -r5041286;
        double r5041290 = r5041286 + r5041289;
        double r5041291 = 2.0;
        double r5041292 = a;
        double r5041293 = r5041291 * r5041292;
        double r5041294 = r5041290 / r5041293;
        double r5041295 = c;
        double r5041296 = r5041295 / r5041286;
        double r5041297 = r5041294 - r5041296;
        double r5041298 = -1.4796916138221627e-93;
        bool r5041299 = r5041286 <= r5041298;
        double r5041300 = 4.0;
        double r5041301 = r5041292 * r5041295;
        double r5041302 = r5041300 * r5041301;
        double r5041303 = r5041286 * r5041286;
        double r5041304 = r5041303 - r5041302;
        double r5041305 = sqrt(r5041304);
        double r5041306 = r5041289 + r5041305;
        double r5041307 = r5041302 / r5041306;
        double r5041308 = r5041307 / r5041293;
        double r5041309 = 9.656800156747535e+100;
        bool r5041310 = r5041286 <= r5041309;
        double r5041311 = r5041286 * r5041286;
        double r5041312 = r5041300 * r5041295;
        double r5041313 = r5041312 * r5041292;
        double r5041314 = r5041311 - r5041313;
        double r5041315 = sqrt(r5041314);
        double r5041316 = r5041289 - r5041315;
        double r5041317 = r5041292 * r5041291;
        double r5041318 = r5041316 / r5041317;
        double r5041319 = r5041289 / r5041292;
        double r5041320 = r5041310 ? r5041318 : r5041319;
        double r5041321 = r5041299 ? r5041308 : r5041320;
        double r5041322 = r5041288 ? r5041297 : r5041321;
        return r5041322;
}

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 r5041323, r5041324, r5041325, r5041326, r5041327, r5041328, r5041329, r5041330, r5041331, r5041332, r5041333, r5041334, r5041335, r5041336;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5041323);
        mpfr_init(r5041324);
        mpfr_init(r5041325);
        mpfr_init_set_str(r5041326, "4", 10, MPFR_RNDN);
        mpfr_init(r5041327);
        mpfr_init(r5041328);
        mpfr_init(r5041329);
        mpfr_init(r5041330);
        mpfr_init(r5041331);
        mpfr_init(r5041332);
        mpfr_init(r5041333);
        mpfr_init_set_str(r5041334, "2", 10, MPFR_RNDN);
        mpfr_init(r5041335);
        mpfr_init(r5041336);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r5041323, b, MPFR_RNDN);
        mpfr_neg(r5041324, r5041323, MPFR_RNDN);
        mpfr_sqr(r5041325, r5041323, MPFR_RNDN);
        ;
        mpfr_set_d(r5041327, a, MPFR_RNDN);
        mpfr_set_d(r5041328, c, MPFR_RNDN);
        mpfr_mul(r5041329, r5041327, r5041328, MPFR_RNDN);
        mpfr_mul(r5041330, r5041326, r5041329, MPFR_RNDN);
        mpfr_sub(r5041331, r5041325, r5041330, MPFR_RNDN);
        mpfr_sqrt(r5041332, r5041331, MPFR_RNDN);
        mpfr_sub(r5041333, r5041324, r5041332, MPFR_RNDN);
        ;
        mpfr_mul(r5041335, r5041334, r5041327, MPFR_RNDN);
        mpfr_div(r5041336, r5041333, r5041335, MPFR_RNDN);
        return mpfr_get_d(r5041336, MPFR_RNDN);
}

static mpfr_t r5041337, r5041338, r5041339, r5041340, r5041341, r5041342, r5041343, r5041344, r5041345, r5041346, r5041347, r5041348, r5041349, r5041350, r5041351, r5041352, r5041353, r5041354, r5041355, r5041356, r5041357, r5041358, r5041359, r5041360, r5041361, r5041362, r5041363, r5041364, r5041365, r5041366, r5041367, r5041368, r5041369, r5041370, r5041371, r5041372, r5041373;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5041337);
        mpfr_init_set_str(r5041338, "-7.355523810646533e-17", 10, MPFR_RNDN);
        mpfr_init(r5041339);
        mpfr_init(r5041340);
        mpfr_init(r5041341);
        mpfr_init_set_str(r5041342, "2", 10, MPFR_RNDN);
        mpfr_init(r5041343);
        mpfr_init(r5041344);
        mpfr_init(r5041345);
        mpfr_init(r5041346);
        mpfr_init(r5041347);
        mpfr_init(r5041348);
        mpfr_init_set_str(r5041349, "-1.4796916138221627e-93", 10, MPFR_RNDN);
        mpfr_init(r5041350);
        mpfr_init_set_str(r5041351, "4", 10, MPFR_RNDN);
        mpfr_init(r5041352);
        mpfr_init(r5041353);
        mpfr_init(r5041354);
        mpfr_init(r5041355);
        mpfr_init(r5041356);
        mpfr_init(r5041357);
        mpfr_init(r5041358);
        mpfr_init(r5041359);
        mpfr_init_set_str(r5041360, "9.656800156747535e+100", 10, MPFR_RNDN);
        mpfr_init(r5041361);
        mpfr_init(r5041362);
        mpfr_init(r5041363);
        mpfr_init(r5041364);
        mpfr_init(r5041365);
        mpfr_init(r5041366);
        mpfr_init(r5041367);
        mpfr_init(r5041368);
        mpfr_init(r5041369);
        mpfr_init(r5041370);
        mpfr_init(r5041371);
        mpfr_init(r5041372);
        mpfr_init(r5041373);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r5041337, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5041339, mpfr_cmp(r5041337, r5041338) <= 0, MPFR_RNDN);
        mpfr_neg(r5041340, r5041337, MPFR_RNDN);
        mpfr_add(r5041341, r5041337, r5041340, MPFR_RNDN);
        ;
        mpfr_set_d(r5041343, a, MPFR_RNDN);
        mpfr_mul(r5041344, r5041342, r5041343, MPFR_RNDN);
        mpfr_div(r5041345, r5041341, r5041344, MPFR_RNDN);
        mpfr_set_d(r5041346, c, MPFR_RNDN);
        mpfr_div(r5041347, r5041346, r5041337, MPFR_RNDN);
        mpfr_sub(r5041348, r5041345, r5041347, MPFR_RNDN);
        ;
        mpfr_set_si(r5041350, mpfr_cmp(r5041337, r5041349) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r5041352, r5041343, r5041346, MPFR_RNDN);
        mpfr_mul(r5041353, r5041351, r5041352, MPFR_RNDN);
        mpfr_sqr(r5041354, r5041337, MPFR_RNDN);
        mpfr_sub(r5041355, r5041354, r5041353, MPFR_RNDN);
        mpfr_sqrt(r5041356, r5041355, MPFR_RNDN);
        mpfr_add(r5041357, r5041340, r5041356, MPFR_RNDN);
        mpfr_div(r5041358, r5041353, r5041357, MPFR_RNDN);
        mpfr_div(r5041359, r5041358, r5041344, MPFR_RNDN);
        ;
        mpfr_set_si(r5041361, mpfr_cmp(r5041337, r5041360) <= 0, MPFR_RNDN);
        mpfr_mul(r5041362, r5041337, r5041337, MPFR_RNDN);
        mpfr_mul(r5041363, r5041351, r5041346, MPFR_RNDN);
        mpfr_mul(r5041364, r5041363, r5041343, MPFR_RNDN);
        mpfr_sub(r5041365, r5041362, r5041364, MPFR_RNDN);
        mpfr_sqrt(r5041366, r5041365, MPFR_RNDN);
        mpfr_sub(r5041367, r5041340, r5041366, MPFR_RNDN);
        mpfr_mul(r5041368, r5041343, r5041342, MPFR_RNDN);
        mpfr_div(r5041369, r5041367, r5041368, MPFR_RNDN);
        mpfr_div(r5041370, r5041340, r5041343, MPFR_RNDN);
        if (mpfr_get_si(r5041361, MPFR_RNDN)) { mpfr_set(r5041371, r5041369, MPFR_RNDN); } else { mpfr_set(r5041371, r5041370, MPFR_RNDN); };
        if (mpfr_get_si(r5041350, MPFR_RNDN)) { mpfr_set(r5041372, r5041359, MPFR_RNDN); } else { mpfr_set(r5041372, r5041371, MPFR_RNDN); };
        if (mpfr_get_si(r5041339, MPFR_RNDN)) { mpfr_set(r5041373, r5041348, MPFR_RNDN); } else { mpfr_set(r5041373, r5041372, MPFR_RNDN); };
        return mpfr_get_d(r5041373, MPFR_RNDN);
}

static mpfr_t r5041374, r5041375, r5041376, r5041377, r5041378, r5041379, r5041380, r5041381, r5041382, r5041383, r5041384, r5041385, r5041386, r5041387, r5041388, r5041389, r5041390, r5041391, r5041392, r5041393, r5041394, r5041395, r5041396, r5041397, r5041398, r5041399, r5041400, r5041401, r5041402, r5041403, r5041404, r5041405, r5041406, r5041407, r5041408, r5041409, r5041410;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5041374);
        mpfr_init_set_str(r5041375, "-7.355523810646533e-17", 10, MPFR_RNDN);
        mpfr_init(r5041376);
        mpfr_init(r5041377);
        mpfr_init(r5041378);
        mpfr_init_set_str(r5041379, "2", 10, MPFR_RNDN);
        mpfr_init(r5041380);
        mpfr_init(r5041381);
        mpfr_init(r5041382);
        mpfr_init(r5041383);
        mpfr_init(r5041384);
        mpfr_init(r5041385);
        mpfr_init_set_str(r5041386, "-1.4796916138221627e-93", 10, MPFR_RNDN);
        mpfr_init(r5041387);
        mpfr_init_set_str(r5041388, "4", 10, MPFR_RNDN);
        mpfr_init(r5041389);
        mpfr_init(r5041390);
        mpfr_init(r5041391);
        mpfr_init(r5041392);
        mpfr_init(r5041393);
        mpfr_init(r5041394);
        mpfr_init(r5041395);
        mpfr_init(r5041396);
        mpfr_init_set_str(r5041397, "9.656800156747535e+100", 10, MPFR_RNDN);
        mpfr_init(r5041398);
        mpfr_init(r5041399);
        mpfr_init(r5041400);
        mpfr_init(r5041401);
        mpfr_init(r5041402);
        mpfr_init(r5041403);
        mpfr_init(r5041404);
        mpfr_init(r5041405);
        mpfr_init(r5041406);
        mpfr_init(r5041407);
        mpfr_init(r5041408);
        mpfr_init(r5041409);
        mpfr_init(r5041410);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r5041374, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5041376, mpfr_cmp(r5041374, r5041375) <= 0, MPFR_RNDN);
        mpfr_neg(r5041377, r5041374, MPFR_RNDN);
        mpfr_add(r5041378, r5041374, r5041377, MPFR_RNDN);
        ;
        mpfr_set_d(r5041380, a, MPFR_RNDN);
        mpfr_mul(r5041381, r5041379, r5041380, MPFR_RNDN);
        mpfr_div(r5041382, r5041378, r5041381, MPFR_RNDN);
        mpfr_set_d(r5041383, c, MPFR_RNDN);
        mpfr_div(r5041384, r5041383, r5041374, MPFR_RNDN);
        mpfr_sub(r5041385, r5041382, r5041384, MPFR_RNDN);
        ;
        mpfr_set_si(r5041387, mpfr_cmp(r5041374, r5041386) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r5041389, r5041380, r5041383, MPFR_RNDN);
        mpfr_mul(r5041390, r5041388, r5041389, MPFR_RNDN);
        mpfr_sqr(r5041391, r5041374, MPFR_RNDN);
        mpfr_sub(r5041392, r5041391, r5041390, MPFR_RNDN);
        mpfr_sqrt(r5041393, r5041392, MPFR_RNDN);
        mpfr_add(r5041394, r5041377, r5041393, MPFR_RNDN);
        mpfr_div(r5041395, r5041390, r5041394, MPFR_RNDN);
        mpfr_div(r5041396, r5041395, r5041381, MPFR_RNDN);
        ;
        mpfr_set_si(r5041398, mpfr_cmp(r5041374, r5041397) <= 0, MPFR_RNDN);
        mpfr_mul(r5041399, r5041374, r5041374, MPFR_RNDN);
        mpfr_mul(r5041400, r5041388, r5041383, MPFR_RNDN);
        mpfr_mul(r5041401, r5041400, r5041380, MPFR_RNDN);
        mpfr_sub(r5041402, r5041399, r5041401, MPFR_RNDN);
        mpfr_sqrt(r5041403, r5041402, MPFR_RNDN);
        mpfr_sub(r5041404, r5041377, r5041403, MPFR_RNDN);
        mpfr_mul(r5041405, r5041380, r5041379, MPFR_RNDN);
        mpfr_div(r5041406, r5041404, r5041405, MPFR_RNDN);
        mpfr_div(r5041407, r5041377, r5041380, MPFR_RNDN);
        if (mpfr_get_si(r5041398, MPFR_RNDN)) { mpfr_set(r5041408, r5041406, MPFR_RNDN); } else { mpfr_set(r5041408, r5041407, MPFR_RNDN); };
        if (mpfr_get_si(r5041387, MPFR_RNDN)) { mpfr_set(r5041409, r5041396, MPFR_RNDN); } else { mpfr_set(r5041409, r5041408, MPFR_RNDN); };
        if (mpfr_get_si(r5041376, MPFR_RNDN)) { mpfr_set(r5041410, r5041385, MPFR_RNDN); } else { mpfr_set(r5041410, r5041409, MPFR_RNDN); };
        return mpfr_get_d(r5041410, MPFR_RNDN);
}

