#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 r9544 = N;
        float r9545 = 1;
        float r9546 = r9544 + r9545;
        float r9547 = log(r9546);
        float r9548 = log(r9544);
        float r9549 = r9547 - r9548;
        return r9549;
}

double f_id(double N) {
        double r9550 = N;
        double r9551 = 1;
        double r9552 = r9550 + r9551;
        double r9553 = log(r9552);
        double r9554 = log(r9550);
        double r9555 = r9553 - r9554;
        return r9555;
}


double f_of(float N) {
        float r9556 = N;
        float r9557 = 1;
        float r9558 = r9556 + r9557;
        float r9559 = log(r9558);
        float r9560 = log(r9556);
        float r9561 = r9559 - r9560;
        float r9562 = 8.07551304423536e-05;
        bool r9563 = r9561 <= r9562;
        float r9564 = r9557 / r9556;
        float r9565 = 1/2;
        float r9566 = 1/3;
        float r9567 = r9566 / r9556;
        float r9568 = r9565 - r9567;
        float r9569 = r9556 * r9556;
        float r9570 = r9568 / r9569;
        float r9571 = r9564 - r9570;
        float r9572 = r9558 / r9556;
        float r9573 = log(r9572);
        float r9574 = r9563 ? r9571 : r9573;
        return r9574;
}

double f_od(double N) {
        double r9575 = N;
        double r9576 = 1;
        double r9577 = r9575 + r9576;
        double r9578 = log(r9577);
        double r9579 = log(r9575);
        double r9580 = r9578 - r9579;
        double r9581 = 8.07551304423536e-05;
        bool r9582 = r9580 <= r9581;
        double r9583 = r9576 / r9575;
        double r9584 = 1/2;
        double r9585 = 1/3;
        double r9586 = r9585 / r9575;
        double r9587 = r9584 - r9586;
        double r9588 = r9575 * r9575;
        double r9589 = r9587 / r9588;
        double r9590 = r9583 - r9589;
        double r9591 = r9577 / r9575;
        double r9592 = log(r9591);
        double r9593 = r9582 ? r9590 : r9592;
        return r9593;
}

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 r9594, r9595, r9596, r9597, r9598, r9599;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9594);
        mpfr_init_set_str(r9595, "1", 10, MPFR_RNDN);
        mpfr_init(r9596);
        mpfr_init(r9597);
        mpfr_init(r9598);
        mpfr_init(r9599);
}

double f_im(double N) {
        mpfr_set_d(r9594, N, MPFR_RNDN);
        ;
        mpfr_add(r9596, r9594, r9595, MPFR_RNDN);
        mpfr_log(r9597, r9596, MPFR_RNDN);
        mpfr_log(r9598, r9594, MPFR_RNDN);
        mpfr_sub(r9599, r9597, r9598, MPFR_RNDN);
        return mpfr_get_d(r9599, MPFR_RNDN);
}

static mpfr_t r9600, r9601, r9602, r9603, r9604, r9605, r9606, r9607, r9608, r9609, r9610, r9611, r9612, r9613, r9614, r9615, r9616, r9617, r9618;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9600);
        mpfr_init_set_str(r9601, "1", 10, MPFR_RNDN);
        mpfr_init(r9602);
        mpfr_init(r9603);
        mpfr_init(r9604);
        mpfr_init(r9605);
        mpfr_init_set_str(r9606, "8.07551304423536e-05", 10, MPFR_RNDN);
        mpfr_init(r9607);
        mpfr_init(r9608);
        mpfr_init_set_str(r9609, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9610, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9611);
        mpfr_init(r9612);
        mpfr_init(r9613);
        mpfr_init(r9614);
        mpfr_init(r9615);
        mpfr_init(r9616);
        mpfr_init(r9617);
        mpfr_init(r9618);
}

double f_fm(double N) {
        mpfr_set_d(r9600, N, MPFR_RNDN);
        ;
        mpfr_add(r9602, r9600, r9601, MPFR_RNDN);
        mpfr_log(r9603, r9602, MPFR_RNDN);
        mpfr_log(r9604, r9600, MPFR_RNDN);
        mpfr_sub(r9605, r9603, r9604, MPFR_RNDN);
        ;
        mpfr_set_si(r9607, mpfr_cmp(r9605, r9606) <= 0, MPFR_RNDN);
        mpfr_div(r9608, r9601, r9600, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9611, r9610, r9600, MPFR_RNDN);
        mpfr_sub(r9612, r9609, r9611, MPFR_RNDN);
        mpfr_mul(r9613, r9600, r9600, MPFR_RNDN);
        mpfr_div(r9614, r9612, r9613, MPFR_RNDN);
        mpfr_sub(r9615, r9608, r9614, MPFR_RNDN);
        mpfr_div(r9616, r9602, r9600, MPFR_RNDN);
        mpfr_log(r9617, r9616, MPFR_RNDN);
        if (mpfr_get_si(r9607, MPFR_RNDN)) { mpfr_set(r9618, r9615, MPFR_RNDN); } else { mpfr_set(r9618, r9617, MPFR_RNDN); };
        return mpfr_get_d(r9618, MPFR_RNDN);
}

static mpfr_t r9619, r9620, r9621, r9622, r9623, r9624, r9625, r9626, r9627, r9628, r9629, r9630, r9631, r9632, r9633, r9634, r9635, r9636, r9637;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9619);
        mpfr_init_set_str(r9620, "1", 10, MPFR_RNDN);
        mpfr_init(r9621);
        mpfr_init(r9622);
        mpfr_init(r9623);
        mpfr_init(r9624);
        mpfr_init_set_str(r9625, "8.07551304423536e-05", 10, MPFR_RNDN);
        mpfr_init(r9626);
        mpfr_init(r9627);
        mpfr_init_set_str(r9628, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9629, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9630);
        mpfr_init(r9631);
        mpfr_init(r9632);
        mpfr_init(r9633);
        mpfr_init(r9634);
        mpfr_init(r9635);
        mpfr_init(r9636);
        mpfr_init(r9637);
}

double f_dm(double N) {
        mpfr_set_d(r9619, N, MPFR_RNDN);
        ;
        mpfr_add(r9621, r9619, r9620, MPFR_RNDN);
        mpfr_log(r9622, r9621, MPFR_RNDN);
        mpfr_log(r9623, r9619, MPFR_RNDN);
        mpfr_sub(r9624, r9622, r9623, MPFR_RNDN);
        ;
        mpfr_set_si(r9626, mpfr_cmp(r9624, r9625) <= 0, MPFR_RNDN);
        mpfr_div(r9627, r9620, r9619, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9630, r9629, r9619, MPFR_RNDN);
        mpfr_sub(r9631, r9628, r9630, MPFR_RNDN);
        mpfr_mul(r9632, r9619, r9619, MPFR_RNDN);
        mpfr_div(r9633, r9631, r9632, MPFR_RNDN);
        mpfr_sub(r9634, r9627, r9633, MPFR_RNDN);
        mpfr_div(r9635, r9621, r9619, MPFR_RNDN);
        mpfr_log(r9636, r9635, MPFR_RNDN);
        if (mpfr_get_si(r9626, MPFR_RNDN)) { mpfr_set(r9637, r9634, MPFR_RNDN); } else { mpfr_set(r9637, r9636, MPFR_RNDN); };
        return mpfr_get_d(r9637, MPFR_RNDN);
}

