#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 r5354440 = b;
        float r5354441 = -r5354440;
        float r5354442 = r5354440 * r5354440;
        float r5354443 = 4.0f;
        float r5354444 = a;
        float r5354445 = c;
        float r5354446 = r5354444 * r5354445;
        float r5354447 = r5354443 * r5354446;
        float r5354448 = r5354442 - r5354447;
        float r5354449 = sqrt(r5354448);
        float r5354450 = r5354441 - r5354449;
        float r5354451 = 2.0f;
        float r5354452 = r5354451 * r5354444;
        float r5354453 = r5354450 / r5354452;
        return r5354453;
}

double f_id(double a, double b, double c) {
        double r5354454 = b;
        double r5354455 = -r5354454;
        double r5354456 = r5354454 * r5354454;
        double r5354457 = 4.0;
        double r5354458 = a;
        double r5354459 = c;
        double r5354460 = r5354458 * r5354459;
        double r5354461 = r5354457 * r5354460;
        double r5354462 = r5354456 - r5354461;
        double r5354463 = sqrt(r5354462);
        double r5354464 = r5354455 - r5354463;
        double r5354465 = 2.0;
        double r5354466 = r5354465 * r5354458;
        double r5354467 = r5354464 / r5354466;
        return r5354467;
}


double f_of(float a, float b, float c) {
        float r5354468 = b;
        float r5354469 = -4.3723578359122876e+151f;
        bool r5354470 = r5354468 <= r5354469;
        float r5354471 = -2.0f;
        float r5354472 = 2.0f;
        float r5354473 = r5354471 / r5354472;
        float r5354474 = c;
        float r5354475 = r5354474 / r5354468;
        float r5354476 = r5354473 * r5354475;
        float r5354477 = 7.670790017984618e-300f;
        bool r5354478 = r5354468 <= r5354477;
        float r5354479 = 4.0f;
        float r5354480 = r5354479 / r5354472;
        float r5354481 = -r5354468;
        float r5354482 = r5354468 * r5354468;
        float r5354483 = a;
        float r5354484 = r5354474 * r5354479;
        float r5354485 = r5354483 * r5354484;
        float r5354486 = r5354482 - r5354485;
        float r5354487 = sqrt(r5354486);
        float r5354488 = r5354481 + r5354487;
        float r5354489 = r5354474 / r5354488;
        float r5354490 = r5354480 * r5354489;
        float r5354491 = 3.098843606291808e+59f;
        bool r5354492 = r5354468 <= r5354491;
        float r5354493 = r5354468 * r5354468;
        float r5354494 = r5354483 * r5354474;
        float r5354495 = r5354479 * r5354494;
        float r5354496 = r5354493 - r5354495;
        float r5354497 = sqrt(r5354496);
        float r5354498 = r5354481 - r5354497;
        float r5354499 = 1.0f;
        float r5354500 = r5354472 * r5354483;
        float r5354501 = r5354499 / r5354500;
        float r5354502 = r5354498 * r5354501;
        float r5354503 = r5354468 / r5354483;
        float r5354504 = r5354475 - r5354503;
        float r5354505 = r5354492 ? r5354502 : r5354504;
        float r5354506 = r5354478 ? r5354490 : r5354505;
        float r5354507 = r5354470 ? r5354476 : r5354506;
        return r5354507;
}

