#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 = n;
        float r14712 = -1.0672306230003151e+27f;
        bool r14713 = r14711 <= r14712;
        float r14714 = 1.0f;
        float r14715 = x;
        float r14716 = r14711 * r14715;
        float r14717 = r14714 / r14716;
        float r14718 = r14717 + r14714;
        float r14719 = log(r14715);
        float r14720 = r14719 / r14711;
        float r14721 = exp(r14720);
        float r14722 = r14718 - r14721;
        float r14723 = r14722 - r14720;
        float r14724 = -29453316.0f;
        bool r14725 = r14711 <= r14724;
        float r14726 = 0.5f;
        float r14727 = r14726 / r14715;
        float r14728 = r14727 / r14711;
        float r14729 = 0.25f;
        float r14730 = r14711 * r14711;
        float r14731 = r14729 / r14730;
        float r14732 = r14719 / r14715;
        float r14733 = r14731 * r14732;
        float r14734 = r14728 - r14733;
        float r14735 = r14715 * r14715;
        float r14736 = r14711 * r14735;
        float r14737 = r14729 / r14736;
        float r14738 = r14734 - r14737;
        float r14739 = r14715 + r14714;
        float r14740 = r14714 / r14711;
        float r14741 = pow(r14739, r14740);
        float r14742 = sqrt(r14741);
        float r14743 = pow(r14715, r14740);
        float r14744 = sqrt(r14743);
        float r14745 = r14742 + r14744;
        float r14746 = r14738 * r14745;
        float r14747 = 7393.6171875f;
        bool r14748 = r14711 <= r14747;
        float r14749 = 0.3333333432674408f;
        float r14750 = r14749 * r14715;
        float r14751 = r14750 - r14726;
        float r14752 = r14751 * r14735;
        float r14753 = r14715 + r14752;
        float r14754 = r14753 / r14711;
        float r14755 = exp(r14754);
        float r14756 = r14755 - r14743;
        float r14757 = r14748 ? r14756 : r14746;
        float r14758 = r14725 ? r14746 : r14757;
        float r14759 = r14713 ? r14723 : r14758;
        return r14759;
}

double f_od(double x, double n) {
        double r14760 = n;
        double r14761 = -1.0672306230003151e+27;
        bool r14762 = r14760 <= r14761;
        double r14763 = 1.0;
        double r14764 = x;
        double r14765 = r14760 * r14764;
        double r14766 = r14763 / r14765;
        double r14767 = r14766 + r14763;
        double r14768 = log(r14764);
        double r14769 = r14768 / r14760;
        double r14770 = exp(r14769);
        double r14771 = r14767 - r14770;
        double r14772 = r14771 - r14769;
        double r14773 = -29453316.0;
        bool r14774 = r14760 <= r14773;
        double r14775 = 0.5;
        double r14776 = r14775 / r14764;
        double r14777 = r14776 / r14760;
        double r14778 = 0.25;
        double r14779 = r14760 * r14760;
        double r14780 = r14778 / r14779;
        double r14781 = r14768 / r14764;
        double r14782 = r14780 * r14781;
        double r14783 = r14777 - r14782;
        double r14784 = r14764 * r14764;
        double r14785 = r14760 * r14784;
        double r14786 = r14778 / r14785;
        double r14787 = r14783 - r14786;
        double r14788 = r14764 + r14763;
        double r14789 = r14763 / r14760;
        double r14790 = pow(r14788, r14789);
        double r14791 = sqrt(r14790);
        double r14792 = pow(r14764, r14789);
        double r14793 = sqrt(r14792);
        double r14794 = r14791 + r14793;
        double r14795 = r14787 * r14794;
        double r14796 = 7393.6171875;
        bool r14797 = r14760 <= r14796;
        double r14798 = 0.3333333432674408;
        double r14799 = r14798 * r14764;
        double r14800 = r14799 - r14775;
        double r14801 = r14800 * r14784;
        double r14802 = r14764 + r14801;
        double r14803 = r14802 / r14760;
        double r14804 = exp(r14803);
        double r14805 = r14804 - r14792;
        double r14806 = r14797 ? r14805 : r14795;
        double r14807 = r14774 ? r14795 : r14806;
        double r14808 = r14762 ? r14772 : r14807;
        return r14808;
}

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 r14809, r14810, r14811, r14812, r14813, r14814, r14815, r14816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14809);
        mpfr_init_set_str(r14810, "1", 10, MPFR_RNDN);
        mpfr_init(r14811);
        mpfr_init(r14812);
        mpfr_init(r14813);
        mpfr_init(r14814);
        mpfr_init(r14815);
        mpfr_init(r14816);
}

