#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 r4875603 = n;
        float r4875604 = 1.0f;
        float r4875605 = r4875603 + r4875604;
        float r4875606 = log(r4875605);
        float r4875607 = r4875605 * r4875606;
        float r4875608 = log(r4875603);
        float r4875609 = r4875603 * r4875608;
        float r4875610 = r4875607 - r4875609;
        float r4875611 = r4875610 - r4875604;
        return r4875611;
}

double f_id(double n) {
        double r4875612 = n;
        double r4875613 = 1.0;
        double r4875614 = r4875612 + r4875613;
        double r4875615 = log(r4875614);
        double r4875616 = r4875614 * r4875615;
        double r4875617 = log(r4875612);
        double r4875618 = r4875612 * r4875617;
        double r4875619 = r4875616 - r4875618;
        double r4875620 = r4875619 - r4875613;
        return r4875620;
}


double f_of(float n) {
        float r4875621 = 1.0f;
        float r4875622 = n;
        float r4875623 = r4875621 + r4875622;
        float r4875624 = log(r4875623);
        float r4875625 = r4875624 * r4875623;
        float r4875626 = -r4875622;
        float r4875627 = log(r4875622);
        float r4875628 = r4875626 * r4875627;
        float r4875629 = r4875621 + r4875628;
        float r4875630 = r4875625 - r4875629;
        return r4875630;
}

double f_od(double n) {
        double r4875631 = 1.0;
        double r4875632 = n;
        double r4875633 = r4875631 + r4875632;
        double r4875634 = log(r4875633);
        double r4875635 = r4875634 * r4875633;
        double r4875636 = -r4875632;
        double r4875637 = log(r4875632);
        double r4875638 = r4875636 * r4875637;
        double r4875639 = r4875631 + r4875638;
        double r4875640 = r4875635 - r4875639;
        return r4875640;
}

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 r4875641, r4875642, r4875643, r4875644, r4875645, r4875646, r4875647, r4875648, r4875649;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4875641);
        mpfr_init_set_str(r4875642, "1", 10, MPFR_RNDN);
        mpfr_init(r4875643);
        mpfr_init(r4875644);
        mpfr_init(r4875645);
        mpfr_init(r4875646);
        mpfr_init(r4875647);
        mpfr_init(r4875648);
        mpfr_init(r4875649);
}

double f_im(double n) {
        mpfr_set_d(r4875641, n, MPFR_RNDN);
        ;
        mpfr_add(r4875643, r4875641, r4875642, MPFR_RNDN);
        mpfr_log(r4875644, r4875643, MPFR_RNDN);
        mpfr_mul(r4875645, r4875643, r4875644, MPFR_RNDN);
        mpfr_log(r4875646, r4875641, MPFR_RNDN);
        mpfr_mul(r4875647, r4875641, r4875646, MPFR_RNDN);
        mpfr_sub(r4875648, r4875645, r4875647, MPFR_RNDN);
        mpfr_sub(r4875649, r4875648, r4875642, MPFR_RNDN);
        return mpfr_get_d(r4875649, MPFR_RNDN);
}

static mpfr_t r4875650, r4875651, r4875652, r4875653, r4875654, r4875655, r4875656, r4875657, r4875658, r4875659;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875650, "1", 10, MPFR_RNDN);
        mpfr_init(r4875651);
        mpfr_init(r4875652);
        mpfr_init(r4875653);
        mpfr_init(r4875654);
        mpfr_init(r4875655);
        mpfr_init(r4875656);
        mpfr_init(r4875657);
        mpfr_init(r4875658);
        mpfr_init(r4875659);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r4875651, n, MPFR_RNDN);
        mpfr_add(r4875652, r4875650, r4875651, MPFR_RNDN);
        mpfr_log(r4875653, r4875652, MPFR_RNDN);
        mpfr_mul(r4875654, r4875653, r4875652, MPFR_RNDN);
        mpfr_neg(r4875655, r4875651, MPFR_RNDN);
        mpfr_log(r4875656, r4875651, MPFR_RNDN);
        mpfr_mul(r4875657, r4875655, r4875656, MPFR_RNDN);
        mpfr_add(r4875658, r4875650, r4875657, MPFR_RNDN);
        mpfr_sub(r4875659, r4875654, r4875658, MPFR_RNDN);
        return mpfr_get_d(r4875659, MPFR_RNDN);
}

static mpfr_t r4875660, r4875661, r4875662, r4875663, r4875664, r4875665, r4875666, r4875667, r4875668, r4875669;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875660, "1", 10, MPFR_RNDN);
        mpfr_init(r4875661);
        mpfr_init(r4875662);
        mpfr_init(r4875663);
        mpfr_init(r4875664);
        mpfr_init(r4875665);
        mpfr_init(r4875666);
        mpfr_init(r4875667);
        mpfr_init(r4875668);
        mpfr_init(r4875669);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r4875661, n, MPFR_RNDN);
        mpfr_add(r4875662, r4875660, r4875661, MPFR_RNDN);
        mpfr_log(r4875663, r4875662, MPFR_RNDN);
        mpfr_mul(r4875664, r4875663, r4875662, MPFR_RNDN);
        mpfr_neg(r4875665, r4875661, MPFR_RNDN);
        mpfr_log(r4875666, r4875661, MPFR_RNDN);
        mpfr_mul(r4875667, r4875665, r4875666, MPFR_RNDN);
        mpfr_add(r4875668, r4875660, r4875667, MPFR_RNDN);
        mpfr_sub(r4875669, r4875664, r4875668, MPFR_RNDN);
        return mpfr_get_d(r4875669, MPFR_RNDN);
}

