#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 r36729 = x;
        float r36730 = 1;
        float r36731 = r36729 + r36730;
        float r36732 = n;
        float r36733 = r36730 / r36732;
        float r36734 = pow(r36731, r36733);
        float r36735 = pow(r36729, r36733);
        float r36736 = r36734 - r36735;
        return r36736;
}

double f_id(double x, double n) {
        double r36737 = x;
        double r36738 = 1;
        double r36739 = r36737 + r36738;
        double r36740 = n;
        double r36741 = r36738 / r36740;
        double r36742 = pow(r36739, r36741);
        double r36743 = pow(r36737, r36741);
        double r36744 = r36742 - r36743;
        return r36744;
}


double f_of(float x, float n) {
        float r36745 = n;
        float r36746 = -16217293.129781114;
        bool r36747 = r36745 <= r36746;
        float r36748 = 1;
        float r36749 = x;
        float r36750 = r36749 * r36745;
        float r36751 = r36748 / r36750;
        float r36752 = 1/2;
        float r36753 = r36752 / r36749;
        float r36754 = r36753 / r36750;
        float r36755 = r36751 - r36754;
        float r36756 = log(r36749);
        float r36757 = r36756 / r36745;
        float r36758 = r36757 / r36750;
        float r36759 = r36755 - r36758;
        float r36760 = 698268857478.727;
        bool r36761 = r36745 <= r36760;
        float r36762 = r36748 + r36749;
        float r36763 = r36748 / r36745;
        float r36764 = pow(r36762, r36763);
        float r36765 = pow(r36749, r36763);
        float r36766 = r36764 - r36765;
        float r36767 = 3;
        float r36768 = pow(r36766, r36767);
        float r36769 = cbrt(r36768);
        float r36770 = r36761 ? r36769 : r36759;
        float r36771 = r36747 ? r36759 : r36770;
        return r36771;
}

double f_od(double x, double n) {
        double r36772 = n;
        double r36773 = -16217293.129781114;
        bool r36774 = r36772 <= r36773;
        double r36775 = 1;
        double r36776 = x;
        double r36777 = r36776 * r36772;
        double r36778 = r36775 / r36777;
        double r36779 = 1/2;
        double r36780 = r36779 / r36776;
        double r36781 = r36780 / r36777;
        double r36782 = r36778 - r36781;
        double r36783 = log(r36776);
        double r36784 = r36783 / r36772;
        double r36785 = r36784 / r36777;
        double r36786 = r36782 - r36785;
        double r36787 = 698268857478.727;
        bool r36788 = r36772 <= r36787;
        double r36789 = r36775 + r36776;
        double r36790 = r36775 / r36772;
        double r36791 = pow(r36789, r36790);
        double r36792 = pow(r36776, r36790);
        double r36793 = r36791 - r36792;
        double r36794 = 3;
        double r36795 = pow(r36793, r36794);
        double r36796 = cbrt(r36795);
        double r36797 = r36788 ? r36796 : r36786;
        double r36798 = r36774 ? r36786 : r36797;
        return r36798;
}

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 r36799, r36800, r36801, r36802, r36803, r36804, r36805, r36806;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36799);
        mpfr_init_set_str(r36800, "1", 10, MPFR_RNDN);
        mpfr_init(r36801);
        mpfr_init(r36802);
        mpfr_init(r36803);
        mpfr_init(r36804);
        mpfr_init(r36805);
        mpfr_init(r36806);
}

double f_im(double x, double n) {
        mpfr_set_d(r36799, x, MPFR_RNDN);
        ;
        mpfr_add(r36801, r36799, r36800, MPFR_RNDN);
        mpfr_set_d(r36802, n, MPFR_RNDN);
        mpfr_div(r36803, r36800, r36802, MPFR_RNDN);
        mpfr_pow(r36804, r36801, r36803, MPFR_RNDN);
        mpfr_pow(r36805, r36799, r36803, MPFR_RNDN);
        mpfr_sub(r36806, r36804, r36805, MPFR_RNDN);
        return mpfr_get_d(r36806, MPFR_RNDN);
}

static mpfr_t r36807, r36808, r36809, r36810, r36811, r36812, r36813, r36814, r36815, r36816, r36817, r36818, r36819, r36820, r36821, r36822, r36823, r36824, r36825, r36826, r36827, r36828, r36829, r36830, r36831, r36832, r36833;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36807);
        mpfr_init_set_str(r36808, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36809);
        mpfr_init_set_str(r36810, "1", 10, MPFR_RNDN);
        mpfr_init(r36811);
        mpfr_init(r36812);
        mpfr_init(r36813);
        mpfr_init_set_str(r36814, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36815);
        mpfr_init(r36816);
        mpfr_init(r36817);
        mpfr_init(r36818);
        mpfr_init(r36819);
        mpfr_init(r36820);
        mpfr_init(r36821);
        mpfr_init_set_str(r36822, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36823);
        mpfr_init(r36824);
        mpfr_init(r36825);
        mpfr_init(r36826);
        mpfr_init(r36827);
        mpfr_init(r36828);
        mpfr_init_set_str(r36829, "3", 10, MPFR_RNDN);
        mpfr_init(r36830);
        mpfr_init(r36831);
        mpfr_init(r36832);
        mpfr_init(r36833);
}

