#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 r4619544 = b;
        float r4619545 = -r4619544;
        float r4619546 = r4619544 * r4619544;
        float r4619547 = 4.0f;
        float r4619548 = a;
        float r4619549 = c;
        float r4619550 = r4619548 * r4619549;
        float r4619551 = r4619547 * r4619550;
        float r4619552 = r4619546 - r4619551;
        float r4619553 = sqrt(r4619552);
        float r4619554 = r4619545 - r4619553;
        float r4619555 = 2.0f;
        float r4619556 = r4619555 * r4619548;
        float r4619557 = r4619554 / r4619556;
        return r4619557;
}

double f_id(double a, double b, double c) {
        double r4619558 = b;
        double r4619559 = -r4619558;
        double r4619560 = r4619558 * r4619558;
        double r4619561 = 4.0;
        double r4619562 = a;
        double r4619563 = c;
        double r4619564 = r4619562 * r4619563;
        double r4619565 = r4619561 * r4619564;
        double r4619566 = r4619560 - r4619565;
        double r4619567 = sqrt(r4619566);
        double r4619568 = r4619559 - r4619567;
        double r4619569 = 2.0;
        double r4619570 = r4619569 * r4619562;
        double r4619571 = r4619568 / r4619570;
        return r4619571;
}


double f_of(float a, float b, float c) {
        float r4619572 = b;
        float r4619573 = -4.531827883994214e-14f;
        bool r4619574 = r4619572 <= r4619573;
        float r4619575 = 4.0f;
        float r4619576 = 2.0f;
        float r4619577 = r4619575 / r4619576;
        float r4619578 = c;
        float r4619579 = r4619577 * r4619578;
        float r4619580 = r4619578 * r4619576;
        float r4619581 = a;
        float r4619582 = r4619572 / r4619581;
        float r4619583 = r4619580 / r4619582;
        float r4619584 = r4619572 * r4619576;
        float r4619585 = r4619583 - r4619584;
        float r4619586 = r4619579 / r4619585;
        float r4619587 = 1438490.0801097094f;
        bool r4619588 = r4619572 <= r4619587;
        float r4619589 = -r4619572;
        float r4619590 = r4619572 * r4619572;
        float r4619591 = r4619581 * r4619578;
        float r4619592 = r4619575 * r4619591;
        float r4619593 = r4619590 - r4619592;
        float r4619594 = sqrt(r4619593);
        float r4619595 = r4619589 - r4619594;
        float r4619596 = 1.0f;
        float r4619597 = r4619576 * r4619581;
        float r4619598 = r4619596 / r4619597;
        float r4619599 = r4619595 * r4619598;
        float r4619600 = r4619578 / r4619572;
        float r4619601 = r4619600 - r4619582;
        float r4619602 = r4619588 ? r4619599 : r4619601;
        float r4619603 = r4619574 ? r4619586 : r4619602;
        return r4619603;
}

double f_od(double a, double b, double c) {
        double r4619604 = b;
        double r4619605 = -4.531827883994214e-14;
        bool r4619606 = r4619604 <= r4619605;
        double r4619607 = 4.0;
        double r4619608 = 2.0;
        double r4619609 = r4619607 / r4619608;
        double r4619610 = c;
        double r4619611 = r4619609 * r4619610;
        double r4619612 = r4619610 * r4619608;
        double r4619613 = a;
        double r4619614 = r4619604 / r4619613;
        double r4619615 = r4619612 / r4619614;
        double r4619616 = r4619604 * r4619608;
        double r4619617 = r4619615 - r4619616;
        double r4619618 = r4619611 / r4619617;
        double r4619619 = 1438490.0801097094;
        bool r4619620 = r4619604 <= r4619619;
        double r4619621 = -r4619604;
        double r4619622 = r4619604 * r4619604;
        double r4619623 = r4619613 * r4619610;
        double r4619624 = r4619607 * r4619623;
        double r4619625 = r4619622 - r4619624;
        double r4619626 = sqrt(r4619625);
        double r4619627 = r4619621 - r4619626;
        double r4619628 = 1.0;
        double r4619629 = r4619608 * r4619613;
        double r4619630 = r4619628 / r4619629;
        double r4619631 = r4619627 * r4619630;
        double r4619632 = r4619610 / r4619604;
        double r4619633 = r4619632 - r4619614;
        double r4619634 = r4619620 ? r4619631 : r4619633;
        double r4619635 = r4619606 ? r4619618 : r4619634;
        return r4619635;
}

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 r4619636, r4619637, r4619638, r4619639, r4619640, r4619641, r4619642, r4619643, r4619644, r4619645, r4619646, r4619647, r4619648, r4619649;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619636);
        mpfr_init(r4619637);
        mpfr_init(r4619638);
        mpfr_init_set_str(r4619639, "4", 10, MPFR_RNDN);
        mpfr_init(r4619640);
        mpfr_init(r4619641);
        mpfr_init(r4619642);
        mpfr_init(r4619643);
        mpfr_init(r4619644);
        mpfr_init(r4619645);
        mpfr_init(r4619646);
        mpfr_init_set_str(r4619647, "2", 10, MPFR_RNDN);
        mpfr_init(r4619648);
        mpfr_init(r4619649);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4619636, b, MPFR_RNDN);
        mpfr_neg(r4619637, r4619636, MPFR_RNDN);
        mpfr_sqr(r4619638, r4619636, MPFR_RNDN);
        ;
        mpfr_set_d(r4619640, a, MPFR_RNDN);
        mpfr_set_d(r4619641, c, MPFR_RNDN);
        mpfr_mul(r4619642, r4619640, r4619641, MPFR_RNDN);
        mpfr_mul(r4619643, r4619639, r4619642, MPFR_RNDN);
        mpfr_sub(r4619644, r4619638, r4619643, MPFR_RNDN);
        mpfr_sqrt(r4619645, r4619644, MPFR_RNDN);
        mpfr_sub(r4619646, r4619637, r4619645, MPFR_RNDN);
        ;
        mpfr_mul(r4619648, r4619647, r4619640, MPFR_RNDN);
        mpfr_div(r4619649, r4619646, r4619648, MPFR_RNDN);
        return mpfr_get_d(r4619649, MPFR_RNDN);
}

