#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 = -846584004.9676423f;
        bool r14713 = r14711 <= r14712;
        float r14714 = 2.0f;
        float r14715 = x;
        float r14716 = r14714 / r14715;
        float r14717 = r14716 / r14711;
        float r14718 = 4.0f;
        float r14719 = r14718 / r14715;
        float r14720 = log(r14715);
        float r14721 = r14711 * r14711;
        float r14722 = r14720 / r14721;
        float r14723 = r14719 * r14722;
        float r14724 = r14717 - r14723;
        float r14725 = 1.0f;
        float r14726 = r14725 / r14711;
        float r14727 = r14715 * r14715;
        float r14728 = r14726 / r14727;
        float r14729 = r14724 - r14728;
        float r14730 = pow(r14715, r14726);
        float r14731 = r14725 + r14715;
        float r14732 = pow(r14731, r14726);
        float r14733 = r14730 + r14732;
        float r14734 = r14729 / r14733;
        float r14735 = 1.0094449940811532e+18f;
        bool r14736 = r14711 <= r14735;
        float r14737 = r14715 + r14725;
        float r14738 = pow(r14737, r14726);
        float r14739 = r14738 - r14730;
        float r14740 = exp(r14739);
        float r14741 = cbrt(r14740);
        float r14742 = r14741 * (r14741 * r14741);
        float r14743 = log(r14742);
        float r14744 = r14736 ? r14743 : r14734;
        float r14745 = r14713 ? r14734 : r14744;
        return r14745;
}

double f_od(double x, double n) {
        double r14746 = n;
        double r14747 = -846584004.9676423;
        bool r14748 = r14746 <= r14747;
        double r14749 = 2.0;
        double r14750 = x;
        double r14751 = r14749 / r14750;
        double r14752 = r14751 / r14746;
        double r14753 = 4.0;
        double r14754 = r14753 / r14750;
        double r14755 = log(r14750);
        double r14756 = r14746 * r14746;
        double r14757 = r14755 / r14756;
        double r14758 = r14754 * r14757;
        double r14759 = r14752 - r14758;
        double r14760 = 1.0;
        double r14761 = r14760 / r14746;
        double r14762 = r14750 * r14750;
        double r14763 = r14761 / r14762;
        double r14764 = r14759 - r14763;
        double r14765 = pow(r14750, r14761);
        double r14766 = r14760 + r14750;
        double r14767 = pow(r14766, r14761);
        double r14768 = r14765 + r14767;
        double r14769 = r14764 / r14768;
        double r14770 = 1.0094449940811532e+18;
        bool r14771 = r14746 <= r14770;
        double r14772 = r14750 + r14760;
        double r14773 = pow(r14772, r14761);
        double r14774 = r14773 - r14765;
        double r14775 = exp(r14774);
        double r14776 = cbrt(r14775);
        double r14777 = r14776 * (r14776 * r14776);
        double r14778 = log(r14777);
        double r14779 = r14771 ? r14778 : r14769;
        double r14780 = r14748 ? r14769 : r14779;
        return r14780;
}

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 r14781, r14782, r14783, r14784, r14785, r14786, r14787, r14788;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14781);
        mpfr_init_set_str(r14782, "1", 10, MPFR_RNDN);
        mpfr_init(r14783);
        mpfr_init(r14784);
        mpfr_init(r14785);
        mpfr_init(r14786);
        mpfr_init(r14787);
        mpfr_init(r14788);
}