double f_im(double x, double n) {
        mpfr_set_d(r14809, x, MPFR_RNDN);
        ;
        mpfr_add(r14811, r14809, r14810, MPFR_RNDN);
        mpfr_set_d(r14812, n, MPFR_RNDN);
        mpfr_div(r14813, r14810, r14812, MPFR_RNDN);
        mpfr_pow(r14814, r14811, r14813, MPFR_RNDN);
        mpfr_pow(r14815, r14809, r14813, MPFR_RNDN);
        mpfr_sub(r14816, r14814, r14815, MPFR_RNDN);
        return mpfr_get_d(r14816, MPFR_RNDN);
}

static mpfr_t r14817, r14818, r14819, r14820, r14821, r14822, r14823, r14824, r14825, r14826, r14827, r14828, r14829, r14830, r14831, r14832, r14833, r14834, r14835, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14817);
        mpfr_init_set_str(r14818, "-1.0672306f+27", 10, MPFR_RNDN);
        mpfr_init(r14819);
        mpfr_init_set_str(r14820, "1", 10, MPFR_RNDN);
        mpfr_init(r14821);
        mpfr_init(r14822);
        mpfr_init(r14823);
        mpfr_init(r14824);
        mpfr_init(r14825);
        mpfr_init(r14826);
        mpfr_init(r14827);
        mpfr_init(r14828);
        mpfr_init(r14829);
        mpfr_init_set_str(r14830, "-29453316.0f0", 10, MPFR_RNDN);
        mpfr_init(r14831);
        mpfr_init_set_str(r14832, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14833);
        mpfr_init(r14834);
        mpfr_init_set_str(r14835, "1/4", 10, MPFR_RNDN);
        mpfr_init(r14836);
        mpfr_init(r14837);
        mpfr_init(r14838);
        mpfr_init(r14839);
        mpfr_init(r14840);
        mpfr_init(r14841);
        mpfr_init(r14842);
        mpfr_init(r14843);
        mpfr_init(r14844);
        mpfr_init(r14845);
        mpfr_init(r14846);
        mpfr_init(r14847);
        mpfr_init(r14848);
        mpfr_init(r14849);
        mpfr_init(r14850);
        mpfr_init(r14851);
        mpfr_init(r14852);
        mpfr_init_set_str(r14853, "7393.617f0", 10, MPFR_RNDN);
        mpfr_init(r14854);
        mpfr_init_set_str(r14855, "1/3", 10, MPFR_RNDN);
        mpfr_init(r14856);
        mpfr_init(r14857);
        mpfr_init(r14858);
        mpfr_init(r14859);
        mpfr_init(r14860);
        mpfr_init(r14861);
        mpfr_init(r14862);
        mpfr_init(r14863);
        mpfr_init(r14864);
        mpfr_init(r14865);
}

