#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 r19165 = N;
        float r19166 = 1.0f;
        float r19167 = r19165 + r19166;
        float r19168 = log(r19167);
        float r19169 = log(r19165);
        float r19170 = r19168 - r19169;
        return r19170;
}

double f_id(double N) {
        double r19171 = N;
        double r19172 = 1.0;
        double r19173 = r19171 + r19172;
        double r19174 = log(r19173);
        double r19175 = log(r19171);
        double r19176 = r19174 - r19175;
        return r19176;
}


double f_of(float N) {
        float r19177 = N;
        float r19178 = 83873799.46063499f;
        bool r19179 = r19177 <= r19178;
        float r19180 = 3.0f;
        float r19181 = pow(r19177, r19180);
        float r19182 = 1.0f;
        float r19183 = pow(r19182, r19180);
        float r19184 = r19181 + r19183;
        float r19185 = log(r19184);
        float r19186 = log(r19177);
        float r19187 = r19177 * r19177;
        float r19188 = r19177 - r19182;
        float r19189 = r19187 - r19188;
        float r19190 = log(r19189);
        float r19191 = r19186 + r19190;
        float r19192 = r19185 - r19191;
        float r19193 = 0.3333333333333333f;
        float r19194 = r19193 / r19177;
        float r19195 = 0.5f;
        float r19196 = r19194 - r19195;
        float r19197 = r19177 * r19177;
        float r19198 = r19196 / r19197;
        float r19199 = r19182 / r19177;
        float r19200 = r19198 + r19199;
        float r19201 = r19179 ? r19192 : r19200;
        return r19201;
}

double f_od(double N) {
        double r19202 = N;
        double r19203 = 83873799.46063499;
        bool r19204 = r19202 <= r19203;
        double r19205 = 3.0;
        double r19206 = pow(r19202, r19205);
        double r19207 = 1.0;
        double r19208 = pow(r19207, r19205);
        double r19209 = r19206 + r19208;
        double r19210 = log(r19209);
        double r19211 = log(r19202);
        double r19212 = r19202 * r19202;
        double r19213 = r19202 - r19207;
        double r19214 = r19212 - r19213;
        double r19215 = log(r19214);
        double r19216 = r19211 + r19215;
        double r19217 = r19210 - r19216;
        double r19218 = 0.3333333333333333;
        double r19219 = r19218 / r19202;
        double r19220 = 0.5;
        double r19221 = r19219 - r19220;
        double r19222 = r19202 * r19202;
        double r19223 = r19221 / r19222;
        double r19224 = r19207 / r19202;
        double r19225 = r19223 + r19224;
        double r19226 = r19204 ? r19217 : r19225;
        return r19226;
}

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 r19227, r19228, r19229, r19230, r19231, r19232;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19227);
        mpfr_init_set_str(r19228, "1", 10, MPFR_RNDN);
        mpfr_init(r19229);
        mpfr_init(r19230);
        mpfr_init(r19231);
        mpfr_init(r19232);
}

double f_im(double N) {
        mpfr_set_d(r19227, N, MPFR_RNDN);
        ;
        mpfr_add(r19229, r19227, r19228, MPFR_RNDN);
        mpfr_log(r19230, r19229, MPFR_RNDN);
        mpfr_log(r19231, r19227, MPFR_RNDN);
        mpfr_sub(r19232, r19230, r19231, MPFR_RNDN);
        return mpfr_get_d(r19232, MPFR_RNDN);
}

static mpfr_t r19233, r19234, r19235, r19236, r19237, r19238, r19239, r19240, r19241, r19242, r19243, r19244, r19245, r19246, r19247, r19248, r19249, r19250, r19251, r19252, r19253, r19254, r19255, r19256, r19257;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19233);
        mpfr_init_set_str(r19234, "83873799.46063499", 10, MPFR_RNDN);
        mpfr_init(r19235);
        mpfr_init_set_str(r19236, "3", 10, MPFR_RNDN);
        mpfr_init(r19237);
        mpfr_init_set_str(r19238, "1", 10, MPFR_RNDN);
        mpfr_init(r19239);
        mpfr_init(r19240);
        mpfr_init(r19241);
        mpfr_init(r19242);
        mpfr_init(r19243);
        mpfr_init(r19244);
        mpfr_init(r19245);
        mpfr_init(r19246);
        mpfr_init(r19247);
        mpfr_init(r19248);
        mpfr_init_set_str(r19249, "1/3", 10, MPFR_RNDN);
        mpfr_init(r19250);
        mpfr_init_set_str(r19251, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19252);
        mpfr_init(r19253);
        mpfr_init(r19254);
        mpfr_init(r19255);
        mpfr_init(r19256);
        mpfr_init(r19257);
}

