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

char *name = "NMSE problem 3.4.6";

double f_if(float x, float n) {
        float r14695 = x;
        float r14696 = 1.0f;
        float r14697 = r14695 + r14696;
        float r14698 = n;
        float r14699 = r14696 / r14698;
        float r14700 = pow(r14697, r14699);
        float r14701 = pow(r14695, r14699);
        float r14702 = r14700 - r14701;
        return r14702;
}

double f_id(double x, double n) {
        double r14703 = x;
        double r14704 = 1.0;
        double r14705 = r14703 + r14704;
        double r14706 = n;
        double r14707 = r14704 / r14706;
        double r14708 = pow(r14705, r14707);
        double r14709 = pow(r14703, r14707);
        double r14710 = r14708 - r14709;
        return r14710;
}


double f_of(float x, float n) {
        float r14711 = x;
        float r14712 = 1.46646350936994e-16f;
        bool r14713 = r14711 <= r14712;
        float r14714 = 1.0f;
        float r14715 = log(r14711);
        float r14716 = n;
        float r14717 = r14715 / r14716;
        float r14718 = exp(r14717);
        float r14719 = r14714 - r14718;
        float r14720 = 1.2294048070907593f;
        bool r14721 = r14711 <= r14720;
        float r14722 = r14716 * r14711;
        float r14723 = r14714 / r14722;
        float r14724 = r14723 + r14714;
        float r14725 = r14724 - r14718;
        float r14726 = r14725 - r14717;
        float r14727 = r14711 + r14714;
        float r14728 = r14714 / r14716;
        float r14729 = pow(r14727, r14728);
        float r14730 = sqrt(r14729);
        float r14731 = pow(r14711, r14728);
        float r14732 = sqrt(r14731);
        float r14733 = r14730 + r14732;
        float r14734 = 0.5f;
        float r14735 = r14734 / r14716;
        float r14736 = r14735 / r14711;
        float r14737 = r14711 * r14716;
        float r14738 = r14715 / r14737;
        float r14739 = 0.25f;
        float r14740 = r14739 / r14716;
        float r14741 = r14738 * r14740;
        float r14742 = r14736 - r14741;
        float r14743 = r14711 * r14711;
        float r14744 = r14743 * r14716;
        float r14745 = r14739 / r14744;
        float r14746 = r14742 - r14745;
        float r14747 = r14733 * r14746;
        float r14748 = r14721 ? r14726 : r14747;
        float r14749 = r14713 ? r14719 : r14748;
        return r14749;
}

double f_od(double x, double n) {
        double r14750 = x;
        double r14751 = 1.46646350936994e-16;
        bool r14752 = r14750 <= r14751;
        double r14753 = 1.0;
        double r14754 = log(r14750);
        double r14755 = n;
        double r14756 = r14754 / r14755;
        double r14757 = exp(r14756);
        double r14758 = r14753 - r14757;
        double r14759 = 1.2294048070907593;
        bool r14760 = r14750 <= r14759;
        double r14761 = r14755 * r14750;
        double r14762 = r14753 / r14761;
        double r14763 = r14762 + r14753;
        double r14764 = r14763 - r14757;
        double r14765 = r14764 - r14756;
        double r14766 = r14750 + r14753;
        double r14767 = r14753 / r14755;
        double r14768 = pow(r14766, r14767);
        double r14769 = sqrt(r14768);
        double r14770 = pow(r14750, r14767);
        double r14771 = sqrt(r14770);
        double r14772 = r14769 + r14771;
        double r14773 = 0.5;
        double r14774 = r14773 / r14755;
        double r14775 = r14774 / r14750;
        double r14776 = r14750 * r14755;
        double r14777 = r14754 / r14776;
        double r14778 = 0.25;
        double r14779 = r14778 / r14755;
        double r14780 = r14777 * r14779;
        double r14781 = r14775 - r14780;
        double r14782 = r14750 * r14750;
        double r14783 = r14782 * r14755;
        double r14784 = r14778 / r14783;
        double r14785 = r14781 - r14784;
        double r14786 = r14772 * r14785;
        double r14787 = r14760 ? r14765 : r14786;
        double r14788 = r14752 ? r14758 : r14787;
        return r14788;
}

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 r14789, r14790, r14791, r14792, r14793, r14794, r14795, r14796;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14789);
        mpfr_init_set_str(r14790, "1", 10, MPFR_RNDN);
        mpfr_init(r14791);
        mpfr_init(r14792);
        mpfr_init(r14793);
        mpfr_init(r14794);
        mpfr_init(r14795);
        mpfr_init(r14796);
}

double f_im(double x, double n) {
        mpfr_set_d(r14789, x, MPFR_RNDN);
        ;
        mpfr_add(r14791, r14789, r14790, MPFR_RNDN);
        mpfr_set_d(r14792, n, MPFR_RNDN);
        mpfr_div(r14793, r14790, r14792, MPFR_RNDN);
        mpfr_pow(r14794, r14791, r14793, MPFR_RNDN);
        mpfr_pow(r14795, r14789, r14793, MPFR_RNDN);
        mpfr_sub(r14796, r14794, r14795, MPFR_RNDN);
        return mpfr_get_d(r14796, MPFR_RNDN);
}

