#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 r36738 = N;
        float r36739 = 1;
        float r36740 = r36738 + r36739;
        float r36741 = log(r36740);
        float r36742 = log(r36738);
        float r36743 = r36741 - r36742;
        return r36743;
}

double f_id(double N) {
        double r36744 = N;
        double r36745 = 1;
        double r36746 = r36744 + r36745;
        double r36747 = log(r36746);
        double r36748 = log(r36744);
        double r36749 = r36747 - r36748;
        return r36749;
}


double f_of(float N) {
        float r36750 = N;
        float r36751 = 3459592.9658002537;
        bool r36752 = r36750 <= r36751;
        float r36753 = 1;
        float r36754 = r36750 + r36753;
        float r36755 = r36754 / r36750;
        float r36756 = log(r36755);
        float r36757 = r36753 / r36750;
        float r36758 = 1/3;
        float r36759 = r36758 / r36750;
        float r36760 = 1/2;
        float r36761 = r36759 - r36760;
        float r36762 = r36750 * r36750;
        float r36763 = r36761 / r36762;
        float r36764 = r36757 + r36763;
        float r36765 = r36752 ? r36756 : r36764;
        return r36765;
}

double f_od(double N) {
        double r36766 = N;
        double r36767 = 3459592.9658002537;
        bool r36768 = r36766 <= r36767;
        double r36769 = 1;
        double r36770 = r36766 + r36769;
        double r36771 = r36770 / r36766;
        double r36772 = log(r36771);
        double r36773 = r36769 / r36766;
        double r36774 = 1/3;
        double r36775 = r36774 / r36766;
        double r36776 = 1/2;
        double r36777 = r36775 - r36776;
        double r36778 = r36766 * r36766;
        double r36779 = r36777 / r36778;
        double r36780 = r36773 + r36779;
        double r36781 = r36768 ? r36772 : r36780;
        return r36781;
}

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 r36782, r36783, r36784, r36785, r36786, r36787;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36782);
        mpfr_init_set_str(r36783, "1", 10, MPFR_RNDN);
        mpfr_init(r36784);
        mpfr_init(r36785);
        mpfr_init(r36786);
        mpfr_init(r36787);
}

double f_im(double N) {
        mpfr_set_d(r36782, N, MPFR_RNDN);
        ;
        mpfr_add(r36784, r36782, r36783, MPFR_RNDN);
        mpfr_log(r36785, r36784, MPFR_RNDN);
        mpfr_log(r36786, r36782, MPFR_RNDN);
        mpfr_sub(r36787, r36785, r36786, MPFR_RNDN);
        return mpfr_get_d(r36787, MPFR_RNDN);
}

static mpfr_t r36788, r36789, r36790, r36791, r36792, r36793, r36794, r36795, r36796, r36797, r36798, r36799, r36800, r36801, r36802, r36803;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36788);
        mpfr_init_set_str(r36789, "3459592.9658002537", 10, MPFR_RNDN);
        mpfr_init(r36790);
        mpfr_init_set_str(r36791, "1", 10, MPFR_RNDN);
        mpfr_init(r36792);
        mpfr_init(r36793);
        mpfr_init(r36794);
        mpfr_init(r36795);
        mpfr_init_set_str(r36796, "1/3", 10, MPFR_RNDN);
        mpfr_init(r36797);
        mpfr_init_set_str(r36798, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36799);
        mpfr_init(r36800);
        mpfr_init(r36801);
        mpfr_init(r36802);
        mpfr_init(r36803);
}

double f_fm(double N) {
        mpfr_set_d(r36788, N, MPFR_RNDN);
        ;
        mpfr_set_si(r36790, mpfr_cmp(r36788, r36789) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r36792, r36788, r36791, MPFR_RNDN);
        mpfr_div(r36793, r36792, r36788, MPFR_RNDN);
        mpfr_log(r36794, r36793, MPFR_RNDN);
        mpfr_div(r36795, r36791, r36788, MPFR_RNDN);
        ;
        mpfr_div(r36797, r36796, r36788, MPFR_RNDN);
        ;
        mpfr_sub(r36799, r36797, r36798, MPFR_RNDN);
        mpfr_mul(r36800, r36788, r36788, MPFR_RNDN);
        mpfr_div(r36801, r36799, r36800, MPFR_RNDN);
        mpfr_add(r36802, r36795, r36801, MPFR_RNDN);
        if (mpfr_get_si(r36790, MPFR_RNDN)) { mpfr_set(r36803, r36794, MPFR_RNDN); } else { mpfr_set(r36803, r36802, MPFR_RNDN); };
        return mpfr_get_d(r36803, MPFR_RNDN);
}

static mpfr_t r36804, r36805, r36806, r36807, r36808, r36809, r36810, r36811, r36812, r36813, r36814, r36815, r36816, r36817, r36818, r36819;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36804);
        mpfr_init_set_str(r36805, "3459592.9658002537", 10, MPFR_RNDN);
        mpfr_init(r36806);
        mpfr_init_set_str(r36807, "1", 10, MPFR_RNDN);
        mpfr_init(r36808);
        mpfr_init(r36809);
        mpfr_init(r36810);
        mpfr_init(r36811);
        mpfr_init_set_str(r36812, "1/3", 10, MPFR_RNDN);
        mpfr_init(r36813);
        mpfr_init_set_str(r36814, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36815);
        mpfr_init(r36816);
        mpfr_init(r36817);
        mpfr_init(r36818);
        mpfr_init(r36819);
}

double f_dm(double N) {
        mpfr_set_d(r36804, N, MPFR_RNDN);
        ;
        mpfr_set_si(r36806, mpfr_cmp(r36804, r36805) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r36808, r36804, r36807, MPFR_RNDN);
        mpfr_div(r36809, r36808, r36804, MPFR_RNDN);
        mpfr_log(r36810, r36809, MPFR_RNDN);
        mpfr_div(r36811, r36807, r36804, MPFR_RNDN);
        ;
        mpfr_div(r36813, r36812, r36804, MPFR_RNDN);
        ;
        mpfr_sub(r36815, r36813, r36814, MPFR_RNDN);
        mpfr_mul(r36816, r36804, r36804, MPFR_RNDN);
        mpfr_div(r36817, r36815, r36816, MPFR_RNDN);
        mpfr_add(r36818, r36811, r36817, MPFR_RNDN);
        if (mpfr_get_si(r36806, MPFR_RNDN)) { mpfr_set(r36819, r36810, MPFR_RNDN); } else { mpfr_set(r36819, r36818, MPFR_RNDN); };
        return mpfr_get_d(r36819, MPFR_RNDN);
}

