#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 r9967 = 1.0f;
        float r9968 = eps;
        float r9969 = r9967 - r9968;
        float r9970 = r9967 + r9968;
        float r9971 = r9969 / r9970;
        float r9972 = log(r9971);
        return r9972;
}

double f_id(double eps) {
        double r9973 = 1.0;
        double r9974 = eps;
        double r9975 = r9973 - r9974;
        double r9976 = r9973 + r9974;
        double r9977 = r9975 / r9976;
        double r9978 = log(r9977);
        return r9978;
}


double f_of(float eps) {
        float r9979 = 0.6666666666666666f;
        float r9980 = -r9979;
        float r9981 = eps;
        float r9982 = 3.0f;
        float r9983 = pow(r9981, r9982);
        float r9984 = r9980 * r9983;
        float r9985 = 5.0f;
        float r9986 = pow(r9981, r9985);
        float r9987 = 0.4f;
        float r9988 = -r9987;
        float r9989 = r9986 * r9988;
        float r9990 = 2.0f;
        float r9991 = -r9990;
        float r9992 = r9991 * r9981;
        float r9993 = r9989 + r9992;
        float r9994 = r9984 + r9993;
        return r9994;
}

double f_od(double eps) {
        double r9995 = 0.6666666666666666;
        double r9996 = -r9995;
        double r9997 = eps;
        double r9998 = 3.0;
        double r9999 = pow(r9997, r9998);
        double r10000 = r9996 * r9999;
        double r10001 = 5.0;
        double r10002 = pow(r9997, r10001);
        double r10003 = 0.4;
        double r10004 = -r10003;
        double r10005 = r10002 * r10004;
        double r10006 = 2.0;
        double r10007 = -r10006;
        double r10008 = r10007 * r9997;
        double r10009 = r10005 + r10008;
        double r10010 = r10000 + r10009;
        return r10010;
}

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 r10011, r10012, r10013, r10014, r10015, r10016;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10011, "1", 10, MPFR_RNDN);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r10012, eps, MPFR_RNDN);
        mpfr_sub(r10013, r10011, r10012, MPFR_RNDN);
        mpfr_add(r10014, r10011, r10012, MPFR_RNDN);
        mpfr_div(r10015, r10013, r10014, MPFR_RNDN);
        mpfr_log(r10016, r10015, MPFR_RNDN);
        return mpfr_get_d(r10016, MPFR_RNDN);
}

static mpfr_t r10017, r10018, r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029, r10030, r10031, r10032;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10017, "2/3", 10, MPFR_RNDN);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init_set_str(r10020, "3", 10, MPFR_RNDN);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init_set_str(r10023, "5", 10, MPFR_RNDN);
        mpfr_init(r10024);
        mpfr_init_set_str(r10025, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init_set_str(r10028, "2", 10, MPFR_RNDN);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init(r10032);
}

double f_fm(double eps) {
        ;
        mpfr_neg(r10018, r10017, MPFR_RNDN);
        mpfr_set_d(r10019, eps, MPFR_RNDN);
        ;
        mpfr_pow(r10021, r10019, r10020, MPFR_RNDN);
        mpfr_mul(r10022, r10018, r10021, MPFR_RNDN);
        ;
        mpfr_pow(r10024, r10019, r10023, MPFR_RNDN);
        ;
        mpfr_neg(r10026, r10025, MPFR_RNDN);
        mpfr_mul(r10027, r10024, r10026, MPFR_RNDN);
        ;
        mpfr_neg(r10029, r10028, MPFR_RNDN);
        mpfr_mul(r10030, r10029, r10019, MPFR_RNDN);
        mpfr_add(r10031, r10027, r10030, MPFR_RNDN);
        mpfr_add(r10032, r10022, r10031, MPFR_RNDN);
        return mpfr_get_d(r10032, MPFR_RNDN);
}

static mpfr_t r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10033, "2/3", 10, MPFR_RNDN);
        mpfr_init(r10034);
        mpfr_init(r10035);
        mpfr_init_set_str(r10036, "3", 10, MPFR_RNDN);
        mpfr_init(r10037);
        mpfr_init(r10038);
        mpfr_init_set_str(r10039, "5", 10, MPFR_RNDN);
        mpfr_init(r10040);
        mpfr_init_set_str(r10041, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init_set_str(r10044, "2", 10, MPFR_RNDN);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
        mpfr_init(r10048);
}

double f_dm(double eps) {
        ;
        mpfr_neg(r10034, r10033, MPFR_RNDN);
        mpfr_set_d(r10035, eps, MPFR_RNDN);
        ;
        mpfr_pow(r10037, r10035, r10036, MPFR_RNDN);
        mpfr_mul(r10038, r10034, r10037, MPFR_RNDN);
        ;
        mpfr_pow(r10040, r10035, r10039, MPFR_RNDN);
        ;
        mpfr_neg(r10042, r10041, MPFR_RNDN);
        mpfr_mul(r10043, r10040, r10042, MPFR_RNDN);
        ;
        mpfr_neg(r10045, r10044, MPFR_RNDN);
        mpfr_mul(r10046, r10045, r10035, MPFR_RNDN);
        mpfr_add(r10047, r10043, r10046, MPFR_RNDN);
        mpfr_add(r10048, r10038, r10047, MPFR_RNDN);
        return mpfr_get_d(r10048, MPFR_RNDN);
}

