#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 r5181415 = n;
        float r5181416 = 1.0f;
        float r5181417 = r5181415 + r5181416;
        float r5181418 = log(r5181417);
        float r5181419 = r5181417 * r5181418;
        float r5181420 = log(r5181415);
        float r5181421 = r5181415 * r5181420;
        float r5181422 = r5181419 - r5181421;
        float r5181423 = r5181422 - r5181416;
        return r5181423;
}

double f_id(double n) {
        double r5181424 = n;
        double r5181425 = 1.0;
        double r5181426 = r5181424 + r5181425;
        double r5181427 = log(r5181426);
        double r5181428 = r5181426 * r5181427;
        double r5181429 = log(r5181424);
        double r5181430 = r5181424 * r5181429;
        double r5181431 = r5181428 - r5181430;
        double r5181432 = r5181431 - r5181425;
        return r5181432;
}


double f_of(float n) {
        float r5181433 = n;
        float r5181434 = 1.0f;
        float r5181435 = r5181433 + r5181434;
        float r5181436 = log(r5181435);
        float r5181437 = r5181436 * r5181435;
        float r5181438 = log(r5181433);
        float r5181439 = -r5181433;
        float r5181440 = r5181438 * r5181439;
        float r5181441 = r5181440 + r5181434;
        float r5181442 = r5181437 - r5181441;
        return r5181442;
}

double f_od(double n) {
        double r5181443 = n;
        double r5181444 = 1.0;
        double r5181445 = r5181443 + r5181444;
        double r5181446 = log(r5181445);
        double r5181447 = r5181446 * r5181445;
        double r5181448 = log(r5181443);
        double r5181449 = -r5181443;
        double r5181450 = r5181448 * r5181449;
        double r5181451 = r5181450 + r5181444;
        double r5181452 = r5181447 - r5181451;
        return r5181452;
}

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 r5181453, r5181454, r5181455, r5181456, r5181457, r5181458, r5181459, r5181460, r5181461;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5181453);
        mpfr_init_set_str(r5181454, "1", 10, MPFR_RNDN);
        mpfr_init(r5181455);
        mpfr_init(r5181456);
        mpfr_init(r5181457);
        mpfr_init(r5181458);
        mpfr_init(r5181459);
        mpfr_init(r5181460);
        mpfr_init(r5181461);
}

double f_im(double n) {
        mpfr_set_d(r5181453, n, MPFR_RNDN);
        ;
        mpfr_add(r5181455, r5181453, r5181454, MPFR_RNDN);
        mpfr_log(r5181456, r5181455, MPFR_RNDN);
        mpfr_mul(r5181457, r5181455, r5181456, MPFR_RNDN);
        mpfr_log(r5181458, r5181453, MPFR_RNDN);
        mpfr_mul(r5181459, r5181453, r5181458, MPFR_RNDN);
        mpfr_sub(r5181460, r5181457, r5181459, MPFR_RNDN);
        mpfr_sub(r5181461, r5181460, r5181454, MPFR_RNDN);
        return mpfr_get_d(r5181461, MPFR_RNDN);
}

static mpfr_t r5181462, r5181463, r5181464, r5181465, r5181466, r5181467, r5181468, r5181469, r5181470, r5181471;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5181462);
        mpfr_init_set_str(r5181463, "1", 10, MPFR_RNDN);
        mpfr_init(r5181464);
        mpfr_init(r5181465);
        mpfr_init(r5181466);
        mpfr_init(r5181467);
        mpfr_init(r5181468);
        mpfr_init(r5181469);
        mpfr_init(r5181470);
        mpfr_init(r5181471);
}

double f_fm(double n) {
        mpfr_set_d(r5181462, n, MPFR_RNDN);
        ;
        mpfr_add(r5181464, r5181462, r5181463, MPFR_RNDN);
        mpfr_log(r5181465, r5181464, MPFR_RNDN);
        mpfr_mul(r5181466, r5181465, r5181464, MPFR_RNDN);
        mpfr_log(r5181467, r5181462, MPFR_RNDN);
        mpfr_neg(r5181468, r5181462, MPFR_RNDN);
        mpfr_mul(r5181469, r5181467, r5181468, MPFR_RNDN);
        mpfr_add(r5181470, r5181469, r5181463, MPFR_RNDN);
        mpfr_sub(r5181471, r5181466, r5181470, MPFR_RNDN);
        return mpfr_get_d(r5181471, MPFR_RNDN);
}

static mpfr_t r5181472, r5181473, r5181474, r5181475, r5181476, r5181477, r5181478, r5181479, r5181480, r5181481;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r5181472);
        mpfr_init_set_str(r5181473, "1", 10, MPFR_RNDN);
        mpfr_init(r5181474);
        mpfr_init(r5181475);
        mpfr_init(r5181476);
        mpfr_init(r5181477);
        mpfr_init(r5181478);
        mpfr_init(r5181479);
        mpfr_init(r5181480);
        mpfr_init(r5181481);
}

double f_dm(double n) {
        mpfr_set_d(r5181472, n, MPFR_RNDN);
        ;
        mpfr_add(r5181474, r5181472, r5181473, MPFR_RNDN);
        mpfr_log(r5181475, r5181474, MPFR_RNDN);
        mpfr_mul(r5181476, r5181475, r5181474, MPFR_RNDN);
        mpfr_log(r5181477, r5181472, MPFR_RNDN);
        mpfr_neg(r5181478, r5181472, MPFR_RNDN);
        mpfr_mul(r5181479, r5181477, r5181478, MPFR_RNDN);
        mpfr_add(r5181480, r5181479, r5181473, MPFR_RNDN);
        mpfr_sub(r5181481, r5181476, r5181480, MPFR_RNDN);
        return mpfr_get_d(r5181481, MPFR_RNDN);
}

