#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 r4874588 = x;
        float r4874589 = 1.0f;
        float r4874590 = r4874588 + r4874589;
        float r4874591 = n;
        float r4874592 = r4874589 / r4874591;
        float r4874593 = pow(r4874590, r4874592);
        float r4874594 = pow(r4874588, r4874592);
        float r4874595 = r4874593 - r4874594;
        return r4874595;
}

double f_id(double x, double n) {
        double r4874596 = x;
        double r4874597 = 1.0;
        double r4874598 = r4874596 + r4874597;
        double r4874599 = n;
        double r4874600 = r4874597 / r4874599;
        double r4874601 = pow(r4874598, r4874600);
        double r4874602 = pow(r4874596, r4874600);
        double r4874603 = r4874601 - r4874602;
        return r4874603;
}


double f_of(float x, float n) {
        float r4874604 = n;
        float r4874605 = -1556.081388024486f;
        bool r4874606 = r4874604 <= r4874605;
        float r4874607 = 1.0f;
        float r4874608 = x;
        float r4874609 = r4874607 / r4874608;
        float r4874610 = r4874609 / r4874604;
        float r4874611 = 0.5f;
        float r4874612 = r4874611 / r4874604;
        float r4874613 = r4874608 * r4874608;
        float r4874614 = r4874612 / r4874613;
        float r4874615 = r4874610 - r4874614;
        float r4874616 = log(r4874608);
        float r4874617 = r4874608 * r4874604;
        float r4874618 = r4874616 / r4874617;
        float r4874619 = r4874618 / r4874604;
        float r4874620 = r4874615 - r4874619;
        float r4874621 = 1082738822163.7745f;
        bool r4874622 = r4874604 <= r4874621;
        float r4874623 = r4874607 + r4874608;
        float r4874624 = r4874607 / r4874604;
        float r4874625 = pow(r4874623, r4874624);
        float r4874626 = pow(r4874608, r4874624);
        float r4874627 = r4874625 - r4874626;
        float r4874628 = exp(r4874627);
        float r4874629 = sqrt(r4874628);
        float r4874630 = log(r4874629);
        float r4874631 = r4874630 + r4874630;
        float r4874632 = r4874622 ? r4874631 : r4874620;
        float r4874633 = r4874606 ? r4874620 : r4874632;
        return r4874633;
}

double f_od(double x, double n) {
        double r4874634 = n;
        double r4874635 = -1556.081388024486;
        bool r4874636 = r4874634 <= r4874635;
        double r4874637 = 1.0;
        double r4874638 = x;
        double r4874639 = r4874637 / r4874638;
        double r4874640 = r4874639 / r4874634;
        double r4874641 = 0.5;
        double r4874642 = r4874641 / r4874634;
        double r4874643 = r4874638 * r4874638;
        double r4874644 = r4874642 / r4874643;
        double r4874645 = r4874640 - r4874644;
        double r4874646 = log(r4874638);
        double r4874647 = r4874638 * r4874634;
        double r4874648 = r4874646 / r4874647;
        double r4874649 = r4874648 / r4874634;
        double r4874650 = r4874645 - r4874649;
        double r4874651 = 1082738822163.7745;
        bool r4874652 = r4874634 <= r4874651;
        double r4874653 = r4874637 + r4874638;
        double r4874654 = r4874637 / r4874634;
        double r4874655 = pow(r4874653, r4874654);
        double r4874656 = pow(r4874638, r4874654);
        double r4874657 = r4874655 - r4874656;
        double r4874658 = exp(r4874657);
        double r4874659 = sqrt(r4874658);
        double r4874660 = log(r4874659);
        double r4874661 = r4874660 + r4874660;
        double r4874662 = r4874652 ? r4874661 : r4874650;
        double r4874663 = r4874636 ? r4874650 : r4874662;
        return r4874663;
}

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 r4874664, r4874665, r4874666, r4874667, r4874668, r4874669, r4874670, r4874671;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4874664);
        mpfr_init_set_str(r4874665, "1", 10, MPFR_RNDN);
        mpfr_init(r4874666);
        mpfr_init(r4874667);
        mpfr_init(r4874668);
        mpfr_init(r4874669);
        mpfr_init(r4874670);
        mpfr_init(r4874671);
}

