#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 r38968 = n;
        float r38969 = 1;
        float r38970 = r38968 + r38969;
        float r38971 = log(r38970);
        float r38972 = r38970 * r38971;
        float r38973 = log(r38968);
        float r38974 = r38968 * r38973;
        float r38975 = r38972 - r38974;
        float r38976 = r38975 - r38969;
        return r38976;
}

double f_id(double n) {
        double r38977 = n;
        double r38978 = 1;
        double r38979 = r38977 + r38978;
        double r38980 = log(r38979);
        double r38981 = r38979 * r38980;
        double r38982 = log(r38977);
        double r38983 = r38977 * r38982;
        double r38984 = r38981 - r38983;
        double r38985 = r38984 - r38978;
        return r38985;
}


double f_of(float n) {
        float r38986 = 1;
        float r38987 = n;
        float r38988 = r38986 + r38987;
        float r38989 = log(r38988);
        float r38990 = r38989 * r38988;
        float r38991 = -r38987;
        float r38992 = log(r38987);
        float r38993 = r38991 * r38992;
        float r38994 = r38993 + r38986;
        float r38995 = r38990 - r38994;
        return r38995;
}

double f_od(double n) {
        double r38996 = 1;
        double r38997 = n;
        double r38998 = r38996 + r38997;
        double r38999 = log(r38998);
        double r39000 = r38999 * r38998;
        double r39001 = -r38997;
        double r39002 = log(r38997);
        double r39003 = r39001 * r39002;
        double r39004 = r39003 + r38996;
        double r39005 = r39000 - r39004;
        return r39005;
}

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 r39006, r39007, r39008, r39009, r39010, r39011, r39012, r39013, r39014;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r39006);
        mpfr_init_set_str(r39007, "1", 10, MPFR_RNDN);
        mpfr_init(r39008);
        mpfr_init(r39009);
        mpfr_init(r39010);
        mpfr_init(r39011);
        mpfr_init(r39012);
        mpfr_init(r39013);
        mpfr_init(r39014);
}

double f_im(double n) {
        mpfr_set_d(r39006, n, MPFR_RNDN);
        ;
        mpfr_add(r39008, r39006, r39007, MPFR_RNDN);
        mpfr_log(r39009, r39008, MPFR_RNDN);
        mpfr_mul(r39010, r39008, r39009, MPFR_RNDN);
        mpfr_log(r39011, r39006, MPFR_RNDN);
        mpfr_mul(r39012, r39006, r39011, MPFR_RNDN);
        mpfr_sub(r39013, r39010, r39012, MPFR_RNDN);
        mpfr_sub(r39014, r39013, r39007, MPFR_RNDN);
        return mpfr_get_d(r39014, MPFR_RNDN);
}

static mpfr_t r39015, r39016, r39017, r39018, r39019, r39020, r39021, r39022, r39023, r39024;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39015, "1", 10, MPFR_RNDN);
        mpfr_init(r39016);
        mpfr_init(r39017);
        mpfr_init(r39018);
        mpfr_init(r39019);
        mpfr_init(r39020);
        mpfr_init(r39021);
        mpfr_init(r39022);
        mpfr_init(r39023);
        mpfr_init(r39024);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r39016, n, MPFR_RNDN);
        mpfr_add(r39017, r39015, r39016, MPFR_RNDN);
        mpfr_log(r39018, r39017, MPFR_RNDN);
        mpfr_mul(r39019, r39018, r39017, MPFR_RNDN);
        mpfr_neg(r39020, r39016, MPFR_RNDN);
        mpfr_log(r39021, r39016, MPFR_RNDN);
        mpfr_mul(r39022, r39020, r39021, MPFR_RNDN);
        mpfr_add(r39023, r39022, r39015, MPFR_RNDN);
        mpfr_sub(r39024, r39019, r39023, MPFR_RNDN);
        return mpfr_get_d(r39024, MPFR_RNDN);
}

static mpfr_t r39025, r39026, r39027, r39028, r39029, r39030, r39031, r39032, r39033, r39034;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39025, "1", 10, MPFR_RNDN);
        mpfr_init(r39026);
        mpfr_init(r39027);
        mpfr_init(r39028);
        mpfr_init(r39029);
        mpfr_init(r39030);
        mpfr_init(r39031);
        mpfr_init(r39032);
        mpfr_init(r39033);
        mpfr_init(r39034);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r39026, n, MPFR_RNDN);
        mpfr_add(r39027, r39025, r39026, MPFR_RNDN);
        mpfr_log(r39028, r39027, MPFR_RNDN);
        mpfr_mul(r39029, r39028, r39027, MPFR_RNDN);
        mpfr_neg(r39030, r39026, MPFR_RNDN);
        mpfr_log(r39031, r39026, MPFR_RNDN);
        mpfr_mul(r39032, r39030, r39031, MPFR_RNDN);
        mpfr_add(r39033, r39032, r39025, MPFR_RNDN);
        mpfr_sub(r39034, r39029, r39033, MPFR_RNDN);
        return mpfr_get_d(r39034, MPFR_RNDN);
}