static mpfr_t r14797, r14798, r14799, r14800, r14801, r14802, r14803, r14804, r14805, r14806, r14807, r14808, r14809, r14810, r14811, r14812, r14813, r14814, r14815, r14816, r14817, r14818, r14819, r14820, r14821, r14822, r14823, r14824, r14825, r14826, r14827, r14828, r14829, r14830, r14831, r14832, r14833, r14834, r14835;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14797);
        mpfr_init_set_str(r14798, "1.4664635f-16", 10, MPFR_RNDN);
        mpfr_init(r14799);
        mpfr_init_set_str(r14800, "1", 10, MPFR_RNDN);
        mpfr_init(r14801);
        mpfr_init(r14802);
        mpfr_init(r14803);
        mpfr_init(r14804);
        mpfr_init(r14805);
        mpfr_init_set_str(r14806, "1.2294048f0", 10, MPFR_RNDN);
        mpfr_init(r14807);
        mpfr_init(r14808);
        mpfr_init(r14809);
        mpfr_init(r14810);
        mpfr_init(r14811);
        mpfr_init(r14812);
        mpfr_init(r14813);
        mpfr_init(r14814);
        mpfr_init(r14815);
        mpfr_init(r14816);
        mpfr_init(r14817);
        mpfr_init(r14818);
        mpfr_init(r14819);
        mpfr_init_set_str(r14820, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14821);
        mpfr_init(r14822);
        mpfr_init(r14823);
        mpfr_init(r14824);
        mpfr_init_set_str(r14825, "1/4", 10, MPFR_RNDN);
        mpfr_init(r14826);
        mpfr_init(r14827);
        mpfr_init(r14828);
        mpfr_init(r14829);
        mpfr_init(r14830);
        mpfr_init(r14831);
        mpfr_init(r14832);
        mpfr_init(r14833);
        mpfr_init(r14834);
        mpfr_init(r14835);
}

double f_fm(double x, double n) {
        mpfr_set_d(r14797, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14799, mpfr_cmp(r14797, r14798) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r14801, r14797, MPFR_RNDN);
        mpfr_set_d(r14802, n, MPFR_RNDN);
        mpfr_div(r14803, r14801, r14802, MPFR_RNDN);
        mpfr_exp(r14804, r14803, MPFR_RNDN);
        mpfr_sub(r14805, r14800, r14804, MPFR_RNDN);
        ;
        mpfr_set_si(r14807, mpfr_cmp(r14797, r14806) <= 0, MPFR_RNDN);
        mpfr_mul(r14808, r14802, r14797, MPFR_RNDN);
        mpfr_div(r14809, r14800, r14808, MPFR_RNDN);
        mpfr_add(r14810, r14809, r14800, MPFR_RNDN);
        mpfr_sub(r14811, r14810, r14804, MPFR_RNDN);
        mpfr_sub(r14812, r14811, r14803, MPFR_RNDN);
        mpfr_add(r14813, r14797, r14800, MPFR_RNDN);
        mpfr_div(r14814, r14800, r14802, MPFR_RNDN);
        mpfr_pow(r14815, r14813, r14814, MPFR_RNDN);
        mpfr_sqrt(r14816, r14815, MPFR_RNDN);
        mpfr_pow(r14817, r14797, r14814, MPFR_RNDN);
        mpfr_sqrt(r14818, r14817, MPFR_RNDN);
        mpfr_add(r14819, r14816, r14818, MPFR_RNDN);
        ;
        mpfr_div(r14821, r14820, r14802, MPFR_RNDN);
        mpfr_div(r14822, r14821, r14797, MPFR_RNDN);
        mpfr_mul(r14823, r14797, r14802, MPFR_RNDN);
        mpfr_div(r14824, r14801, r14823, MPFR_RNDN);
        ;
        mpfr_div(r14826, r14825, r14802, MPFR_RNDN);
        mpfr_mul(r14827, r14824, r14826, MPFR_RNDN);
        mpfr_sub(r14828, r14822, r14827, MPFR_RNDN);
        mpfr_sqr(r14829, r14797, MPFR_RNDN);
        mpfr_mul(r14830, r14829, r14802, MPFR_RNDN);
        mpfr_div(r14831, r14825, r14830, MPFR_RNDN);
        mpfr_sub(r14832, r14828, r14831, MPFR_RNDN);
        mpfr_mul(r14833, r14819, r14832, MPFR_RNDN);
        if (mpfr_get_si(r14807, MPFR_RNDN)) { mpfr_set(r14834, r14812, MPFR_RNDN); } else { mpfr_set(r14834, r14833, MPFR_RNDN); };
        if (mpfr_get_si(r14799, MPFR_RNDN)) { mpfr_set(r14835, r14805, MPFR_RNDN); } else { mpfr_set(r14835, r14834, MPFR_RNDN); };
        return mpfr_get_d(r14835, MPFR_RNDN);
}

