#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 r5181354 = 1.0f;
        float r5181355 = x;
        float r5181356 = r5181354 - r5181355;
        float r5181357 = log(r5181356);
        float r5181358 = r5181354 + r5181355;
        float r5181359 = log(r5181358);
        float r5181360 = r5181357 / r5181359;
        return r5181360;
}

double f_id(double x) {
        double r5181361 = 1.0;
        double r5181362 = x;
        double r5181363 = r5181361 - r5181362;
        double r5181364 = log(r5181363);
        double r5181365 = r5181361 + r5181362;
        double r5181366 = log(r5181365);
        double r5181367 = r5181364 / r5181366;
        return r5181367;
}


double f_of(float x) {
        float r5181368 = 1.0f;
        float r5181369 = 0.5f;
        float r5181370 = x;
        float r5181371 = r5181370 * r5181370;
        float r5181372 = r5181369 * r5181371;
        float r5181373 = r5181372 + r5181370;
        float r5181374 = exp(r5181373);
        float r5181375 = log(r5181374);
        float r5181376 = r5181368 + r5181375;
        float r5181377 = -r5181376;
        return r5181377;
}

double f_od(double x) {
        double r5181378 = 1.0;
        double r5181379 = 0.5;
        double r5181380 = x;
        double r5181381 = r5181380 * r5181380;
        double r5181382 = r5181379 * r5181381;
        double r5181383 = r5181382 + r5181380;
        double r5181384 = exp(r5181383);
        double r5181385 = log(r5181384);
        double r5181386 = r5181378 + r5181385;
        double r5181387 = -r5181386;
        return r5181387;
}

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 r5181388, r5181389, r5181390, r5181391, r5181392, r5181393, r5181394;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181388, "1", 10, MPFR_RNDN);
        mpfr_init(r5181389);
        mpfr_init(r5181390);
        mpfr_init(r5181391);
        mpfr_init(r5181392);
        mpfr_init(r5181393);
        mpfr_init(r5181394);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5181389, x, MPFR_RNDN);
        mpfr_sub(r5181390, r5181388, r5181389, MPFR_RNDN);
        mpfr_log(r5181391, r5181390, MPFR_RNDN);
        mpfr_add(r5181392, r5181388, r5181389, MPFR_RNDN);
        mpfr_log(r5181393, r5181392, MPFR_RNDN);
        mpfr_div(r5181394, r5181391, r5181393, MPFR_RNDN);
        return mpfr_get_d(r5181394, MPFR_RNDN);
}

static mpfr_t r5181395, r5181396, r5181397, r5181398, r5181399, r5181400, r5181401, r5181402, r5181403, r5181404;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181395, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5181396, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5181397);
        mpfr_init(r5181398);
        mpfr_init(r5181399);
        mpfr_init(r5181400);
        mpfr_init(r5181401);
        mpfr_init(r5181402);
        mpfr_init(r5181403);
        mpfr_init(r5181404);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r5181397, x, MPFR_RNDN);
        mpfr_sqr(r5181398, r5181397, MPFR_RNDN);
        mpfr_mul(r5181399, r5181396, r5181398, MPFR_RNDN);
        mpfr_add(r5181400, r5181399, r5181397, MPFR_RNDN);
        mpfr_exp(r5181401, r5181400, MPFR_RNDN);
        mpfr_log(r5181402, r5181401, MPFR_RNDN);
        mpfr_add(r5181403, r5181395, r5181402, MPFR_RNDN);
        mpfr_neg(r5181404, r5181403, MPFR_RNDN);
        return mpfr_get_d(r5181404, MPFR_RNDN);
}

static mpfr_t r5181405, r5181406, r5181407, r5181408, r5181409, r5181410, r5181411, r5181412, r5181413, r5181414;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r5181405, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5181406, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5181407);
        mpfr_init(r5181408);
        mpfr_init(r5181409);
        mpfr_init(r5181410);
        mpfr_init(r5181411);
        mpfr_init(r5181412);
        mpfr_init(r5181413);
        mpfr_init(r5181414);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r5181407, x, MPFR_RNDN);
        mpfr_sqr(r5181408, r5181407, MPFR_RNDN);
        mpfr_mul(r5181409, r5181406, r5181408, MPFR_RNDN);
        mpfr_add(r5181410, r5181409, r5181407, MPFR_RNDN);
        mpfr_exp(r5181411, r5181410, MPFR_RNDN);
        mpfr_log(r5181412, r5181411, MPFR_RNDN);
        mpfr_add(r5181413, r5181405, r5181412, MPFR_RNDN);
        mpfr_neg(r5181414, r5181413, MPFR_RNDN);
        return mpfr_get_d(r5181414, MPFR_RNDN);
}

