#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 r18605 = b;
        float r18606 = -r18605;
        float r18607 = r18605 * r18605;
        float r18608 = 4.0f;
        float r18609 = a;
        float r18610 = c;
        float r18611 = r18609 * r18610;
        float r18612 = r18608 * r18611;
        float r18613 = r18607 - r18612;
        float r18614 = sqrt(r18613);
        float r18615 = r18606 - r18614;
        float r18616 = 2.0f;
        float r18617 = r18616 * r18609;
        float r18618 = r18615 / r18617;
        return r18618;
}

double f_id(double a, double b, double c) {
        double r18619 = b;
        double r18620 = -r18619;
        double r18621 = r18619 * r18619;
        double r18622 = 4.0;
        double r18623 = a;
        double r18624 = c;
        double r18625 = r18623 * r18624;
        double r18626 = r18622 * r18625;
        double r18627 = r18621 - r18626;
        double r18628 = sqrt(r18627);
        double r18629 = r18620 - r18628;
        double r18630 = 2.0;
        double r18631 = r18630 * r18623;
        double r18632 = r18629 / r18631;
        return r18632;
}


double f_of(float a, float b, float c) {
        float r18633 = b;
        float r18634 = -5.9693493062289544e+153f;
        bool r18635 = r18633 <= r18634;
        float r18636 = -r18633;
        float r18637 = r18633 + r18636;
        float r18638 = a;
        float r18639 = r18638 + r18638;
        float r18640 = r18637 / r18639;
        float r18641 = c;
        float r18642 = r18641 / r18633;
        float r18643 = r18640 - r18642;
        float r18644 = -2.5398543492506256e-241f;
        bool r18645 = r18633 <= r18644;
        float r18646 = 4.0f;
        float r18647 = 2.0f;
        float r18648 = r18646 / r18647;
        float r18649 = r18633 * r18633;
        float r18650 = r18641 * r18646;
        float r18651 = r18638 * r18650;
        float r18652 = r18649 - r18651;
        float r18653 = sqrt(r18652);
        float r18654 = r18636 + r18653;
        float r18655 = r18641 / r18654;
        float r18656 = r18648 * r18655;
        float r18657 = 3.474250069101817e+81f;
        bool r18658 = r18633 <= r18657;
        float r18659 = r18633 * r18633;
        float r18660 = r18646 * r18638;
        float r18661 = r18660 * r18641;
        float r18662 = r18659 - r18661;
        float r18663 = sqrt(r18662);
        float r18664 = r18636 - r18663;
        float r18665 = r18647 * r18638;
        float r18666 = r18664 / r18665;
        float r18667 = r18636 / r18638;
        float r18668 = r18658 ? r18666 : r18667;
        float r18669 = r18645 ? r18656 : r18668;
        float r18670 = r18635 ? r18643 : r18669;
        return r18670;
}

