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

char *name = "NMSE problem 3.4.4";

double f_if(float x) {
        float r14623 = 2.0f;
        float r14624 = x;
        float r14625 = r14623 * r14624;
        float r14626 = exp(r14625);
        float r14627 = 1.0f;
        float r14628 = r14626 - r14627;
        float r14629 = exp(r14624);
        float r14630 = r14629 - r14627;
        float r14631 = r14628 / r14630;
        float r14632 = sqrt(r14631);
        return r14632;
}

double f_id(double x) {
        double r14633 = 2.0;
        double r14634 = x;
        double r14635 = r14633 * r14634;
        double r14636 = exp(r14635);
        double r14637 = 1.0;
        double r14638 = r14636 - r14637;
        double r14639 = exp(r14634);
        double r14640 = r14639 - r14637;
        double r14641 = r14638 / r14640;
        double r14642 = sqrt(r14641);
        return r14642;
}


double f_of(float x) {
        float r14643 = x;
        float r14644 = -8.867720861083589e-13f;
        bool r14645 = r14643 <= r14644;
        float r14646 = 2.0f;
        float r14647 = r14646 * r14643;
        float r14648 = exp(r14647);
        float r14649 = 1.0f;
        float r14650 = r14648 - r14649;
        float r14651 = exp(r14643);
        float r14652 = r14651 - r14649;
        float r14653 = r14650 / r14652;
        float r14654 = sqrt(r14653);
        float r14655 = 0.5f;
        float r14656 = r14643 * r14643;
        float r14657 = r14655 * r14656;
        float r14658 = r14646 + r14643;
        float r14659 = r14657 + r14658;
        float r14660 = sqrt(r14659);
        float r14661 = r14645 ? r14654 : r14660;
        return r14661;
}

double f_od(double x) {
        double r14662 = x;
        double r14663 = -8.867720861083589e-13;
        bool r14664 = r14662 <= r14663;
        double r14665 = 2.0;
        double r14666 = r14665 * r14662;
        double r14667 = exp(r14666);
        double r14668 = 1.0;
        double r14669 = r14667 - r14668;
        double r14670 = exp(r14662);
        double r14671 = r14670 - r14668;
        double r14672 = r14669 / r14671;
        double r14673 = sqrt(r14672);
        double r14674 = 0.5;
        double r14675 = r14662 * r14662;
        double r14676 = r14674 * r14675;
        double r14677 = r14665 + r14662;
        double r14678 = r14676 + r14677;
        double r14679 = sqrt(r14678);
        double r14680 = r14664 ? r14673 : r14679;
        return r14680;
}

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 r14681, r14682, r14683, r14684, r14685, r14686, r14687, r14688, r14689, r14690;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r14681, "2", 10, MPFR_RNDN);
        mpfr_init(r14682);
        mpfr_init(r14683);
        mpfr_init(r14684);
        mpfr_init_set_str(r14685, "1", 10, MPFR_RNDN);
        mpfr_init(r14686);
        mpfr_init(r14687);
        mpfr_init(r14688);
        mpfr_init(r14689);
        mpfr_init(r14690);
}

double f_im(double x) {
        ;
        mpfr_set_d(r14682, x, MPFR_RNDN);
        mpfr_mul(r14683, r14681, r14682, MPFR_RNDN);
        mpfr_exp(r14684, r14683, MPFR_RNDN);
        ;
        mpfr_sub(r14686, r14684, r14685, MPFR_RNDN);
        mpfr_exp(r14687, r14682, MPFR_RNDN);
        mpfr_sub(r14688, r14687, r14685, MPFR_RNDN);
        mpfr_div(r14689, r14686, r14688, MPFR_RNDN);
        mpfr_sqrt(r14690, r14689, MPFR_RNDN);
        return mpfr_get_d(r14690, MPFR_RNDN);
}

