#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 r9092 = N;
        float r9093 = 1.0f;
        float r9094 = r9092 + r9093;
        float r9095 = log(r9094);
        float r9096 = log(r9092);
        float r9097 = r9095 - r9096;
        return r9097;
}

double f_id(double N) {
        double r9098 = N;
        double r9099 = 1.0;
        double r9100 = r9098 + r9099;
        double r9101 = log(r9100);
        double r9102 = log(r9098);
        double r9103 = r9101 - r9102;
        return r9103;
}


double f_of(float N) {
        float r9104 = 1.0f;
        float r9105 = N;
        float r9106 = r9104 + r9105;
        float r9107 = log(r9106);
        float r9108 = log(r9105);
        float r9109 = r9107 - r9108;
        float r9110 = 3.542537891792339e-05f;
        bool r9111 = r9109 <= r9110;
        float r9112 = 0.3333333333333333f;
        float r9113 = r9112 / r9105;
        float r9114 = 0.5f;
        float r9115 = r9113 - r9114;
        float r9116 = r9105 * r9105;
        float r9117 = r9104 / r9116;
        float r9118 = r9104 / r9105;
        float r9119 = fma(r9115, r9117, r9118);
        float r9120 = r9106 / r9105;
        float r9121 = log(r9120);
        float r9122 = r9111 ? r9119 : r9121;
        return r9122;
}

double f_od(double N) {
        double r9123 = 1.0;
        double r9124 = N;
        double r9125 = r9123 + r9124;
        double r9126 = log(r9125);
        double r9127 = log(r9124);
        double r9128 = r9126 - r9127;
        double r9129 = 3.542537891792339e-05;
        bool r9130 = r9128 <= r9129;
        double r9131 = 0.3333333333333333;
        double r9132 = r9131 / r9124;
        double r9133 = 0.5;
        double r9134 = r9132 - r9133;
        double r9135 = r9124 * r9124;
        double r9136 = r9123 / r9135;
        double r9137 = r9123 / r9124;
        double r9138 = fma(r9134, r9136, r9137);
        double r9139 = r9125 / r9124;
        double r9140 = log(r9139);
        double r9141 = r9130 ? r9138 : r9140;
        return r9141;
}

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 r9142, r9143, r9144, r9145, r9146, r9147;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1616);
        mpfr_init(r9142);
        mpfr_init_set_str(r9143, "1", 10, MPFR_RNDN);
        mpfr_init(r9144);
        mpfr_init(r9145);
        mpfr_init(r9146);
        mpfr_init(r9147);
}

double f_im(double N) {
        mpfr_set_d(r9142, N, MPFR_RNDN);
        ;
        mpfr_add(r9144, r9142, r9143, MPFR_RNDN);
        mpfr_log(r9145, r9144, MPFR_RNDN);
        mpfr_log(r9146, r9142, MPFR_RNDN);
        mpfr_sub(r9147, r9145, r9146, MPFR_RNDN);
        return mpfr_get_d(r9147, MPFR_RNDN);
}

static mpfr_t r9148, r9149, r9150, r9151, r9152, r9153, r9154, r9155, r9156, r9157, r9158, r9159, r9160, r9161, r9162, r9163, r9164, r9165, r9166;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r9148, "1", 10, MPFR_RNDN);
        mpfr_init(r9149);
        mpfr_init(r9150);
        mpfr_init(r9151);
        mpfr_init(r9152);
        mpfr_init(r9153);
        mpfr_init_set_str(r9154, "3.542537891792339e-05", 10, MPFR_RNDN);
        mpfr_init(r9155);
        mpfr_init_set_str(r9156, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9157);
        mpfr_init_set_str(r9158, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9159);
        mpfr_init(r9160);
        mpfr_init(r9161);
        mpfr_init(r9162);
        mpfr_init(r9163);
        mpfr_init(r9164);
        mpfr_init(r9165);
        mpfr_init(r9166);
}

double f_fm(double N) {
        ;
        mpfr_set_d(r9149, N, MPFR_RNDN);
        mpfr_add(r9150, r9148, r9149, MPFR_RNDN);
        mpfr_log(r9151, r9150, MPFR_RNDN);
        mpfr_log(r9152, r9149, MPFR_RNDN);
        mpfr_sub(r9153, r9151, r9152, MPFR_RNDN);
        ;
        mpfr_set_si(r9155, mpfr_cmp(r9153, r9154) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9157, r9156, r9149, MPFR_RNDN);
        ;
        mpfr_sub(r9159, r9157, r9158, MPFR_RNDN);
        mpfr_mul(r9160, r9149, r9149, MPFR_RNDN);
        mpfr_div(r9161, r9148, r9160, MPFR_RNDN);
        mpfr_div(r9162, r9148, r9149, MPFR_RNDN);
        mpfr_fma(r9163, r9159, r9161, r9162, MPFR_RNDN);
        mpfr_div(r9164, r9150, r9149, MPFR_RNDN);
        mpfr_log(r9165, r9164, MPFR_RNDN);
        if (mpfr_get_si(r9155, MPFR_RNDN)) { mpfr_set(r9166, r9163, MPFR_RNDN); } else { mpfr_set(r9166, r9165, MPFR_RNDN); };
        return mpfr_get_d(r9166, MPFR_RNDN);
}

static mpfr_t r9167, r9168, r9169, r9170, r9171, r9172, r9173, r9174, r9175, r9176, r9177, r9178, r9179, r9180, r9181, r9182, r9183, r9184, r9185;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r9167, "1", 10, MPFR_RNDN);
        mpfr_init(r9168);
        mpfr_init(r9169);
        mpfr_init(r9170);
        mpfr_init(r9171);
        mpfr_init(r9172);
        mpfr_init_set_str(r9173, "3.542537891792339e-05", 10, MPFR_RNDN);
        mpfr_init(r9174);
        mpfr_init_set_str(r9175, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9176);
        mpfr_init_set_str(r9177, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9178);
        mpfr_init(r9179);
        mpfr_init(r9180);
        mpfr_init(r9181);
        mpfr_init(r9182);
        mpfr_init(r9183);
        mpfr_init(r9184);
        mpfr_init(r9185);
}

double f_dm(double N) {
        ;
        mpfr_set_d(r9168, N, MPFR_RNDN);
        mpfr_add(r9169, r9167, r9168, MPFR_RNDN);
        mpfr_log(r9170, r9169, MPFR_RNDN);
        mpfr_log(r9171, r9168, MPFR_RNDN);
        mpfr_sub(r9172, r9170, r9171, MPFR_RNDN);
        ;
        mpfr_set_si(r9174, mpfr_cmp(r9172, r9173) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9176, r9175, r9168, MPFR_RNDN);
        ;
        mpfr_sub(r9178, r9176, r9177, MPFR_RNDN);
        mpfr_mul(r9179, r9168, r9168, MPFR_RNDN);
        mpfr_div(r9180, r9167, r9179, MPFR_RNDN);
        mpfr_div(r9181, r9167, r9168, MPFR_RNDN);
        mpfr_fma(r9182, r9178, r9180, r9181, MPFR_RNDN);
        mpfr_div(r9183, r9169, r9168, MPFR_RNDN);
        mpfr_log(r9184, r9183, MPFR_RNDN);
        if (mpfr_get_si(r9174, MPFR_RNDN)) { mpfr_set(r9185, r9182, MPFR_RNDN); } else { mpfr_set(r9185, r9184, MPFR_RNDN); };
        return mpfr_get_d(r9185, MPFR_RNDN);
}

