#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 r38613 = 1;
        float r38614 = eps;
        float r38615 = r38613 - r38614;
        float r38616 = r38613 + r38614;
        float r38617 = r38615 / r38616;
        float r38618 = log(r38617);
        return r38618;
}

double f_id(double eps) {
        double r38619 = 1;
        double r38620 = eps;
        double r38621 = r38619 - r38620;
        double r38622 = r38619 + r38620;
        double r38623 = r38621 / r38622;
        double r38624 = log(r38623);
        return r38624;
}


double f_of(float eps) {
        float r38625 = 2/3;
        float r38626 = eps;
        float r38627 = 3;
        float r38628 = pow(r38626, r38627);
        float r38629 = r38625 * r38628;
        float r38630 = 2/5;
        float r38631 = 5;
        float r38632 = pow(r38626, r38631);
        float r38633 = r38630 * r38632;
        float r38634 = 2;
        float r38635 = r38634 * r38626;
        float r38636 = r38633 + r38635;
        float r38637 = r38629 + r38636;
        float r38638 = -r38637;
        return r38638;
}

double f_od(double eps) {
        double r38639 = 2/3;
        double r38640 = eps;
        double r38641 = 3;
        double r38642 = pow(r38640, r38641);
        double r38643 = r38639 * r38642;
        double r38644 = 2/5;
        double r38645 = 5;
        double r38646 = pow(r38640, r38645);
        double r38647 = r38644 * r38646;
        double r38648 = 2;
        double r38649 = r38648 * r38640;
        double r38650 = r38647 + r38649;
        double r38651 = r38643 + r38650;
        double r38652 = -r38651;
        return r38652;
}

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 r38653, r38654, r38655, r38656, r38657, r38658;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38653, "1", 10, MPFR_RNDN);
        mpfr_init(r38654);
        mpfr_init(r38655);
        mpfr_init(r38656);
        mpfr_init(r38657);
        mpfr_init(r38658);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r38654, eps, MPFR_RNDN);
        mpfr_sub(r38655, r38653, r38654, MPFR_RNDN);
        mpfr_add(r38656, r38653, r38654, MPFR_RNDN);
        mpfr_div(r38657, r38655, r38656, MPFR_RNDN);
        mpfr_log(r38658, r38657, MPFR_RNDN);
        return mpfr_get_d(r38658, MPFR_RNDN);
}

static mpfr_t r38659, r38660, r38661, r38662, r38663, r38664, r38665, r38666, r38667, r38668, r38669, r38670, r38671, r38672;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38659, "2/3", 10, MPFR_RNDN);
        mpfr_init(r38660);
        mpfr_init_set_str(r38661, "3", 10, MPFR_RNDN);
        mpfr_init(r38662);
        mpfr_init(r38663);
        mpfr_init_set_str(r38664, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38665, "5", 10, MPFR_RNDN);
        mpfr_init(r38666);
        mpfr_init(r38667);
        mpfr_init_set_str(r38668, "2", 10, MPFR_RNDN);
        mpfr_init(r38669);
        mpfr_init(r38670);
        mpfr_init(r38671);
        mpfr_init(r38672);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r38660, eps, MPFR_RNDN);
        ;
        mpfr_pow(r38662, r38660, r38661, MPFR_RNDN);
        mpfr_mul(r38663, r38659, r38662, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38666, r38660, r38665, MPFR_RNDN);
        mpfr_mul(r38667, r38664, r38666, MPFR_RNDN);
        ;
        mpfr_mul(r38669, r38668, r38660, MPFR_RNDN);
        mpfr_add(r38670, r38667, r38669, MPFR_RNDN);
        mpfr_add(r38671, r38663, r38670, MPFR_RNDN);
        mpfr_neg(r38672, r38671, MPFR_RNDN);
        return mpfr_get_d(r38672, MPFR_RNDN);
}

static mpfr_t r38673, r38674, r38675, r38676, r38677, r38678, r38679, r38680, r38681, r38682, r38683, r38684, r38685, r38686;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38673, "2/3", 10, MPFR_RNDN);
        mpfr_init(r38674);
        mpfr_init_set_str(r38675, "3", 10, MPFR_RNDN);
        mpfr_init(r38676);
        mpfr_init(r38677);
        mpfr_init_set_str(r38678, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38679, "5", 10, MPFR_RNDN);
        mpfr_init(r38680);
        mpfr_init(r38681);
        mpfr_init_set_str(r38682, "2", 10, MPFR_RNDN);
        mpfr_init(r38683);
        mpfr_init(r38684);
        mpfr_init(r38685);
        mpfr_init(r38686);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r38674, eps, MPFR_RNDN);
        ;
        mpfr_pow(r38676, r38674, r38675, MPFR_RNDN);
        mpfr_mul(r38677, r38673, r38676, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38680, r38674, r38679, MPFR_RNDN);
        mpfr_mul(r38681, r38678, r38680, MPFR_RNDN);
        ;
        mpfr_mul(r38683, r38682, r38674, MPFR_RNDN);
        mpfr_add(r38684, r38681, r38683, MPFR_RNDN);
        mpfr_add(r38685, r38677, r38684, MPFR_RNDN);
        mpfr_neg(r38686, r38685, MPFR_RNDN);
        return mpfr_get_d(r38686, MPFR_RNDN);
}

