#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 r4501541 = 1.0f;
        float r4501542 = eps;
        float r4501543 = r4501541 - r4501542;
        float r4501544 = r4501541 + r4501542;
        float r4501545 = r4501543 / r4501544;
        float r4501546 = log(r4501545);
        return r4501546;
}

double f_id(double eps) {
        double r4501547 = 1.0;
        double r4501548 = eps;
        double r4501549 = r4501547 - r4501548;
        double r4501550 = r4501547 + r4501548;
        double r4501551 = r4501549 / r4501550;
        double r4501552 = log(r4501551);
        return r4501552;
}


double f_of(float eps) {
        float r4501553 = 0.4f;
        float r4501554 = eps;
        float r4501555 = 5.0f;
        float r4501556 = pow(r4501554, r4501555);
        float r4501557 = r4501553 * r4501556;
        float r4501558 = 2.0f;
        float r4501559 = r4501558 * r4501554;
        float r4501560 = 0.6666666666666666f;
        float r4501561 = 3.0f;
        float r4501562 = pow(r4501554, r4501561);
        float r4501563 = r4501560 * r4501562;
        float r4501564 = r4501559 + r4501563;
        float r4501565 = r4501557 + r4501564;
        float r4501566 = -r4501565;
        return r4501566;
}

double f_od(double eps) {
        double r4501567 = 0.4;
        double r4501568 = eps;
        double r4501569 = 5.0;
        double r4501570 = pow(r4501568, r4501569);
        double r4501571 = r4501567 * r4501570;
        double r4501572 = 2.0;
        double r4501573 = r4501572 * r4501568;
        double r4501574 = 0.6666666666666666;
        double r4501575 = 3.0;
        double r4501576 = pow(r4501568, r4501575);
        double r4501577 = r4501574 * r4501576;
        double r4501578 = r4501573 + r4501577;
        double r4501579 = r4501571 + r4501578;
        double r4501580 = -r4501579;
        return r4501580;
}

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 r4501581, r4501582, r4501583, r4501584, r4501585, r4501586;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4501581, "1", 10, MPFR_RNDN);
        mpfr_init(r4501582);
        mpfr_init(r4501583);
        mpfr_init(r4501584);
        mpfr_init(r4501585);
        mpfr_init(r4501586);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r4501582, eps, MPFR_RNDN);
        mpfr_sub(r4501583, r4501581, r4501582, MPFR_RNDN);
        mpfr_add(r4501584, r4501581, r4501582, MPFR_RNDN);
        mpfr_div(r4501585, r4501583, r4501584, MPFR_RNDN);
        mpfr_log(r4501586, r4501585, MPFR_RNDN);
        return mpfr_get_d(r4501586, MPFR_RNDN);
}

static mpfr_t r4501587, r4501588, r4501589, r4501590, r4501591, r4501592, r4501593, r4501594, r4501595, r4501596, r4501597, r4501598, r4501599, r4501600;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4501587, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4501588);
        mpfr_init_set_str(r4501589, "5", 10, MPFR_RNDN);
        mpfr_init(r4501590);
        mpfr_init(r4501591);
        mpfr_init_set_str(r4501592, "2", 10, MPFR_RNDN);
        mpfr_init(r4501593);
        mpfr_init_set_str(r4501594, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4501595, "3", 10, MPFR_RNDN);
        mpfr_init(r4501596);
        mpfr_init(r4501597);
        mpfr_init(r4501598);
        mpfr_init(r4501599);
        mpfr_init(r4501600);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r4501588, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4501590, r4501588, r4501589, MPFR_RNDN);
        mpfr_mul(r4501591, r4501587, r4501590, MPFR_RNDN);
        ;
        mpfr_mul(r4501593, r4501592, r4501588, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4501596, r4501588, r4501595, MPFR_RNDN);
        mpfr_mul(r4501597, r4501594, r4501596, MPFR_RNDN);
        mpfr_add(r4501598, r4501593, r4501597, MPFR_RNDN);
        mpfr_add(r4501599, r4501591, r4501598, MPFR_RNDN);
        mpfr_neg(r4501600, r4501599, MPFR_RNDN);
        return mpfr_get_d(r4501600, MPFR_RNDN);
}

static mpfr_t r4501601, r4501602, r4501603, r4501604, r4501605, r4501606, r4501607, r4501608, r4501609, r4501610, r4501611, r4501612, r4501613, r4501614;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4501601, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4501602);
        mpfr_init_set_str(r4501603, "5", 10, MPFR_RNDN);
        mpfr_init(r4501604);
        mpfr_init(r4501605);
        mpfr_init_set_str(r4501606, "2", 10, MPFR_RNDN);
        mpfr_init(r4501607);
        mpfr_init_set_str(r4501608, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4501609, "3", 10, MPFR_RNDN);
        mpfr_init(r4501610);
        mpfr_init(r4501611);
        mpfr_init(r4501612);
        mpfr_init(r4501613);
        mpfr_init(r4501614);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r4501602, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4501604, r4501602, r4501603, MPFR_RNDN);
        mpfr_mul(r4501605, r4501601, r4501604, MPFR_RNDN);
        ;
        mpfr_mul(r4501607, r4501606, r4501602, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4501610, r4501602, r4501609, MPFR_RNDN);
        mpfr_mul(r4501611, r4501608, r4501610, MPFR_RNDN);
        mpfr_add(r4501612, r4501607, r4501611, MPFR_RNDN);
        mpfr_add(r4501613, r4501605, r4501612, MPFR_RNDN);
        mpfr_neg(r4501614, r4501613, MPFR_RNDN);
        return mpfr_get_d(r4501614, MPFR_RNDN);
}

