#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 r10258 = 1;
        float r10259 = x;
        float r10260 = r10258 - r10259;
        float r10261 = log(r10260);
        float r10262 = r10258 + r10259;
        float r10263 = log(r10262);
        float r10264 = r10261 / r10263;
        return r10264;
}

double f_id(double x) {
        double r10265 = 1;
        double r10266 = x;
        double r10267 = r10265 - r10266;
        double r10268 = log(r10267);
        double r10269 = r10265 + r10266;
        double r10270 = log(r10269);
        double r10271 = r10268 / r10270;
        return r10271;
}


double f_of(float x) {
        float r10272 = 1;
        float r10273 = x;
        float r10274 = log1p(r10273);
        float r10275 = -r10273;
        float r10276 = log1p(r10275);
        float r10277 = r10274 / r10276;
        float r10278 = r10272 / r10277;
        return r10278;
}

double f_od(double x) {
        double r10279 = 1;
        double r10280 = x;
        double r10281 = log1p(r10280);
        double r10282 = -r10280;
        double r10283 = log1p(r10282);
        double r10284 = r10281 / r10283;
        double r10285 = r10279 / r10284;
        return r10285;
}

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 r10286, r10287, r10288, r10289, r10290, r10291, r10292;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10286, "1", 10, MPFR_RNDN);
        mpfr_init(r10287);
        mpfr_init(r10288);
        mpfr_init(r10289);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init(r10292);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10287, x, MPFR_RNDN);
        mpfr_sub(r10288, r10286, r10287, MPFR_RNDN);
        mpfr_log(r10289, r10288, MPFR_RNDN);
        mpfr_add(r10290, r10286, r10287, MPFR_RNDN);
        mpfr_log(r10291, r10290, MPFR_RNDN);
        mpfr_div(r10292, r10289, r10291, MPFR_RNDN);
        return mpfr_get_d(r10292, MPFR_RNDN);
}

static mpfr_t r10293, r10294, r10295, r10296, r10297, r10298, r10299;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10293, "1", 10, MPFR_RNDN);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init(r10299);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10294, x, MPFR_RNDN);
        mpfr_log1p(r10295, r10294, MPFR_RNDN);
        mpfr_neg(r10296, r10294, MPFR_RNDN);
        mpfr_log1p(r10297, r10296, MPFR_RNDN);
        mpfr_div(r10298, r10295, r10297, MPFR_RNDN);
        mpfr_div(r10299, r10293, r10298, MPFR_RNDN);
        return mpfr_get_d(r10299, MPFR_RNDN);
}

static mpfr_t r10300, r10301, r10302, r10303, r10304, r10305, r10306;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10300, "1", 10, MPFR_RNDN);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init(r10305);
        mpfr_init(r10306);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10301, x, MPFR_RNDN);
        mpfr_log1p(r10302, r10301, MPFR_RNDN);
        mpfr_neg(r10303, r10301, MPFR_RNDN);
        mpfr_log1p(r10304, r10303, MPFR_RNDN);
        mpfr_div(r10305, r10302, r10304, MPFR_RNDN);
        mpfr_div(r10306, r10300, r10305, MPFR_RNDN);
        return mpfr_get_d(r10306, MPFR_RNDN);
}

