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

char *name = "2log (problem 3.3.6)";

double f_if(float N) {
        float r18716 = N;
        float r18717 = 1.0f;
        float r18718 = r18716 + r18717;
        float r18719 = log(r18718);
        float r18720 = log(r18716);
        float r18721 = r18719 - r18720;
        return r18721;
}

double f_id(double N) {
        double r18722 = N;
        double r18723 = 1.0;
        double r18724 = r18722 + r18723;
        double r18725 = log(r18724);
        double r18726 = log(r18722);
        double r18727 = r18725 - r18726;
        return r18727;
}


double f_of(float N) {
        float r18728 = N;
        float r18729 = 95035.66200477978f;
        bool r18730 = r18728 <= r18729;
        float r18731 = 1.0f;
        float r18732 = r18728 + r18731;
        float r18733 = r18732 / r18728;
        float r18734 = log(r18733);
        float r18735 = 0.3333333333333333f;
        float r18736 = r18735 / r18728;
        float r18737 = 0.5f;
        float r18738 = r18736 - r18737;
        float r18739 = r18728 * r18728;
        float r18740 = r18738 / r18739;
        float r18741 = r18731 / r18728;
        float r18742 = r18740 + r18741;
        float r18743 = r18730 ? r18734 : r18742;
        return r18743;
}

double f_od(double N) {
        double r18744 = N;
        double r18745 = 95035.66200477978;
        bool r18746 = r18744 <= r18745;
        double r18747 = 1.0;
        double r18748 = r18744 + r18747;
        double r18749 = r18748 / r18744;
        double r18750 = log(r18749);
        double r18751 = 0.3333333333333333;
        double r18752 = r18751 / r18744;
        double r18753 = 0.5;
        double r18754 = r18752 - r18753;
        double r18755 = r18744 * r18744;
        double r18756 = r18754 / r18755;
        double r18757 = r18747 / r18744;
        double r18758 = r18756 + r18757;
        double r18759 = r18746 ? r18750 : r18758;
        return r18759;
}

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 r18760, r18761, r18762, r18763, r18764, r18765;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18760);
        mpfr_init_set_str(r18761, "1", 10, MPFR_RNDN);
        mpfr_init(r18762);
        mpfr_init(r18763);
        mpfr_init(r18764);
        mpfr_init(r18765);
}

double f_im(double N) {
        mpfr_set_d(r18760, N, MPFR_RNDN);
        ;
        mpfr_add(r18762, r18760, r18761, MPFR_RNDN);
        mpfr_log(r18763, r18762, MPFR_RNDN);
        mpfr_log(r18764, r18760, MPFR_RNDN);
        mpfr_sub(r18765, r18763, r18764, MPFR_RNDN);
        return mpfr_get_d(r18765, MPFR_RNDN);
}

static mpfr_t r18766, r18767, r18768, r18769, r18770, r18771, r18772, r18773, r18774, r18775, r18776, r18777, r18778, r18779, r18780, r18781;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18766);
        mpfr_init_set_str(r18767, "95035.66200477978", 10, MPFR_RNDN);
        mpfr_init(r18768);
        mpfr_init_set_str(r18769, "1", 10, MPFR_RNDN);
        mpfr_init(r18770);
        mpfr_init(r18771);
        mpfr_init(r18772);
        mpfr_init_set_str(r18773, "1/3", 10, MPFR_RNDN);
        mpfr_init(r18774);
        mpfr_init_set_str(r18775, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18776);
        mpfr_init(r18777);
        mpfr_init(r18778);
        mpfr_init(r18779);
        mpfr_init(r18780);
        mpfr_init(r18781);
}

double f_fm(double N) {
        mpfr_set_d(r18766, N, MPFR_RNDN);
        ;
        mpfr_set_si(r18768, mpfr_cmp(r18766, r18767) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r18770, r18766, r18769, MPFR_RNDN);
        mpfr_div(r18771, r18770, r18766, MPFR_RNDN);
        mpfr_log(r18772, r18771, MPFR_RNDN);
        ;
        mpfr_div(r18774, r18773, r18766, MPFR_RNDN);
        ;
        mpfr_sub(r18776, r18774, r18775, MPFR_RNDN);
        mpfr_sqr(r18777, r18766, MPFR_RNDN);
        mpfr_div(r18778, r18776, r18777, MPFR_RNDN);
        mpfr_div(r18779, r18769, r18766, MPFR_RNDN);
        mpfr_add(r18780, r18778, r18779, MPFR_RNDN);
        if (mpfr_get_si(r18768, MPFR_RNDN)) { mpfr_set(r18781, r18772, MPFR_RNDN); } else { mpfr_set(r18781, r18780, MPFR_RNDN); };
        return mpfr_get_d(r18781, MPFR_RNDN);
}

static mpfr_t r18782, r18783, r18784, r18785, r18786, r18787, r18788, r18789, r18790, r18791, r18792, r18793, r18794, r18795, r18796, r18797;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18782);
        mpfr_init_set_str(r18783, "95035.66200477978", 10, MPFR_RNDN);
        mpfr_init(r18784);
        mpfr_init_set_str(r18785, "1", 10, MPFR_RNDN);
        mpfr_init(r18786);
        mpfr_init(r18787);
        mpfr_init(r18788);
        mpfr_init_set_str(r18789, "1/3", 10, MPFR_RNDN);
        mpfr_init(r18790);
        mpfr_init_set_str(r18791, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18792);
        mpfr_init(r18793);
        mpfr_init(r18794);
        mpfr_init(r18795);
        mpfr_init(r18796);
        mpfr_init(r18797);
}

double f_dm(double N) {
        mpfr_set_d(r18782, N, MPFR_RNDN);
        ;
        mpfr_set_si(r18784, mpfr_cmp(r18782, r18783) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r18786, r18782, r18785, MPFR_RNDN);
        mpfr_div(r18787, r18786, r18782, MPFR_RNDN);
        mpfr_log(r18788, r18787, MPFR_RNDN);
        ;
        mpfr_div(r18790, r18789, r18782, MPFR_RNDN);
        ;
        mpfr_sub(r18792, r18790, r18791, MPFR_RNDN);
        mpfr_sqr(r18793, r18782, MPFR_RNDN);
        mpfr_div(r18794, r18792, r18793, MPFR_RNDN);
        mpfr_div(r18795, r18785, r18782, MPFR_RNDN);
        mpfr_add(r18796, r18794, r18795, MPFR_RNDN);
        if (mpfr_get_si(r18784, MPFR_RNDN)) { mpfr_set(r18797, r18788, MPFR_RNDN); } else { mpfr_set(r18797, r18796, MPFR_RNDN); };
        return mpfr_get_d(r18797, MPFR_RNDN);
}

