#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 r10539 = 1;
        float r10540 = eps;
        float r10541 = r10539 - r10540;
        float r10542 = r10539 + r10540;
        float r10543 = r10541 / r10542;
        float r10544 = log(r10543);
        return r10544;
}

double f_id(double eps) {
        double r10545 = 1;
        double r10546 = eps;
        double r10547 = r10545 - r10546;
        double r10548 = r10545 + r10546;
        double r10549 = r10547 / r10548;
        double r10550 = log(r10549);
        return r10550;
}


double f_of(float eps) {
        float r10551 = eps;
        float r10552 = -r10551;
        float r10553 = 2/3;
        float r10554 = r10553 * r10551;
        float r10555 = 2;
        float r10556 = fma(r10554, r10551, r10555);
        float r10557 = 2/5;
        float r10558 = -r10557;
        float r10559 = 5;
        float r10560 = pow(r10551, r10559);
        float r10561 = r10558 * r10560;
        float r10562 = fma(r10552, r10556, r10561);
        return r10562;
}

double f_od(double eps) {
        double r10563 = eps;
        double r10564 = -r10563;
        double r10565 = 2/3;
        double r10566 = r10565 * r10563;
        double r10567 = 2;
        double r10568 = fma(r10566, r10563, r10567);
        double r10569 = 2/5;
        double r10570 = -r10569;
        double r10571 = 5;
        double r10572 = pow(r10563, r10571);
        double r10573 = r10570 * r10572;
        double r10574 = fma(r10564, r10568, r10573);
        return r10574;
}

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 r10575, r10576, r10577, r10578, r10579, r10580;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10575, "1", 10, MPFR_RNDN);
        mpfr_init(r10576);
        mpfr_init(r10577);
        mpfr_init(r10578);
        mpfr_init(r10579);
        mpfr_init(r10580);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r10576, eps, MPFR_RNDN);
        mpfr_sub(r10577, r10575, r10576, MPFR_RNDN);
        mpfr_add(r10578, r10575, r10576, MPFR_RNDN);
        mpfr_div(r10579, r10577, r10578, MPFR_RNDN);
        mpfr_log(r10580, r10579, MPFR_RNDN);
        return mpfr_get_d(r10580, MPFR_RNDN);
}

static mpfr_t r10581, r10582, r10583, r10584, r10585, r10586, r10587, r10588, r10589, r10590, r10591, r10592;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10581);
        mpfr_init(r10582);
        mpfr_init_set_str(r10583, "2/3", 10, MPFR_RNDN);
        mpfr_init(r10584);
        mpfr_init_set_str(r10585, "2", 10, MPFR_RNDN);
        mpfr_init(r10586);
        mpfr_init_set_str(r10587, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10588);
        mpfr_init_set_str(r10589, "5", 10, MPFR_RNDN);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
}

double f_fm(double eps) {
        mpfr_set_d(r10581, eps, MPFR_RNDN);
        mpfr_neg(r10582, r10581, MPFR_RNDN);
        ;
        mpfr_mul(r10584, r10583, r10581, MPFR_RNDN);
        ;
        mpfr_fma(r10586, r10584, r10581, r10585, MPFR_RNDN);
        ;
        mpfr_neg(r10588, r10587, MPFR_RNDN);
        ;
        mpfr_pow(r10590, r10581, r10589, MPFR_RNDN);
        mpfr_mul(r10591, r10588, r10590, MPFR_RNDN);
        mpfr_fma(r10592, r10582, r10586, r10591, MPFR_RNDN);
        return mpfr_get_d(r10592, MPFR_RNDN);
}

static mpfr_t r10593, r10594, r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init_set_str(r10595, "2/3", 10, MPFR_RNDN);
        mpfr_init(r10596);
        mpfr_init_set_str(r10597, "2", 10, MPFR_RNDN);
        mpfr_init(r10598);
        mpfr_init_set_str(r10599, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10600);
        mpfr_init_set_str(r10601, "5", 10, MPFR_RNDN);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
}

double f_dm(double eps) {
        mpfr_set_d(r10593, eps, MPFR_RNDN);
        mpfr_neg(r10594, r10593, MPFR_RNDN);
        ;
        mpfr_mul(r10596, r10595, r10593, MPFR_RNDN);
        ;
        mpfr_fma(r10598, r10596, r10593, r10597, MPFR_RNDN);
        ;
        mpfr_neg(r10600, r10599, MPFR_RNDN);
        ;
        mpfr_pow(r10602, r10593, r10601, MPFR_RNDN);
        mpfr_mul(r10603, r10600, r10602, MPFR_RNDN);
        mpfr_fma(r10604, r10594, r10598, r10603, MPFR_RNDN);
        return mpfr_get_d(r10604, MPFR_RNDN);
}