double f_od(double a, double b, double c) {
        double r18671 = b;
        double r18672 = -5.9693493062289544e+153;
        bool r18673 = r18671 <= r18672;
        double r18674 = -r18671;
        double r18675 = r18671 + r18674;
        double r18676 = a;
        double r18677 = r18676 + r18676;
        double r18678 = r18675 / r18677;
        double r18679 = c;
        double r18680 = r18679 / r18671;
        double r18681 = r18678 - r18680;
        double r18682 = -2.5398543492506256e-241;
        bool r18683 = r18671 <= r18682;
        double r18684 = 4.0;
        double r18685 = 2.0;
        double r18686 = r18684 / r18685;
        double r18687 = r18671 * r18671;
        double r18688 = r18679 * r18684;
        double r18689 = r18676 * r18688;
        double r18690 = r18687 - r18689;
        double r18691 = sqrt(r18690);
        double r18692 = r18674 + r18691;
        double r18693 = r18679 / r18692;
        double r18694 = r18686 * r18693;
        double r18695 = 3.474250069101817e+81;
        bool r18696 = r18671 <= r18695;
        double r18697 = r18671 * r18671;
        double r18698 = r18684 * r18676;
        double r18699 = r18698 * r18679;
        double r18700 = r18697 - r18699;
        double r18701 = sqrt(r18700);
        double r18702 = r18674 - r18701;
        double r18703 = r18685 * r18676;
        double r18704 = r18702 / r18703;
        double r18705 = r18674 / r18676;
        double r18706 = r18696 ? r18704 : r18705;
        double r18707 = r18683 ? r18694 : r18706;
        double r18708 = r18673 ? r18681 : r18707;
        return r18708;
}

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 r18709, r18710, r18711, r18712, r18713, r18714, r18715, r18716, r18717, r18718, r18719, r18720, r18721, r18722;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
        mpfr_init_set_str(r18712, "4", 10, MPFR_RNDN);
        mpfr_init(r18713);
        mpfr_init(r18714);
        mpfr_init(r18715);
        mpfr_init(r18716);
        mpfr_init(r18717);
        mpfr_init(r18718);
        mpfr_init(r18719);
        mpfr_init_set_str(r18720, "2", 10, MPFR_RNDN);
        mpfr_init(r18721);
        mpfr_init(r18722);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r18709, b, MPFR_RNDN);
        mpfr_neg(r18710, r18709, MPFR_RNDN);
        mpfr_sqr(r18711, r18709, MPFR_RNDN);
        ;
        mpfr_set_d(r18713, a, MPFR_RNDN);
        mpfr_set_d(r18714, c, MPFR_RNDN);
        mpfr_mul(r18715, r18713, r18714, MPFR_RNDN);
        mpfr_mul(r18716, r18712, r18715, MPFR_RNDN);
        mpfr_sub(r18717, r18711, r18716, MPFR_RNDN);
        mpfr_sqrt(r18718, r18717, MPFR_RNDN);
        mpfr_sub(r18719, r18710, r18718, MPFR_RNDN);
        ;
        mpfr_mul(r18721, r18720, r18713, MPFR_RNDN);
        mpfr_div(r18722, r18719, r18721, MPFR_RNDN);
        return mpfr_get_d(r18722, MPFR_RNDN);
}

