#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 r27488 = b;
        float r27489 = -r27488;
        float r27490 = r27488 * r27488;
        float r27491 = 4.0f;
        float r27492 = a;
        float r27493 = c;
        float r27494 = r27492 * r27493;
        float r27495 = r27491 * r27494;
        float r27496 = r27490 - r27495;
        float r27497 = sqrt(r27496);
        float r27498 = r27489 - r27497;
        float r27499 = 2.0f;
        float r27500 = r27499 * r27492;
        float r27501 = r27498 / r27500;
        return r27501;
}

double f_id(double a, double b, double c) {
        double r27502 = b;
        double r27503 = -r27502;
        double r27504 = r27502 * r27502;
        double r27505 = 4.0;
        double r27506 = a;
        double r27507 = c;
        double r27508 = r27506 * r27507;
        double r27509 = r27505 * r27508;
        double r27510 = r27504 - r27509;
        double r27511 = sqrt(r27510);
        double r27512 = r27503 - r27511;
        double r27513 = 2.0;
        double r27514 = r27513 * r27506;
        double r27515 = r27512 / r27514;
        return r27515;
}


double f_of(float a, float b, float c) {
        float r27516 = b;
        float r27517 = -4.930770214232589e+18f;
        bool r27518 = r27516 <= r27517;
        float r27519 = -r27516;
        float r27520 = r27519 + r27516;
        float r27521 = a;
        float r27522 = r27521 + r27521;
        float r27523 = r27520 / r27522;
        float r27524 = c;
        float r27525 = r27524 / r27516;
        float r27526 = r27523 - r27525;
        float r27527 = -4.4891519221511533e-128f;
        bool r27528 = r27516 <= r27527;
        float r27529 = 4.0f;
        float r27530 = r27529 * r27524;
        float r27531 = r27530 * r27521;
        float r27532 = r27531 / r27522;
        float r27533 = r27516 * r27516;
        float r27534 = r27524 * r27529;
        float r27535 = r27521 * r27534;
        float r27536 = r27533 - r27535;
        float r27537 = sqrt(r27536);
        float r27538 = r27519 + r27537;
        float r27539 = r27532 / r27538;
        float r27540 = 4.983767219933664e+51f;
        bool r27541 = r27516 <= r27540;
        float r27542 = 1.0f;
        float r27543 = r27519 - r27537;
        float r27544 = r27522 / r27543;
        float r27545 = r27542 / r27544;
        float r27546 = r27519 / r27521;
        float r27547 = r27541 ? r27545 : r27546;
        float r27548 = r27528 ? r27539 : r27547;
        float r27549 = r27518 ? r27526 : r27548;
        return r27549;
}

double f_od(double a, double b, double c) {
        double r27550 = b;
        double r27551 = -4.930770214232589e+18;
        bool r27552 = r27550 <= r27551;
        double r27553 = -r27550;
        double r27554 = r27553 + r27550;
        double r27555 = a;
        double r27556 = r27555 + r27555;
        double r27557 = r27554 / r27556;
        double r27558 = c;
        double r27559 = r27558 / r27550;
        double r27560 = r27557 - r27559;
        double r27561 = -4.4891519221511533e-128;
        bool r27562 = r27550 <= r27561;
        double r27563 = 4.0;
        double r27564 = r27563 * r27558;
        double r27565 = r27564 * r27555;
        double r27566 = r27565 / r27556;
        double r27567 = r27550 * r27550;
        double r27568 = r27558 * r27563;
        double r27569 = r27555 * r27568;
        double r27570 = r27567 - r27569;
        double r27571 = sqrt(r27570);
        double r27572 = r27553 + r27571;
        double r27573 = r27566 / r27572;
        double r27574 = 4.983767219933664e+51;
        bool r27575 = r27550 <= r27574;
        double r27576 = 1.0;
        double r27577 = r27553 - r27571;
        double r27578 = r27556 / r27577;
        double r27579 = r27576 / r27578;
        double r27580 = r27553 / r27555;
        double r27581 = r27575 ? r27579 : r27580;
        double r27582 = r27562 ? r27573 : r27581;
        double r27583 = r27552 ? r27560 : r27582;
        return r27583;
}

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 r27584, r27585, r27586, r27587, r27588, r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596, r27597;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27584);
        mpfr_init(r27585);
        mpfr_init(r27586);
        mpfr_init_set_str(r27587, "4", 10, MPFR_RNDN);
        mpfr_init(r27588);
        mpfr_init(r27589);
        mpfr_init(r27590);
        mpfr_init(r27591);
        mpfr_init(r27592);
        mpfr_init(r27593);
        mpfr_init(r27594);
        mpfr_init_set_str(r27595, "2", 10, MPFR_RNDN);
        mpfr_init(r27596);
        mpfr_init(r27597);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r27584, b, MPFR_RNDN);
        mpfr_neg(r27585, r27584, MPFR_RNDN);
        mpfr_mul(r27586, r27584, r27584, MPFR_RNDN);
        ;
        mpfr_set_d(r27588, a, MPFR_RNDN);
        mpfr_set_d(r27589, c, MPFR_RNDN);
        mpfr_mul(r27590, r27588, r27589, MPFR_RNDN);
        mpfr_mul(r27591, r27587, r27590, MPFR_RNDN);
        mpfr_sub(r27592, r27586, r27591, MPFR_RNDN);
        mpfr_sqrt(r27593, r27592, MPFR_RNDN);
        mpfr_sub(r27594, r27585, r27593, MPFR_RNDN);
        ;
        mpfr_mul(r27596, r27595, r27588, MPFR_RNDN);
        mpfr_div(r27597, r27594, r27596, MPFR_RNDN);
        return mpfr_get_d(r27597, MPFR_RNDN);
}

