#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 r4940685 = 1.0f;
        float r4940686 = eps;
        float r4940687 = r4940685 - r4940686;
        float r4940688 = r4940685 + r4940686;
        float r4940689 = r4940687 / r4940688;
        float r4940690 = log(r4940689);
        return r4940690;
}

double f_id(double eps) {
        double r4940691 = 1.0;
        double r4940692 = eps;
        double r4940693 = r4940691 - r4940692;
        double r4940694 = r4940691 + r4940692;
        double r4940695 = r4940693 / r4940694;
        double r4940696 = log(r4940695);
        return r4940696;
}


double f_of(float eps) {
        float r4940697 = 0.4f;
        float r4940698 = eps;
        float r4940699 = 5.0f;
        float r4940700 = pow(r4940698, r4940699);
        float r4940701 = r4940697 * r4940700;
        float r4940702 = 2.0f;
        float r4940703 = r4940702 * r4940698;
        float r4940704 = 0.6666666666666666f;
        float r4940705 = 3.0f;
        float r4940706 = pow(r4940698, r4940705);
        float r4940707 = r4940704 * r4940706;
        float r4940708 = r4940703 + r4940707;
        float r4940709 = r4940701 + r4940708;
        float r4940710 = -r4940709;
        return r4940710;
}

double f_od(double eps) {
        double r4940711 = 0.4;
        double r4940712 = eps;
        double r4940713 = 5.0;
        double r4940714 = pow(r4940712, r4940713);
        double r4940715 = r4940711 * r4940714;
        double r4940716 = 2.0;
        double r4940717 = r4940716 * r4940712;
        double r4940718 = 0.6666666666666666;
        double r4940719 = 3.0;
        double r4940720 = pow(r4940712, r4940719);
        double r4940721 = r4940718 * r4940720;
        double r4940722 = r4940717 + r4940721;
        double r4940723 = r4940715 + r4940722;
        double r4940724 = -r4940723;
        return r4940724;
}

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 r4940725, r4940726, r4940727, r4940728, r4940729, r4940730;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4940725, "1", 10, MPFR_RNDN);
        mpfr_init(r4940726);
        mpfr_init(r4940727);
        mpfr_init(r4940728);
        mpfr_init(r4940729);
        mpfr_init(r4940730);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r4940726, eps, MPFR_RNDN);
        mpfr_sub(r4940727, r4940725, r4940726, MPFR_RNDN);
        mpfr_add(r4940728, r4940725, r4940726, MPFR_RNDN);
        mpfr_div(r4940729, r4940727, r4940728, MPFR_RNDN);
        mpfr_log(r4940730, r4940729, MPFR_RNDN);
        return mpfr_get_d(r4940730, MPFR_RNDN);
}

static mpfr_t r4940731, r4940732, r4940733, r4940734, r4940735, r4940736, r4940737, r4940738, r4940739, r4940740, r4940741, r4940742, r4940743, r4940744;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4940731, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4940732);
        mpfr_init_set_str(r4940733, "5", 10, MPFR_RNDN);
        mpfr_init(r4940734);
        mpfr_init(r4940735);
        mpfr_init_set_str(r4940736, "2", 10, MPFR_RNDN);
        mpfr_init(r4940737);
        mpfr_init_set_str(r4940738, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4940739, "3", 10, MPFR_RNDN);
        mpfr_init(r4940740);
        mpfr_init(r4940741);
        mpfr_init(r4940742);
        mpfr_init(r4940743);
        mpfr_init(r4940744);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r4940732, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4940734, r4940732, r4940733, MPFR_RNDN);
        mpfr_mul(r4940735, r4940731, r4940734, MPFR_RNDN);
        ;
        mpfr_mul(r4940737, r4940736, r4940732, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4940740, r4940732, r4940739, MPFR_RNDN);
        mpfr_mul(r4940741, r4940738, r4940740, MPFR_RNDN);
        mpfr_add(r4940742, r4940737, r4940741, MPFR_RNDN);
        mpfr_add(r4940743, r4940735, r4940742, MPFR_RNDN);
        mpfr_neg(r4940744, r4940743, MPFR_RNDN);
        return mpfr_get_d(r4940744, MPFR_RNDN);
}

static mpfr_t r4940745, r4940746, r4940747, r4940748, r4940749, r4940750, r4940751, r4940752, r4940753, r4940754, r4940755, r4940756, r4940757, r4940758;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4940745, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4940746);
        mpfr_init_set_str(r4940747, "5", 10, MPFR_RNDN);
        mpfr_init(r4940748);
        mpfr_init(r4940749);
        mpfr_init_set_str(r4940750, "2", 10, MPFR_RNDN);
        mpfr_init(r4940751);
        mpfr_init_set_str(r4940752, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4940753, "3", 10, MPFR_RNDN);
        mpfr_init(r4940754);
        mpfr_init(r4940755);
        mpfr_init(r4940756);
        mpfr_init(r4940757);
        mpfr_init(r4940758);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r4940746, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4940748, r4940746, r4940747, MPFR_RNDN);
        mpfr_mul(r4940749, r4940745, r4940748, MPFR_RNDN);
        ;
        mpfr_mul(r4940751, r4940750, r4940746, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4940754, r4940746, r4940753, MPFR_RNDN);
        mpfr_mul(r4940755, r4940752, r4940754, MPFR_RNDN);
        mpfr_add(r4940756, r4940751, r4940755, MPFR_RNDN);
        mpfr_add(r4940757, r4940749, r4940756, MPFR_RNDN);
        mpfr_neg(r4940758, r4940757, MPFR_RNDN);
        return mpfr_get_d(r4940758, MPFR_RNDN);
}