double f_im(double x, double n) {
        mpfr_set_d(r4874664, x, MPFR_RNDN);
        ;
        mpfr_add(r4874666, r4874664, r4874665, MPFR_RNDN);
        mpfr_set_d(r4874667, n, MPFR_RNDN);
        mpfr_div(r4874668, r4874665, r4874667, MPFR_RNDN);
        mpfr_pow(r4874669, r4874666, r4874668, MPFR_RNDN);
        mpfr_pow(r4874670, r4874664, r4874668, MPFR_RNDN);
        mpfr_sub(r4874671, r4874669, r4874670, MPFR_RNDN);
        return mpfr_get_d(r4874671, MPFR_RNDN);
}

static mpfr_t r4874672, r4874673, r4874674, r4874675, r4874676, r4874677, r4874678, r4874679, r4874680, r4874681, r4874682, r4874683, r4874684, r4874685, r4874686, r4874687, r4874688, r4874689, r4874690, r4874691, r4874692, r4874693, r4874694, r4874695, r4874696, r4874697, r4874698, r4874699, r4874700, r4874701;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4874672);
        mpfr_init_set_str(r4874673, "-1556.081388024486", 10, MPFR_RNDN);
        mpfr_init(r4874674);
        mpfr_init_set_str(r4874675, "1", 10, MPFR_RNDN);
        mpfr_init(r4874676);
        mpfr_init(r4874677);
        mpfr_init(r4874678);
        mpfr_init_set_str(r4874679, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874680);
        mpfr_init(r4874681);
        mpfr_init(r4874682);
        mpfr_init(r4874683);
        mpfr_init(r4874684);
        mpfr_init(r4874685);
        mpfr_init(r4874686);
        mpfr_init(r4874687);
        mpfr_init(r4874688);
        mpfr_init_set_str(r4874689, "1082738822163.7745", 10, MPFR_RNDN);
        mpfr_init(r4874690);
        mpfr_init(r4874691);
        mpfr_init(r4874692);
        mpfr_init(r4874693);
        mpfr_init(r4874694);
        mpfr_init(r4874695);
        mpfr_init(r4874696);
        mpfr_init(r4874697);
        mpfr_init(r4874698);
        mpfr_init(r4874699);
        mpfr_init(r4874700);
        mpfr_init(r4874701);
}

double f_fm(double x, double n) {
        mpfr_set_d(r4874672, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4874674, mpfr_cmp(r4874672, r4874673) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4874676, x, MPFR_RNDN);
        mpfr_div(r4874677, r4874675, r4874676, MPFR_RNDN);
        mpfr_div(r4874678, r4874677, r4874672, MPFR_RNDN);
        ;
        mpfr_div(r4874680, r4874679, r4874672, MPFR_RNDN);
        mpfr_mul(r4874681, r4874676, r4874676, MPFR_RNDN);
        mpfr_div(r4874682, r4874680, r4874681, MPFR_RNDN);
        mpfr_sub(r4874683, r4874678, r4874682, MPFR_RNDN);
        mpfr_log(r4874684, r4874676, MPFR_RNDN);
        mpfr_mul(r4874685, r4874676, r4874672, MPFR_RNDN);
        mpfr_div(r4874686, r4874684, r4874685, MPFR_RNDN);
        mpfr_div(r4874687, r4874686, r4874672, MPFR_RNDN);
        mpfr_sub(r4874688, r4874683, r4874687, MPFR_RNDN);
        ;
        mpfr_set_si(r4874690, mpfr_cmp(r4874672, r4874689) <= 0, MPFR_RNDN);
        mpfr_add(r4874691, r4874675, r4874676, MPFR_RNDN);
        mpfr_div(r4874692, r4874675, r4874672, MPFR_RNDN);
        mpfr_pow(r4874693, r4874691, r4874692, MPFR_RNDN);
        mpfr_pow(r4874694, r4874676, r4874692, MPFR_RNDN);
        mpfr_sub(r4874695, r4874693, r4874694, MPFR_RNDN);
        mpfr_exp(r4874696, r4874695, MPFR_RNDN);
        mpfr_sqrt(r4874697, r4874696, MPFR_RNDN);
        mpfr_log(r4874698, r4874697, MPFR_RNDN);
        mpfr_add(r4874699, r4874698, r4874698, MPFR_RNDN);
        if (mpfr_get_si(r4874690, MPFR_RNDN)) { mpfr_set(r4874700, r4874699, MPFR_RNDN); } else { mpfr_set(r4874700, r4874688, MPFR_RNDN); };
        if (mpfr_get_si(r4874674, MPFR_RNDN)) { mpfr_set(r4874701, r4874688, MPFR_RNDN); } else { mpfr_set(r4874701, r4874700, MPFR_RNDN); };
        return mpfr_get_d(r4874701, MPFR_RNDN);
}