static mpfr_t r14836, r14837, r14838, r14839, r14840, r14841, r14842, r14843, r14844, r14845, r14846, r14847, r14848, r14849, r14850, r14851, r14852, r14853, r14854, r14855, r14856, r14857, r14858, r14859, r14860, r14861, r14862, r14863, r14864, r14865, r14866, r14867, r14868, r14869, r14870, r14871, r14872, r14873, r14874;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14836);
        mpfr_init_set_str(r14837, "1.4664635f-16", 10, MPFR_RNDN);
        mpfr_init(r14838);
        mpfr_init_set_str(r14839, "1", 10, MPFR_RNDN);
        mpfr_init(r14840);
        mpfr_init(r14841);
        mpfr_init(r14842);
        mpfr_init(r14843);
        mpfr_init(r14844);
        mpfr_init_set_str(r14845, "1.2294048f0", 10, MPFR_RNDN);
        mpfr_init(r14846);
        mpfr_init(r14847);
        mpfr_init(r14848);
        mpfr_init(r14849);
        mpfr_init(r14850);
        mpfr_init(r14851);
        mpfr_init(r14852);
        mpfr_init(r14853);
        mpfr_init(r14854);
        mpfr_init(r14855);
        mpfr_init(r14856);
        mpfr_init(r14857);
        mpfr_init(r14858);
        mpfr_init_set_str(r14859, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14860);
        mpfr_init(r14861);
        mpfr_init(r14862);
        mpfr_init(r14863);
        mpfr_init_set_str(r14864, "1/4", 10, MPFR_RNDN);
        mpfr_init(r14865);
        mpfr_init(r14866);
        mpfr_init(r14867);
        mpfr_init(r14868);
        mpfr_init(r14869);
        mpfr_init(r14870);
        mpfr_init(r14871);
        mpfr_init(r14872);
        mpfr_init(r14873);
        mpfr_init(r14874);
}

double f_dm(double x, double n) {
        mpfr_set_d(r14836, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14838, mpfr_cmp(r14836, r14837) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r14840, r14836, MPFR_RNDN);
        mpfr_set_d(r14841, n, MPFR_RNDN);
        mpfr_div(r14842, r14840, r14841, MPFR_RNDN);
        mpfr_exp(r14843, r14842, MPFR_RNDN);
        mpfr_sub(r14844, r14839, r14843, MPFR_RNDN);
        ;
        mpfr_set_si(r14846, mpfr_cmp(r14836, r14845) <= 0, MPFR_RNDN);
        mpfr_mul(r14847, r14841, r14836, MPFR_RNDN);
        mpfr_div(r14848, r14839, r14847, MPFR_RNDN);
        mpfr_add(r14849, r14848, r14839, MPFR_RNDN);
        mpfr_sub(r14850, r14849, r14843, MPFR_RNDN);
        mpfr_sub(r14851, r14850, r14842, MPFR_RNDN);
        mpfr_add(r14852, r14836, r14839, MPFR_RNDN);
        mpfr_div(r14853, r14839, r14841, MPFR_RNDN);
        mpfr_pow(r14854, r14852, r14853, MPFR_RNDN);
        mpfr_sqrt(r14855, r14854, MPFR_RNDN);
        mpfr_pow(r14856, r14836, r14853, MPFR_RNDN);
        mpfr_sqrt(r14857, r14856, MPFR_RNDN);
        mpfr_add(r14858, r14855, r14857, MPFR_RNDN);
        ;
        mpfr_div(r14860, r14859, r14841, MPFR_RNDN);
        mpfr_div(r14861, r14860, r14836, MPFR_RNDN);
        mpfr_mul(r14862, r14836, r14841, MPFR_RNDN);
        mpfr_div(r14863, r14840, r14862, MPFR_RNDN);
        ;
        mpfr_div(r14865, r14864, r14841, MPFR_RNDN);
        mpfr_mul(r14866, r14863, r14865, MPFR_RNDN);
        mpfr_sub(r14867, r14861, r14866, MPFR_RNDN);
        mpfr_sqr(r14868, r14836, MPFR_RNDN);
        mpfr_mul(r14869, r14868, r14841, MPFR_RNDN);
        mpfr_div(r14870, r14864, r14869, MPFR_RNDN);
        mpfr_sub(r14871, r14867, r14870, MPFR_RNDN);
        mpfr_mul(r14872, r14858, r14871, MPFR_RNDN);
        if (mpfr_get_si(r14846, MPFR_RNDN)) { mpfr_set(r14873, r14851, MPFR_RNDN); } else { mpfr_set(r14873, r14872, MPFR_RNDN); };
        if (mpfr_get_si(r14838, MPFR_RNDN)) { mpfr_set(r14874, r14844, MPFR_RNDN); } else { mpfr_set(r14874, r14873, MPFR_RNDN); };
        return mpfr_get_d(r14874, MPFR_RNDN);
}

