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

char *name = "logq (problem 3.4.3)";

double f_if(float eps) {
        float r4875670 = 1.0f;
        float r4875671 = eps;
        float r4875672 = r4875670 - r4875671;
        float r4875673 = r4875670 + r4875671;
        float r4875674 = r4875672 / r4875673;
        float r4875675 = log(r4875674);
        return r4875675;
}

double f_id(double eps) {
        double r4875676 = 1.0;
        double r4875677 = eps;
        double r4875678 = r4875676 - r4875677;
        double r4875679 = r4875676 + r4875677;
        double r4875680 = r4875678 / r4875679;
        double r4875681 = log(r4875680);
        return r4875681;
}


double f_of(float eps) {
        float r4875682 = 0.4f;
        float r4875683 = eps;
        float r4875684 = 5.0f;
        float r4875685 = pow(r4875683, r4875684);
        float r4875686 = r4875682 * r4875685;
        float r4875687 = 2.0f;
        float r4875688 = r4875687 * r4875683;
        float r4875689 = 0.6666666666666666f;
        float r4875690 = 3.0f;
        float r4875691 = pow(r4875683, r4875690);
        float r4875692 = r4875689 * r4875691;
        float r4875693 = r4875688 + r4875692;
        float r4875694 = r4875686 + r4875693;
        float r4875695 = -r4875694;
        return r4875695;
}

double f_od(double eps) {
        double r4875696 = 0.4;
        double r4875697 = eps;
        double r4875698 = 5.0;
        double r4875699 = pow(r4875697, r4875698);
        double r4875700 = r4875696 * r4875699;
        double r4875701 = 2.0;
        double r4875702 = r4875701 * r4875697;
        double r4875703 = 0.6666666666666666;
        double r4875704 = 3.0;
        double r4875705 = pow(r4875697, r4875704);
        double r4875706 = r4875703 * r4875705;
        double r4875707 = r4875702 + r4875706;
        double r4875708 = r4875700 + r4875707;
        double r4875709 = -r4875708;
        return r4875709;
}

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 r4875710, r4875711, r4875712, r4875713, r4875714, r4875715;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875710, "1", 10, MPFR_RNDN);
        mpfr_init(r4875711);
        mpfr_init(r4875712);
        mpfr_init(r4875713);
        mpfr_init(r4875714);
        mpfr_init(r4875715);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r4875711, eps, MPFR_RNDN);
        mpfr_sub(r4875712, r4875710, r4875711, MPFR_RNDN);
        mpfr_add(r4875713, r4875710, r4875711, MPFR_RNDN);
        mpfr_div(r4875714, r4875712, r4875713, MPFR_RNDN);
        mpfr_log(r4875715, r4875714, MPFR_RNDN);
        return mpfr_get_d(r4875715, MPFR_RNDN);
}

static mpfr_t r4875716, r4875717, r4875718, r4875719, r4875720, r4875721, r4875722, r4875723, r4875724, r4875725, r4875726, r4875727, r4875728, r4875729;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875716, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4875717);
        mpfr_init_set_str(r4875718, "5", 10, MPFR_RNDN);
        mpfr_init(r4875719);
        mpfr_init(r4875720);
        mpfr_init_set_str(r4875721, "2", 10, MPFR_RNDN);
        mpfr_init(r4875722);
        mpfr_init_set_str(r4875723, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875724, "3", 10, MPFR_RNDN);
        mpfr_init(r4875725);
        mpfr_init(r4875726);
        mpfr_init(r4875727);
        mpfr_init(r4875728);
        mpfr_init(r4875729);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r4875717, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4875719, r4875717, r4875718, MPFR_RNDN);
        mpfr_mul(r4875720, r4875716, r4875719, MPFR_RNDN);
        ;
        mpfr_mul(r4875722, r4875721, r4875717, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4875725, r4875717, r4875724, MPFR_RNDN);
        mpfr_mul(r4875726, r4875723, r4875725, MPFR_RNDN);
        mpfr_add(r4875727, r4875722, r4875726, MPFR_RNDN);
        mpfr_add(r4875728, r4875720, r4875727, MPFR_RNDN);
        mpfr_neg(r4875729, r4875728, MPFR_RNDN);
        return mpfr_get_d(r4875729, MPFR_RNDN);
}

static mpfr_t r4875730, r4875731, r4875732, r4875733, r4875734, r4875735, r4875736, r4875737, r4875738, r4875739, r4875740, r4875741, r4875742, r4875743;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875730, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4875731);
        mpfr_init_set_str(r4875732, "5", 10, MPFR_RNDN);
        mpfr_init(r4875733);
        mpfr_init(r4875734);
        mpfr_init_set_str(r4875735, "2", 10, MPFR_RNDN);
        mpfr_init(r4875736);
        mpfr_init_set_str(r4875737, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875738, "3", 10, MPFR_RNDN);
        mpfr_init(r4875739);
        mpfr_init(r4875740);
        mpfr_init(r4875741);
        mpfr_init(r4875742);
        mpfr_init(r4875743);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r4875731, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4875733, r4875731, r4875732, MPFR_RNDN);
        mpfr_mul(r4875734, r4875730, r4875733, MPFR_RNDN);
        ;
        mpfr_mul(r4875736, r4875735, r4875731, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4875739, r4875731, r4875738, MPFR_RNDN);
        mpfr_mul(r4875740, r4875737, r4875739, MPFR_RNDN);
        mpfr_add(r4875741, r4875736, r4875740, MPFR_RNDN);
        mpfr_add(r4875742, r4875734, r4875741, MPFR_RNDN);
        mpfr_neg(r4875743, r4875742, MPFR_RNDN);
        return mpfr_get_d(r4875743, MPFR_RNDN);
}