static mpfr_t r4874702, r4874703, r4874704, r4874705, r4874706, r4874707, r4874708, r4874709, r4874710, r4874711, r4874712, r4874713, r4874714, r4874715, r4874716, r4874717, r4874718, r4874719, r4874720, r4874721, r4874722, r4874723, r4874724, r4874725, r4874726, r4874727, r4874728, r4874729, r4874730, r4874731;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4874702);
        mpfr_init_set_str(r4874703, "-1556.081388024486", 10, MPFR_RNDN);
        mpfr_init(r4874704);
        mpfr_init_set_str(r4874705, "1", 10, MPFR_RNDN);
        mpfr_init(r4874706);
        mpfr_init(r4874707);
        mpfr_init(r4874708);
        mpfr_init_set_str(r4874709, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874710);
        mpfr_init(r4874711);
        mpfr_init(r4874712);
        mpfr_init(r4874713);
        mpfr_init(r4874714);
        mpfr_init(r4874715);
        mpfr_init(r4874716);
        mpfr_init(r4874717);
        mpfr_init(r4874718);
        mpfr_init_set_str(r4874719, "1082738822163.7745", 10, MPFR_RNDN);
        mpfr_init(r4874720);
        mpfr_init(r4874721);
        mpfr_init(r4874722);
        mpfr_init(r4874723);
        mpfr_init(r4874724);
        mpfr_init(r4874725);
        mpfr_init(r4874726);
        mpfr_init(r4874727);
        mpfr_init(r4874728);
        mpfr_init(r4874729);
        mpfr_init(r4874730);
        mpfr_init(r4874731);
}

double f_dm(double x, double n) {
        mpfr_set_d(r4874702, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4874704, mpfr_cmp(r4874702, r4874703) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4874706, x, MPFR_RNDN);
        mpfr_div(r4874707, r4874705, r4874706, MPFR_RNDN);
        mpfr_div(r4874708, r4874707, r4874702, MPFR_RNDN);
        ;
        mpfr_div(r4874710, r4874709, r4874702, MPFR_RNDN);
        mpfr_mul(r4874711, r4874706, r4874706, MPFR_RNDN);
        mpfr_div(r4874712, r4874710, r4874711, MPFR_RNDN);
        mpfr_sub(r4874713, r4874708, r4874712, MPFR_RNDN);
        mpfr_log(r4874714, r4874706, MPFR_RNDN);
        mpfr_mul(r4874715, r4874706, r4874702, MPFR_RNDN);
        mpfr_div(r4874716, r4874714, r4874715, MPFR_RNDN);
        mpfr_div(r4874717, r4874716, r4874702, MPFR_RNDN);
        mpfr_sub(r4874718, r4874713, r4874717, MPFR_RNDN);
        ;
        mpfr_set_si(r4874720, mpfr_cmp(r4874702, r4874719) <= 0, MPFR_RNDN);
        mpfr_add(r4874721, r4874705, r4874706, MPFR_RNDN);
        mpfr_div(r4874722, r4874705, r4874702, MPFR_RNDN);
        mpfr_pow(r4874723, r4874721, r4874722, MPFR_RNDN);
        mpfr_pow(r4874724, r4874706, r4874722, MPFR_RNDN);
        mpfr_sub(r4874725, r4874723, r4874724, MPFR_RNDN);
        mpfr_exp(r4874726, r4874725, MPFR_RNDN);
        mpfr_sqrt(r4874727, r4874726, MPFR_RNDN);
        mpfr_log(r4874728, r4874727, MPFR_RNDN);
        mpfr_add(r4874729, r4874728, r4874728, MPFR_RNDN);
        if (mpfr_get_si(r4874720, MPFR_RNDN)) { mpfr_set(r4874730, r4874729, MPFR_RNDN); } else { mpfr_set(r4874730, r4874718, MPFR_RNDN); };
        if (mpfr_get_si(r4874704, MPFR_RNDN)) { mpfr_set(r4874731, r4874718, MPFR_RNDN); } else { mpfr_set(r4874731, r4874730, MPFR_RNDN); };
        return mpfr_get_d(r4874731, MPFR_RNDN);
}

