#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 r9159 = N;
        float r9160 = 1.0f;
        float r9161 = r9159 + r9160;
        float r9162 = log(r9161);
        float r9163 = log(r9159);
        float r9164 = r9162 - r9163;
        return r9164;
}

double f_id(double N) {
        double r9165 = N;
        double r9166 = 1.0;
        double r9167 = r9165 + r9166;
        double r9168 = log(r9167);
        double r9169 = log(r9165);
        double r9170 = r9168 - r9169;
        return r9170;
}


double f_of(float N) {
        float r9171 = 1.0f;
        float r9172 = N;
        float r9173 = r9171 + r9172;
        float r9174 = log(r9173);
        float r9175 = log(r9172);
        float r9176 = r9174 - r9175;
        float r9177 = 9.441470229268852e-09f;
        bool r9178 = r9176 <= r9177;
        float r9179 = 0.3333333333333333f;
        float r9180 = r9179 / r9172;
        float r9181 = 0.5f;
        float r9182 = r9180 - r9181;
        float r9183 = r9172 * r9172;
        float r9184 = r9171 / r9183;
        float r9185 = r9171 / r9172;
        float r9186 = fma(r9182, r9184, r9185);
        float r9187 = r9173 / r9172;
        float r9188 = log(r9187);
        float r9189 = r9178 ? r9186 : r9188;
        return r9189;
}

double f_od(double N) {
        double r9190 = 1.0;
        double r9191 = N;
        double r9192 = r9190 + r9191;
        double r9193 = log(r9192);
        double r9194 = log(r9191);
        double r9195 = r9193 - r9194;
        double r9196 = 9.441470229268852e-09;
        bool r9197 = r9195 <= r9196;
        double r9198 = 0.3333333333333333;
        double r9199 = r9198 / r9191;
        double r9200 = 0.5;
        double r9201 = r9199 - r9200;
        double r9202 = r9191 * r9191;
        double r9203 = r9190 / r9202;
        double r9204 = r9190 / r9191;
        double r9205 = fma(r9201, r9203, r9204);
        double r9206 = r9192 / r9191;
        double r9207 = log(r9206);
        double r9208 = r9197 ? r9205 : r9207;
        return r9208;
}

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 r9209, r9210, r9211, r9212, r9213, r9214;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9209);
        mpfr_init_set_str(r9210, "1", 10, MPFR_RNDN);
        mpfr_init(r9211);
        mpfr_init(r9212);
        mpfr_init(r9213);
        mpfr_init(r9214);
}

double f_im(double N) {
        mpfr_set_d(r9209, N, MPFR_RNDN);
        ;
        mpfr_add(r9211, r9209, r9210, MPFR_RNDN);
        mpfr_log(r9212, r9211, MPFR_RNDN);
        mpfr_log(r9213, r9209, MPFR_RNDN);
        mpfr_sub(r9214, r9212, r9213, MPFR_RNDN);
        return mpfr_get_d(r9214, MPFR_RNDN);
}

static mpfr_t r9215, r9216, r9217, r9218, r9219, r9220, r9221, r9222, r9223, r9224, r9225, r9226, r9227, r9228, r9229, r9230, r9231, r9232, r9233;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9215, "1", 10, MPFR_RNDN);
        mpfr_init(r9216);
        mpfr_init(r9217);
        mpfr_init(r9218);
        mpfr_init(r9219);
        mpfr_init(r9220);
        mpfr_init_set_str(r9221, "9.441470229268852e-09", 10, MPFR_RNDN);
        mpfr_init(r9222);
        mpfr_init_set_str(r9223, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9224);
        mpfr_init_set_str(r9225, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9226);
        mpfr_init(r9227);
        mpfr_init(r9228);
        mpfr_init(r9229);
        mpfr_init(r9230);
        mpfr_init(r9231);
        mpfr_init(r9232);
        mpfr_init(r9233);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r9216, N, MPFR_RNDN);
        mpfr_add(r9217, r9215, r9216, MPFR_RNDN);
        mpfr_log(r9218, r9217, MPFR_RNDN);
        mpfr_log(r9219, r9216, MPFR_RNDN);
        mpfr_sub(r9220, r9218, r9219, MPFR_RNDN);
        ;
        mpfr_set_si(r9222, mpfr_cmp(r9220, r9221) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9224, r9223, r9216, MPFR_RNDN);
        ;
        mpfr_sub(r9226, r9224, r9225, MPFR_RNDN);
        mpfr_mul(r9227, r9216, r9216, MPFR_RNDN);
        mpfr_div(r9228, r9215, r9227, MPFR_RNDN);
        mpfr_div(r9229, r9215, r9216, MPFR_RNDN);
        mpfr_fma(r9230, r9226, r9228, r9229, MPFR_RNDN);
        mpfr_div(r9231, r9217, r9216, MPFR_RNDN);
        mpfr_log(r9232, r9231, MPFR_RNDN);
        if (mpfr_get_si(r9222, MPFR_RNDN)) { mpfr_set(r9233, r9230, MPFR_RNDN); } else { mpfr_set(r9233, r9232, MPFR_RNDN); };
        return mpfr_get_d(r9233, MPFR_RNDN);
}

static mpfr_t r9234, r9235, r9236, r9237, r9238, r9239, r9240, r9241, r9242, r9243, r9244, r9245, r9246, r9247, r9248, r9249, r9250, r9251, r9252;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9234, "1", 10, MPFR_RNDN);
        mpfr_init(r9235);
        mpfr_init(r9236);
        mpfr_init(r9237);
        mpfr_init(r9238);
        mpfr_init(r9239);
        mpfr_init_set_str(r9240, "9.441470229268852e-09", 10, MPFR_RNDN);
        mpfr_init(r9241);
        mpfr_init_set_str(r9242, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9243);
        mpfr_init_set_str(r9244, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9245);
        mpfr_init(r9246);
        mpfr_init(r9247);
        mpfr_init(r9248);
        mpfr_init(r9249);
        mpfr_init(r9250);
        mpfr_init(r9251);
        mpfr_init(r9252);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r9235, N, MPFR_RNDN);
        mpfr_add(r9236, r9234, r9235, MPFR_RNDN);
        mpfr_log(r9237, r9236, MPFR_RNDN);
        mpfr_log(r9238, r9235, MPFR_RNDN);
        mpfr_sub(r9239, r9237, r9238, MPFR_RNDN);
        ;
        mpfr_set_si(r9241, mpfr_cmp(r9239, r9240) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9243, r9242, r9235, MPFR_RNDN);
        ;
        mpfr_sub(r9245, r9243, r9244, MPFR_RNDN);
        mpfr_mul(r9246, r9235, r9235, MPFR_RNDN);
        mpfr_div(r9247, r9234, r9246, MPFR_RNDN);
        mpfr_div(r9248, r9234, r9235, MPFR_RNDN);
        mpfr_fma(r9249, r9245, r9247, r9248, MPFR_RNDN);
        mpfr_div(r9250, r9236, r9235, MPFR_RNDN);
        mpfr_log(r9251, r9250, MPFR_RNDN);
        if (mpfr_get_si(r9241, MPFR_RNDN)) { mpfr_set(r9252, r9249, MPFR_RNDN); } else { mpfr_set(r9252, r9251, MPFR_RNDN); };
        return mpfr_get_d(r9252, MPFR_RNDN);
}