double f_fm(double x, double n) {
        mpfr_set_d(r14817, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14819, mpfr_cmp(r14817, r14818) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14821, x, MPFR_RNDN);
        mpfr_mul(r14822, r14817, r14821, MPFR_RNDN);
        mpfr_div(r14823, r14820, r14822, MPFR_RNDN);
        mpfr_add(r14824, r14823, r14820, MPFR_RNDN);
        mpfr_log(r14825, r14821, MPFR_RNDN);
        mpfr_div(r14826, r14825, r14817, MPFR_RNDN);
        mpfr_exp(r14827, r14826, MPFR_RNDN);
        mpfr_sub(r14828, r14824, r14827, MPFR_RNDN);
        mpfr_sub(r14829, r14828, r14826, MPFR_RNDN);
        ;
        mpfr_set_si(r14831, mpfr_cmp(r14817, r14830) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r14833, r14832, r14821, MPFR_RNDN);
        mpfr_div(r14834, r14833, r14817, MPFR_RNDN);
        ;
        mpfr_mul(r14836, r14817, r14817, MPFR_RNDN);
        mpfr_div(r14837, r14835, r14836, MPFR_RNDN);
        mpfr_div(r14838, r14825, r14821, MPFR_RNDN);
        mpfr_mul(r14839, r14837, r14838, MPFR_RNDN);
        mpfr_sub(r14840, r14834, r14839, MPFR_RNDN);
        mpfr_sqr(r14841, r14821, MPFR_RNDN);
        mpfr_mul(r14842, r14817, r14841, MPFR_RNDN);
        mpfr_div(r14843, r14835, r14842, MPFR_RNDN);
        mpfr_sub(r14844, r14840, r14843, MPFR_RNDN);
        mpfr_add(r14845, r14821, r14820, MPFR_RNDN);
        mpfr_div(r14846, r14820, r14817, MPFR_RNDN);
        mpfr_pow(r14847, r14845, r14846, MPFR_RNDN);
        mpfr_sqrt(r14848, r14847, MPFR_RNDN);
        mpfr_pow(r14849, r14821, r14846, MPFR_RNDN);
        mpfr_sqrt(r14850, r14849, MPFR_RNDN);
        mpfr_add(r14851, r14848, r14850, MPFR_RNDN);
        mpfr_mul(r14852, r14844, r14851, MPFR_RNDN);
        ;
        mpfr_set_si(r14854, mpfr_cmp(r14817, r14853) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r14856, r14855, r14821, MPFR_RNDN);
        mpfr_sub(r14857, r14856, r14832, MPFR_RNDN);
        mpfr_mul(r14858, r14857, r14841, MPFR_RNDN);
        mpfr_add(r14859, r14821, r14858, MPFR_RNDN);
        mpfr_div(r14860, r14859, r14817, MPFR_RNDN);
        mpfr_exp(r14861, r14860, MPFR_RNDN);
        mpfr_sub(r14862, r14861, r14849, MPFR_RNDN);
        if (mpfr_get_si(r14854, MPFR_RNDN)) { mpfr_set(r14863, r14862, MPFR_RNDN); } else { mpfr_set(r14863, r14852, MPFR_RNDN); };
        if (mpfr_get_si(r14831, MPFR_RNDN)) { mpfr_set(r14864, r14852, MPFR_RNDN); } else { mpfr_set(r14864, r14863, MPFR_RNDN); };
        if (mpfr_get_si(r14819, MPFR_RNDN)) { mpfr_set(r14865, r14829, MPFR_RNDN); } else { mpfr_set(r14865, r14864, MPFR_RNDN); };
        return mpfr_get_d(r14865, MPFR_RNDN);
}

static mpfr_t r14866, r14867, r14868, r14869, r14870, r14871, r14872, r14873, r14874, r14875, r14876, r14877, r14878, r14879, r14880, r14881, r14882, r14883, r14884, r14885, r14886, r14887, r14888, r14889, r14890, r14891, r14892, r14893, r14894, r14895, r14896, r14897, r14898, r14899, r14900, r14901, r14902, r14903, r14904, r14905, r14906, r14907, r14908, r14909, r14910, r14911, r14912, r14913, r14914;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14866);
        mpfr_init_set_str(r14867, "-1.0672306f+27", 10, MPFR_RNDN);
        mpfr_init(r14868);
        mpfr_init_set_str(r14869, "1", 10, MPFR_RNDN);
        mpfr_init(r14870);
        mpfr_init(r14871);
        mpfr_init(r14872);
        mpfr_init(r14873);
        mpfr_init(r14874);
        mpfr_init(r14875);
        mpfr_init(r14876);
        mpfr_init(r14877);
        mpfr_init(r14878);
        mpfr_init_set_str(r14879, "-29453316.0f0", 10, MPFR_RNDN);
        mpfr_init(r14880);
        mpfr_init_set_str(r14881, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14882);
        mpfr_init(r14883);
        mpfr_init_set_str(r14884, "1/4", 10, MPFR_RNDN);
        mpfr_init(r14885);
        mpfr_init(r14886);
        mpfr_init(r14887);
        mpfr_init(r14888);
        mpfr_init(r14889);
        mpfr_init(r14890);
        mpfr_init(r14891);
        mpfr_init(r14892);
        mpfr_init(r14893);
        mpfr_init(r14894);
        mpfr_init(r14895);
        mpfr_init(r14896);
        mpfr_init(r14897);
        mpfr_init(r14898);
        mpfr_init(r14899);
        mpfr_init(r14900);
        mpfr_init(r14901);
        mpfr_init_set_str(r14902, "7393.617f0", 10, MPFR_RNDN);
        mpfr_init(r14903);
        mpfr_init_set_str(r14904, "1/3", 10, MPFR_RNDN);
        mpfr_init(r14905);
        mpfr_init(r14906);
        mpfr_init(r14907);
        mpfr_init(r14908);
        mpfr_init(r14909);
        mpfr_init(r14910);
        mpfr_init(r14911);
        mpfr_init(r14912);
        mpfr_init(r14913);
        mpfr_init(r14914);
}