static mpfr_t r18723, r18724, r18725, r18726, r18727, r18728, r18729, r18730, r18731, r18732, r18733, r18734, r18735, r18736, r18737, r18738, r18739, r18740, r18741, r18742, r18743, r18744, r18745, r18746, r18747, r18748, r18749, r18750, r18751, r18752, r18753, r18754, r18755, r18756, r18757, r18758, r18759, r18760;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18723);
        mpfr_init_set_str(r18724, "-5.9693493062289544e+153", 10, MPFR_RNDN);
        mpfr_init(r18725);
        mpfr_init(r18726);
        mpfr_init(r18727);
        mpfr_init(r18728);
        mpfr_init(r18729);
        mpfr_init(r18730);
        mpfr_init(r18731);
        mpfr_init(r18732);
        mpfr_init(r18733);
        mpfr_init_set_str(r18734, "-2.5398543492506256e-241", 10, MPFR_RNDN);
        mpfr_init(r18735);
        mpfr_init_set_str(r18736, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r18737, "2", 10, MPFR_RNDN);
        mpfr_init(r18738);
        mpfr_init(r18739);
        mpfr_init(r18740);
        mpfr_init(r18741);
        mpfr_init(r18742);
        mpfr_init(r18743);
        mpfr_init(r18744);
        mpfr_init(r18745);
        mpfr_init(r18746);
        mpfr_init_set_str(r18747, "3.474250069101817e+81", 10, MPFR_RNDN);
        mpfr_init(r18748);
        mpfr_init(r18749);
        mpfr_init(r18750);
        mpfr_init(r18751);
        mpfr_init(r18752);
        mpfr_init(r18753);
        mpfr_init(r18754);
        mpfr_init(r18755);
        mpfr_init(r18756);
        mpfr_init(r18757);
        mpfr_init(r18758);
        mpfr_init(r18759);
        mpfr_init(r18760);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r18723, b, MPFR_RNDN);
        ;
        mpfr_set_si(r18725, mpfr_cmp(r18723, r18724) <= 0, MPFR_RNDN);
        mpfr_neg(r18726, r18723, MPFR_RNDN);
        mpfr_add(r18727, r18723, r18726, MPFR_RNDN);
        mpfr_set_d(r18728, a, MPFR_RNDN);
        mpfr_add(r18729, r18728, r18728, MPFR_RNDN);
        mpfr_div(r18730, r18727, r18729, MPFR_RNDN);
        mpfr_set_d(r18731, c, MPFR_RNDN);
        mpfr_div(r18732, r18731, r18723, MPFR_RNDN);
        mpfr_sub(r18733, r18730, r18732, MPFR_RNDN);
        ;
        mpfr_set_si(r18735, mpfr_cmp(r18723, r18734) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18738, r18736, r18737, MPFR_RNDN);
        mpfr_mul(r18739, r18723, r18723, MPFR_RNDN);
        mpfr_mul(r18740, r18731, r18736, MPFR_RNDN);
        mpfr_mul(r18741, r18728, r18740, MPFR_RNDN);
        mpfr_sub(r18742, r18739, r18741, MPFR_RNDN);
        mpfr_sqrt(r18743, r18742, MPFR_RNDN);
        mpfr_add(r18744, r18726, r18743, MPFR_RNDN);
        mpfr_div(r18745, r18731, r18744, MPFR_RNDN);
        mpfr_mul(r18746, r18738, r18745, MPFR_RNDN);
        ;
        mpfr_set_si(r18748, mpfr_cmp(r18723, r18747) <= 0, MPFR_RNDN);
        mpfr_sqr(r18749, r18723, MPFR_RNDN);
        mpfr_mul(r18750, r18736, r18728, MPFR_RNDN);
        mpfr_mul(r18751, r18750, r18731, MPFR_RNDN);
        mpfr_sub(r18752, r18749, r18751, MPFR_RNDN);
        mpfr_sqrt(r18753, r18752, MPFR_RNDN);
        mpfr_sub(r18754, r18726, r18753, MPFR_RNDN);
        mpfr_mul(r18755, r18737, r18728, MPFR_RNDN);
        mpfr_div(r18756, r18754, r18755, MPFR_RNDN);
        mpfr_div(r18757, r18726, r18728, MPFR_RNDN);
        if (mpfr_get_si(r18748, MPFR_RNDN)) { mpfr_set(r18758, r18756, MPFR_RNDN); } else { mpfr_set(r18758, r18757, MPFR_RNDN); };
        if (mpfr_get_si(r18735, MPFR_RNDN)) { mpfr_set(r18759, r18746, MPFR_RNDN); } else { mpfr_set(r18759, r18758, MPFR_RNDN); };
        if (mpfr_get_si(r18725, MPFR_RNDN)) { mpfr_set(r18760, r18733, MPFR_RNDN); } else { mpfr_set(r18760, r18759, MPFR_RNDN); };
        return mpfr_get_d(r18760, MPFR_RNDN);
}

