#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 r38546 = n;
        float r38547 = 1;
        float r38548 = r38546 + r38547;
        float r38549 = log(r38548);
        float r38550 = r38548 * r38549;
        float r38551 = log(r38546);
        float r38552 = r38546 * r38551;
        float r38553 = r38550 - r38552;
        float r38554 = r38553 - r38547;
        return r38554;
}

double f_id(double n) {
        double r38555 = n;
        double r38556 = 1;
        double r38557 = r38555 + r38556;
        double r38558 = log(r38557);
        double r38559 = r38557 * r38558;
        double r38560 = log(r38555);
        double r38561 = r38555 * r38560;
        double r38562 = r38559 - r38561;
        double r38563 = r38562 - r38556;
        return r38563;
}


double f_of(float n) {
        float r38564 = 1;
        float r38565 = n;
        float r38566 = r38564 + r38565;
        float r38567 = log(r38566);
        float r38568 = r38567 * r38566;
        float r38569 = -r38565;
        float r38570 = log(r38565);
        float r38571 = r38569 * r38570;
        float r38572 = r38571 + r38564;
        float r38573 = r38568 - r38572;
        return r38573;
}

double f_od(double n) {
        double r38574 = 1;
        double r38575 = n;
        double r38576 = r38574 + r38575;
        double r38577 = log(r38576);
        double r38578 = r38577 * r38576;
        double r38579 = -r38575;
        double r38580 = log(r38575);
        double r38581 = r38579 * r38580;
        double r38582 = r38581 + r38574;
        double r38583 = r38578 - r38582;
        return r38583;
}

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 r38584, r38585, r38586, r38587, r38588, r38589, r38590, r38591, r38592;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r38584);
        mpfr_init_set_str(r38585, "1", 10, MPFR_RNDN);
        mpfr_init(r38586);
        mpfr_init(r38587);
        mpfr_init(r38588);
        mpfr_init(r38589);
        mpfr_init(r38590);
        mpfr_init(r38591);
        mpfr_init(r38592);
}

double f_im(double n) {
        mpfr_set_d(r38584, n, MPFR_RNDN);
        ;
        mpfr_add(r38586, r38584, r38585, MPFR_RNDN);
        mpfr_log(r38587, r38586, MPFR_RNDN);
        mpfr_mul(r38588, r38586, r38587, MPFR_RNDN);
        mpfr_log(r38589, r38584, MPFR_RNDN);
        mpfr_mul(r38590, r38584, r38589, MPFR_RNDN);
        mpfr_sub(r38591, r38588, r38590, MPFR_RNDN);
        mpfr_sub(r38592, r38591, r38585, MPFR_RNDN);
        return mpfr_get_d(r38592, MPFR_RNDN);
}

static mpfr_t r38593, r38594, r38595, r38596, r38597, r38598, r38599, r38600, r38601, r38602;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38593, "1", 10, MPFR_RNDN);
        mpfr_init(r38594);
        mpfr_init(r38595);
        mpfr_init(r38596);
        mpfr_init(r38597);
        mpfr_init(r38598);
        mpfr_init(r38599);
        mpfr_init(r38600);
        mpfr_init(r38601);
        mpfr_init(r38602);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r38594, n, MPFR_RNDN);
        mpfr_add(r38595, r38593, r38594, MPFR_RNDN);
        mpfr_log(r38596, r38595, MPFR_RNDN);
        mpfr_mul(r38597, r38596, r38595, MPFR_RNDN);
        mpfr_neg(r38598, r38594, MPFR_RNDN);
        mpfr_log(r38599, r38594, MPFR_RNDN);
        mpfr_mul(r38600, r38598, r38599, MPFR_RNDN);
        mpfr_add(r38601, r38600, r38593, MPFR_RNDN);
        mpfr_sub(r38602, r38597, r38601, MPFR_RNDN);
        return mpfr_get_d(r38602, MPFR_RNDN);
}

static mpfr_t r38603, r38604, r38605, r38606, r38607, r38608, r38609, r38610, r38611, r38612;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38603, "1", 10, MPFR_RNDN);
        mpfr_init(r38604);
        mpfr_init(r38605);
        mpfr_init(r38606);
        mpfr_init(r38607);
        mpfr_init(r38608);
        mpfr_init(r38609);
        mpfr_init(r38610);
        mpfr_init(r38611);
        mpfr_init(r38612);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r38604, n, MPFR_RNDN);
        mpfr_add(r38605, r38603, r38604, MPFR_RNDN);
        mpfr_log(r38606, r38605, MPFR_RNDN);
        mpfr_mul(r38607, r38606, r38605, MPFR_RNDN);
        mpfr_neg(r38608, r38604, MPFR_RNDN);
        mpfr_log(r38609, r38604, MPFR_RNDN);
        mpfr_mul(r38610, r38608, r38609, MPFR_RNDN);
        mpfr_add(r38611, r38610, r38603, MPFR_RNDN);
        mpfr_sub(r38612, r38607, r38611, MPFR_RNDN);
        return mpfr_get_d(r38612, MPFR_RNDN);
}