double f_od(double a, double b, double c) {
        double r5354508 = b;
        double r5354509 = -4.3723578359122876e+151;
        bool r5354510 = r5354508 <= r5354509;
        double r5354511 = -2.0;
        double r5354512 = 2.0;
        double r5354513 = r5354511 / r5354512;
        double r5354514 = c;
        double r5354515 = r5354514 / r5354508;
        double r5354516 = r5354513 * r5354515;
        double r5354517 = 7.670790017984618e-300;
        bool r5354518 = r5354508 <= r5354517;
        double r5354519 = 4.0;
        double r5354520 = r5354519 / r5354512;
        double r5354521 = -r5354508;
        double r5354522 = r5354508 * r5354508;
        double r5354523 = a;
        double r5354524 = r5354514 * r5354519;
        double r5354525 = r5354523 * r5354524;
        double r5354526 = r5354522 - r5354525;
        double r5354527 = sqrt(r5354526);
        double r5354528 = r5354521 + r5354527;
        double r5354529 = r5354514 / r5354528;
        double r5354530 = r5354520 * r5354529;
        double r5354531 = 3.098843606291808e+59;
        bool r5354532 = r5354508 <= r5354531;
        double r5354533 = r5354508 * r5354508;
        double r5354534 = r5354523 * r5354514;
        double r5354535 = r5354519 * r5354534;
        double r5354536 = r5354533 - r5354535;
        double r5354537 = sqrt(r5354536);
        double r5354538 = r5354521 - r5354537;
        double r5354539 = 1.0;
        double r5354540 = r5354512 * r5354523;
        double r5354541 = r5354539 / r5354540;
        double r5354542 = r5354538 * r5354541;
        double r5354543 = r5354508 / r5354523;
        double r5354544 = r5354515 - r5354543;
        double r5354545 = r5354532 ? r5354542 : r5354544;
        double r5354546 = r5354518 ? r5354530 : r5354545;
        double r5354547 = r5354510 ? r5354516 : r5354546;
        return r5354547;
}

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 r5354548, r5354549, r5354550, r5354551, r5354552, r5354553, r5354554, r5354555, r5354556, r5354557, r5354558, r5354559, r5354560, r5354561;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354548);
        mpfr_init(r5354549);
        mpfr_init(r5354550);
        mpfr_init_set_str(r5354551, "4", 10, MPFR_RNDN);
        mpfr_init(r5354552);
        mpfr_init(r5354553);
        mpfr_init(r5354554);
        mpfr_init(r5354555);
        mpfr_init(r5354556);
        mpfr_init(r5354557);
        mpfr_init(r5354558);
        mpfr_init_set_str(r5354559, "2", 10, MPFR_RNDN);
        mpfr_init(r5354560);
        mpfr_init(r5354561);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r5354548, b, MPFR_RNDN);
        mpfr_neg(r5354549, r5354548, MPFR_RNDN);
        mpfr_sqr(r5354550, r5354548, MPFR_RNDN);
        ;
        mpfr_set_d(r5354552, a, MPFR_RNDN);
        mpfr_set_d(r5354553, c, MPFR_RNDN);
        mpfr_mul(r5354554, r5354552, r5354553, MPFR_RNDN);
        mpfr_mul(r5354555, r5354551, r5354554, MPFR_RNDN);
        mpfr_sub(r5354556, r5354550, r5354555, MPFR_RNDN);
        mpfr_sqrt(r5354557, r5354556, MPFR_RNDN);
        mpfr_sub(r5354558, r5354549, r5354557, MPFR_RNDN);
        ;
        mpfr_mul(r5354560, r5354559, r5354552, MPFR_RNDN);
        mpfr_div(r5354561, r5354558, r5354560, MPFR_RNDN);
        return mpfr_get_d(r5354561, MPFR_RNDN);
}

