#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 r5180574 = N;
        float r5180575 = 1.0f;
        float r5180576 = r5180574 + r5180575;
        float r5180577 = log(r5180576);
        float r5180578 = log(r5180574);
        float r5180579 = r5180577 - r5180578;
        return r5180579;
}

double f_id(double N) {
        double r5180580 = N;
        double r5180581 = 1.0;
        double r5180582 = r5180580 + r5180581;
        double r5180583 = log(r5180582);
        double r5180584 = log(r5180580);
        double r5180585 = r5180583 - r5180584;
        return r5180585;
}


double f_of(float N) {
        float r5180586 = N;
        float r5180587 = 376852.20427390514f;
        bool r5180588 = r5180586 <= r5180587;
        float r5180589 = 1.0f;
        float r5180590 = r5180586 + r5180589;
        float r5180591 = r5180590 / r5180586;
        float r5180592 = log(r5180591);
        float r5180593 = 0.3333333333333333f;
        float r5180594 = r5180593 / r5180586;
        float r5180595 = 0.5f;
        float r5180596 = r5180594 - r5180595;
        float r5180597 = r5180586 * r5180586;
        float r5180598 = r5180596 / r5180597;
        float r5180599 = r5180589 / r5180586;
        float r5180600 = r5180598 + r5180599;
        float r5180601 = r5180588 ? r5180592 : r5180600;
        return r5180601;
}

double f_od(double N) {
        double r5180602 = N;
        double r5180603 = 376852.20427390514;
        bool r5180604 = r5180602 <= r5180603;
        double r5180605 = 1.0;
        double r5180606 = r5180602 + r5180605;
        double r5180607 = r5180606 / r5180602;
        double r5180608 = log(r5180607);
        double r5180609 = 0.3333333333333333;
        double r5180610 = r5180609 / r5180602;
        double r5180611 = 0.5;
        double r5180612 = r5180610 - r5180611;
        double r5180613 = r5180602 * r5180602;
        double r5180614 = r5180612 / r5180613;
        double r5180615 = r5180605 / r5180602;
        double r5180616 = r5180614 + r5180615;
        double r5180617 = r5180604 ? r5180608 : r5180616;
        return r5180617;
}

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 r5180618, r5180619, r5180620, r5180621, r5180622, r5180623;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5180618);
        mpfr_init_set_str(r5180619, "1", 10, MPFR_RNDN);
        mpfr_init(r5180620);
        mpfr_init(r5180621);
        mpfr_init(r5180622);
        mpfr_init(r5180623);
}

double f_im(double N) {
        mpfr_set_d(r5180618, N, MPFR_RNDN);
        ;
        mpfr_add(r5180620, r5180618, r5180619, MPFR_RNDN);
        mpfr_log(r5180621, r5180620, MPFR_RNDN);
        mpfr_log(r5180622, r5180618, MPFR_RNDN);
        mpfr_sub(r5180623, r5180621, r5180622, MPFR_RNDN);
        return mpfr_get_d(r5180623, MPFR_RNDN);
}

static mpfr_t r5180624, r5180625, r5180626, r5180627, r5180628, r5180629, r5180630, r5180631, r5180632, r5180633, r5180634, r5180635, r5180636, r5180637, r5180638, r5180639;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5180624);
        mpfr_init_set_str(r5180625, "376852.20427390514", 10, MPFR_RNDN);
        mpfr_init(r5180626);
        mpfr_init_set_str(r5180627, "1", 10, MPFR_RNDN);
        mpfr_init(r5180628);
        mpfr_init(r5180629);
        mpfr_init(r5180630);
        mpfr_init_set_str(r5180631, "1/3", 10, MPFR_RNDN);
        mpfr_init(r5180632);
        mpfr_init_set_str(r5180633, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5180634);
        mpfr_init(r5180635);
        mpfr_init(r5180636);
        mpfr_init(r5180637);
        mpfr_init(r5180638);
        mpfr_init(r5180639);
}

double f_fm(double N) {
        mpfr_set_d(r5180624, N, MPFR_RNDN);
        ;
        mpfr_set_si(r5180626, mpfr_cmp(r5180624, r5180625) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r5180628, r5180624, r5180627, MPFR_RNDN);
        mpfr_div(r5180629, r5180628, r5180624, MPFR_RNDN);
        mpfr_log(r5180630, r5180629, MPFR_RNDN);
        ;
        mpfr_div(r5180632, r5180631, r5180624, MPFR_RNDN);
        ;
        mpfr_sub(r5180634, r5180632, r5180633, MPFR_RNDN);
        mpfr_sqr(r5180635, r5180624, MPFR_RNDN);
        mpfr_div(r5180636, r5180634, r5180635, MPFR_RNDN);
        mpfr_div(r5180637, r5180627, r5180624, MPFR_RNDN);
        mpfr_add(r5180638, r5180636, r5180637, MPFR_RNDN);
        if (mpfr_get_si(r5180626, MPFR_RNDN)) { mpfr_set(r5180639, r5180630, MPFR_RNDN); } else { mpfr_set(r5180639, r5180638, MPFR_RNDN); };
        return mpfr_get_d(r5180639, MPFR_RNDN);
}

static mpfr_t r5180640, r5180641, r5180642, r5180643, r5180644, r5180645, r5180646, r5180647, r5180648, r5180649, r5180650, r5180651, r5180652, r5180653, r5180654, r5180655;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5180640);
        mpfr_init_set_str(r5180641, "376852.20427390514", 10, MPFR_RNDN);
        mpfr_init(r5180642);
        mpfr_init_set_str(r5180643, "1", 10, MPFR_RNDN);
        mpfr_init(r5180644);
        mpfr_init(r5180645);
        mpfr_init(r5180646);
        mpfr_init_set_str(r5180647, "1/3", 10, MPFR_RNDN);
        mpfr_init(r5180648);
        mpfr_init_set_str(r5180649, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5180650);
        mpfr_init(r5180651);
        mpfr_init(r5180652);
        mpfr_init(r5180653);
        mpfr_init(r5180654);
        mpfr_init(r5180655);
}

double f_dm(double N) {
        mpfr_set_d(r5180640, N, MPFR_RNDN);
        ;
        mpfr_set_si(r5180642, mpfr_cmp(r5180640, r5180641) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r5180644, r5180640, r5180643, MPFR_RNDN);
        mpfr_div(r5180645, r5180644, r5180640, MPFR_RNDN);
        mpfr_log(r5180646, r5180645, MPFR_RNDN);
        ;
        mpfr_div(r5180648, r5180647, r5180640, MPFR_RNDN);
        ;
        mpfr_sub(r5180650, r5180648, r5180649, MPFR_RNDN);
        mpfr_sqr(r5180651, r5180640, MPFR_RNDN);
        mpfr_div(r5180652, r5180650, r5180651, MPFR_RNDN);
        mpfr_div(r5180653, r5180643, r5180640, MPFR_RNDN);
        mpfr_add(r5180654, r5180652, r5180653, MPFR_RNDN);
        if (mpfr_get_si(r5180642, MPFR_RNDN)) { mpfr_set(r5180655, r5180646, MPFR_RNDN); } else { mpfr_set(r5180655, r5180654, MPFR_RNDN); };
        return mpfr_get_d(r5180655, MPFR_RNDN);
}

