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

char *name = "2nthrt (problem 3.4.6)";

double f_if(float x, float n) {
        float r36702 = x;
        float r36703 = 1;
        float r36704 = r36702 + r36703;
        float r36705 = n;
        float r36706 = r36703 / r36705;
        float r36707 = pow(r36704, r36706);
        float r36708 = pow(r36702, r36706);
        float r36709 = r36707 - r36708;
        return r36709;
}

double f_id(double x, double n) {
        double r36710 = x;
        double r36711 = 1;
        double r36712 = r36710 + r36711;
        double r36713 = n;
        double r36714 = r36711 / r36713;
        double r36715 = pow(r36712, r36714);
        double r36716 = pow(r36710, r36714);
        double r36717 = r36715 - r36716;
        return r36717;
}


double f_of(float x, float n) {
        float r36718 = n;
        float r36719 = -16217293.129781114;
        bool r36720 = r36718 <= r36719;
        float r36721 = 1;
        float r36722 = x;
        float r36723 = r36721 / r36722;
        float r36724 = r36723 / r36718;
        float r36725 = 1/2;
        float r36726 = r36725 / r36718;
        float r36727 = r36722 * r36722;
        float r36728 = r36726 / r36727;
        float r36729 = r36724 - r36728;
        float r36730 = log(r36722);
        float r36731 = r36718 * r36718;
        float r36732 = r36730 / r36731;
        float r36733 = r36732 / r36722;
        float r36734 = r36729 - r36733;
        float r36735 = 698268857478.727;
        bool r36736 = r36718 <= r36735;
        float r36737 = r36722 + r36721;
        float r36738 = r36721 / r36718;
        float r36739 = pow(r36737, r36738);
        float r36740 = pow(r36722, r36738);
        float r36741 = r36739 - r36740;
        float r36742 = exp(r36741);
        float r36743 = log(r36742);
        float r36744 = 3;
        float r36745 = pow(r36743, r36744);
        float r36746 = cbrt(r36745);
        float r36747 = r36736 ? r36746 : r36734;
        float r36748 = r36720 ? r36734 : r36747;
        return r36748;
}

double f_od(double x, double n) {
        double r36749 = n;
        double r36750 = -16217293.129781114;
        bool r36751 = r36749 <= r36750;
        double r36752 = 1;
        double r36753 = x;
        double r36754 = r36752 / r36753;
        double r36755 = r36754 / r36749;
        double r36756 = 1/2;
        double r36757 = r36756 / r36749;
        double r36758 = r36753 * r36753;
        double r36759 = r36757 / r36758;
        double r36760 = r36755 - r36759;
        double r36761 = log(r36753);
        double r36762 = r36749 * r36749;
        double r36763 = r36761 / r36762;
        double r36764 = r36763 / r36753;
        double r36765 = r36760 - r36764;
        double r36766 = 698268857478.727;
        bool r36767 = r36749 <= r36766;
        double r36768 = r36753 + r36752;
        double r36769 = r36752 / r36749;
        double r36770 = pow(r36768, r36769);
        double r36771 = pow(r36753, r36769);
        double r36772 = r36770 - r36771;
        double r36773 = exp(r36772);
        double r36774 = log(r36773);
        double r36775 = 3;
        double r36776 = pow(r36774, r36775);
        double r36777 = cbrt(r36776);
        double r36778 = r36767 ? r36777 : r36765;
        double r36779 = r36751 ? r36765 : r36778;
        return r36779;
}

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 r36780, r36781, r36782, r36783, r36784, r36785, r36786, r36787;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36780);
        mpfr_init_set_str(r36781, "1", 10, MPFR_RNDN);
        mpfr_init(r36782);
        mpfr_init(r36783);
        mpfr_init(r36784);
        mpfr_init(r36785);
        mpfr_init(r36786);
        mpfr_init(r36787);
}

