#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 r38636 = n;
        float r38637 = 1;
        float r38638 = r38636 + r38637;
        float r38639 = log(r38638);
        float r38640 = r38638 * r38639;
        float r38641 = log(r38636);
        float r38642 = r38636 * r38641;
        float r38643 = r38640 - r38642;
        float r38644 = r38643 - r38637;
        return r38644;
}

double f_id(double n) {
        double r38645 = n;
        double r38646 = 1;
        double r38647 = r38645 + r38646;
        double r38648 = log(r38647);
        double r38649 = r38647 * r38648;
        double r38650 = log(r38645);
        double r38651 = r38645 * r38650;
        double r38652 = r38649 - r38651;
        double r38653 = r38652 - r38646;
        return r38653;
}


double f_of(float n) {
        float r38654 = 1;
        float r38655 = n;
        float r38656 = r38654 + r38655;
        float r38657 = log(r38656);
        float r38658 = r38657 * r38656;
        float r38659 = -r38655;
        float r38660 = log(r38655);
        float r38661 = r38659 * r38660;
        float r38662 = r38661 + r38654;
        float r38663 = r38658 - r38662;
        return r38663;
}

double f_od(double n) {
        double r38664 = 1;
        double r38665 = n;
        double r38666 = r38664 + r38665;
        double r38667 = log(r38666);
        double r38668 = r38667 * r38666;
        double r38669 = -r38665;
        double r38670 = log(r38665);
        double r38671 = r38669 * r38670;
        double r38672 = r38671 + r38664;
        double r38673 = r38668 - r38672;
        return r38673;
}

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 r38674, r38675, r38676, r38677, r38678, r38679, r38680, r38681, r38682;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r38674);
        mpfr_init_set_str(r38675, "1", 10, MPFR_RNDN);
        mpfr_init(r38676);
        mpfr_init(r38677);
        mpfr_init(r38678);
        mpfr_init(r38679);
        mpfr_init(r38680);
        mpfr_init(r38681);
        mpfr_init(r38682);
}

double f_im(double n) {
        mpfr_set_d(r38674, n, MPFR_RNDN);
        ;
        mpfr_add(r38676, r38674, r38675, MPFR_RNDN);
        mpfr_log(r38677, r38676, MPFR_RNDN);
        mpfr_mul(r38678, r38676, r38677, MPFR_RNDN);
        mpfr_log(r38679, r38674, MPFR_RNDN);
        mpfr_mul(r38680, r38674, r38679, MPFR_RNDN);
        mpfr_sub(r38681, r38678, r38680, MPFR_RNDN);
        mpfr_sub(r38682, r38681, r38675, MPFR_RNDN);
        return mpfr_get_d(r38682, MPFR_RNDN);
}

static mpfr_t r38683, r38684, r38685, r38686, r38687, r38688, r38689, r38690, r38691, r38692;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38683, "1", 10, MPFR_RNDN);
        mpfr_init(r38684);
        mpfr_init(r38685);
        mpfr_init(r38686);
        mpfr_init(r38687);
        mpfr_init(r38688);
        mpfr_init(r38689);
        mpfr_init(r38690);
        mpfr_init(r38691);
        mpfr_init(r38692);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r38684, n, MPFR_RNDN);
        mpfr_add(r38685, r38683, r38684, MPFR_RNDN);
        mpfr_log(r38686, r38685, MPFR_RNDN);
        mpfr_mul(r38687, r38686, r38685, MPFR_RNDN);
        mpfr_neg(r38688, r38684, MPFR_RNDN);
        mpfr_log(r38689, r38684, MPFR_RNDN);
        mpfr_mul(r38690, r38688, r38689, MPFR_RNDN);
        mpfr_add(r38691, r38690, r38683, MPFR_RNDN);
        mpfr_sub(r38692, r38687, r38691, MPFR_RNDN);
        return mpfr_get_d(r38692, MPFR_RNDN);
}

static mpfr_t r38693, r38694, r38695, r38696, r38697, r38698, r38699, r38700, r38701, r38702;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38693, "1", 10, MPFR_RNDN);
        mpfr_init(r38694);
        mpfr_init(r38695);
        mpfr_init(r38696);
        mpfr_init(r38697);
        mpfr_init(r38698);
        mpfr_init(r38699);
        mpfr_init(r38700);
        mpfr_init(r38701);
        mpfr_init(r38702);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r38694, n, MPFR_RNDN);
        mpfr_add(r38695, r38693, r38694, MPFR_RNDN);
        mpfr_log(r38696, r38695, MPFR_RNDN);
        mpfr_mul(r38697, r38696, r38695, MPFR_RNDN);
        mpfr_neg(r38698, r38694, MPFR_RNDN);
        mpfr_log(r38699, r38694, MPFR_RNDN);
        mpfr_mul(r38700, r38698, r38699, MPFR_RNDN);
        mpfr_add(r38701, r38700, r38693, MPFR_RNDN);
        mpfr_sub(r38702, r38697, r38701, MPFR_RNDN);
        return mpfr_get_d(r38702, MPFR_RNDN);
}