static mpfr_t r5354562, r5354563, r5354564, r5354565, r5354566, r5354567, r5354568, r5354569, r5354570, r5354571, r5354572, r5354573, r5354574, r5354575, r5354576, r5354577, r5354578, r5354579, r5354580, r5354581, r5354582, r5354583, r5354584, r5354585, r5354586, r5354587, r5354588, r5354589, r5354590, r5354591, r5354592, r5354593, r5354594, r5354595, r5354596, r5354597, r5354598, r5354599, r5354600, r5354601;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354562);
        mpfr_init_set_str(r5354563, "-4.3723578359122876e+151", 10, MPFR_RNDN);
        mpfr_init(r5354564);
        mpfr_init_set_str(r5354565, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5354566, "2", 10, MPFR_RNDN);
        mpfr_init(r5354567);
        mpfr_init(r5354568);
        mpfr_init(r5354569);
        mpfr_init(r5354570);
        mpfr_init_set_str(r5354571, "7.670790017984618e-300", 10, MPFR_RNDN);
        mpfr_init(r5354572);
        mpfr_init_set_str(r5354573, "4", 10, MPFR_RNDN);
        mpfr_init(r5354574);
        mpfr_init(r5354575);
        mpfr_init(r5354576);
        mpfr_init(r5354577);
        mpfr_init(r5354578);
        mpfr_init(r5354579);
        mpfr_init(r5354580);
        mpfr_init(r5354581);
        mpfr_init(r5354582);
        mpfr_init(r5354583);
        mpfr_init(r5354584);
        mpfr_init_set_str(r5354585, "3.098843606291808e+59", 10, MPFR_RNDN);
        mpfr_init(r5354586);
        mpfr_init(r5354587);
        mpfr_init(r5354588);
        mpfr_init(r5354589);
        mpfr_init(r5354590);
        mpfr_init(r5354591);
        mpfr_init(r5354592);
        mpfr_init_set_str(r5354593, "1", 10, MPFR_RNDN);
        mpfr_init(r5354594);
        mpfr_init(r5354595);
        mpfr_init(r5354596);
        mpfr_init(r5354597);
        mpfr_init(r5354598);
        mpfr_init(r5354599);
        mpfr_init(r5354600);
        mpfr_init(r5354601);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r5354562, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5354564, mpfr_cmp(r5354562, r5354563) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r5354567, r5354565, r5354566, MPFR_RNDN);
        mpfr_set_d(r5354568, c, MPFR_RNDN);
        mpfr_div(r5354569, r5354568, r5354562, MPFR_RNDN);
        mpfr_mul(r5354570, r5354567, r5354569, MPFR_RNDN);
        ;
        mpfr_set_si(r5354572, mpfr_cmp(r5354562, r5354571) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r5354574, r5354573, r5354566, MPFR_RNDN);
        mpfr_neg(r5354575, r5354562, MPFR_RNDN);
        mpfr_mul(r5354576, r5354562, r5354562, MPFR_RNDN);
        mpfr_set_d(r5354577, a, MPFR_RNDN);
        mpfr_mul(r5354578, r5354568, r5354573, MPFR_RNDN);
        mpfr_mul(r5354579, r5354577, r5354578, MPFR_RNDN);
        mpfr_sub(r5354580, r5354576, r5354579, MPFR_RNDN);
        mpfr_sqrt(r5354581, r5354580, MPFR_RNDN);
        mpfr_add(r5354582, r5354575, r5354581, MPFR_RNDN);
        mpfr_div(r5354583, r5354568, r5354582, MPFR_RNDN);
        mpfr_mul(r5354584, r5354574, r5354583, MPFR_RNDN);
        ;
        mpfr_set_si(r5354586, mpfr_cmp(r5354562, r5354585) <= 0, MPFR_RNDN);
        mpfr_sqr(r5354587, r5354562, MPFR_RNDN);
        mpfr_mul(r5354588, r5354577, r5354568, MPFR_RNDN);
        mpfr_mul(r5354589, r5354573, r5354588, MPFR_RNDN);
        mpfr_sub(r5354590, r5354587, r5354589, MPFR_RNDN);
        mpfr_sqrt(r5354591, r5354590, MPFR_RNDN);
        mpfr_sub(r5354592, r5354575, r5354591, MPFR_RNDN);
        ;
        mpfr_mul(r5354594, r5354566, r5354577, MPFR_RNDN);
        mpfr_div(r5354595, r5354593, r5354594, MPFR_RNDN);
        mpfr_mul(r5354596, r5354592, r5354595, MPFR_RNDN);
        mpfr_div(r5354597, r5354562, r5354577, MPFR_RNDN);
        mpfr_sub(r5354598, r5354569, r5354597, MPFR_RNDN);
        if (mpfr_get_si(r5354586, MPFR_RNDN)) { mpfr_set(r5354599, r5354596, MPFR_RNDN); } else { mpfr_set(r5354599, r5354598, MPFR_RNDN); };
        if (mpfr_get_si(r5354572, MPFR_RNDN)) { mpfr_set(r5354600, r5354584, MPFR_RNDN); } else { mpfr_set(r5354600, r5354599, MPFR_RNDN); };
        if (mpfr_get_si(r5354564, MPFR_RNDN)) { mpfr_set(r5354601, r5354570, MPFR_RNDN); } else { mpfr_set(r5354601, r5354600, MPFR_RNDN); };
        return mpfr_get_d(r5354601, MPFR_RNDN);
}

