#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "qlog (example 3.10)";

double f_if(float x) {
        float r4416738 = 1;
        float r4416739 = x;
        float r4416740 = r4416738 - r4416739;
        float r4416741 = log(r4416740);
        float r4416742 = r4416738 + r4416739;
        float r4416743 = log(r4416742);
        float r4416744 = r4416741 / r4416743;
        return r4416744;
}

double f_id(double x) {
        double r4416745 = 1;
        double r4416746 = x;
        double r4416747 = r4416745 - r4416746;
        double r4416748 = log(r4416747);
        double r4416749 = r4416745 + r4416746;
        double r4416750 = log(r4416749);
        double r4416751 = r4416748 / r4416750;
        return r4416751;
}


double f_of(float x) {
        float r4416752 = 1/2;
        float r4416753 = x;
        float r4416754 = 2;
        float r4416755 = pow(r4416753, r4416754);
        float r4416756 = r4416752 * r4416755;
        float r4416757 = 1;
        float r4416758 = r4416757 + r4416753;
        float r4416759 = r4416756 + r4416758;
        float r4416760 = -r4416759;
        return r4416760;
}

double f_od(double x) {
        double r4416761 = 1/2;
        double r4416762 = x;
        double r4416763 = 2;
        double r4416764 = pow(r4416762, r4416763);
        double r4416765 = r4416761 * r4416764;
        double r4416766 = 1;
        double r4416767 = r4416766 + r4416762;
        double r4416768 = r4416765 + r4416767;
        double r4416769 = -r4416768;
        return r4416769;
}

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 r4416770, r4416771, r4416772, r4416773, r4416774, r4416775, r4416776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4416770, "1", 10, MPFR_RNDN);
        mpfr_init(r4416771);
        mpfr_init(r4416772);
        mpfr_init(r4416773);
        mpfr_init(r4416774);
        mpfr_init(r4416775);
        mpfr_init(r4416776);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4416771, x, MPFR_RNDN);
        mpfr_sub(r4416772, r4416770, r4416771, MPFR_RNDN);
        mpfr_log(r4416773, r4416772, MPFR_RNDN);
        mpfr_add(r4416774, r4416770, r4416771, MPFR_RNDN);
        mpfr_log(r4416775, r4416774, MPFR_RNDN);
        mpfr_div(r4416776, r4416773, r4416775, MPFR_RNDN);
        return mpfr_get_d(r4416776, MPFR_RNDN);
}

static mpfr_t r4416777, r4416778, r4416779, r4416780, r4416781, r4416782, r4416783, r4416784, r4416785;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4416777, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4416778);
        mpfr_init_set_str(r4416779, "2", 10, MPFR_RNDN);
        mpfr_init(r4416780);
        mpfr_init(r4416781);
        mpfr_init_set_str(r4416782, "1", 10, MPFR_RNDN);
        mpfr_init(r4416783);
        mpfr_init(r4416784);
        mpfr_init(r4416785);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4416778, x, MPFR_RNDN);
        ;
        mpfr_pow(r4416780, r4416778, r4416779, MPFR_RNDN);
        mpfr_mul(r4416781, r4416777, r4416780, MPFR_RNDN);
        ;
        mpfr_add(r4416783, r4416782, r4416778, MPFR_RNDN);
        mpfr_add(r4416784, r4416781, r4416783, MPFR_RNDN);
        mpfr_neg(r4416785, r4416784, MPFR_RNDN);
        return mpfr_get_d(r4416785, MPFR_RNDN);
}

static mpfr_t r4416786, r4416787, r4416788, r4416789, r4416790, r4416791, r4416792, r4416793, r4416794;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4416786, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4416787);
        mpfr_init_set_str(r4416788, "2", 10, MPFR_RNDN);
        mpfr_init(r4416789);
        mpfr_init(r4416790);
        mpfr_init_set_str(r4416791, "1", 10, MPFR_RNDN);
        mpfr_init(r4416792);
        mpfr_init(r4416793);
        mpfr_init(r4416794);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4416787, x, MPFR_RNDN);
        ;
        mpfr_pow(r4416789, r4416787, r4416788, MPFR_RNDN);
        mpfr_mul(r4416790, r4416786, r4416789, MPFR_RNDN);
        ;
        mpfr_add(r4416792, r4416791, r4416787, MPFR_RNDN);
        mpfr_add(r4416793, r4416790, r4416792, MPFR_RNDN);
        mpfr_neg(r4416794, r4416793, MPFR_RNDN);
        return mpfr_get_d(r4416794, MPFR_RNDN);
}

