#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 r9300 = N;
        float r9301 = 1;
        float r9302 = r9300 + r9301;
        float r9303 = log(r9302);
        float r9304 = log(r9300);
        float r9305 = r9303 - r9304;
        return r9305;
}

double f_id(double N) {
        double r9306 = N;
        double r9307 = 1;
        double r9308 = r9306 + r9307;
        double r9309 = log(r9308);
        double r9310 = log(r9306);
        double r9311 = r9309 - r9310;
        return r9311;
}


double f_of(float N) {
        float r9312 = N;
        float r9313 = 1;
        float r9314 = r9312 + r9313;
        float r9315 = log(r9314);
        float r9316 = log(r9312);
        float r9317 = r9315 - r9316;
        float r9318 = 0.0002516277025645313;
        bool r9319 = r9317 <= r9318;
        float r9320 = r9313 / r9312;
        float r9321 = 1/2;
        float r9322 = 1/3;
        float r9323 = r9322 / r9312;
        float r9324 = r9321 - r9323;
        float r9325 = r9312 * r9312;
        float r9326 = r9324 / r9325;
        float r9327 = r9320 - r9326;
        float r9328 = sqrt(r9315);
        float r9329 = r9328 * r9328;
        float r9330 = r9329 - r9316;
        float r9331 = r9319 ? r9327 : r9330;
        return r9331;
}

double f_od(double N) {
        double r9332 = N;
        double r9333 = 1;
        double r9334 = r9332 + r9333;
        double r9335 = log(r9334);
        double r9336 = log(r9332);
        double r9337 = r9335 - r9336;
        double r9338 = 0.0002516277025645313;
        bool r9339 = r9337 <= r9338;
        double r9340 = r9333 / r9332;
        double r9341 = 1/2;
        double r9342 = 1/3;
        double r9343 = r9342 / r9332;
        double r9344 = r9341 - r9343;
        double r9345 = r9332 * r9332;
        double r9346 = r9344 / r9345;
        double r9347 = r9340 - r9346;
        double r9348 = sqrt(r9335);
        double r9349 = r9348 * r9348;
        double r9350 = r9349 - r9336;
        double r9351 = r9339 ? r9347 : r9350;
        return r9351;
}

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 r9352, r9353, r9354, r9355, r9356, r9357;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9352);
        mpfr_init_set_str(r9353, "1", 10, MPFR_RNDN);
        mpfr_init(r9354);
        mpfr_init(r9355);
        mpfr_init(r9356);
        mpfr_init(r9357);
}

double f_im(double N) {
        mpfr_set_d(r9352, N, MPFR_RNDN);
        ;
        mpfr_add(r9354, r9352, r9353, MPFR_RNDN);
        mpfr_log(r9355, r9354, MPFR_RNDN);
        mpfr_log(r9356, r9352, MPFR_RNDN);
        mpfr_sub(r9357, r9355, r9356, MPFR_RNDN);
        return mpfr_get_d(r9357, MPFR_RNDN);
}

static mpfr_t r9358, r9359, r9360, r9361, r9362, r9363, r9364, r9365, r9366, r9367, r9368, r9369, r9370, r9371, r9372, r9373, r9374, r9375, r9376, r9377;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9358);
        mpfr_init_set_str(r9359, "1", 10, MPFR_RNDN);
        mpfr_init(r9360);
        mpfr_init(r9361);
        mpfr_init(r9362);
        mpfr_init(r9363);
        mpfr_init_set_str(r9364, "0.0002516277025645313", 10, MPFR_RNDN);
        mpfr_init(r9365);
        mpfr_init(r9366);
        mpfr_init_set_str(r9367, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9368, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9369);
        mpfr_init(r9370);
        mpfr_init(r9371);
        mpfr_init(r9372);
        mpfr_init(r9373);
        mpfr_init(r9374);
        mpfr_init(r9375);
        mpfr_init(r9376);
        mpfr_init(r9377);
}

