#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 r4940618 = n;
        float r4940619 = 1.0f;
        float r4940620 = r4940618 + r4940619;
        float r4940621 = log(r4940620);
        float r4940622 = r4940620 * r4940621;
        float r4940623 = log(r4940618);
        float r4940624 = r4940618 * r4940623;
        float r4940625 = r4940622 - r4940624;
        float r4940626 = r4940625 - r4940619;
        return r4940626;
}

double f_id(double n) {
        double r4940627 = n;
        double r4940628 = 1.0;
        double r4940629 = r4940627 + r4940628;
        double r4940630 = log(r4940629);
        double r4940631 = r4940629 * r4940630;
        double r4940632 = log(r4940627);
        double r4940633 = r4940627 * r4940632;
        double r4940634 = r4940631 - r4940633;
        double r4940635 = r4940634 - r4940628;
        return r4940635;
}


double f_of(float n) {
        float r4940636 = n;
        float r4940637 = 1.0f;
        float r4940638 = r4940636 + r4940637;
        float r4940639 = log(r4940638);
        float r4940640 = r4940639 * r4940638;
        float r4940641 = log(r4940636);
        float r4940642 = -r4940636;
        float r4940643 = r4940641 * r4940642;
        float r4940644 = r4940643 + r4940637;
        float r4940645 = r4940640 - r4940644;
        return r4940645;
}

double f_od(double n) {
        double r4940646 = n;
        double r4940647 = 1.0;
        double r4940648 = r4940646 + r4940647;
        double r4940649 = log(r4940648);
        double r4940650 = r4940649 * r4940648;
        double r4940651 = log(r4940646);
        double r4940652 = -r4940646;
        double r4940653 = r4940651 * r4940652;
        double r4940654 = r4940653 + r4940647;
        double r4940655 = r4940650 - r4940654;
        return r4940655;
}

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 r4940656, r4940657, r4940658, r4940659, r4940660, r4940661, r4940662, r4940663, r4940664;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4940656);
        mpfr_init_set_str(r4940657, "1", 10, MPFR_RNDN);
        mpfr_init(r4940658);
        mpfr_init(r4940659);
        mpfr_init(r4940660);
        mpfr_init(r4940661);
        mpfr_init(r4940662);
        mpfr_init(r4940663);
        mpfr_init(r4940664);
}

double f_im(double n) {
        mpfr_set_d(r4940656, n, MPFR_RNDN);
        ;
        mpfr_add(r4940658, r4940656, r4940657, MPFR_RNDN);
        mpfr_log(r4940659, r4940658, MPFR_RNDN);
        mpfr_mul(r4940660, r4940658, r4940659, MPFR_RNDN);
        mpfr_log(r4940661, r4940656, MPFR_RNDN);
        mpfr_mul(r4940662, r4940656, r4940661, MPFR_RNDN);
        mpfr_sub(r4940663, r4940660, r4940662, MPFR_RNDN);
        mpfr_sub(r4940664, r4940663, r4940657, MPFR_RNDN);
        return mpfr_get_d(r4940664, MPFR_RNDN);
}

static mpfr_t r4940665, r4940666, r4940667, r4940668, r4940669, r4940670, r4940671, r4940672, r4940673, r4940674;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4940665);
        mpfr_init_set_str(r4940666, "1", 10, MPFR_RNDN);
        mpfr_init(r4940667);
        mpfr_init(r4940668);
        mpfr_init(r4940669);
        mpfr_init(r4940670);
        mpfr_init(r4940671);
        mpfr_init(r4940672);
        mpfr_init(r4940673);
        mpfr_init(r4940674);
}

double f_fm(double n) {
        mpfr_set_d(r4940665, n, MPFR_RNDN);
        ;
        mpfr_add(r4940667, r4940665, r4940666, MPFR_RNDN);
        mpfr_log(r4940668, r4940667, MPFR_RNDN);
        mpfr_mul(r4940669, r4940668, r4940667, MPFR_RNDN);
        mpfr_log(r4940670, r4940665, MPFR_RNDN);
        mpfr_neg(r4940671, r4940665, MPFR_RNDN);
        mpfr_mul(r4940672, r4940670, r4940671, MPFR_RNDN);
        mpfr_add(r4940673, r4940672, r4940666, MPFR_RNDN);
        mpfr_sub(r4940674, r4940669, r4940673, MPFR_RNDN);
        return mpfr_get_d(r4940674, MPFR_RNDN);
}

static mpfr_t r4940675, r4940676, r4940677, r4940678, r4940679, r4940680, r4940681, r4940682, r4940683, r4940684;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4940675);
        mpfr_init_set_str(r4940676, "1", 10, MPFR_RNDN);
        mpfr_init(r4940677);
        mpfr_init(r4940678);
        mpfr_init(r4940679);
        mpfr_init(r4940680);
        mpfr_init(r4940681);
        mpfr_init(r4940682);
        mpfr_init(r4940683);
        mpfr_init(r4940684);
}

double f_dm(double n) {
        mpfr_set_d(r4940675, n, MPFR_RNDN);
        ;
        mpfr_add(r4940677, r4940675, r4940676, MPFR_RNDN);
        mpfr_log(r4940678, r4940677, MPFR_RNDN);
        mpfr_mul(r4940679, r4940678, r4940677, MPFR_RNDN);
        mpfr_log(r4940680, r4940675, MPFR_RNDN);
        mpfr_neg(r4940681, r4940675, MPFR_RNDN);
        mpfr_mul(r4940682, r4940680, r4940681, MPFR_RNDN);
        mpfr_add(r4940683, r4940682, r4940676, MPFR_RNDN);
        mpfr_sub(r4940684, r4940679, r4940683, MPFR_RNDN);
        return mpfr_get_d(r4940684, MPFR_RNDN);
}

