#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 r34171 = 1.0f;
        float r34172 = x;
        float r34173 = r34171 - r34172;
        float r34174 = log(r34173);
        float r34175 = r34171 + r34172;
        float r34176 = log(r34175);
        float r34177 = r34174 / r34176;
        return r34177;
}

double f_id(double x) {
        double r34178 = 1.0;
        double r34179 = x;
        double r34180 = r34178 - r34179;
        double r34181 = log(r34180);
        double r34182 = r34178 + r34179;
        double r34183 = log(r34182);
        double r34184 = r34181 / r34183;
        return r34184;
}


double f_of(float x) {
        float r34185 = 0.5f;
        float r34186 = x;
        float r34187 = r34186 * r34186;
        float r34188 = r34185 * r34187;
        float r34189 = 1.0f;
        float r34190 = r34189 + r34186;
        float r34191 = r34188 + r34190;
        float r34192 = -r34191;
        return r34192;
}

double f_od(double x) {
        double r34193 = 0.5;
        double r34194 = x;
        double r34195 = r34194 * r34194;
        double r34196 = r34193 * r34195;
        double r34197 = 1.0;
        double r34198 = r34197 + r34194;
        double r34199 = r34196 + r34198;
        double r34200 = -r34199;
        return r34200;
}

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 r34201, r34202, r34203, r34204, r34205, r34206, r34207;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r34201, "1", 10, MPFR_RNDN);
        mpfr_init(r34202);
        mpfr_init(r34203);
        mpfr_init(r34204);
        mpfr_init(r34205);
        mpfr_init(r34206);
        mpfr_init(r34207);
}

double f_im(double x) {
        ;
        mpfr_set_d(r34202, x, MPFR_RNDN);
        mpfr_sub(r34203, r34201, r34202, MPFR_RNDN);
        mpfr_log(r34204, r34203, MPFR_RNDN);
        mpfr_add(r34205, r34201, r34202, MPFR_RNDN);
        mpfr_log(r34206, r34205, MPFR_RNDN);
        mpfr_div(r34207, r34204, r34206, MPFR_RNDN);
        return mpfr_get_d(r34207, MPFR_RNDN);
}

static mpfr_t r34208, r34209, r34210, r34211, r34212, r34213, r34214, r34215;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r34208, "1/2", 10, MPFR_RNDN);
        mpfr_init(r34209);
        mpfr_init(r34210);
        mpfr_init(r34211);
        mpfr_init_set_str(r34212, "1", 10, MPFR_RNDN);
        mpfr_init(r34213);
        mpfr_init(r34214);
        mpfr_init(r34215);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r34209, x, MPFR_RNDN);
        mpfr_sqr(r34210, r34209, MPFR_RNDN);
        mpfr_mul(r34211, r34208, r34210, MPFR_RNDN);
        ;
        mpfr_add(r34213, r34212, r34209, MPFR_RNDN);
        mpfr_add(r34214, r34211, r34213, MPFR_RNDN);
        mpfr_neg(r34215, r34214, MPFR_RNDN);
        return mpfr_get_d(r34215, MPFR_RNDN);
}

static mpfr_t r34216, r34217, r34218, r34219, r34220, r34221, r34222, r34223;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r34216, "1/2", 10, MPFR_RNDN);
        mpfr_init(r34217);
        mpfr_init(r34218);
        mpfr_init(r34219);
        mpfr_init_set_str(r34220, "1", 10, MPFR_RNDN);
        mpfr_init(r34221);
        mpfr_init(r34222);
        mpfr_init(r34223);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r34217, x, MPFR_RNDN);
        mpfr_sqr(r34218, r34217, MPFR_RNDN);
        mpfr_mul(r34219, r34216, r34218, MPFR_RNDN);
        ;
        mpfr_add(r34221, r34220, r34217, MPFR_RNDN);
        mpfr_add(r34222, r34219, r34221, MPFR_RNDN);
        mpfr_neg(r34223, r34222, MPFR_RNDN);
        return mpfr_get_d(r34223, MPFR_RNDN);
}

