#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 r26441 = n;
        float r26442 = 1;
        float r26443 = r26441 + r26442;
        float r26444 = log(r26443);
        float r26445 = r26443 * r26444;
        float r26446 = log(r26441);
        float r26447 = r26441 * r26446;
        float r26448 = r26445 - r26447;
        float r26449 = r26448 - r26442;
        return r26449;
}

double f_id(double n) {
        double r26450 = n;
        double r26451 = 1;
        double r26452 = r26450 + r26451;
        double r26453 = log(r26452);
        double r26454 = r26452 * r26453;
        double r26455 = log(r26450);
        double r26456 = r26450 * r26455;
        double r26457 = r26454 - r26456;
        double r26458 = r26457 - r26451;
        return r26458;
}


double f_of(float n) {
        float r26459 = 1/3;
        float r26460 = n;
        float r26461 = r26459 / r26460;
        float r26462 = 1;
        float r26463 = r26462 / r26460;
        float r26464 = fma(r26461, r26463, r26462);
        float r26465 = 1/2;
        float r26466 = -r26465;
        float r26467 = log1p(r26460);
        float r26468 = fma(r26463, r26466, r26467);
        float r26469 = r26464 + r26468;
        float r26470 = r26469 - r26462;
        return r26470;
}

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

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 r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26483);
        mpfr_init_set_str(r26484, "1", 10, MPFR_RNDN);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
}

double f_im(double n) {
        mpfr_set_d(r26483, n, MPFR_RNDN);
        ;
        mpfr_add(r26485, r26483, r26484, MPFR_RNDN);
        mpfr_log(r26486, r26485, MPFR_RNDN);
        mpfr_mul(r26487, r26485, r26486, MPFR_RNDN);
        mpfr_log(r26488, r26483, MPFR_RNDN);
        mpfr_mul(r26489, r26483, r26488, MPFR_RNDN);
        mpfr_sub(r26490, r26487, r26489, MPFR_RNDN);
        mpfr_sub(r26491, r26490, r26484, MPFR_RNDN);
        return mpfr_get_d(r26491, MPFR_RNDN);
}

static mpfr_t r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26492, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init_set_str(r26495, "1", 10, MPFR_RNDN);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init_set_str(r26498, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
}

double f_fm(double n) {
        ;
        mpfr_set_d(r26493, n, MPFR_RNDN);
        mpfr_div(r26494, r26492, r26493, MPFR_RNDN);
        ;
        mpfr_div(r26496, r26495, r26493, MPFR_RNDN);
        mpfr_fma(r26497, r26494, r26496, r26495, MPFR_RNDN);
        ;
        mpfr_neg(r26499, r26498, MPFR_RNDN);
        mpfr_log1p(r26500, r26493, MPFR_RNDN);
        mpfr_fma(r26501, r26496, r26499, r26500, MPFR_RNDN);
        mpfr_add(r26502, r26497, r26501, MPFR_RNDN);
        mpfr_sub(r26503, r26502, r26495, MPFR_RNDN);
        return mpfr_get_d(r26503, MPFR_RNDN);
}

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

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

double f_dm(double n) {
        ;
        mpfr_set_d(r26505, n, MPFR_RNDN);
        mpfr_div(r26506, r26504, r26505, MPFR_RNDN);
        ;
        mpfr_div(r26508, r26507, r26505, MPFR_RNDN);
        mpfr_fma(r26509, r26506, r26508, r26507, MPFR_RNDN);
        ;
        mpfr_neg(r26511, r26510, MPFR_RNDN);
        mpfr_log1p(r26512, r26505, MPFR_RNDN);
        mpfr_fma(r26513, r26508, r26511, r26512, MPFR_RNDN);
        mpfr_add(r26514, r26509, r26513, MPFR_RNDN);
        mpfr_sub(r26515, r26514, r26507, MPFR_RNDN);
        return mpfr_get_d(r26515, MPFR_RNDN);
}

