#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 r26435 = n;
        float r26436 = 1;
        float r26437 = r26435 + r26436;
        float r26438 = log(r26437);
        float r26439 = r26437 * r26438;
        float r26440 = log(r26435);
        float r26441 = r26435 * r26440;
        float r26442 = r26439 - r26441;
        float r26443 = r26442 - r26436;
        return r26443;
}

double f_id(double n) {
        double r26444 = n;
        double r26445 = 1;
        double r26446 = r26444 + r26445;
        double r26447 = log(r26446);
        double r26448 = r26446 * r26447;
        double r26449 = log(r26444);
        double r26450 = r26444 * r26449;
        double r26451 = r26448 - r26450;
        double r26452 = r26451 - r26445;
        return r26452;
}


double f_of(float n) {
        float r26453 = n;
        float r26454 = log(r26453);
        float r26455 = 1/6;
        float r26456 = r26455 / r26453;
        float r26457 = r26456 / r26453;
        float r26458 = r26454 - r26457;
        float r26459 = 1/2;
        float r26460 = r26459 / r26453;
        float r26461 = r26458 + r26460;
        return r26461;
}

double f_od(double n) {
        double r26462 = n;
        double r26463 = log(r26462);
        double r26464 = 1/6;
        double r26465 = r26464 / r26462;
        double r26466 = r26465 / r26462;
        double r26467 = r26463 - r26466;
        double r26468 = 1/2;
        double r26469 = r26468 / r26462;
        double r26470 = r26467 + r26469;
        return r26470;
}

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 r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26471);
        mpfr_init_set_str(r26472, "1", 10, MPFR_RNDN);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init(r26479);
}

double f_im(double n) {
        mpfr_set_d(r26471, n, MPFR_RNDN);
        ;
        mpfr_add(r26473, r26471, r26472, MPFR_RNDN);
        mpfr_log(r26474, r26473, MPFR_RNDN);
        mpfr_mul(r26475, r26473, r26474, MPFR_RNDN);
        mpfr_log(r26476, r26471, MPFR_RNDN);
        mpfr_mul(r26477, r26471, r26476, MPFR_RNDN);
        mpfr_sub(r26478, r26475, r26477, MPFR_RNDN);
        mpfr_sub(r26479, r26478, r26472, MPFR_RNDN);
        return mpfr_get_d(r26479, MPFR_RNDN);
}

static mpfr_t r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init_set_str(r26482, "1/6", 10, MPFR_RNDN);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init_set_str(r26486, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26487);
        mpfr_init(r26488);
}

double f_fm(double n) {
        mpfr_set_d(r26480, n, MPFR_RNDN);
        mpfr_log(r26481, r26480, MPFR_RNDN);
        ;
        mpfr_div(r26483, r26482, r26480, MPFR_RNDN);
        mpfr_div(r26484, r26483, r26480, MPFR_RNDN);
        mpfr_sub(r26485, r26481, r26484, MPFR_RNDN);
        ;
        mpfr_div(r26487, r26486, r26480, MPFR_RNDN);
        mpfr_add(r26488, r26485, r26487, MPFR_RNDN);
        return mpfr_get_d(r26488, MPFR_RNDN);
}

static mpfr_t r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init_set_str(r26491, "1/6", 10, MPFR_RNDN);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init_set_str(r26495, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26496);
        mpfr_init(r26497);
}

double f_dm(double n) {
        mpfr_set_d(r26489, n, MPFR_RNDN);
        mpfr_log(r26490, r26489, MPFR_RNDN);
        ;
        mpfr_div(r26492, r26491, r26489, MPFR_RNDN);
        mpfr_div(r26493, r26492, r26489, MPFR_RNDN);
        mpfr_sub(r26494, r26490, r26493, MPFR_RNDN);
        ;
        mpfr_div(r26496, r26495, r26489, MPFR_RNDN);
        mpfr_add(r26497, r26494, r26496, MPFR_RNDN);
        return mpfr_get_d(r26497, MPFR_RNDN);
}

