#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 r38459 = 1;
        float r38460 = x;
        float r38461 = r38459 - r38460;
        float r38462 = log(r38461);
        float r38463 = r38459 + r38460;
        float r38464 = log(r38463);
        float r38465 = r38462 / r38464;
        return r38465;
}

double f_id(double x) {
        double r38466 = 1;
        double r38467 = x;
        double r38468 = r38466 - r38467;
        double r38469 = log(r38468);
        double r38470 = r38466 + r38467;
        double r38471 = log(r38470);
        double r38472 = r38469 / r38471;
        return r38472;
}


double f_of(float x) {
        float r38473 = 1;
        float r38474 = x;
        float r38475 = r38473 - r38474;
        float r38476 = log(r38475);
        float r38477 = r38473 + r38474;
        float r38478 = log(r38477);
        float r38479 = r38476 / r38478;
        return r38479;
}

double f_od(double x) {
        double r38480 = 1;
        double r38481 = x;
        double r38482 = r38480 - r38481;
        double r38483 = log(r38482);
        double r38484 = r38480 + r38481;
        double r38485 = log(r38484);
        double r38486 = r38483 / r38485;
        return r38486;
}

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 r38487, r38488, r38489, r38490, r38491, r38492, r38493;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38487, "1", 10, MPFR_RNDN);
        mpfr_init(r38488);
        mpfr_init(r38489);
        mpfr_init(r38490);
        mpfr_init(r38491);
        mpfr_init(r38492);
        mpfr_init(r38493);
}

double f_im(double x) {
        ;
        mpfr_set_d(r38488, x, MPFR_RNDN);
        mpfr_sub(r38489, r38487, r38488, MPFR_RNDN);
        mpfr_log(r38490, r38489, MPFR_RNDN);
        mpfr_add(r38491, r38487, r38488, MPFR_RNDN);
        mpfr_log(r38492, r38491, MPFR_RNDN);
        mpfr_div(r38493, r38490, r38492, MPFR_RNDN);
        return mpfr_get_d(r38493, MPFR_RNDN);
}

static mpfr_t r38494, r38495, r38496, r38497, r38498, r38499, r38500;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38494, "1", 10, MPFR_RNDN);
        mpfr_init(r38495);
        mpfr_init(r38496);
        mpfr_init(r38497);
        mpfr_init(r38498);
        mpfr_init(r38499);
        mpfr_init(r38500);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r38495, x, MPFR_RNDN);
        mpfr_sub(r38496, r38494, r38495, MPFR_RNDN);
        mpfr_log(r38497, r38496, MPFR_RNDN);
        mpfr_add(r38498, r38494, r38495, MPFR_RNDN);
        mpfr_log(r38499, r38498, MPFR_RNDN);
        mpfr_div(r38500, r38497, r38499, MPFR_RNDN);
        return mpfr_get_d(r38500, MPFR_RNDN);
}

static mpfr_t r38501, r38502, r38503, r38504, r38505, r38506, r38507;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38501, "1", 10, MPFR_RNDN);
        mpfr_init(r38502);
        mpfr_init(r38503);
        mpfr_init(r38504);
        mpfr_init(r38505);
        mpfr_init(r38506);
        mpfr_init(r38507);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r38502, x, MPFR_RNDN);
        mpfr_sub(r38503, r38501, r38502, MPFR_RNDN);
        mpfr_log(r38504, r38503, MPFR_RNDN);
        mpfr_add(r38505, r38501, r38502, MPFR_RNDN);
        mpfr_log(r38506, r38505, MPFR_RNDN);
        mpfr_div(r38507, r38504, r38506, MPFR_RNDN);
        return mpfr_get_d(r38507, MPFR_RNDN);
}