static mpfr_t r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609, r27610, r27611, r27612, r27613, r27614, r27615, r27616, r27617, r27618, r27619, r27620, r27621, r27622, r27623, r27624, r27625, r27626, r27627, r27628, r27629, r27630, r27631;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27598);
        mpfr_init_set_str(r27599, "-4.930770214232589e+18", 10, MPFR_RNDN);
        mpfr_init(r27600);
        mpfr_init(r27601);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init(r27606);
        mpfr_init(r27607);
        mpfr_init(r27608);
        mpfr_init_set_str(r27609, "-4.4891519221511533e-128", 10, MPFR_RNDN);
        mpfr_init(r27610);
        mpfr_init_set_str(r27611, "4", 10, MPFR_RNDN);
        mpfr_init(r27612);
        mpfr_init(r27613);
        mpfr_init(r27614);
        mpfr_init(r27615);
        mpfr_init(r27616);
        mpfr_init(r27617);
        mpfr_init(r27618);
        mpfr_init(r27619);
        mpfr_init(r27620);
        mpfr_init(r27621);
        mpfr_init_set_str(r27622, "4.983767219933664e+51", 10, MPFR_RNDN);
        mpfr_init(r27623);
        mpfr_init_set_str(r27624, "1", 10, MPFR_RNDN);
        mpfr_init(r27625);
        mpfr_init(r27626);
        mpfr_init(r27627);
        mpfr_init(r27628);
        mpfr_init(r27629);
        mpfr_init(r27630);
        mpfr_init(r27631);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r27598, b, MPFR_RNDN);
        ;
        mpfr_set_si(r27600, mpfr_cmp(r27598, r27599) <= 0, MPFR_RNDN);
        mpfr_neg(r27601, r27598, MPFR_RNDN);
        mpfr_add(r27602, r27601, r27598, MPFR_RNDN);
        mpfr_set_d(r27603, a, MPFR_RNDN);
        mpfr_add(r27604, r27603, r27603, MPFR_RNDN);
        mpfr_div(r27605, r27602, r27604, MPFR_RNDN);
        mpfr_set_d(r27606, c, MPFR_RNDN);
        mpfr_div(r27607, r27606, r27598, MPFR_RNDN);
        mpfr_sub(r27608, r27605, r27607, MPFR_RNDN);
        ;
        mpfr_set_si(r27610, mpfr_cmp(r27598, r27609) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27612, r27611, r27606, MPFR_RNDN);
        mpfr_mul(r27613, r27612, r27603, MPFR_RNDN);
        mpfr_div(r27614, r27613, r27604, MPFR_RNDN);
        mpfr_sqr(r27615, r27598, MPFR_RNDN);
        mpfr_mul(r27616, r27606, r27611, MPFR_RNDN);
        mpfr_mul(r27617, r27603, r27616, MPFR_RNDN);
        mpfr_sub(r27618, r27615, r27617, MPFR_RNDN);
        mpfr_sqrt(r27619, r27618, MPFR_RNDN);
        mpfr_add(r27620, r27601, r27619, MPFR_RNDN);
        mpfr_div(r27621, r27614, r27620, MPFR_RNDN);
        ;
        mpfr_set_si(r27623, mpfr_cmp(r27598, r27622) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r27625, r27601, r27619, MPFR_RNDN);
        mpfr_div(r27626, r27604, r27625, MPFR_RNDN);
        mpfr_div(r27627, r27624, r27626, MPFR_RNDN);
        mpfr_div(r27628, r27601, r27603, MPFR_RNDN);
        if (mpfr_get_si(r27623, MPFR_RNDN)) { mpfr_set(r27629, r27627, MPFR_RNDN); } else { mpfr_set(r27629, r27628, MPFR_RNDN); };
        if (mpfr_get_si(r27610, MPFR_RNDN)) { mpfr_set(r27630, r27621, MPFR_RNDN); } else { mpfr_set(r27630, r27629, MPFR_RNDN); };
        if (mpfr_get_si(r27600, MPFR_RNDN)) { mpfr_set(r27631, r27608, MPFR_RNDN); } else { mpfr_set(r27631, r27630, MPFR_RNDN); };
        return mpfr_get_d(r27631, MPFR_RNDN);
}