static mpfr_t r5354602, r5354603, r5354604, r5354605, r5354606, r5354607, r5354608, r5354609, r5354610, r5354611, r5354612, r5354613, r5354614, r5354615, r5354616, r5354617, r5354618, r5354619, r5354620, r5354621, r5354622, r5354623, r5354624, r5354625, r5354626, r5354627, r5354628, r5354629, r5354630, r5354631, r5354632, r5354633, r5354634, r5354635, r5354636, r5354637, r5354638, r5354639, r5354640, r5354641;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354602);
        mpfr_init_set_str(r5354603, "-4.3723578359122876e+151", 10, MPFR_RNDN);
        mpfr_init(r5354604);
        mpfr_init_set_str(r5354605, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5354606, "2", 10, MPFR_RNDN);
        mpfr_init(r5354607);
        mpfr_init(r5354608);
        mpfr_init(r5354609);
        mpfr_init(r5354610);
        mpfr_init_set_str(r5354611, "7.670790017984618e-300", 10, MPFR_RNDN);
        mpfr_init(r5354612);
        mpfr_init_set_str(r5354613, "4", 10, MPFR_RNDN);
        mpfr_init(r5354614);
        mpfr_init(r5354615);
        mpfr_init(r5354616);
        mpfr_init(r5354617);
        mpfr_init(r5354618);
        mpfr_init(r5354619);
        mpfr_init(r5354620);
        mpfr_init(r5354621);
        mpfr_init(r5354622);
        mpfr_init(r5354623);
        mpfr_init(r5354624);
        mpfr_init_set_str(r5354625, "3.098843606291808e+59", 10, MPFR_RNDN);
        mpfr_init(r5354626);
        mpfr_init(r5354627);
        mpfr_init(r5354628);
        mpfr_init(r5354629);
        mpfr_init(r5354630);
        mpfr_init(r5354631);
        mpfr_init(r5354632);
        mpfr_init_set_str(r5354633, "1", 10, MPFR_RNDN);
        mpfr_init(r5354634);
        mpfr_init(r5354635);
        mpfr_init(r5354636);
        mpfr_init(r5354637);
        mpfr_init(r5354638);
        mpfr_init(r5354639);
        mpfr_init(r5354640);
        mpfr_init(r5354641);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r5354602, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5354604, mpfr_cmp(r5354602, r5354603) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r5354607, r5354605, r5354606, MPFR_RNDN);
        mpfr_set_d(r5354608, c, MPFR_RNDN);
        mpfr_div(r5354609, r5354608, r5354602, MPFR_RNDN);
        mpfr_mul(r5354610, r5354607, r5354609, MPFR_RNDN);
        ;
        mpfr_set_si(r5354612, mpfr_cmp(r5354602, r5354611) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r5354614, r5354613, r5354606, MPFR_RNDN);
        mpfr_neg(r5354615, r5354602, MPFR_RNDN);
        mpfr_mul(r5354616, r5354602, r5354602, MPFR_RNDN);
        mpfr_set_d(r5354617, a, MPFR_RNDN);
        mpfr_mul(r5354618, r5354608, r5354613, MPFR_RNDN);
        mpfr_mul(r5354619, r5354617, r5354618, MPFR_RNDN);
        mpfr_sub(r5354620, r5354616, r5354619, MPFR_RNDN);
        mpfr_sqrt(r5354621, r5354620, MPFR_RNDN);
        mpfr_add(r5354622, r5354615, r5354621, MPFR_RNDN);
        mpfr_div(r5354623, r5354608, r5354622, MPFR_RNDN);
        mpfr_mul(r5354624, r5354614, r5354623, MPFR_RNDN);
        ;
        mpfr_set_si(r5354626, mpfr_cmp(r5354602, r5354625) <= 0, MPFR_RNDN);
        mpfr_sqr(r5354627, r5354602, MPFR_RNDN);
        mpfr_mul(r5354628, r5354617, r5354608, MPFR_RNDN);
        mpfr_mul(r5354629, r5354613, r5354628, MPFR_RNDN);
        mpfr_sub(r5354630, r5354627, r5354629, MPFR_RNDN);
        mpfr_sqrt(r5354631, r5354630, MPFR_RNDN);
        mpfr_sub(r5354632, r5354615, r5354631, MPFR_RNDN);
        ;
        mpfr_mul(r5354634, r5354606, r5354617, MPFR_RNDN);
        mpfr_div(r5354635, r5354633, r5354634, MPFR_RNDN);
        mpfr_mul(r5354636, r5354632, r5354635, MPFR_RNDN);
        mpfr_div(r5354637, r5354602, r5354617, MPFR_RNDN);
        mpfr_sub(r5354638, r5354609, r5354637, MPFR_RNDN);
        if (mpfr_get_si(r5354626, MPFR_RNDN)) { mpfr_set(r5354639, r5354636, MPFR_RNDN); } else { mpfr_set(r5354639, r5354638, MPFR_RNDN); };
        if (mpfr_get_si(r5354612, MPFR_RNDN)) { mpfr_set(r5354640, r5354624, MPFR_RNDN); } else { mpfr_set(r5354640, r5354639, MPFR_RNDN); };
        if (mpfr_get_si(r5354604, MPFR_RNDN)) { mpfr_set(r5354641, r5354610, MPFR_RNDN); } else { mpfr_set(r5354641, r5354640, MPFR_RNDN); };
        return mpfr_get_d(r5354641, MPFR_RNDN);
}