double f_im(double x, double n) {
        mpfr_set_d(r14781, x, MPFR_RNDN);
        ;
        mpfr_add(r14783, r14781, r14782, MPFR_RNDN);
        mpfr_set_d(r14784, n, MPFR_RNDN);
        mpfr_div(r14785, r14782, r14784, MPFR_RNDN);
        mpfr_pow(r14786, r14783, r14785, MPFR_RNDN);
        mpfr_pow(r14787, r14781, r14785, MPFR_RNDN);
        mpfr_sub(r14788, r14786, r14787, MPFR_RNDN);
        return mpfr_get_d(r14788, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14789);
        mpfr_init_set_str(r14790, "-846584004.9676423", 10, MPFR_RNDN);
        mpfr_init(r14791);
        mpfr_init_set_str(r14792, "2", 10, MPFR_RNDN);
        mpfr_init(r14793);
        mpfr_init(r14794);
        mpfr_init(r14795);
        mpfr_init_set_str(r14796, "4", 10, MPFR_RNDN);
        mpfr_init(r14797);
        mpfr_init(r14798);
        mpfr_init(r14799);
        mpfr_init(r14800);
        mpfr_init(r14801);
        mpfr_init(r14802);
        mpfr_init_set_str(r14803, "1", 10, MPFR_RNDN);
        mpfr_init(r14804);
        mpfr_init(r14805);
        mpfr_init(r14806);
        mpfr_init(r14807);
        mpfr_init(r14808);
        mpfr_init(r14809);
        mpfr_init(r14810);
        mpfr_init(r14811);
        mpfr_init(r14812);
        mpfr_init_set_str(r14813, "1.0094449940811532e+18", 10, MPFR_RNDN);
        mpfr_init(r14814);
        mpfr_init(r14815);
        mpfr_init(r14816);
        mpfr_init(r14817);
        mpfr_init(r14818);
        mpfr_init(r14819);
        mpfr_init(r14820);
        mpfr_init(r14821);
        mpfr_init(r14822);
        mpfr_init(r14823);
}

double f_fm(double x, double n) {
        mpfr_set_d(r14789, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14791, mpfr_cmp(r14789, r14790) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14793, x, MPFR_RNDN);
        mpfr_div(r14794, r14792, r14793, MPFR_RNDN);
        mpfr_div(r14795, r14794, r14789, MPFR_RNDN);
        ;
        mpfr_div(r14797, r14796, r14793, MPFR_RNDN);
        mpfr_log(r14798, r14793, MPFR_RNDN);
        mpfr_mul(r14799, r14789, r14789, MPFR_RNDN);
        mpfr_div(r14800, r14798, r14799, MPFR_RNDN);
        mpfr_mul(r14801, r14797, r14800, MPFR_RNDN);
        mpfr_sub(r14802, r14795, r14801, MPFR_RNDN);
        ;
        mpfr_div(r14804, r14803, r14789, MPFR_RNDN);
        mpfr_mul(r14805, r14793, r14793, MPFR_RNDN);
        mpfr_div(r14806, r14804, r14805, MPFR_RNDN);
        mpfr_sub(r14807, r14802, r14806, MPFR_RNDN);
        mpfr_pow(r14808, r14793, r14804, MPFR_RNDN);
        mpfr_add(r14809, r14803, r14793, MPFR_RNDN);
        mpfr_pow(r14810, r14809, r14804, MPFR_RNDN);
        mpfr_add(r14811, r14808, r14810, MPFR_RNDN);
        mpfr_div(r14812, r14807, r14811, MPFR_RNDN);
        ;
        mpfr_set_si(r14814, mpfr_cmp(r14789, r14813) <= 0, MPFR_RNDN);
        mpfr_add(r14815, r14793, r14803, MPFR_RNDN);
        mpfr_pow(r14816, r14815, r14804, MPFR_RNDN);
        mpfr_sub(r14817, r14816, r14808, MPFR_RNDN);
        mpfr_exp(r14818, r14817, MPFR_RNDN);
        mpfr_cbrt(r14819, r14818, MPFR_RNDN);
        mpfr_mul(r14820, r14819, r14819, MPFR_RNDN); mpfr_mul(r14820, r14820, r14819, MPFR_RNDN);
        mpfr_log(r14821, r14820, MPFR_RNDN);
        if (mpfr_get_si(r14814, MPFR_RNDN)) { mpfr_set(r14822, r14821, MPFR_RNDN); } else { mpfr_set(r14822, r14812, MPFR_RNDN); };
        if (mpfr_get_si(r14791, MPFR_RNDN)) { mpfr_set(r14823, r14812, MPFR_RNDN); } else { mpfr_set(r14823, r14822, MPFR_RNDN); };
        return mpfr_get_d(r14823, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14824);
        mpfr_init_set_str(r14825, "-846584004.9676423", 10, MPFR_RNDN);
        mpfr_init(r14826);
        mpfr_init_set_str(r14827, "2", 10, MPFR_RNDN);
        mpfr_init(r14828);
        mpfr_init(r14829);
        mpfr_init(r14830);
        mpfr_init_set_str(r14831, "4", 10, MPFR_RNDN);
        mpfr_init(r14832);
        mpfr_init(r14833);
        mpfr_init(r14834);
        mpfr_init(r14835);
        mpfr_init(r14836);
        mpfr_init(r14837);
        mpfr_init_set_str(r14838, "1", 10, MPFR_RNDN);
        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_set_str(r14848, "1.0094449940811532e+18", 10, MPFR_RNDN);
        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);
}

