#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 r10202 = 1;
        float r10203 = x;
        float r10204 = r10202 - r10203;
        float r10205 = log(r10204);
        float r10206 = r10202 + r10203;
        float r10207 = log(r10206);
        float r10208 = r10205 / r10207;
        return r10208;
}

double f_id(double x) {
        double r10209 = 1;
        double r10210 = x;
        double r10211 = r10209 - r10210;
        double r10212 = log(r10211);
        double r10213 = r10209 + r10210;
        double r10214 = log(r10213);
        double r10215 = r10212 / r10214;
        return r10215;
}


double f_of(float x) {
        float r10216 = x;
        float r10217 = 1/2;
        float r10218 = 2;
        float r10219 = pow(r10216, r10218);
        float r10220 = r10217 * r10219;
        float r10221 = 1;
        float r10222 = r10220 + r10221;
        float r10223 = r10216 + r10222;
        float r10224 = -r10223;
        return r10224;
}

double f_od(double x) {
        double r10225 = x;
        double r10226 = 1/2;
        double r10227 = 2;
        double r10228 = pow(r10225, r10227);
        double r10229 = r10226 * r10228;
        double r10230 = 1;
        double r10231 = r10229 + r10230;
        double r10232 = r10225 + r10231;
        double r10233 = -r10232;
        return r10233;
}

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 r10234, r10235, r10236, r10237, r10238, r10239, r10240;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10234, "1", 10, MPFR_RNDN);
        mpfr_init(r10235);
        mpfr_init(r10236);
        mpfr_init(r10237);
        mpfr_init(r10238);
        mpfr_init(r10239);
        mpfr_init(r10240);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10235, x, MPFR_RNDN);
        mpfr_sub(r10236, r10234, r10235, MPFR_RNDN);
        mpfr_log(r10237, r10236, MPFR_RNDN);
        mpfr_add(r10238, r10234, r10235, MPFR_RNDN);
        mpfr_log(r10239, r10238, MPFR_RNDN);
        mpfr_div(r10240, r10237, r10239, MPFR_RNDN);
        return mpfr_get_d(r10240, MPFR_RNDN);
}

static mpfr_t r10241, r10242, r10243, r10244, r10245, r10246, r10247, r10248, r10249;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10241);
        mpfr_init_set_str(r10242, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10243, "2", 10, MPFR_RNDN);
        mpfr_init(r10244);
        mpfr_init(r10245);
        mpfr_init_set_str(r10246, "1", 10, MPFR_RNDN);
        mpfr_init(r10247);
        mpfr_init(r10248);
        mpfr_init(r10249);
}

double f_fm(double x) {
        mpfr_set_d(r10241, x, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10244, r10241, r10243, MPFR_RNDN);
        mpfr_mul(r10245, r10242, r10244, MPFR_RNDN);
        ;
        mpfr_add(r10247, r10245, r10246, MPFR_RNDN);
        mpfr_add(r10248, r10241, r10247, MPFR_RNDN);
        mpfr_neg(r10249, r10248, MPFR_RNDN);
        return mpfr_get_d(r10249, MPFR_RNDN);
}

static mpfr_t r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257, r10258;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10250);
        mpfr_init_set_str(r10251, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10252, "2", 10, MPFR_RNDN);
        mpfr_init(r10253);
        mpfr_init(r10254);
        mpfr_init_set_str(r10255, "1", 10, MPFR_RNDN);
        mpfr_init(r10256);
        mpfr_init(r10257);
        mpfr_init(r10258);
}

double f_dm(double x) {
        mpfr_set_d(r10250, x, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10253, r10250, r10252, MPFR_RNDN);
        mpfr_mul(r10254, r10251, r10253, MPFR_RNDN);
        ;
        mpfr_add(r10256, r10254, r10255, MPFR_RNDN);
        mpfr_add(r10257, r10250, r10256, MPFR_RNDN);
        mpfr_neg(r10258, r10257, MPFR_RNDN);
        return mpfr_get_d(r10258, MPFR_RNDN);
}