static mpfr_t r14691, r14692, r14693, r14694, r14695, r14696, r14697, r14698, r14699, r14700, r14701, r14702, r14703, r14704, r14705, r14706, r14707, r14708, r14709;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14691);
        mpfr_init_set_str(r14692, "-8.867720861083589e-13", 10, MPFR_RNDN);
        mpfr_init(r14693);
        mpfr_init_set_str(r14694, "2", 10, MPFR_RNDN);
        mpfr_init(r14695);
        mpfr_init(r14696);
        mpfr_init_set_str(r14697, "1", 10, MPFR_RNDN);
        mpfr_init(r14698);
        mpfr_init(r14699);
        mpfr_init(r14700);
        mpfr_init(r14701);
        mpfr_init(r14702);
        mpfr_init_set_str(r14703, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14704);
        mpfr_init(r14705);
        mpfr_init(r14706);
        mpfr_init(r14707);
        mpfr_init(r14708);
        mpfr_init(r14709);
}

double f_fm(double x) {
        mpfr_set_d(r14691, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14693, mpfr_cmp(r14691, r14692) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r14695, r14694, r14691, MPFR_RNDN);
        mpfr_exp(r14696, r14695, MPFR_RNDN);
        ;
        mpfr_sub(r14698, r14696, r14697, MPFR_RNDN);
        mpfr_exp(r14699, r14691, MPFR_RNDN);
        mpfr_sub(r14700, r14699, r14697, MPFR_RNDN);
        mpfr_div(r14701, r14698, r14700, MPFR_RNDN);
        mpfr_sqrt(r14702, r14701, MPFR_RNDN);
        ;
        mpfr_sqr(r14704, r14691, MPFR_RNDN);
        mpfr_mul(r14705, r14703, r14704, MPFR_RNDN);
        mpfr_add(r14706, r14694, r14691, MPFR_RNDN);
        mpfr_add(r14707, r14705, r14706, MPFR_RNDN);
        mpfr_sqrt(r14708, r14707, MPFR_RNDN);
        if (mpfr_get_si(r14693, MPFR_RNDN)) { mpfr_set(r14709, r14702, MPFR_RNDN); } else { mpfr_set(r14709, r14708, MPFR_RNDN); };
        return mpfr_get_d(r14709, MPFR_RNDN);
}

static mpfr_t r14710, r14711, r14712, r14713, r14714, r14715, r14716, r14717, r14718, r14719, r14720, r14721, r14722, r14723, r14724, r14725, r14726, r14727, r14728;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14710);
        mpfr_init_set_str(r14711, "-8.867720861083589e-13", 10, MPFR_RNDN);
        mpfr_init(r14712);
        mpfr_init_set_str(r14713, "2", 10, MPFR_RNDN);
        mpfr_init(r14714);
        mpfr_init(r14715);
        mpfr_init_set_str(r14716, "1", 10, MPFR_RNDN);
        mpfr_init(r14717);
        mpfr_init(r14718);
        mpfr_init(r14719);
        mpfr_init(r14720);
        mpfr_init(r14721);
        mpfr_init_set_str(r14722, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14723);
        mpfr_init(r14724);
        mpfr_init(r14725);
        mpfr_init(r14726);
        mpfr_init(r14727);
        mpfr_init(r14728);
}

double f_dm(double x) {
        mpfr_set_d(r14710, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14712, mpfr_cmp(r14710, r14711) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r14714, r14713, r14710, MPFR_RNDN);
        mpfr_exp(r14715, r14714, MPFR_RNDN);
        ;
        mpfr_sub(r14717, r14715, r14716, MPFR_RNDN);
        mpfr_exp(r14718, r14710, MPFR_RNDN);
        mpfr_sub(r14719, r14718, r14716, MPFR_RNDN);
        mpfr_div(r14720, r14717, r14719, MPFR_RNDN);
        mpfr_sqrt(r14721, r14720, MPFR_RNDN);
        ;
        mpfr_sqr(r14723, r14710, MPFR_RNDN);
        mpfr_mul(r14724, r14722, r14723, MPFR_RNDN);
        mpfr_add(r14725, r14713, r14710, MPFR_RNDN);
        mpfr_add(r14726, r14724, r14725, MPFR_RNDN);
        mpfr_sqrt(r14727, r14726, MPFR_RNDN);
        if (mpfr_get_si(r14712, MPFR_RNDN)) { mpfr_set(r14728, r14721, MPFR_RNDN); } else { mpfr_set(r14728, r14727, MPFR_RNDN); };
        return mpfr_get_d(r14728, MPFR_RNDN);
}