double f_fm(double x, double n) {
        mpfr_set_d(r36807, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36809, mpfr_cmp(r36807, r36808) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36811, x, MPFR_RNDN);
        mpfr_mul(r36812, r36811, r36807, MPFR_RNDN);
        mpfr_div(r36813, r36810, r36812, MPFR_RNDN);
        ;
        mpfr_div(r36815, r36814, r36811, MPFR_RNDN);
        mpfr_div(r36816, r36815, r36812, MPFR_RNDN);
        mpfr_sub(r36817, r36813, r36816, MPFR_RNDN);
        mpfr_log(r36818, r36811, MPFR_RNDN);
        mpfr_div(r36819, r36818, r36807, MPFR_RNDN);
        mpfr_div(r36820, r36819, r36812, MPFR_RNDN);
        mpfr_sub(r36821, r36817, r36820, MPFR_RNDN);
        ;
        mpfr_set_si(r36823, mpfr_cmp(r36807, r36822) <= 0, MPFR_RNDN);
        mpfr_add(r36824, r36810, r36811, MPFR_RNDN);
        mpfr_div(r36825, r36810, r36807, MPFR_RNDN);
        mpfr_pow(r36826, r36824, r36825, MPFR_RNDN);
        mpfr_pow(r36827, r36811, r36825, MPFR_RNDN);
        mpfr_sub(r36828, r36826, r36827, MPFR_RNDN);
        ;
        mpfr_pow(r36830, r36828, r36829, MPFR_RNDN);
        mpfr_cbrt(r36831, r36830, MPFR_RNDN);
        if (mpfr_get_si(r36823, MPFR_RNDN)) { mpfr_set(r36832, r36831, MPFR_RNDN); } else { mpfr_set(r36832, r36821, MPFR_RNDN); };
        if (mpfr_get_si(r36809, MPFR_RNDN)) { mpfr_set(r36833, r36821, MPFR_RNDN); } else { mpfr_set(r36833, r36832, MPFR_RNDN); };
        return mpfr_get_d(r36833, MPFR_RNDN);
}

static mpfr_t r36834, r36835, r36836, r36837, r36838, r36839, r36840, r36841, r36842, r36843, r36844, r36845, r36846, r36847, r36848, r36849, r36850, r36851, r36852, r36853, r36854, r36855, r36856, r36857, r36858, r36859, r36860;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36834);
        mpfr_init_set_str(r36835, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36836);
        mpfr_init_set_str(r36837, "1", 10, MPFR_RNDN);
        mpfr_init(r36838);
        mpfr_init(r36839);
        mpfr_init(r36840);
        mpfr_init_set_str(r36841, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36842);
        mpfr_init(r36843);
        mpfr_init(r36844);
        mpfr_init(r36845);
        mpfr_init(r36846);
        mpfr_init(r36847);
        mpfr_init(r36848);
        mpfr_init_set_str(r36849, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36850);
        mpfr_init(r36851);
        mpfr_init(r36852);
        mpfr_init(r36853);
        mpfr_init(r36854);
        mpfr_init(r36855);
        mpfr_init_set_str(r36856, "3", 10, MPFR_RNDN);
        mpfr_init(r36857);
        mpfr_init(r36858);
        mpfr_init(r36859);
        mpfr_init(r36860);
}

double f_dm(double x, double n) {
        mpfr_set_d(r36834, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36836, mpfr_cmp(r36834, r36835) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36838, x, MPFR_RNDN);
        mpfr_mul(r36839, r36838, r36834, MPFR_RNDN);
        mpfr_div(r36840, r36837, r36839, MPFR_RNDN);
        ;
        mpfr_div(r36842, r36841, r36838, MPFR_RNDN);
        mpfr_div(r36843, r36842, r36839, MPFR_RNDN);
        mpfr_sub(r36844, r36840, r36843, MPFR_RNDN);
        mpfr_log(r36845, r36838, MPFR_RNDN);
        mpfr_div(r36846, r36845, r36834, MPFR_RNDN);
        mpfr_div(r36847, r36846, r36839, MPFR_RNDN);
        mpfr_sub(r36848, r36844, r36847, MPFR_RNDN);
        ;
        mpfr_set_si(r36850, mpfr_cmp(r36834, r36849) <= 0, MPFR_RNDN);
        mpfr_add(r36851, r36837, r36838, MPFR_RNDN);
        mpfr_div(r36852, r36837, r36834, MPFR_RNDN);
        mpfr_pow(r36853, r36851, r36852, MPFR_RNDN);
        mpfr_pow(r36854, r36838, r36852, MPFR_RNDN);
        mpfr_sub(r36855, r36853, r36854, MPFR_RNDN);
        ;
        mpfr_pow(r36857, r36855, r36856, MPFR_RNDN);
        mpfr_cbrt(r36858, r36857, MPFR_RNDN);
        if (mpfr_get_si(r36850, MPFR_RNDN)) { mpfr_set(r36859, r36858, MPFR_RNDN); } else { mpfr_set(r36859, r36848, MPFR_RNDN); };
        if (mpfr_get_si(r36836, MPFR_RNDN)) { mpfr_set(r36860, r36848, MPFR_RNDN); } else { mpfr_set(r36860, r36859, MPFR_RNDN); };
        return mpfr_get_d(r36860, MPFR_RNDN);
}

