#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 r26497 = 1;
        float r26498 = x;
        float r26499 = r26497 - r26498;
        float r26500 = log(r26499);
        float r26501 = r26497 + r26498;
        float r26502 = log(r26501);
        float r26503 = r26500 / r26502;
        return r26503;
}

double f_id(double x) {
        double r26504 = 1;
        double r26505 = x;
        double r26506 = r26504 - r26505;
        double r26507 = log(r26506);
        double r26508 = r26504 + r26505;
        double r26509 = log(r26508);
        double r26510 = r26507 / r26509;
        return r26510;
}


double f_of(float x) {
        float r26511 = 1/2;
        float r26512 = x;
        float r26513 = 2;
        float r26514 = pow(r26512, r26513);
        float r26515 = r26511 * r26514;
        float r26516 = 1;
        float r26517 = r26516 + r26512;
        float r26518 = r26515 + r26517;
        float r26519 = -r26518;
        return r26519;
}

double f_od(double x) {
        double r26520 = 1/2;
        double r26521 = x;
        double r26522 = 2;
        double r26523 = pow(r26521, r26522);
        double r26524 = r26520 * r26523;
        double r26525 = 1;
        double r26526 = r26525 + r26521;
        double r26527 = r26524 + r26526;
        double r26528 = -r26527;
        return r26528;
}

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 r26529, r26530, r26531, r26532, r26533, r26534, r26535;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26529, "1", 10, MPFR_RNDN);
        mpfr_init(r26530);
        mpfr_init(r26531);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init(r26535);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26530, x, MPFR_RNDN);
        mpfr_sub(r26531, r26529, r26530, MPFR_RNDN);
        mpfr_log(r26532, r26531, MPFR_RNDN);
        mpfr_add(r26533, r26529, r26530, MPFR_RNDN);
        mpfr_log(r26534, r26533, MPFR_RNDN);
        mpfr_div(r26535, r26532, r26534, MPFR_RNDN);
        return mpfr_get_d(r26535, MPFR_RNDN);
}

static mpfr_t r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26536, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26537);
        mpfr_init_set_str(r26538, "2", 10, MPFR_RNDN);
        mpfr_init(r26539);
        mpfr_init(r26540);
        mpfr_init_set_str(r26541, "1", 10, MPFR_RNDN);
        mpfr_init(r26542);
        mpfr_init(r26543);
        mpfr_init(r26544);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r26537, x, MPFR_RNDN);
        ;
        mpfr_pow(r26539, r26537, r26538, MPFR_RNDN);
        mpfr_mul(r26540, r26536, r26539, MPFR_RNDN);
        ;
        mpfr_add(r26542, r26541, r26537, MPFR_RNDN);
        mpfr_add(r26543, r26540, r26542, MPFR_RNDN);
        mpfr_neg(r26544, r26543, MPFR_RNDN);
        return mpfr_get_d(r26544, MPFR_RNDN);
}

static mpfr_t r26545, r26546, r26547, r26548, r26549, r26550, r26551, r26552, r26553;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26545, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26546);
        mpfr_init_set_str(r26547, "2", 10, MPFR_RNDN);
        mpfr_init(r26548);
        mpfr_init(r26549);
        mpfr_init_set_str(r26550, "1", 10, MPFR_RNDN);
        mpfr_init(r26551);
        mpfr_init(r26552);
        mpfr_init(r26553);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r26546, x, MPFR_RNDN);
        ;
        mpfr_pow(r26548, r26546, r26547, MPFR_RNDN);
        mpfr_mul(r26549, r26545, r26548, MPFR_RNDN);
        ;
        mpfr_add(r26551, r26550, r26546, MPFR_RNDN);
        mpfr_add(r26552, r26549, r26551, MPFR_RNDN);
        mpfr_neg(r26553, r26552, MPFR_RNDN);
        return mpfr_get_d(r26553, MPFR_RNDN);
}

