#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 r39035 = 1;
        float r39036 = eps;
        float r39037 = r39035 - r39036;
        float r39038 = r39035 + r39036;
        float r39039 = r39037 / r39038;
        float r39040 = log(r39039);
        return r39040;
}

double f_id(double eps) {
        double r39041 = 1;
        double r39042 = eps;
        double r39043 = r39041 - r39042;
        double r39044 = r39041 + r39042;
        double r39045 = r39043 / r39044;
        double r39046 = log(r39045);
        return r39046;
}


double f_of(float eps) {
        float r39047 = 2/3;
        float r39048 = eps;
        float r39049 = 3;
        float r39050 = pow(r39048, r39049);
        float r39051 = r39047 * r39050;
        float r39052 = 2/5;
        float r39053 = 5;
        float r39054 = pow(r39048, r39053);
        float r39055 = r39052 * r39054;
        float r39056 = 2;
        float r39057 = r39056 * r39048;
        float r39058 = r39055 + r39057;
        float r39059 = r39051 + r39058;
        float r39060 = -r39059;
        return r39060;
}

double f_od(double eps) {
        double r39061 = 2/3;
        double r39062 = eps;
        double r39063 = 3;
        double r39064 = pow(r39062, r39063);
        double r39065 = r39061 * r39064;
        double r39066 = 2/5;
        double r39067 = 5;
        double r39068 = pow(r39062, r39067);
        double r39069 = r39066 * r39068;
        double r39070 = 2;
        double r39071 = r39070 * r39062;
        double r39072 = r39069 + r39071;
        double r39073 = r39065 + r39072;
        double r39074 = -r39073;
        return r39074;
}

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 r39075, r39076, r39077, r39078, r39079, r39080;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39075, "1", 10, MPFR_RNDN);
        mpfr_init(r39076);
        mpfr_init(r39077);
        mpfr_init(r39078);
        mpfr_init(r39079);
        mpfr_init(r39080);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r39076, eps, MPFR_RNDN);
        mpfr_sub(r39077, r39075, r39076, MPFR_RNDN);
        mpfr_add(r39078, r39075, r39076, MPFR_RNDN);
        mpfr_div(r39079, r39077, r39078, MPFR_RNDN);
        mpfr_log(r39080, r39079, MPFR_RNDN);
        return mpfr_get_d(r39080, MPFR_RNDN);
}

static mpfr_t r39081, r39082, r39083, r39084, r39085, r39086, r39087, r39088, r39089, r39090, r39091, r39092, r39093, r39094;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39081, "2/3", 10, MPFR_RNDN);
        mpfr_init(r39082);
        mpfr_init_set_str(r39083, "3", 10, MPFR_RNDN);
        mpfr_init(r39084);
        mpfr_init(r39085);
        mpfr_init_set_str(r39086, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r39087, "5", 10, MPFR_RNDN);
        mpfr_init(r39088);
        mpfr_init(r39089);
        mpfr_init_set_str(r39090, "2", 10, MPFR_RNDN);
        mpfr_init(r39091);
        mpfr_init(r39092);
        mpfr_init(r39093);
        mpfr_init(r39094);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r39082, eps, MPFR_RNDN);
        ;
        mpfr_pow(r39084, r39082, r39083, MPFR_RNDN);
        mpfr_mul(r39085, r39081, r39084, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r39088, r39082, r39087, MPFR_RNDN);
        mpfr_mul(r39089, r39086, r39088, MPFR_RNDN);
        ;
        mpfr_mul(r39091, r39090, r39082, MPFR_RNDN);
        mpfr_add(r39092, r39089, r39091, MPFR_RNDN);
        mpfr_add(r39093, r39085, r39092, MPFR_RNDN);
        mpfr_neg(r39094, r39093, MPFR_RNDN);
        return mpfr_get_d(r39094, MPFR_RNDN);
}

static mpfr_t r39095, r39096, r39097, r39098, r39099, r39100, r39101, r39102, r39103, r39104, r39105, r39106, r39107, r39108;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39095, "2/3", 10, MPFR_RNDN);
        mpfr_init(r39096);
        mpfr_init_set_str(r39097, "3", 10, MPFR_RNDN);
        mpfr_init(r39098);
        mpfr_init(r39099);
        mpfr_init_set_str(r39100, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r39101, "5", 10, MPFR_RNDN);
        mpfr_init(r39102);
        mpfr_init(r39103);
        mpfr_init_set_str(r39104, "2", 10, MPFR_RNDN);
        mpfr_init(r39105);
        mpfr_init(r39106);
        mpfr_init(r39107);
        mpfr_init(r39108);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r39096, eps, MPFR_RNDN);
        ;
        mpfr_pow(r39098, r39096, r39097, MPFR_RNDN);
        mpfr_mul(r39099, r39095, r39098, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r39102, r39096, r39101, MPFR_RNDN);
        mpfr_mul(r39103, r39100, r39102, MPFR_RNDN);
        ;
        mpfr_mul(r39105, r39104, r39096, MPFR_RNDN);
        mpfr_add(r39106, r39103, r39105, MPFR_RNDN);
        mpfr_add(r39107, r39099, r39106, MPFR_RNDN);
        mpfr_neg(r39108, r39107, MPFR_RNDN);
        return mpfr_get_d(r39108, MPFR_RNDN);
}