double f_fm(double N) {
        mpfr_set_d(r19233, N, MPFR_RNDN);
        ;
        mpfr_set_si(r19235, mpfr_cmp(r19233, r19234) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r19237, r19233, r19236, MPFR_RNDN);
        ;
        mpfr_pow(r19239, r19238, r19236, MPFR_RNDN);
        mpfr_add(r19240, r19237, r19239, MPFR_RNDN);
        mpfr_log(r19241, r19240, MPFR_RNDN);
        mpfr_log(r19242, r19233, MPFR_RNDN);
        mpfr_mul(r19243, r19233, r19233, MPFR_RNDN);
        mpfr_sub(r19244, r19233, r19238, MPFR_RNDN);
        mpfr_sub(r19245, r19243, r19244, MPFR_RNDN);
        mpfr_log(r19246, r19245, MPFR_RNDN);
        mpfr_add(r19247, r19242, r19246, MPFR_RNDN);
        mpfr_sub(r19248, r19241, r19247, MPFR_RNDN);
        ;
        mpfr_div(r19250, r19249, r19233, MPFR_RNDN);
        ;
        mpfr_sub(r19252, r19250, r19251, MPFR_RNDN);
        mpfr_sqr(r19253, r19233, MPFR_RNDN);
        mpfr_div(r19254, r19252, r19253, MPFR_RNDN);
        mpfr_div(r19255, r19238, r19233, MPFR_RNDN);
        mpfr_add(r19256, r19254, r19255, MPFR_RNDN);
        if (mpfr_get_si(r19235, MPFR_RNDN)) { mpfr_set(r19257, r19248, MPFR_RNDN); } else { mpfr_set(r19257, r19256, MPFR_RNDN); };
        return mpfr_get_d(r19257, MPFR_RNDN);
}

static mpfr_t r19258, r19259, r19260, r19261, r19262, r19263, r19264, r19265, r19266, r19267, r19268, r19269, r19270, r19271, r19272, r19273, r19274, r19275, r19276, r19277, r19278, r19279, r19280, r19281, r19282;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19258);
        mpfr_init_set_str(r19259, "83873799.46063499", 10, MPFR_RNDN);
        mpfr_init(r19260);
        mpfr_init_set_str(r19261, "3", 10, MPFR_RNDN);
        mpfr_init(r19262);
        mpfr_init_set_str(r19263, "1", 10, MPFR_RNDN);
        mpfr_init(r19264);
        mpfr_init(r19265);
        mpfr_init(r19266);
        mpfr_init(r19267);
        mpfr_init(r19268);
        mpfr_init(r19269);
        mpfr_init(r19270);
        mpfr_init(r19271);
        mpfr_init(r19272);
        mpfr_init(r19273);
        mpfr_init_set_str(r19274, "1/3", 10, MPFR_RNDN);
        mpfr_init(r19275);
        mpfr_init_set_str(r19276, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19277);
        mpfr_init(r19278);
        mpfr_init(r19279);
        mpfr_init(r19280);
        mpfr_init(r19281);
        mpfr_init(r19282);
}

double f_dm(double N) {
        mpfr_set_d(r19258, N, MPFR_RNDN);
        ;
        mpfr_set_si(r19260, mpfr_cmp(r19258, r19259) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r19262, r19258, r19261, MPFR_RNDN);
        ;
        mpfr_pow(r19264, r19263, r19261, MPFR_RNDN);
        mpfr_add(r19265, r19262, r19264, MPFR_RNDN);
        mpfr_log(r19266, r19265, MPFR_RNDN);
        mpfr_log(r19267, r19258, MPFR_RNDN);
        mpfr_mul(r19268, r19258, r19258, MPFR_RNDN);
        mpfr_sub(r19269, r19258, r19263, MPFR_RNDN);
        mpfr_sub(r19270, r19268, r19269, MPFR_RNDN);
        mpfr_log(r19271, r19270, MPFR_RNDN);
        mpfr_add(r19272, r19267, r19271, MPFR_RNDN);
        mpfr_sub(r19273, r19266, r19272, MPFR_RNDN);
        ;
        mpfr_div(r19275, r19274, r19258, MPFR_RNDN);
        ;
        mpfr_sub(r19277, r19275, r19276, MPFR_RNDN);
        mpfr_sqr(r19278, r19258, MPFR_RNDN);
        mpfr_div(r19279, r19277, r19278, MPFR_RNDN);
        mpfr_div(r19280, r19263, r19258, MPFR_RNDN);
        mpfr_add(r19281, r19279, r19280, MPFR_RNDN);
        if (mpfr_get_si(r19260, MPFR_RNDN)) { mpfr_set(r19282, r19273, MPFR_RNDN); } else { mpfr_set(r19282, r19281, MPFR_RNDN); };
        return mpfr_get_d(r19282, MPFR_RNDN);
}

