#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "logs (example 3.8)";

double f_if(float n) {
        float r10259 = n;
        float r10260 = 1;
        float r10261 = r10259 + r10260;
        float r10262 = log(r10261);
        float r10263 = r10261 * r10262;
        float r10264 = log(r10259);
        float r10265 = r10259 * r10264;
        float r10266 = r10263 - r10265;
        float r10267 = r10266 - r10260;
        return r10267;
}

double f_id(double n) {
        double r10268 = n;
        double r10269 = 1;
        double r10270 = r10268 + r10269;
        double r10271 = log(r10270);
        double r10272 = r10270 * r10271;
        double r10273 = log(r10268);
        double r10274 = r10268 * r10273;
        double r10275 = r10272 - r10274;
        double r10276 = r10275 - r10269;
        return r10276;
}


double f_of(float n) {
        float r10277 = 1/2;
        float r10278 = n;
        float r10279 = r10277 / r10278;
        float r10280 = 1/6;
        float r10281 = r10278 * r10278;
        float r10282 = r10280 / r10281;
        float r10283 = log(r10278);
        float r10284 = r10282 - r10283;
        float r10285 = r10279 - r10284;
        return r10285;
}

double f_od(double n) {
        double r10286 = 1/2;
        double r10287 = n;
        double r10288 = r10286 / r10287;
        double r10289 = 1/6;
        double r10290 = r10287 * r10287;
        double r10291 = r10289 / r10290;
        double r10292 = log(r10287);
        double r10293 = r10291 - r10292;
        double r10294 = r10288 - r10293;
        return r10294;
}

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 r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10295);
        mpfr_init_set_str(r10296, "1", 10, MPFR_RNDN);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
}

double f_im(double n) {
        mpfr_set_d(r10295, n, MPFR_RNDN);
        ;
        mpfr_add(r10297, r10295, r10296, MPFR_RNDN);
        mpfr_log(r10298, r10297, MPFR_RNDN);
        mpfr_mul(r10299, r10297, r10298, MPFR_RNDN);
        mpfr_log(r10300, r10295, MPFR_RNDN);
        mpfr_mul(r10301, r10295, r10300, MPFR_RNDN);
        mpfr_sub(r10302, r10299, r10301, MPFR_RNDN);
        mpfr_sub(r10303, r10302, r10296, MPFR_RNDN);
        return mpfr_get_d(r10303, MPFR_RNDN);
}

static mpfr_t r10304, r10305, r10306, r10307, r10308, r10309, r10310, r10311, r10312;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10304, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10305);
        mpfr_init(r10306);
        mpfr_init_set_str(r10307, "1/6", 10, MPFR_RNDN);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
        mpfr_init(r10311);
        mpfr_init(r10312);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r10305, n, MPFR_RNDN);
        mpfr_div(r10306, r10304, r10305, MPFR_RNDN);
        ;
        mpfr_mul(r10308, r10305, r10305, MPFR_RNDN);
        mpfr_div(r10309, r10307, r10308, MPFR_RNDN);
        mpfr_log(r10310, r10305, MPFR_RNDN);
        mpfr_sub(r10311, r10309, r10310, MPFR_RNDN);
        mpfr_sub(r10312, r10306, r10311, MPFR_RNDN);
        return mpfr_get_d(r10312, MPFR_RNDN);
}

static mpfr_t r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10313, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10314);
        mpfr_init(r10315);
        mpfr_init_set_str(r10316, "1/6", 10, MPFR_RNDN);
        mpfr_init(r10317);
        mpfr_init(r10318);
        mpfr_init(r10319);
        mpfr_init(r10320);
        mpfr_init(r10321);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r10314, n, MPFR_RNDN);
        mpfr_div(r10315, r10313, r10314, MPFR_RNDN);
        ;
        mpfr_mul(r10317, r10314, r10314, MPFR_RNDN);
        mpfr_div(r10318, r10316, r10317, MPFR_RNDN);
        mpfr_log(r10319, r10314, MPFR_RNDN);
        mpfr_sub(r10320, r10318, r10319, MPFR_RNDN);
        mpfr_sub(r10321, r10315, r10320, MPFR_RNDN);
        return mpfr_get_d(r10321, MPFR_RNDN);
}