static mpfr_t r27632, r27633, r27634, r27635, r27636, r27637, r27638, r27639, r27640, r27641, r27642, r27643, r27644, r27645, r27646, r27647, r27648, r27649, r27650, r27651, r27652, r27653, r27654, r27655, r27656, r27657, r27658, r27659, r27660, r27661, r27662, r27663, r27664, r27665;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27632);
        mpfr_init_set_str(r27633, "-4.930770214232589e+18", 10, MPFR_RNDN);
        mpfr_init(r27634);
        mpfr_init(r27635);
        mpfr_init(r27636);
        mpfr_init(r27637);
        mpfr_init(r27638);
        mpfr_init(r27639);
        mpfr_init(r27640);
        mpfr_init(r27641);
        mpfr_init(r27642);
        mpfr_init_set_str(r27643, "-4.4891519221511533e-128", 10, MPFR_RNDN);
        mpfr_init(r27644);
        mpfr_init_set_str(r27645, "4", 10, MPFR_RNDN);
        mpfr_init(r27646);
        mpfr_init(r27647);
        mpfr_init(r27648);
        mpfr_init(r27649);
        mpfr_init(r27650);
        mpfr_init(r27651);
        mpfr_init(r27652);
        mpfr_init(r27653);
        mpfr_init(r27654);
        mpfr_init(r27655);
        mpfr_init_set_str(r27656, "4.983767219933664e+51", 10, MPFR_RNDN);
        mpfr_init(r27657);
        mpfr_init_set_str(r27658, "1", 10, MPFR_RNDN);
        mpfr_init(r27659);
        mpfr_init(r27660);
        mpfr_init(r27661);
        mpfr_init(r27662);
        mpfr_init(r27663);
        mpfr_init(r27664);
        mpfr_init(r27665);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r27632, b, MPFR_RNDN);
        ;
        mpfr_set_si(r27634, mpfr_cmp(r27632, r27633) <= 0, MPFR_RNDN);
        mpfr_neg(r27635, r27632, MPFR_RNDN);
        mpfr_add(r27636, r27635, r27632, MPFR_RNDN);
        mpfr_set_d(r27637, a, MPFR_RNDN);
        mpfr_add(r27638, r27637, r27637, MPFR_RNDN);
        mpfr_div(r27639, r27636, r27638, MPFR_RNDN);
        mpfr_set_d(r27640, c, MPFR_RNDN);
        mpfr_div(r27641, r27640, r27632, MPFR_RNDN);
        mpfr_sub(r27642, r27639, r27641, MPFR_RNDN);
        ;
        mpfr_set_si(r27644, mpfr_cmp(r27632, r27643) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27646, r27645, r27640, MPFR_RNDN);
        mpfr_mul(r27647, r27646, r27637, MPFR_RNDN);
        mpfr_div(r27648, r27647, r27638, MPFR_RNDN);
        mpfr_sqr(r27649, r27632, MPFR_RNDN);
        mpfr_mul(r27650, r27640, r27645, MPFR_RNDN);
        mpfr_mul(r27651, r27637, r27650, MPFR_RNDN);
        mpfr_sub(r27652, r27649, r27651, MPFR_RNDN);
        mpfr_sqrt(r27653, r27652, MPFR_RNDN);
        mpfr_add(r27654, r27635, r27653, MPFR_RNDN);
        mpfr_div(r27655, r27648, r27654, MPFR_RNDN);
        ;
        mpfr_set_si(r27657, mpfr_cmp(r27632, r27656) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r27659, r27635, r27653, MPFR_RNDN);
        mpfr_div(r27660, r27638, r27659, MPFR_RNDN);
        mpfr_div(r27661, r27658, r27660, MPFR_RNDN);
        mpfr_div(r27662, r27635, r27637, MPFR_RNDN);
        if (mpfr_get_si(r27657, MPFR_RNDN)) { mpfr_set(r27663, r27661, MPFR_RNDN); } else { mpfr_set(r27663, r27662, MPFR_RNDN); };
        if (mpfr_get_si(r27644, MPFR_RNDN)) { mpfr_set(r27664, r27655, MPFR_RNDN); } else { mpfr_set(r27664, r27663, MPFR_RNDN); };
        if (mpfr_get_si(r27634, MPFR_RNDN)) { mpfr_set(r27665, r27642, MPFR_RNDN); } else { mpfr_set(r27665, r27664, MPFR_RNDN); };
        return mpfr_get_d(r27665, MPFR_RNDN);
}