double f_fm(double N) {
        mpfr_set_d(r9358, N, MPFR_RNDN);
        ;
        mpfr_add(r9360, r9358, r9359, MPFR_RNDN);
        mpfr_log(r9361, r9360, MPFR_RNDN);
        mpfr_log(r9362, r9358, MPFR_RNDN);
        mpfr_sub(r9363, r9361, r9362, MPFR_RNDN);
        ;
        mpfr_set_si(r9365, mpfr_cmp(r9363, r9364) <= 0, MPFR_RNDN);
        mpfr_div(r9366, r9359, r9358, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9369, r9368, r9358, MPFR_RNDN);
        mpfr_sub(r9370, r9367, r9369, MPFR_RNDN);
        mpfr_mul(r9371, r9358, r9358, MPFR_RNDN);
        mpfr_div(r9372, r9370, r9371, MPFR_RNDN);
        mpfr_sub(r9373, r9366, r9372, MPFR_RNDN);
        mpfr_sqrt(r9374, r9361, MPFR_RNDN);
        mpfr_mul(r9375, r9374, r9374, MPFR_RNDN);
        mpfr_sub(r9376, r9375, r9362, MPFR_RNDN);
        if (mpfr_get_si(r9365, MPFR_RNDN)) { mpfr_set(r9377, r9373, MPFR_RNDN); } else { mpfr_set(r9377, r9376, MPFR_RNDN); };
        return mpfr_get_d(r9377, MPFR_RNDN);
}

static mpfr_t r9378, r9379, r9380, r9381, r9382, r9383, r9384, r9385, r9386, r9387, r9388, r9389, r9390, r9391, r9392, r9393, r9394, r9395, r9396, r9397;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9378);
        mpfr_init_set_str(r9379, "1", 10, MPFR_RNDN);
        mpfr_init(r9380);
        mpfr_init(r9381);
        mpfr_init(r9382);
        mpfr_init(r9383);
        mpfr_init_set_str(r9384, "0.0002516277025645313", 10, MPFR_RNDN);
        mpfr_init(r9385);
        mpfr_init(r9386);
        mpfr_init_set_str(r9387, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9388, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9389);
        mpfr_init(r9390);
        mpfr_init(r9391);
        mpfr_init(r9392);
        mpfr_init(r9393);
        mpfr_init(r9394);
        mpfr_init(r9395);
        mpfr_init(r9396);
        mpfr_init(r9397);
}

double f_dm(double N) {
        mpfr_set_d(r9378, N, MPFR_RNDN);
        ;
        mpfr_add(r9380, r9378, r9379, MPFR_RNDN);
        mpfr_log(r9381, r9380, MPFR_RNDN);
        mpfr_log(r9382, r9378, MPFR_RNDN);
        mpfr_sub(r9383, r9381, r9382, MPFR_RNDN);
        ;
        mpfr_set_si(r9385, mpfr_cmp(r9383, r9384) <= 0, MPFR_RNDN);
        mpfr_div(r9386, r9379, r9378, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9389, r9388, r9378, MPFR_RNDN);
        mpfr_sub(r9390, r9387, r9389, MPFR_RNDN);
        mpfr_mul(r9391, r9378, r9378, MPFR_RNDN);
        mpfr_div(r9392, r9390, r9391, MPFR_RNDN);
        mpfr_sub(r9393, r9386, r9392, MPFR_RNDN);
        mpfr_sqrt(r9394, r9381, MPFR_RNDN);
        mpfr_mul(r9395, r9394, r9394, MPFR_RNDN);
        mpfr_sub(r9396, r9395, r9382, MPFR_RNDN);
        if (mpfr_get_si(r9385, MPFR_RNDN)) { mpfr_set(r9397, r9393, MPFR_RNDN); } else { mpfr_set(r9397, r9396, MPFR_RNDN); };
        return mpfr_get_d(r9397, MPFR_RNDN);
}