double f_dm(double x, double n) {
        mpfr_set_d(r14866, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14868, mpfr_cmp(r14866, r14867) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14870, x, MPFR_RNDN);
        mpfr_mul(r14871, r14866, r14870, MPFR_RNDN);
        mpfr_div(r14872, r14869, r14871, MPFR_RNDN);
        mpfr_add(r14873, r14872, r14869, MPFR_RNDN);
        mpfr_log(r14874, r14870, MPFR_RNDN);
        mpfr_div(r14875, r14874, r14866, MPFR_RNDN);
        mpfr_exp(r14876, r14875, MPFR_RNDN);
        mpfr_sub(r14877, r14873, r14876, MPFR_RNDN);
        mpfr_sub(r14878, r14877, r14875, MPFR_RNDN);
        ;
        mpfr_set_si(r14880, mpfr_cmp(r14866, r14879) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r14882, r14881, r14870, MPFR_RNDN);
        mpfr_div(r14883, r14882, r14866, MPFR_RNDN);
        ;
        mpfr_mul(r14885, r14866, r14866, MPFR_RNDN);
        mpfr_div(r14886, r14884, r14885, MPFR_RNDN);
        mpfr_div(r14887, r14874, r14870, MPFR_RNDN);
        mpfr_mul(r14888, r14886, r14887, MPFR_RNDN);
        mpfr_sub(r14889, r14883, r14888, MPFR_RNDN);
        mpfr_sqr(r14890, r14870, MPFR_RNDN);
        mpfr_mul(r14891, r14866, r14890, MPFR_RNDN);
        mpfr_div(r14892, r14884, r14891, MPFR_RNDN);
        mpfr_sub(r14893, r14889, r14892, MPFR_RNDN);
        mpfr_add(r14894, r14870, r14869, MPFR_RNDN);
        mpfr_div(r14895, r14869, r14866, MPFR_RNDN);
        mpfr_pow(r14896, r14894, r14895, MPFR_RNDN);
        mpfr_sqrt(r14897, r14896, MPFR_RNDN);
        mpfr_pow(r14898, r14870, r14895, MPFR_RNDN);
        mpfr_sqrt(r14899, r14898, MPFR_RNDN);
        mpfr_add(r14900, r14897, r14899, MPFR_RNDN);
        mpfr_mul(r14901, r14893, r14900, MPFR_RNDN);
        ;
        mpfr_set_si(r14903, mpfr_cmp(r14866, r14902) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r14905, r14904, r14870, MPFR_RNDN);
        mpfr_sub(r14906, r14905, r14881, MPFR_RNDN);
        mpfr_mul(r14907, r14906, r14890, MPFR_RNDN);
        mpfr_add(r14908, r14870, r14907, MPFR_RNDN);
        mpfr_div(r14909, r14908, r14866, MPFR_RNDN);
        mpfr_exp(r14910, r14909, MPFR_RNDN);
        mpfr_sub(r14911, r14910, r14898, MPFR_RNDN);
        if (mpfr_get_si(r14903, MPFR_RNDN)) { mpfr_set(r14912, r14911, MPFR_RNDN); } else { mpfr_set(r14912, r14901, MPFR_RNDN); };
        if (mpfr_get_si(r14880, MPFR_RNDN)) { mpfr_set(r14913, r14901, MPFR_RNDN); } else { mpfr_set(r14913, r14912, MPFR_RNDN); };
        if (mpfr_get_si(r14868, MPFR_RNDN)) { mpfr_set(r14914, r14878, MPFR_RNDN); } else { mpfr_set(r14914, r14913, MPFR_RNDN); };
        return mpfr_get_d(r14914, MPFR_RNDN);
}

