#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 r38131 = 1;
        float r38132 = x;
        float r38133 = r38131 - r38132;
        float r38134 = log(r38133);
        float r38135 = r38131 + r38132;
        float r38136 = log(r38135);
        float r38137 = r38134 / r38136;
        return r38137;
}

double f_id(double x) {
        double r38138 = 1;
        double r38139 = x;
        double r38140 = r38138 - r38139;
        double r38141 = log(r38140);
        double r38142 = r38138 + r38139;
        double r38143 = log(r38142);
        double r38144 = r38141 / r38143;
        return r38144;
}


double f_of(float x) {
        float r38145 = 1/2;
        float r38146 = x;
        float r38147 = 2;
        float r38148 = pow(r38146, r38147);
        float r38149 = r38145 * r38148;
        float r38150 = 1;
        float r38151 = r38150 + r38146;
        float r38152 = r38149 + r38151;
        float r38153 = -r38152;
        return r38153;
}

double f_od(double x) {
        double r38154 = 1/2;
        double r38155 = x;
        double r38156 = 2;
        double r38157 = pow(r38155, r38156);
        double r38158 = r38154 * r38157;
        double r38159 = 1;
        double r38160 = r38159 + r38155;
        double r38161 = r38158 + r38160;
        double r38162 = -r38161;
        return r38162;
}

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 r38163, r38164, r38165, r38166, r38167, r38168, r38169;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38163, "1", 10, MPFR_RNDN);
        mpfr_init(r38164);
        mpfr_init(r38165);
        mpfr_init(r38166);
        mpfr_init(r38167);
        mpfr_init(r38168);
        mpfr_init(r38169);
}

double f_im(double x) {
        ;
        mpfr_set_d(r38164, x, MPFR_RNDN);
        mpfr_sub(r38165, r38163, r38164, MPFR_RNDN);
        mpfr_log(r38166, r38165, MPFR_RNDN);
        mpfr_add(r38167, r38163, r38164, MPFR_RNDN);
        mpfr_log(r38168, r38167, MPFR_RNDN);
        mpfr_div(r38169, r38166, r38168, MPFR_RNDN);
        return mpfr_get_d(r38169, MPFR_RNDN);
}

static mpfr_t r38170, r38171, r38172, r38173, r38174, r38175, r38176, r38177, r38178;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38170, "1/2", 10, MPFR_RNDN);
        mpfr_init(r38171);
        mpfr_init_set_str(r38172, "2", 10, MPFR_RNDN);
        mpfr_init(r38173);
        mpfr_init(r38174);
        mpfr_init_set_str(r38175, "1", 10, MPFR_RNDN);
        mpfr_init(r38176);
        mpfr_init(r38177);
        mpfr_init(r38178);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r38171, x, MPFR_RNDN);
        ;
        mpfr_pow(r38173, r38171, r38172, MPFR_RNDN);
        mpfr_mul(r38174, r38170, r38173, MPFR_RNDN);
        ;
        mpfr_add(r38176, r38175, r38171, MPFR_RNDN);
        mpfr_add(r38177, r38174, r38176, MPFR_RNDN);
        mpfr_neg(r38178, r38177, MPFR_RNDN);
        return mpfr_get_d(r38178, MPFR_RNDN);
}

static mpfr_t r38179, r38180, r38181, r38182, r38183, r38184, r38185, r38186, r38187;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38179, "1/2", 10, MPFR_RNDN);
        mpfr_init(r38180);
        mpfr_init_set_str(r38181, "2", 10, MPFR_RNDN);
        mpfr_init(r38182);
        mpfr_init(r38183);
        mpfr_init_set_str(r38184, "1", 10, MPFR_RNDN);
        mpfr_init(r38185);
        mpfr_init(r38186);
        mpfr_init(r38187);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r38180, x, MPFR_RNDN);
        ;
        mpfr_pow(r38182, r38180, r38181, MPFR_RNDN);
        mpfr_mul(r38183, r38179, r38182, MPFR_RNDN);
        ;
        mpfr_add(r38185, r38184, r38180, MPFR_RNDN);
        mpfr_add(r38186, r38183, r38185, MPFR_RNDN);
        mpfr_neg(r38187, r38186, MPFR_RNDN);
        return mpfr_get_d(r38187, MPFR_RNDN);
}

