#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 r9905 = 1.0f;
        float r9906 = x;
        float r9907 = r9905 - r9906;
        float r9908 = log(r9907);
        float r9909 = r9905 + r9906;
        float r9910 = log(r9909);
        float r9911 = r9908 / r9910;
        return r9911;
}

double f_id(double x) {
        double r9912 = 1.0;
        double r9913 = x;
        double r9914 = r9912 - r9913;
        double r9915 = log(r9914);
        double r9916 = r9912 + r9913;
        double r9917 = log(r9916);
        double r9918 = r9915 / r9917;
        return r9918;
}


double f_of(float x) {
        float r9919 = x;
        float r9920 = -r9919;
        float r9921 = log1p(r9920);
        float r9922 = log1p(r9919);
        float r9923 = r9921 / r9922;
        return r9923;
}

double f_od(double x) {
        double r9924 = x;
        double r9925 = -r9924;
        double r9926 = log1p(r9925);
        double r9927 = log1p(r9924);
        double r9928 = r9926 / r9927;
        return r9928;
}

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 r9929, r9930, r9931, r9932, r9933, r9934, r9935;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9929, "1", 10, MPFR_RNDN);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init(r9932);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9930, x, MPFR_RNDN);
        mpfr_sub(r9931, r9929, r9930, MPFR_RNDN);
        mpfr_log(r9932, r9931, MPFR_RNDN);
        mpfr_add(r9933, r9929, r9930, MPFR_RNDN);
        mpfr_log(r9934, r9933, MPFR_RNDN);
        mpfr_div(r9935, r9932, r9934, MPFR_RNDN);
        return mpfr_get_d(r9935, MPFR_RNDN);
}

static mpfr_t r9936, r9937, r9938, r9939, r9940;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
        mpfr_init(r9939);
        mpfr_init(r9940);
}

double f_fm(double x) {
        mpfr_set_d(r9936, x, MPFR_RNDN);
        mpfr_neg(r9937, r9936, MPFR_RNDN);
        mpfr_log1p(r9938, r9937, MPFR_RNDN);
        mpfr_log1p(r9939, r9936, MPFR_RNDN);
        mpfr_div(r9940, r9938, r9939, MPFR_RNDN);
        return mpfr_get_d(r9940, MPFR_RNDN);
}

static mpfr_t r9941, r9942, r9943, r9944, r9945;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
}

double f_dm(double x) {
        mpfr_set_d(r9941, x, MPFR_RNDN);
        mpfr_neg(r9942, r9941, MPFR_RNDN);
        mpfr_log1p(r9943, r9942, MPFR_RNDN);
        mpfr_log1p(r9944, r9941, MPFR_RNDN);
        mpfr_div(r9945, r9943, r9944, MPFR_RNDN);
        return mpfr_get_d(r9945, MPFR_RNDN);
}

