#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 r26454 = n;
        float r26455 = 1;
        float r26456 = r26454 + r26455;
        float r26457 = log(r26456);
        float r26458 = r26456 * r26457;
        float r26459 = log(r26454);
        float r26460 = r26454 * r26459;
        float r26461 = r26458 - r26460;
        float r26462 = r26461 - r26455;
        return r26462;
}

double f_id(double n) {
        double r26463 = n;
        double r26464 = 1;
        double r26465 = r26463 + r26464;
        double r26466 = log(r26465);
        double r26467 = r26465 * r26466;
        double r26468 = log(r26463);
        double r26469 = r26463 * r26468;
        double r26470 = r26467 - r26469;
        double r26471 = r26470 - r26464;
        return r26471;
}


double f_of(float n) {
        float r26472 = 1;
        float r26473 = n;
        float r26474 = r26472 / r26473;
        float r26475 = 1/3;
        float r26476 = r26475 / r26473;
        float r26477 = 1/2;
        float r26478 = r26476 - r26477;
        float r26479 = log1p(r26473);
        float r26480 = fma(r26474, r26478, r26479);
        float r26481 = expm1(r26480);
        float r26482 = log1p(r26481);
        return r26482;
}

double f_od(double n) {
        double r26483 = 1;
        double r26484 = n;
        double r26485 = r26483 / r26484;
        double r26486 = 1/3;
        double r26487 = r26486 / r26484;
        double r26488 = 1/2;
        double r26489 = r26487 - r26488;
        double r26490 = log1p(r26484);
        double r26491 = fma(r26485, r26489, r26490);
        double r26492 = expm1(r26491);
        double r26493 = log1p(r26492);
        return r26493;
}

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 r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26494);
        mpfr_init_set_str(r26495, "1", 10, MPFR_RNDN);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
}

double f_im(double n) {
        mpfr_set_d(r26494, n, MPFR_RNDN);
        ;
        mpfr_add(r26496, r26494, r26495, MPFR_RNDN);
        mpfr_log(r26497, r26496, MPFR_RNDN);
        mpfr_mul(r26498, r26496, r26497, MPFR_RNDN);
        mpfr_log(r26499, r26494, MPFR_RNDN);
        mpfr_mul(r26500, r26494, r26499, MPFR_RNDN);
        mpfr_sub(r26501, r26498, r26500, MPFR_RNDN);
        mpfr_sub(r26502, r26501, r26495, MPFR_RNDN);
        return mpfr_get_d(r26502, MPFR_RNDN);
}

static mpfr_t r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510, r26511, r26512, r26513;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26503, "1", 10, MPFR_RNDN);
        mpfr_init(r26504);
        mpfr_init(r26505);
        mpfr_init_set_str(r26506, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26507);
        mpfr_init_set_str(r26508, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26509);
        mpfr_init(r26510);
        mpfr_init(r26511);
        mpfr_init(r26512);
        mpfr_init(r26513);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r26504, n, MPFR_RNDN);
        mpfr_div(r26505, r26503, r26504, MPFR_RNDN);
        ;
        mpfr_div(r26507, r26506, r26504, MPFR_RNDN);
        ;
        mpfr_sub(r26509, r26507, r26508, MPFR_RNDN);
        mpfr_log1p(r26510, r26504, MPFR_RNDN);
        mpfr_fma(r26511, r26505, r26509, r26510, MPFR_RNDN);
        mpfr_expm1(r26512, r26511, MPFR_RNDN);
        mpfr_log1p(r26513, r26512, MPFR_RNDN);
        return mpfr_get_d(r26513, MPFR_RNDN);
}

static mpfr_t r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26514, "1", 10, MPFR_RNDN);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init_set_str(r26517, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26518);
        mpfr_init_set_str(r26519, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init(r26524);
}

double f_dm(double n) {
        ;
        mpfr_set_d(r26515, n, MPFR_RNDN);
        mpfr_div(r26516, r26514, r26515, MPFR_RNDN);
        ;
        mpfr_div(r26518, r26517, r26515, MPFR_RNDN);
        ;
        mpfr_sub(r26520, r26518, r26519, MPFR_RNDN);
        mpfr_log1p(r26521, r26515, MPFR_RNDN);
        mpfr_fma(r26522, r26516, r26520, r26521, MPFR_RNDN);
        mpfr_expm1(r26523, r26522, MPFR_RNDN);
        mpfr_log1p(r26524, r26523, MPFR_RNDN);
        return mpfr_get_d(r26524, MPFR_RNDN);
}

