#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 r26409 = n;
        float r26410 = 1;
        float r26411 = r26409 + r26410;
        float r26412 = log(r26411);
        float r26413 = r26411 * r26412;
        float r26414 = log(r26409);
        float r26415 = r26409 * r26414;
        float r26416 = r26413 - r26415;
        float r26417 = r26416 - r26410;
        return r26417;
}

double f_id(double n) {
        double r26418 = n;
        double r26419 = 1;
        double r26420 = r26418 + r26419;
        double r26421 = log(r26420);
        double r26422 = r26420 * r26421;
        double r26423 = log(r26418);
        double r26424 = r26418 * r26423;
        double r26425 = r26422 - r26424;
        double r26426 = r26425 - r26419;
        return r26426;
}


double f_of(float n) {
        float r26427 = 1;
        float r26428 = n;
        float r26429 = r26427 / r26428;
        float r26430 = 1/2;
        float r26431 = r26430 / r26428;
        float r26432 = 0;
        float r26433 = fma(r26431, r26429, r26432);
        float r26434 = r26429 - r26433;
        float r26435 = r26427 + r26428;
        float r26436 = log(r26435);
        float r26437 = r26436 - r26427;
        float r26438 = fma(r26434, r26428, r26437);
        return r26438;
}

double f_od(double n) {
        double r26439 = 1;
        double r26440 = n;
        double r26441 = r26439 / r26440;
        double r26442 = 1/2;
        double r26443 = r26442 / r26440;
        double r26444 = 0;
        double r26445 = fma(r26443, r26441, r26444);
        double r26446 = r26441 - r26445;
        double r26447 = r26439 + r26440;
        double r26448 = log(r26447);
        double r26449 = r26448 - r26439;
        double r26450 = fma(r26446, r26440, r26449);
        return r26450;
}

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 r26451, r26452, r26453, r26454, r26455, r26456, r26457, r26458, r26459;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26451);
        mpfr_init_set_str(r26452, "1", 10, MPFR_RNDN);
        mpfr_init(r26453);
        mpfr_init(r26454);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init(r26457);
        mpfr_init(r26458);
        mpfr_init(r26459);
}

double f_im(double n) {
        mpfr_set_d(r26451, n, MPFR_RNDN);
        ;
        mpfr_add(r26453, r26451, r26452, MPFR_RNDN);
        mpfr_log(r26454, r26453, MPFR_RNDN);
        mpfr_mul(r26455, r26453, r26454, MPFR_RNDN);
        mpfr_log(r26456, r26451, MPFR_RNDN);
        mpfr_mul(r26457, r26451, r26456, MPFR_RNDN);
        mpfr_sub(r26458, r26455, r26457, MPFR_RNDN);
        mpfr_sub(r26459, r26458, r26452, MPFR_RNDN);
        return mpfr_get_d(r26459, MPFR_RNDN);
}

static mpfr_t r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470, r26471;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26460, "1", 10, MPFR_RNDN);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init_set_str(r26463, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26464);
        mpfr_init_set_str(r26465, "0", 10, MPFR_RNDN);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r26461, n, MPFR_RNDN);
        mpfr_div(r26462, r26460, r26461, MPFR_RNDN);
        ;
        mpfr_div(r26464, r26463, r26461, MPFR_RNDN);
        ;
        mpfr_fma(r26466, r26464, r26462, r26465, MPFR_RNDN);
        mpfr_sub(r26467, r26462, r26466, MPFR_RNDN);
        mpfr_add(r26468, r26460, r26461, MPFR_RNDN);
        mpfr_log(r26469, r26468, MPFR_RNDN);
        mpfr_sub(r26470, r26469, r26460, MPFR_RNDN);
        mpfr_fma(r26471, r26467, r26461, r26470, MPFR_RNDN);
        return mpfr_get_d(r26471, MPFR_RNDN);
}

static mpfr_t r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26472, "1", 10, MPFR_RNDN);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init_set_str(r26475, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26476);
        mpfr_init_set_str(r26477, "0", 10, MPFR_RNDN);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r26473, n, MPFR_RNDN);
        mpfr_div(r26474, r26472, r26473, MPFR_RNDN);
        ;
        mpfr_div(r26476, r26475, r26473, MPFR_RNDN);
        ;
        mpfr_fma(r26478, r26476, r26474, r26477, MPFR_RNDN);
        mpfr_sub(r26479, r26474, r26478, MPFR_RNDN);
        mpfr_add(r26480, r26472, r26473, MPFR_RNDN);
        mpfr_log(r26481, r26480, MPFR_RNDN);
        mpfr_sub(r26482, r26481, r26472, MPFR_RNDN);
        mpfr_fma(r26483, r26479, r26473, r26482, MPFR_RNDN);
        return mpfr_get_d(r26483, MPFR_RNDN);
}

