#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "ln(1 + x)";

double f_if(float x) {
        float r22533 = 1;
        float r22534 = x;
        float r22535 = r22533 + r22534;
        float r22536 = log(r22535);
        return r22536;
}

double f_id(double x) {
        double r22537 = 1;
        double r22538 = x;
        double r22539 = r22537 + r22538;
        double r22540 = log(r22539);
        return r22540;
}


double f_of(float x) {
        float r22541 = 1;
        float r22542 = x;
        float r22543 = r22541 + r22542;
        float r22544 = log(r22543);
        float r22545 = 2.594791766758052e-07;
        bool r22546 = r22544 <= r22545;
        float r22547 = 1/2;
        float r22548 = 1/3;
        float r22549 = r22542 * r22548;
        float r22550 = r22547 - r22549;
        float r22551 = r22542 * r22542;
        float r22552 = r22550 * r22551;
        float r22553 = r22542 - r22552;
        float r22554 = r22546 ? r22553 : r22544;
        return r22554;
}

double f_od(double x) {
        double r22555 = 1;
        double r22556 = x;
        double r22557 = r22555 + r22556;
        double r22558 = log(r22557);
        double r22559 = 2.594791766758052e-07;
        bool r22560 = r22558 <= r22559;
        double r22561 = 1/2;
        double r22562 = 1/3;
        double r22563 = r22556 * r22562;
        double r22564 = r22561 - r22563;
        double r22565 = r22556 * r22556;
        double r22566 = r22564 * r22565;
        double r22567 = r22556 - r22566;
        double r22568 = r22560 ? r22567 : r22558;
        return r22568;
}

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 r22569, r22570, r22571, r22572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r22569, "1", 10, MPFR_RNDN);
        mpfr_init(r22570);
        mpfr_init(r22571);
        mpfr_init(r22572);
}

double f_im(double x) {
        ;
        mpfr_set_d(r22570, x, MPFR_RNDN);
        mpfr_add(r22571, r22569, r22570, MPFR_RNDN);
        mpfr_log(r22572, r22571, MPFR_RNDN);
        return mpfr_get_d(r22572, MPFR_RNDN);
}

static mpfr_t r22573, r22574, r22575, r22576, r22577, r22578, r22579, r22580, r22581, r22582, r22583, r22584, r22585, r22586;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r22573, "1", 10, MPFR_RNDN);
        mpfr_init(r22574);
        mpfr_init(r22575);
        mpfr_init(r22576);
        mpfr_init_set_str(r22577, "2.594791766758052e-07", 10, MPFR_RNDN);
        mpfr_init(r22578);
        mpfr_init_set_str(r22579, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r22580, "1/3", 10, MPFR_RNDN);
        mpfr_init(r22581);
        mpfr_init(r22582);
        mpfr_init(r22583);
        mpfr_init(r22584);
        mpfr_init(r22585);
        mpfr_init(r22586);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r22574, x, MPFR_RNDN);
        mpfr_add(r22575, r22573, r22574, MPFR_RNDN);
        mpfr_log(r22576, r22575, MPFR_RNDN);
        ;
        mpfr_set_si(r22578, mpfr_cmp(r22576, r22577) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r22581, r22574, r22580, MPFR_RNDN);
        mpfr_sub(r22582, r22579, r22581, MPFR_RNDN);
        mpfr_mul(r22583, r22574, r22574, MPFR_RNDN);
        mpfr_mul(r22584, r22582, r22583, MPFR_RNDN);
        mpfr_sub(r22585, r22574, r22584, MPFR_RNDN);
        if (mpfr_get_si(r22578, MPFR_RNDN)) { mpfr_set(r22586, r22585, MPFR_RNDN); } else { mpfr_set(r22586, r22576, MPFR_RNDN); };
        return mpfr_get_d(r22586, MPFR_RNDN);
}

static mpfr_t r22587, r22588, r22589, r22590, r22591, r22592, r22593, r22594, r22595, r22596, r22597, r22598, r22599, r22600;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r22587, "1", 10, MPFR_RNDN);
        mpfr_init(r22588);
        mpfr_init(r22589);
        mpfr_init(r22590);
        mpfr_init_set_str(r22591, "2.594791766758052e-07", 10, MPFR_RNDN);
        mpfr_init(r22592);
        mpfr_init_set_str(r22593, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r22594, "1/3", 10, MPFR_RNDN);
        mpfr_init(r22595);
        mpfr_init(r22596);
        mpfr_init(r22597);
        mpfr_init(r22598);
        mpfr_init(r22599);
        mpfr_init(r22600);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r22588, x, MPFR_RNDN);
        mpfr_add(r22589, r22587, r22588, MPFR_RNDN);
        mpfr_log(r22590, r22589, MPFR_RNDN);
        ;
        mpfr_set_si(r22592, mpfr_cmp(r22590, r22591) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r22595, r22588, r22594, MPFR_RNDN);
        mpfr_sub(r22596, r22593, r22595, MPFR_RNDN);
        mpfr_mul(r22597, r22588, r22588, MPFR_RNDN);
        mpfr_mul(r22598, r22596, r22597, MPFR_RNDN);
        mpfr_sub(r22599, r22588, r22598, MPFR_RNDN);
        if (mpfr_get_si(r22592, MPFR_RNDN)) { mpfr_set(r22600, r22599, MPFR_RNDN); } else { mpfr_set(r22600, r22590, MPFR_RNDN); };
        return mpfr_get_d(r22600, MPFR_RNDN);
}