static mpfr_t r4619650, r4619651, r4619652, r4619653, r4619654, r4619655, r4619656, r4619657, r4619658, r4619659, r4619660, r4619661, r4619662, r4619663, r4619664, r4619665, r4619666, r4619667, r4619668, r4619669, r4619670, r4619671, r4619672, r4619673, r4619674, r4619675, r4619676, r4619677, r4619678, r4619679, r4619680, r4619681;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619650);
        mpfr_init_set_str(r4619651, "-4.531827883994214e-14", 10, MPFR_RNDN);
        mpfr_init(r4619652);
        mpfr_init_set_str(r4619653, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619654, "2", 10, MPFR_RNDN);
        mpfr_init(r4619655);
        mpfr_init(r4619656);
        mpfr_init(r4619657);
        mpfr_init(r4619658);
        mpfr_init(r4619659);
        mpfr_init(r4619660);
        mpfr_init(r4619661);
        mpfr_init(r4619662);
        mpfr_init(r4619663);
        mpfr_init(r4619664);
        mpfr_init_set_str(r4619665, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4619666);
        mpfr_init(r4619667);
        mpfr_init(r4619668);
        mpfr_init(r4619669);
        mpfr_init(r4619670);
        mpfr_init(r4619671);
        mpfr_init(r4619672);
        mpfr_init(r4619673);
        mpfr_init_set_str(r4619674, "1", 10, MPFR_RNDN);
        mpfr_init(r4619675);
        mpfr_init(r4619676);
        mpfr_init(r4619677);
        mpfr_init(r4619678);
        mpfr_init(r4619679);
        mpfr_init(r4619680);
        mpfr_init(r4619681);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4619650, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4619652, mpfr_cmp(r4619650, r4619651) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4619655, r4619653, r4619654, MPFR_RNDN);
        mpfr_set_d(r4619656, c, MPFR_RNDN);
        mpfr_mul(r4619657, r4619655, r4619656, MPFR_RNDN);
        mpfr_mul(r4619658, r4619656, r4619654, MPFR_RNDN);
        mpfr_set_d(r4619659, a, MPFR_RNDN);
        mpfr_div(r4619660, r4619650, r4619659, MPFR_RNDN);
        mpfr_div(r4619661, r4619658, r4619660, MPFR_RNDN);
        mpfr_mul(r4619662, r4619650, r4619654, MPFR_RNDN);
        mpfr_sub(r4619663, r4619661, r4619662, MPFR_RNDN);
        mpfr_div(r4619664, r4619657, r4619663, MPFR_RNDN);
        ;
        mpfr_set_si(r4619666, mpfr_cmp(r4619650, r4619665) <= 0, MPFR_RNDN);
        mpfr_neg(r4619667, r4619650, MPFR_RNDN);
        mpfr_sqr(r4619668, r4619650, MPFR_RNDN);
        mpfr_mul(r4619669, r4619659, r4619656, MPFR_RNDN);
        mpfr_mul(r4619670, r4619653, r4619669, MPFR_RNDN);
        mpfr_sub(r4619671, r4619668, r4619670, MPFR_RNDN);
        mpfr_sqrt(r4619672, r4619671, MPFR_RNDN);
        mpfr_sub(r4619673, r4619667, r4619672, MPFR_RNDN);
        ;
        mpfr_mul(r4619675, r4619654, r4619659, MPFR_RNDN);
        mpfr_div(r4619676, r4619674, r4619675, MPFR_RNDN);
        mpfr_mul(r4619677, r4619673, r4619676, MPFR_RNDN);
        mpfr_div(r4619678, r4619656, r4619650, MPFR_RNDN);
        mpfr_sub(r4619679, r4619678, r4619660, MPFR_RNDN);
        if (mpfr_get_si(r4619666, MPFR_RNDN)) { mpfr_set(r4619680, r4619677, MPFR_RNDN); } else { mpfr_set(r4619680, r4619679, MPFR_RNDN); };
        if (mpfr_get_si(r4619652, MPFR_RNDN)) { mpfr_set(r4619681, r4619664, MPFR_RNDN); } else { mpfr_set(r4619681, r4619680, MPFR_RNDN); };
        return mpfr_get_d(r4619681, MPFR_RNDN);
}