double f_dm(double x, double n) {
        mpfr_set_d(r14824, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14826, mpfr_cmp(r14824, r14825) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14828, x, MPFR_RNDN);
        mpfr_div(r14829, r14827, r14828, MPFR_RNDN);
        mpfr_div(r14830, r14829, r14824, MPFR_RNDN);
        ;
        mpfr_div(r14832, r14831, r14828, MPFR_RNDN);
        mpfr_log(r14833, r14828, MPFR_RNDN);
        mpfr_mul(r14834, r14824, r14824, MPFR_RNDN);
        mpfr_div(r14835, r14833, r14834, MPFR_RNDN);
        mpfr_mul(r14836, r14832, r14835, MPFR_RNDN);
        mpfr_sub(r14837, r14830, r14836, MPFR_RNDN);
        ;
        mpfr_div(r14839, r14838, r14824, MPFR_RNDN);
        mpfr_mul(r14840, r14828, r14828, MPFR_RNDN);
        mpfr_div(r14841, r14839, r14840, MPFR_RNDN);
        mpfr_sub(r14842, r14837, r14841, MPFR_RNDN);
        mpfr_pow(r14843, r14828, r14839, MPFR_RNDN);
        mpfr_add(r14844, r14838, r14828, MPFR_RNDN);
        mpfr_pow(r14845, r14844, r14839, MPFR_RNDN);
        mpfr_add(r14846, r14843, r14845, MPFR_RNDN);
        mpfr_div(r14847, r14842, r14846, MPFR_RNDN);
        ;
        mpfr_set_si(r14849, mpfr_cmp(r14824, r14848) <= 0, MPFR_RNDN);
        mpfr_add(r14850, r14828, r14838, MPFR_RNDN);
        mpfr_pow(r14851, r14850, r14839, MPFR_RNDN);
        mpfr_sub(r14852, r14851, r14843, MPFR_RNDN);
        mpfr_exp(r14853, r14852, MPFR_RNDN);
        mpfr_cbrt(r14854, r14853, MPFR_RNDN);
        mpfr_mul(r14855, r14854, r14854, MPFR_RNDN); mpfr_mul(r14855, r14855, r14854, MPFR_RNDN);
        mpfr_log(r14856, r14855, MPFR_RNDN);
        if (mpfr_get_si(r14849, MPFR_RNDN)) { mpfr_set(r14857, r14856, MPFR_RNDN); } else { mpfr_set(r14857, r14847, MPFR_RNDN); };
        if (mpfr_get_si(r14826, MPFR_RNDN)) { mpfr_set(r14858, r14847, MPFR_RNDN); } else { mpfr_set(r14858, r14857, MPFR_RNDN); };
        return mpfr_get_d(r14858, MPFR_RNDN);
}

