#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 r9987 = 1.0f;
        float r9988 = eps;
        float r9989 = r9987 - r9988;
        float r9990 = r9987 + r9988;
        float r9991 = r9989 / r9990;
        float r9992 = log(r9991);
        return r9992;
}

double f_id(double eps) {
        double r9993 = 1.0;
        double r9994 = eps;
        double r9995 = r9993 - r9994;
        double r9996 = r9993 + r9994;
        double r9997 = r9995 / r9996;
        double r9998 = log(r9997);
        return r9998;
}


double f_of(float eps) {
        float r9999 = eps;
        float r10000 = r9999 * r9999;
        float r10001 = 0.6666666666666666f;
        float r10002 = 2.0f;
        float r10003 = fma(r10000, r10001, r10002);
        float r10004 = -r9999;
        float r10005 = 5.0f;
        float r10006 = pow(r9999, r10005);
        float r10007 = 0.4f;
        float r10008 = -r10007;
        float r10009 = r10006 * r10008;
        float r10010 = fma(r10003, r10004, r10009);
        return r10010;
}

double f_od(double eps) {
        double r10011 = eps;
        double r10012 = r10011 * r10011;
        double r10013 = 0.6666666666666666;
        double r10014 = 2.0;
        double r10015 = fma(r10012, r10013, r10014);
        double r10016 = -r10011;
        double r10017 = 5.0;
        double r10018 = pow(r10011, r10017);
        double r10019 = 0.4;
        double r10020 = -r10019;
        double r10021 = r10018 * r10020;
        double r10022 = fma(r10015, r10016, r10021);
        return r10022;
}

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 r10023, r10024, r10025, r10026, r10027, r10028;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10023, "1", 10, MPFR_RNDN);
        mpfr_init(r10024);
        mpfr_init(r10025);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r10024, eps, MPFR_RNDN);
        mpfr_sub(r10025, r10023, r10024, MPFR_RNDN);
        mpfr_add(r10026, r10023, r10024, MPFR_RNDN);
        mpfr_div(r10027, r10025, r10026, MPFR_RNDN);
        mpfr_log(r10028, r10027, MPFR_RNDN);
        return mpfr_get_d(r10028, MPFR_RNDN);
}

static mpfr_t r10029, r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init_set_str(r10031, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r10032, "2", 10, MPFR_RNDN);
        mpfr_init(r10033);
        mpfr_init(r10034);
        mpfr_init_set_str(r10035, "5", 10, MPFR_RNDN);
        mpfr_init(r10036);
        mpfr_init_set_str(r10037, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
}

double f_fm(double eps) {
        mpfr_set_d(r10029, eps, MPFR_RNDN);
        mpfr_mul(r10030, r10029, r10029, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10033, r10030, r10031, r10032, MPFR_RNDN);
        mpfr_neg(r10034, r10029, MPFR_RNDN);
        ;
        mpfr_pow(r10036, r10029, r10035, MPFR_RNDN);
        ;
        mpfr_neg(r10038, r10037, MPFR_RNDN);
        mpfr_mul(r10039, r10036, r10038, MPFR_RNDN);
        mpfr_fma(r10040, r10033, r10034, r10039, MPFR_RNDN);
        return mpfr_get_d(r10040, MPFR_RNDN);
}

static mpfr_t r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048, r10049, r10050, r10051, r10052;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init_set_str(r10043, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r10044, "2", 10, MPFR_RNDN);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init_set_str(r10047, "5", 10, MPFR_RNDN);
        mpfr_init(r10048);
        mpfr_init_set_str(r10049, "2/5", 10, MPFR_RNDN);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
}

double f_dm(double eps) {
        mpfr_set_d(r10041, eps, MPFR_RNDN);
        mpfr_mul(r10042, r10041, r10041, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10045, r10042, r10043, r10044, MPFR_RNDN);
        mpfr_neg(r10046, r10041, MPFR_RNDN);
        ;
        mpfr_pow(r10048, r10041, r10047, MPFR_RNDN);
        ;
        mpfr_neg(r10050, r10049, MPFR_RNDN);
        mpfr_mul(r10051, r10048, r10050, MPFR_RNDN);
        mpfr_fma(r10052, r10045, r10046, r10051, MPFR_RNDN);
        return mpfr_get_d(r10052, MPFR_RNDN);
}