static mpfr_t r4619682, r4619683, r4619684, r4619685, r4619686, r4619687, r4619688, r4619689, r4619690, r4619691, r4619692, r4619693, r4619694, r4619695, r4619696, r4619697, r4619698, r4619699, r4619700, r4619701, r4619702, r4619703, r4619704, r4619705, r4619706, r4619707, r4619708, r4619709, r4619710, r4619711, r4619712, r4619713;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619682);
        mpfr_init_set_str(r4619683, "-4.531827883994214e-14", 10, MPFR_RNDN);
        mpfr_init(r4619684);
        mpfr_init_set_str(r4619685, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619686, "2", 10, MPFR_RNDN);
        mpfr_init(r4619687);
        mpfr_init(r4619688);
        mpfr_init(r4619689);
        mpfr_init(r4619690);
        mpfr_init(r4619691);
        mpfr_init(r4619692);
        mpfr_init(r4619693);
        mpfr_init(r4619694);
        mpfr_init(r4619695);
        mpfr_init(r4619696);
        mpfr_init_set_str(r4619697, "1438490.0801097094", 10, MPFR_RNDN);
        mpfr_init(r4619698);
        mpfr_init(r4619699);
        mpfr_init(r4619700);
        mpfr_init(r4619701);
        mpfr_init(r4619702);
        mpfr_init(r4619703);
        mpfr_init(r4619704);
        mpfr_init(r4619705);
        mpfr_init_set_str(r4619706, "1", 10, MPFR_RNDN);
        mpfr_init(r4619707);
        mpfr_init(r4619708);
        mpfr_init(r4619709);
        mpfr_init(r4619710);
        mpfr_init(r4619711);
        mpfr_init(r4619712);
        mpfr_init(r4619713);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4619682, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4619684, mpfr_cmp(r4619682, r4619683) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4619687, r4619685, r4619686, MPFR_RNDN);
        mpfr_set_d(r4619688, c, MPFR_RNDN);
        mpfr_mul(r4619689, r4619687, r4619688, MPFR_RNDN);
        mpfr_mul(r4619690, r4619688, r4619686, MPFR_RNDN);
        mpfr_set_d(r4619691, a, MPFR_RNDN);
        mpfr_div(r4619692, r4619682, r4619691, MPFR_RNDN);
        mpfr_div(r4619693, r4619690, r4619692, MPFR_RNDN);
        mpfr_mul(r4619694, r4619682, r4619686, MPFR_RNDN);
        mpfr_sub(r4619695, r4619693, r4619694, MPFR_RNDN);
        mpfr_div(r4619696, r4619689, r4619695, MPFR_RNDN);
        ;
        mpfr_set_si(r4619698, mpfr_cmp(r4619682, r4619697) <= 0, MPFR_RNDN);
        mpfr_neg(r4619699, r4619682, MPFR_RNDN);
        mpfr_sqr(r4619700, r4619682, MPFR_RNDN);
        mpfr_mul(r4619701, r4619691, r4619688, MPFR_RNDN);
        mpfr_mul(r4619702, r4619685, r4619701, MPFR_RNDN);
        mpfr_sub(r4619703, r4619700, r4619702, MPFR_RNDN);
        mpfr_sqrt(r4619704, r4619703, MPFR_RNDN);
        mpfr_sub(r4619705, r4619699, r4619704, MPFR_RNDN);
        ;
        mpfr_mul(r4619707, r4619686, r4619691, MPFR_RNDN);
        mpfr_div(r4619708, r4619706, r4619707, MPFR_RNDN);
        mpfr_mul(r4619709, r4619705, r4619708, MPFR_RNDN);
        mpfr_div(r4619710, r4619688, r4619682, MPFR_RNDN);
        mpfr_sub(r4619711, r4619710, r4619692, MPFR_RNDN);
        if (mpfr_get_si(r4619698, MPFR_RNDN)) { mpfr_set(r4619712, r4619709, MPFR_RNDN); } else { mpfr_set(r4619712, r4619711, MPFR_RNDN); };
        if (mpfr_get_si(r4619684, MPFR_RNDN)) { mpfr_set(r4619713, r4619696, MPFR_RNDN); } else { mpfr_set(r4619713, r4619712, MPFR_RNDN); };
        return mpfr_get_d(r4619713, MPFR_RNDN);
}