static mpfr_t r18761, r18762, r18763, r18764, r18765, r18766, r18767, r18768, r18769, r18770, r18771, r18772, r18773, r18774, r18775, r18776, r18777, r18778, r18779, r18780, r18781, r18782, r18783, r18784, r18785, r18786, r18787, r18788, r18789, r18790, r18791, r18792, r18793, r18794, r18795, r18796, r18797, r18798;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18761);
        mpfr_init_set_str(r18762, "-5.9693493062289544e+153", 10, MPFR_RNDN);
        mpfr_init(r18763);
        mpfr_init(r18764);
        mpfr_init(r18765);
        mpfr_init(r18766);
        mpfr_init(r18767);
        mpfr_init(r18768);
        mpfr_init(r18769);
        mpfr_init(r18770);
        mpfr_init(r18771);
        mpfr_init_set_str(r18772, "-2.5398543492506256e-241", 10, MPFR_RNDN);
        mpfr_init(r18773);
        mpfr_init_set_str(r18774, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r18775, "2", 10, MPFR_RNDN);
        mpfr_init(r18776);
        mpfr_init(r18777);
        mpfr_init(r18778);
        mpfr_init(r18779);
        mpfr_init(r18780);
        mpfr_init(r18781);
        mpfr_init(r18782);
        mpfr_init(r18783);
        mpfr_init(r18784);
        mpfr_init_set_str(r18785, "3.474250069101817e+81", 10, MPFR_RNDN);
        mpfr_init(r18786);
        mpfr_init(r18787);
        mpfr_init(r18788);
        mpfr_init(r18789);
        mpfr_init(r18790);
        mpfr_init(r18791);
        mpfr_init(r18792);
        mpfr_init(r18793);
        mpfr_init(r18794);
        mpfr_init(r18795);
        mpfr_init(r18796);
        mpfr_init(r18797);
        mpfr_init(r18798);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r18761, b, MPFR_RNDN);
        ;
        mpfr_set_si(r18763, mpfr_cmp(r18761, r18762) <= 0, MPFR_RNDN);
        mpfr_neg(r18764, r18761, MPFR_RNDN);
        mpfr_add(r18765, r18761, r18764, MPFR_RNDN);
        mpfr_set_d(r18766, a, MPFR_RNDN);
        mpfr_add(r18767, r18766, r18766, MPFR_RNDN);
        mpfr_div(r18768, r18765, r18767, MPFR_RNDN);
        mpfr_set_d(r18769, c, MPFR_RNDN);
        mpfr_div(r18770, r18769, r18761, MPFR_RNDN);
        mpfr_sub(r18771, r18768, r18770, MPFR_RNDN);
        ;
        mpfr_set_si(r18773, mpfr_cmp(r18761, r18772) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18776, r18774, r18775, MPFR_RNDN);
        mpfr_mul(r18777, r18761, r18761, MPFR_RNDN);
        mpfr_mul(r18778, r18769, r18774, MPFR_RNDN);
        mpfr_mul(r18779, r18766, r18778, MPFR_RNDN);
        mpfr_sub(r18780, r18777, r18779, MPFR_RNDN);
        mpfr_sqrt(r18781, r18780, MPFR_RNDN);
        mpfr_add(r18782, r18764, r18781, MPFR_RNDN);
        mpfr_div(r18783, r18769, r18782, MPFR_RNDN);
        mpfr_mul(r18784, r18776, r18783, MPFR_RNDN);
        ;
        mpfr_set_si(r18786, mpfr_cmp(r18761, r18785) <= 0, MPFR_RNDN);
        mpfr_sqr(r18787, r18761, MPFR_RNDN);
        mpfr_mul(r18788, r18774, r18766, MPFR_RNDN);
        mpfr_mul(r18789, r18788, r18769, MPFR_RNDN);
        mpfr_sub(r18790, r18787, r18789, MPFR_RNDN);
        mpfr_sqrt(r18791, r18790, MPFR_RNDN);
        mpfr_sub(r18792, r18764, r18791, MPFR_RNDN);
        mpfr_mul(r18793, r18775, r18766, MPFR_RNDN);
        mpfr_div(r18794, r18792, r18793, MPFR_RNDN);
        mpfr_div(r18795, r18764, r18766, MPFR_RNDN);
        if (mpfr_get_si(r18786, MPFR_RNDN)) { mpfr_set(r18796, r18794, MPFR_RNDN); } else { mpfr_set(r18796, r18795, MPFR_RNDN); };
        if (mpfr_get_si(r18773, MPFR_RNDN)) { mpfr_set(r18797, r18784, MPFR_RNDN); } else { mpfr_set(r18797, r18796, MPFR_RNDN); };
        if (mpfr_get_si(r18763, MPFR_RNDN)) { mpfr_set(r18798, r18771, MPFR_RNDN); } else { mpfr_set(r18798, r18797, MPFR_RNDN); };
        return mpfr_get_d(r18798, MPFR_RNDN);
}

