#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 r11871541 = 1;
        float r11871542 = x;
        float r11871543 = r11871541 - r11871542;
        float r11871544 = log(r11871543);
        float r11871545 = r11871541 + r11871542;
        float r11871546 = log(r11871545);
        float r11871547 = r11871544 / r11871546;
        return r11871547;
}

double f_id(double x) {
        double r11871548 = 1;
        double r11871549 = x;
        double r11871550 = r11871548 - r11871549;
        double r11871551 = log(r11871550);
        double r11871552 = r11871548 + r11871549;
        double r11871553 = log(r11871552);
        double r11871554 = r11871551 / r11871553;
        return r11871554;
}


double f_of(float x) {
        float r11871555 = 1/2;
        float r11871556 = x;
        float r11871557 = 2;
        float r11871558 = pow(r11871556, r11871557);
        float r11871559 = r11871555 * r11871558;
        float r11871560 = 1;
        float r11871561 = r11871560 + r11871556;
        float r11871562 = r11871559 + r11871561;
        float r11871563 = -r11871562;
        return r11871563;
}

double f_od(double x) {
        double r11871564 = 1/2;
        double r11871565 = x;
        double r11871566 = 2;
        double r11871567 = pow(r11871565, r11871566);
        double r11871568 = r11871564 * r11871567;
        double r11871569 = 1;
        double r11871570 = r11871569 + r11871565;
        double r11871571 = r11871568 + r11871570;
        double r11871572 = -r11871571;
        return r11871572;
}

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 r11871573, r11871574, r11871575, r11871576, r11871577, r11871578, r11871579;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11871573, "1", 10, MPFR_RNDN);
        mpfr_init(r11871574);
        mpfr_init(r11871575);
        mpfr_init(r11871576);
        mpfr_init(r11871577);
        mpfr_init(r11871578);
        mpfr_init(r11871579);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11871574, x, MPFR_RNDN);
        mpfr_sub(r11871575, r11871573, r11871574, MPFR_RNDN);
        mpfr_log(r11871576, r11871575, MPFR_RNDN);
        mpfr_add(r11871577, r11871573, r11871574, MPFR_RNDN);
        mpfr_log(r11871578, r11871577, MPFR_RNDN);
        mpfr_div(r11871579, r11871576, r11871578, MPFR_RNDN);
        return mpfr_get_d(r11871579, MPFR_RNDN);
}

static mpfr_t r11871580, r11871581, r11871582, r11871583, r11871584, r11871585, r11871586, r11871587, r11871588;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11871580, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11871581);
        mpfr_init_set_str(r11871582, "2", 10, MPFR_RNDN);
        mpfr_init(r11871583);
        mpfr_init(r11871584);
        mpfr_init_set_str(r11871585, "1", 10, MPFR_RNDN);
        mpfr_init(r11871586);
        mpfr_init(r11871587);
        mpfr_init(r11871588);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11871581, x, MPFR_RNDN);
        ;
        mpfr_pow(r11871583, r11871581, r11871582, MPFR_RNDN);
        mpfr_mul(r11871584, r11871580, r11871583, MPFR_RNDN);
        ;
        mpfr_add(r11871586, r11871585, r11871581, MPFR_RNDN);
        mpfr_add(r11871587, r11871584, r11871586, MPFR_RNDN);
        mpfr_neg(r11871588, r11871587, MPFR_RNDN);
        return mpfr_get_d(r11871588, MPFR_RNDN);
}

static mpfr_t r11871589, r11871590, r11871591, r11871592, r11871593, r11871594, r11871595, r11871596, r11871597;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11871589, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11871590);
        mpfr_init_set_str(r11871591, "2", 10, MPFR_RNDN);
        mpfr_init(r11871592);
        mpfr_init(r11871593);
        mpfr_init_set_str(r11871594, "1", 10, MPFR_RNDN);
        mpfr_init(r11871595);
        mpfr_init(r11871596);
        mpfr_init(r11871597);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11871590, x, MPFR_RNDN);
        ;
        mpfr_pow(r11871592, r11871590, r11871591, MPFR_RNDN);
        mpfr_mul(r11871593, r11871589, r11871592, MPFR_RNDN);
        ;
        mpfr_add(r11871595, r11871594, r11871590, MPFR_RNDN);
        mpfr_add(r11871596, r11871593, r11871595, MPFR_RNDN);
        mpfr_neg(r11871597, r11871596, MPFR_RNDN);
        return mpfr_get_d(r11871597, MPFR_RNDN);
}