double f_im(double x, double n) {
        mpfr_set_d(r36780, x, MPFR_RNDN);
        ;
        mpfr_add(r36782, r36780, r36781, MPFR_RNDN);
        mpfr_set_d(r36783, n, MPFR_RNDN);
        mpfr_div(r36784, r36781, r36783, MPFR_RNDN);
        mpfr_pow(r36785, r36782, r36784, MPFR_RNDN);
        mpfr_pow(r36786, r36780, r36784, MPFR_RNDN);
        mpfr_sub(r36787, r36785, r36786, MPFR_RNDN);
        return mpfr_get_d(r36787, MPFR_RNDN);
}

static mpfr_t r36788, r36789, r36790, r36791, r36792, r36793, r36794, r36795, r36796, r36797, r36798, r36799, r36800, r36801, r36802, r36803, r36804, r36805, r36806, r36807, r36808, r36809, r36810, r36811, r36812, r36813, r36814, r36815, r36816, r36817, r36818;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36788);
        mpfr_init_set_str(r36789, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36790);
        mpfr_init_set_str(r36791, "1", 10, MPFR_RNDN);
        mpfr_init(r36792);
        mpfr_init(r36793);
        mpfr_init(r36794);
        mpfr_init_set_str(r36795, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36796);
        mpfr_init(r36797);
        mpfr_init(r36798);
        mpfr_init(r36799);
        mpfr_init(r36800);
        mpfr_init(r36801);
        mpfr_init(r36802);
        mpfr_init(r36803);
        mpfr_init(r36804);
        mpfr_init_set_str(r36805, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36806);
        mpfr_init(r36807);
        mpfr_init(r36808);
        mpfr_init(r36809);
        mpfr_init(r36810);
        mpfr_init(r36811);
        mpfr_init(r36812);
        mpfr_init(r36813);
        mpfr_init_set_str(r36814, "3", 10, MPFR_RNDN);
        mpfr_init(r36815);
        mpfr_init(r36816);
        mpfr_init(r36817);
        mpfr_init(r36818);
}

double f_fm(double x, double n) {
        mpfr_set_d(r36788, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36790, mpfr_cmp(r36788, r36789) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36792, x, MPFR_RNDN);
        mpfr_div(r36793, r36791, r36792, MPFR_RNDN);
        mpfr_div(r36794, r36793, r36788, MPFR_RNDN);
        ;
        mpfr_div(r36796, r36795, r36788, MPFR_RNDN);
        mpfr_mul(r36797, r36792, r36792, MPFR_RNDN);
        mpfr_div(r36798, r36796, r36797, MPFR_RNDN);
        mpfr_sub(r36799, r36794, r36798, MPFR_RNDN);
        mpfr_log(r36800, r36792, MPFR_RNDN);
        mpfr_mul(r36801, r36788, r36788, MPFR_RNDN);
        mpfr_div(r36802, r36800, r36801, MPFR_RNDN);
        mpfr_div(r36803, r36802, r36792, MPFR_RNDN);
        mpfr_sub(r36804, r36799, r36803, MPFR_RNDN);
        ;
        mpfr_set_si(r36806, mpfr_cmp(r36788, r36805) <= 0, MPFR_RNDN);
        mpfr_add(r36807, r36792, r36791, MPFR_RNDN);
        mpfr_div(r36808, r36791, r36788, MPFR_RNDN);
        mpfr_pow(r36809, r36807, r36808, MPFR_RNDN);
        mpfr_pow(r36810, r36792, r36808, MPFR_RNDN);
        mpfr_sub(r36811, r36809, r36810, MPFR_RNDN);
        mpfr_exp(r36812, r36811, MPFR_RNDN);
        mpfr_log(r36813, r36812, MPFR_RNDN);
        ;
        mpfr_pow(r36815, r36813, r36814, MPFR_RNDN);
        mpfr_cbrt(r36816, r36815, MPFR_RNDN);
        if (mpfr_get_si(r36806, MPFR_RNDN)) { mpfr_set(r36817, r36816, MPFR_RNDN); } else { mpfr_set(r36817, r36804, MPFR_RNDN); };
        if (mpfr_get_si(r36790, MPFR_RNDN)) { mpfr_set(r36818, r36804, MPFR_RNDN); } else { mpfr_set(r36818, r36817, MPFR_RNDN); };
        return mpfr_get_d(r36818, MPFR_RNDN);
}

