#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 r38799 = n;
        float r38800 = 1;
        float r38801 = r38799 + r38800;
        float r38802 = log(r38801);
        float r38803 = r38801 * r38802;
        float r38804 = log(r38799);
        float r38805 = r38799 * r38804;
        float r38806 = r38803 - r38805;
        float r38807 = r38806 - r38800;
        return r38807;
}

double f_id(double n) {
        double r38808 = n;
        double r38809 = 1;
        double r38810 = r38808 + r38809;
        double r38811 = log(r38810);
        double r38812 = r38810 * r38811;
        double r38813 = log(r38808);
        double r38814 = r38808 * r38813;
        double r38815 = r38812 - r38814;
        double r38816 = r38815 - r38809;
        return r38816;
}


double f_of(float n) {
        float r38817 = 1;
        float r38818 = n;
        float r38819 = r38817 + r38818;
        float r38820 = log(r38819);
        float r38821 = r38820 * r38819;
        float r38822 = -r38818;
        float r38823 = log(r38818);
        float r38824 = r38822 * r38823;
        float r38825 = r38824 + r38817;
        float r38826 = r38821 - r38825;
        return r38826;
}

double f_od(double n) {
        double r38827 = 1;
        double r38828 = n;
        double r38829 = r38827 + r38828;
        double r38830 = log(r38829);
        double r38831 = r38830 * r38829;
        double r38832 = -r38828;
        double r38833 = log(r38828);
        double r38834 = r38832 * r38833;
        double r38835 = r38834 + r38827;
        double r38836 = r38831 - r38835;
        return r38836;
}

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 r38837, r38838, r38839, r38840, r38841, r38842, r38843, r38844, r38845;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r38837);
        mpfr_init_set_str(r38838, "1", 10, MPFR_RNDN);
        mpfr_init(r38839);
        mpfr_init(r38840);
        mpfr_init(r38841);
        mpfr_init(r38842);
        mpfr_init(r38843);
        mpfr_init(r38844);
        mpfr_init(r38845);
}

double f_im(double n) {
        mpfr_set_d(r38837, n, MPFR_RNDN);
        ;
        mpfr_add(r38839, r38837, r38838, MPFR_RNDN);
        mpfr_log(r38840, r38839, MPFR_RNDN);
        mpfr_mul(r38841, r38839, r38840, MPFR_RNDN);
        mpfr_log(r38842, r38837, MPFR_RNDN);
        mpfr_mul(r38843, r38837, r38842, MPFR_RNDN);
        mpfr_sub(r38844, r38841, r38843, MPFR_RNDN);
        mpfr_sub(r38845, r38844, r38838, MPFR_RNDN);
        return mpfr_get_d(r38845, MPFR_RNDN);
}

static mpfr_t r38846, r38847, r38848, r38849, r38850, r38851, r38852, r38853, r38854, r38855;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38846, "1", 10, MPFR_RNDN);
        mpfr_init(r38847);
        mpfr_init(r38848);
        mpfr_init(r38849);
        mpfr_init(r38850);
        mpfr_init(r38851);
        mpfr_init(r38852);
        mpfr_init(r38853);
        mpfr_init(r38854);
        mpfr_init(r38855);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r38847, n, MPFR_RNDN);
        mpfr_add(r38848, r38846, r38847, MPFR_RNDN);
        mpfr_log(r38849, r38848, MPFR_RNDN);
        mpfr_mul(r38850, r38849, r38848, MPFR_RNDN);
        mpfr_neg(r38851, r38847, MPFR_RNDN);
        mpfr_log(r38852, r38847, MPFR_RNDN);
        mpfr_mul(r38853, r38851, r38852, MPFR_RNDN);
        mpfr_add(r38854, r38853, r38846, MPFR_RNDN);
        mpfr_sub(r38855, r38850, r38854, MPFR_RNDN);
        return mpfr_get_d(r38855, MPFR_RNDN);
}

static mpfr_t r38856, r38857, r38858, r38859, r38860, r38861, r38862, r38863, r38864, r38865;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38856, "1", 10, MPFR_RNDN);
        mpfr_init(r38857);
        mpfr_init(r38858);
        mpfr_init(r38859);
        mpfr_init(r38860);
        mpfr_init(r38861);
        mpfr_init(r38862);
        mpfr_init(r38863);
        mpfr_init(r38864);
        mpfr_init(r38865);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r38857, n, MPFR_RNDN);
        mpfr_add(r38858, r38856, r38857, MPFR_RNDN);
        mpfr_log(r38859, r38858, MPFR_RNDN);
        mpfr_mul(r38860, r38859, r38858, MPFR_RNDN);
        mpfr_neg(r38861, r38857, MPFR_RNDN);
        mpfr_log(r38862, r38857, MPFR_RNDN);
        mpfr_mul(r38863, r38861, r38862, MPFR_RNDN);
        mpfr_add(r38864, r38863, r38856, MPFR_RNDN);
        mpfr_sub(r38865, r38860, r38864, MPFR_RNDN);
        return mpfr_get_d(r38865, MPFR_RNDN);
}

