#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 r26394 = 1;
        float r26395 = x;
        float r26396 = r26394 - r26395;
        float r26397 = log(r26396);
        float r26398 = r26394 + r26395;
        float r26399 = log(r26398);
        float r26400 = r26397 / r26399;
        return r26400;
}

double f_id(double x) {
        double r26401 = 1;
        double r26402 = x;
        double r26403 = r26401 - r26402;
        double r26404 = log(r26403);
        double r26405 = r26401 + r26402;
        double r26406 = log(r26405);
        double r26407 = r26404 / r26406;
        return r26407;
}


double f_of(float x) {
        float r26408 = 1/2;
        float r26409 = x;
        float r26410 = 2;
        float r26411 = pow(r26409, r26410);
        float r26412 = r26408 * r26411;
        float r26413 = 1;
        float r26414 = r26413 + r26409;
        float r26415 = r26412 + r26414;
        float r26416 = -r26415;
        return r26416;
}

double f_od(double x) {
        double r26417 = 1/2;
        double r26418 = x;
        double r26419 = 2;
        double r26420 = pow(r26418, r26419);
        double r26421 = r26417 * r26420;
        double r26422 = 1;
        double r26423 = r26422 + r26418;
        double r26424 = r26421 + r26423;
        double r26425 = -r26424;
        return r26425;
}

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 r26426, r26427, r26428, r26429, r26430, r26431, r26432;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26426, "1", 10, MPFR_RNDN);
        mpfr_init(r26427);
        mpfr_init(r26428);
        mpfr_init(r26429);
        mpfr_init(r26430);
        mpfr_init(r26431);
        mpfr_init(r26432);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26427, x, MPFR_RNDN);
        mpfr_sub(r26428, r26426, r26427, MPFR_RNDN);
        mpfr_log(r26429, r26428, MPFR_RNDN);
        mpfr_add(r26430, r26426, r26427, MPFR_RNDN);
        mpfr_log(r26431, r26430, MPFR_RNDN);
        mpfr_div(r26432, r26429, r26431, MPFR_RNDN);
        return mpfr_get_d(r26432, MPFR_RNDN);
}

static mpfr_t r26433, r26434, r26435, r26436, r26437, r26438, r26439, r26440, r26441;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26433, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26434);
        mpfr_init_set_str(r26435, "2", 10, MPFR_RNDN);
        mpfr_init(r26436);
        mpfr_init(r26437);
        mpfr_init_set_str(r26438, "1", 10, MPFR_RNDN);
        mpfr_init(r26439);
        mpfr_init(r26440);
        mpfr_init(r26441);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r26434, x, MPFR_RNDN);
        ;
        mpfr_pow(r26436, r26434, r26435, MPFR_RNDN);
        mpfr_mul(r26437, r26433, r26436, MPFR_RNDN);
        ;
        mpfr_add(r26439, r26438, r26434, MPFR_RNDN);
        mpfr_add(r26440, r26437, r26439, MPFR_RNDN);
        mpfr_neg(r26441, r26440, MPFR_RNDN);
        return mpfr_get_d(r26441, MPFR_RNDN);
}

static mpfr_t r26442, r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26442, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26443);
        mpfr_init_set_str(r26444, "2", 10, MPFR_RNDN);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init_set_str(r26447, "1", 10, MPFR_RNDN);
        mpfr_init(r26448);
        mpfr_init(r26449);
        mpfr_init(r26450);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r26443, x, MPFR_RNDN);
        ;
        mpfr_pow(r26445, r26443, r26444, MPFR_RNDN);
        mpfr_mul(r26446, r26442, r26445, MPFR_RNDN);
        ;
        mpfr_add(r26448, r26447, r26443, MPFR_RNDN);
        mpfr_add(r26449, r26446, r26448, MPFR_RNDN);
        mpfr_neg(r26450, r26449, MPFR_RNDN);
        return mpfr_get_d(r26450, MPFR_RNDN);
}