static mpfr_t r36819, r36820, r36821, r36822, r36823, r36824, r36825, r36826, r36827, r36828, r36829, r36830, r36831, r36832, r36833, r36834, r36835, r36836, r36837, r36838, r36839, r36840, r36841, r36842, r36843, r36844, r36845, r36846, r36847, r36848, r36849;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36819);
        mpfr_init_set_str(r36820, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36821);
        mpfr_init_set_str(r36822, "1", 10, MPFR_RNDN);
        mpfr_init(r36823);
        mpfr_init(r36824);
        mpfr_init(r36825);
        mpfr_init_set_str(r36826, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36827);
        mpfr_init(r36828);
        mpfr_init(r36829);
        mpfr_init(r36830);
        mpfr_init(r36831);
        mpfr_init(r36832);
        mpfr_init(r36833);
        mpfr_init(r36834);
        mpfr_init(r36835);
        mpfr_init_set_str(r36836, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36837);
        mpfr_init(r36838);
        mpfr_init(r36839);
        mpfr_init(r36840);
        mpfr_init(r36841);
        mpfr_init(r36842);
        mpfr_init(r36843);
        mpfr_init(r36844);
        mpfr_init_set_str(r36845, "3", 10, MPFR_RNDN);
        mpfr_init(r36846);
        mpfr_init(r36847);
        mpfr_init(r36848);
        mpfr_init(r36849);
}

double f_dm(double x, double n) {
        mpfr_set_d(r36819, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36821, mpfr_cmp(r36819, r36820) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36823, x, MPFR_RNDN);
        mpfr_div(r36824, r36822, r36823, MPFR_RNDN);
        mpfr_div(r36825, r36824, r36819, MPFR_RNDN);
        ;
        mpfr_div(r36827, r36826, r36819, MPFR_RNDN);
        mpfr_mul(r36828, r36823, r36823, MPFR_RNDN);
        mpfr_div(r36829, r36827, r36828, MPFR_RNDN);
        mpfr_sub(r36830, r36825, r36829, MPFR_RNDN);
        mpfr_log(r36831, r36823, MPFR_RNDN);
        mpfr_mul(r36832, r36819, r36819, MPFR_RNDN);
        mpfr_div(r36833, r36831, r36832, MPFR_RNDN);
        mpfr_div(r36834, r36833, r36823, MPFR_RNDN);
        mpfr_sub(r36835, r36830, r36834, MPFR_RNDN);
        ;
        mpfr_set_si(r36837, mpfr_cmp(r36819, r36836) <= 0, MPFR_RNDN);
        mpfr_add(r36838, r36823, r36822, MPFR_RNDN);
        mpfr_div(r36839, r36822, r36819, MPFR_RNDN);
        mpfr_pow(r36840, r36838, r36839, MPFR_RNDN);
        mpfr_pow(r36841, r36823, r36839, MPFR_RNDN);
        mpfr_sub(r36842, r36840, r36841, MPFR_RNDN);
        mpfr_exp(r36843, r36842, MPFR_RNDN);
        mpfr_log(r36844, r36843, MPFR_RNDN);
        ;
        mpfr_pow(r36846, r36844, r36845, MPFR_RNDN);
        mpfr_cbrt(r36847, r36846, MPFR_RNDN);
        if (mpfr_get_si(r36837, MPFR_RNDN)) { mpfr_set(r36848, r36847, MPFR_RNDN); } else { mpfr_set(r36848, r36835, MPFR_RNDN); };
        if (mpfr_get_si(r36821, MPFR_RNDN)) { mpfr_set(r36849, r36835, MPFR_RNDN); } else { mpfr_set(r36849, r36848, MPFR_RNDN); };
        return mpfr_get_d(r36849, MPFR_RNDN);
}

