#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "logs (example 3.8)";

double f_if(float n) {
        float r10575 = n;
        float r10576 = 1;
        float r10577 = r10575 + r10576;
        float r10578 = log(r10577);
        float r10579 = r10577 * r10578;
        float r10580 = log(r10575);
        float r10581 = r10575 * r10580;
        float r10582 = r10579 - r10581;
        float r10583 = r10582 - r10576;
        return r10583;
}

double f_id(double n) {
        double r10584 = n;
        double r10585 = 1;
        double r10586 = r10584 + r10585;
        double r10587 = log(r10586);
        double r10588 = r10586 * r10587;
        double r10589 = log(r10584);
        double r10590 = r10584 * r10589;
        double r10591 = r10588 - r10590;
        double r10592 = r10591 - r10585;
        return r10592;
}


double f_of(float n) {
        float r10593 = 1/2;
        float r10594 = n;
        float r10595 = r10593 / r10594;
        float r10596 = 1;
        float r10597 = r10595 + r10596;
        float r10598 = log(r10594);
        float r10599 = r10596 - r10598;
        float r10600 = r10597 - r10599;
        return r10600;
}

double f_od(double n) {
        double r10601 = 1/2;
        double r10602 = n;
        double r10603 = r10601 / r10602;
        double r10604 = 1;
        double r10605 = r10603 + r10604;
        double r10606 = log(r10602);
        double r10607 = r10604 - r10606;
        double r10608 = r10605 - r10607;
        return r10608;
}

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 r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10609);
        mpfr_init_set_str(r10610, "1", 10, MPFR_RNDN);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init(r10616);
        mpfr_init(r10617);
}

double f_im(double n) {
        mpfr_set_d(r10609, n, MPFR_RNDN);
        ;
        mpfr_add(r10611, r10609, r10610, MPFR_RNDN);
        mpfr_log(r10612, r10611, MPFR_RNDN);
        mpfr_mul(r10613, r10611, r10612, MPFR_RNDN);
        mpfr_log(r10614, r10609, MPFR_RNDN);
        mpfr_mul(r10615, r10609, r10614, MPFR_RNDN);
        mpfr_sub(r10616, r10613, r10615, MPFR_RNDN);
        mpfr_sub(r10617, r10616, r10610, MPFR_RNDN);
        return mpfr_get_d(r10617, MPFR_RNDN);
}

static mpfr_t r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10618, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init_set_str(r10621, "1", 10, MPFR_RNDN);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r10619, n, MPFR_RNDN);
        mpfr_div(r10620, r10618, r10619, MPFR_RNDN);
        ;
        mpfr_add(r10622, r10620, r10621, MPFR_RNDN);
        mpfr_log(r10623, r10619, MPFR_RNDN);
        mpfr_sub(r10624, r10621, r10623, MPFR_RNDN);
        mpfr_sub(r10625, r10622, r10624, MPFR_RNDN);
        return mpfr_get_d(r10625, MPFR_RNDN);
}

static mpfr_t r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10626, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init_set_str(r10629, "1", 10, MPFR_RNDN);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r10627, n, MPFR_RNDN);
        mpfr_div(r10628, r10626, r10627, MPFR_RNDN);
        ;
        mpfr_add(r10630, r10628, r10629, MPFR_RNDN);
        mpfr_log(r10631, r10627, MPFR_RNDN);
        mpfr_sub(r10632, r10629, r10631, MPFR_RNDN);
        mpfr_sub(r10633, r10630, r10632, MPFR_RNDN);
        return mpfr_get_d(r10633, MPFR_RNDN);
}

