#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 r38419 = 1;
        float r38420 = x;
        float r38421 = r38419 - r38420;
        float r38422 = log(r38421);
        float r38423 = r38419 + r38420;
        float r38424 = log(r38423);
        float r38425 = r38422 / r38424;
        return r38425;
}

double f_id(double x) {
        double r38426 = 1;
        double r38427 = x;
        double r38428 = r38426 - r38427;
        double r38429 = log(r38428);
        double r38430 = r38426 + r38427;
        double r38431 = log(r38430);
        double r38432 = r38429 / r38431;
        return r38432;
}


double f_of(float x) {
        float r38433 = 1/2;
        float r38434 = x;
        float r38435 = 2;
        float r38436 = pow(r38434, r38435);
        float r38437 = r38433 * r38436;
        float r38438 = 1;
        float r38439 = r38438 + r38434;
        float r38440 = r38437 + r38439;
        float r38441 = -r38440;
        return r38441;
}

double f_od(double x) {
        double r38442 = 1/2;
        double r38443 = x;
        double r38444 = 2;
        double r38445 = pow(r38443, r38444);
        double r38446 = r38442 * r38445;
        double r38447 = 1;
        double r38448 = r38447 + r38443;
        double r38449 = r38446 + r38448;
        double r38450 = -r38449;
        return r38450;
}

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 r38451, r38452, r38453, r38454, r38455, r38456, r38457;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38451, "1", 10, MPFR_RNDN);
        mpfr_init(r38452);
        mpfr_init(r38453);
        mpfr_init(r38454);
        mpfr_init(r38455);
        mpfr_init(r38456);
        mpfr_init(r38457);
}

double f_im(double x) {
        ;
        mpfr_set_d(r38452, x, MPFR_RNDN);
        mpfr_sub(r38453, r38451, r38452, MPFR_RNDN);
        mpfr_log(r38454, r38453, MPFR_RNDN);
        mpfr_add(r38455, r38451, r38452, MPFR_RNDN);
        mpfr_log(r38456, r38455, MPFR_RNDN);
        mpfr_div(r38457, r38454, r38456, MPFR_RNDN);
        return mpfr_get_d(r38457, MPFR_RNDN);
}

static mpfr_t r38458, r38459, r38460, r38461, r38462, r38463, r38464, r38465, r38466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38458, "1/2", 10, MPFR_RNDN);
        mpfr_init(r38459);
        mpfr_init_set_str(r38460, "2", 10, MPFR_RNDN);
        mpfr_init(r38461);
        mpfr_init(r38462);
        mpfr_init_set_str(r38463, "1", 10, MPFR_RNDN);
        mpfr_init(r38464);
        mpfr_init(r38465);
        mpfr_init(r38466);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r38459, x, MPFR_RNDN);
        ;
        mpfr_pow(r38461, r38459, r38460, MPFR_RNDN);
        mpfr_mul(r38462, r38458, r38461, MPFR_RNDN);
        ;
        mpfr_add(r38464, r38463, r38459, MPFR_RNDN);
        mpfr_add(r38465, r38462, r38464, MPFR_RNDN);
        mpfr_neg(r38466, r38465, MPFR_RNDN);
        return mpfr_get_d(r38466, MPFR_RNDN);
}

static mpfr_t r38467, r38468, r38469, r38470, r38471, r38472, r38473, r38474, r38475;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38467, "1/2", 10, MPFR_RNDN);
        mpfr_init(r38468);
        mpfr_init_set_str(r38469, "2", 10, MPFR_RNDN);
        mpfr_init(r38470);
        mpfr_init(r38471);
        mpfr_init_set_str(r38472, "1", 10, MPFR_RNDN);
        mpfr_init(r38473);
        mpfr_init(r38474);
        mpfr_init(r38475);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r38468, x, MPFR_RNDN);
        ;
        mpfr_pow(r38470, r38468, r38469, MPFR_RNDN);
        mpfr_mul(r38471, r38467, r38470, MPFR_RNDN);
        ;
        mpfr_add(r38473, r38472, r38468, MPFR_RNDN);
        mpfr_add(r38474, r38471, r38473, MPFR_RNDN);
        mpfr_neg(r38475, r38474, MPFR_RNDN);
        return mpfr_get_d(r38475, MPFR_RNDN);
}

