#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 r5181482 = 1.0f;
        float r5181483 = eps;
        float r5181484 = r5181482 - r5181483;
        float r5181485 = r5181482 + r5181483;
        float r5181486 = r5181484 / r5181485;
        float r5181487 = log(r5181486);
        return r5181487;
}

double f_id(double eps) {
        double r5181488 = 1.0;
        double r5181489 = eps;
        double r5181490 = r5181488 - r5181489;
        double r5181491 = r5181488 + r5181489;
        double r5181492 = r5181490 / r5181491;
        double r5181493 = log(r5181492);
        return r5181493;
}


double f_of(float eps) {
        float r5181494 = 0.6666666666666666f;
        float r5181495 = eps;
        float r5181496 = 3.0f;
        float r5181497 = pow(r5181495, r5181496);
        float r5181498 = r5181494 * r5181497;
        float r5181499 = 2.0f;
        float r5181500 = r5181499 * r5181495;
        float r5181501 = 0.4f;
        float r5181502 = 5.0f;
        float r5181503 = pow(r5181495, r5181502);
        float r5181504 = r5181501 * r5181503;
        float r5181505 = r5181500 + r5181504;
        float r5181506 = r5181498 + r5181505;
        float r5181507 = -r5181506;
        return r5181507;
}

double f_od(double eps) {
        double r5181508 = 0.6666666666666666;
        double r5181509 = eps;
        double r5181510 = 3.0;
        double r5181511 = pow(r5181509, r5181510);
        double r5181512 = r5181508 * r5181511;
        double r5181513 = 2.0;
        double r5181514 = r5181513 * r5181509;
        double r5181515 = 0.4;
        double r5181516 = 5.0;
        double r5181517 = pow(r5181509, r5181516);
        double r5181518 = r5181515 * r5181517;
        double r5181519 = r5181514 + r5181518;
        double r5181520 = r5181512 + r5181519;
        double r5181521 = -r5181520;
        return r5181521;
}

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 r5181522, r5181523, r5181524, r5181525, r5181526, r5181527;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181522, "1", 10, MPFR_RNDN);
        mpfr_init(r5181523);
        mpfr_init(r5181524);
        mpfr_init(r5181525);
        mpfr_init(r5181526);
        mpfr_init(r5181527);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r5181523, eps, MPFR_RNDN);
        mpfr_sub(r5181524, r5181522, r5181523, MPFR_RNDN);
        mpfr_add(r5181525, r5181522, r5181523, MPFR_RNDN);
        mpfr_div(r5181526, r5181524, r5181525, MPFR_RNDN);
        mpfr_log(r5181527, r5181526, MPFR_RNDN);
        return mpfr_get_d(r5181527, MPFR_RNDN);
}

static mpfr_t r5181528, r5181529, r5181530, r5181531, r5181532, r5181533, r5181534, r5181535, r5181536, r5181537, r5181538, r5181539, r5181540, r5181541;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181528, "2/3", 10, MPFR_RNDN);
        mpfr_init(r5181529);
        mpfr_init_set_str(r5181530, "3", 10, MPFR_RNDN);
        mpfr_init(r5181531);
        mpfr_init(r5181532);
        mpfr_init_set_str(r5181533, "2", 10, MPFR_RNDN);
        mpfr_init(r5181534);
        mpfr_init_set_str(r5181535, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r5181536, "5", 10, MPFR_RNDN);
        mpfr_init(r5181537);
        mpfr_init(r5181538);
        mpfr_init(r5181539);
        mpfr_init(r5181540);
        mpfr_init(r5181541);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r5181529, eps, MPFR_RNDN);
        ;
        mpfr_pow(r5181531, r5181529, r5181530, MPFR_RNDN);
        mpfr_mul(r5181532, r5181528, r5181531, MPFR_RNDN);
        ;
        mpfr_mul(r5181534, r5181533, r5181529, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5181537, r5181529, r5181536, MPFR_RNDN);
        mpfr_mul(r5181538, r5181535, r5181537, MPFR_RNDN);
        mpfr_add(r5181539, r5181534, r5181538, MPFR_RNDN);
        mpfr_add(r5181540, r5181532, r5181539, MPFR_RNDN);
        mpfr_neg(r5181541, r5181540, MPFR_RNDN);
        return mpfr_get_d(r5181541, MPFR_RNDN);
}

static mpfr_t r5181542, r5181543, r5181544, r5181545, r5181546, r5181547, r5181548, r5181549, r5181550, r5181551, r5181552, r5181553, r5181554, r5181555;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181542, "2/3", 10, MPFR_RNDN);
        mpfr_init(r5181543);
        mpfr_init_set_str(r5181544, "3", 10, MPFR_RNDN);
        mpfr_init(r5181545);
        mpfr_init(r5181546);
        mpfr_init_set_str(r5181547, "2", 10, MPFR_RNDN);
        mpfr_init(r5181548);
        mpfr_init_set_str(r5181549, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r5181550, "5", 10, MPFR_RNDN);
        mpfr_init(r5181551);
        mpfr_init(r5181552);
        mpfr_init(r5181553);
        mpfr_init(r5181554);
        mpfr_init(r5181555);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r5181543, eps, MPFR_RNDN);
        ;
        mpfr_pow(r5181545, r5181543, r5181544, MPFR_RNDN);
        mpfr_mul(r5181546, r5181542, r5181545, MPFR_RNDN);
        ;
        mpfr_mul(r5181548, r5181547, r5181543, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5181551, r5181543, r5181550, MPFR_RNDN);
        mpfr_mul(r5181552, r5181549, r5181551, MPFR_RNDN);
        mpfr_add(r5181553, r5181548, r5181552, MPFR_RNDN);
        mpfr_add(r5181554, r5181546, r5181553, MPFR_RNDN);
        mpfr_neg(r5181555, r5181554, MPFR_RNDN);
        return mpfr_get_d(r5181555, MPFR_RNDN);
}

