#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 r8645 = 1.0f;
        float r8646 = x;
        float r8647 = r8645 + r8646;
        float r8648 = log(r8647);
        return r8648;
}

double f_id(double x) {
        double r8649 = 1.0;
        double r8650 = x;
        double r8651 = r8649 + r8650;
        double r8652 = log(r8651);
        return r8652;
}


double f_of(float x) {
        float r8653 = x;
        float r8654 = 1.0f;
        float r8655 = r8653 + r8654;
        float r8656 = log(r8655);
        float r8657 = 3.5186496954067207e-06f;
        bool r8658 = r8656 <= r8657;
        float r8659 = 0.5f;
        float r8660 = 0.3333333333333333f;
        float r8661 = r8660 * r8653;
        float r8662 = r8659 - r8661;
        float r8663 = r8653 * r8653;
        float r8664 = r8662 * r8663;
        float r8665 = r8653 - r8664;
        float r8666 = r8658 ? r8665 : r8656;
        return r8666;
}

double f_od(double x) {
        double r8667 = x;
        double r8668 = 1.0;
        double r8669 = r8667 + r8668;
        double r8670 = log(r8669);
        double r8671 = 3.5186496954067207e-06;
        bool r8672 = r8670 <= r8671;
        double r8673 = 0.5;
        double r8674 = 0.3333333333333333;
        double r8675 = r8674 * r8667;
        double r8676 = r8673 - r8675;
        double r8677 = r8667 * r8667;
        double r8678 = r8676 * r8677;
        double r8679 = r8667 - r8678;
        double r8680 = r8672 ? r8679 : r8670;
        return r8680;
}

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 r8681, r8682, r8683, r8684;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8681, "1", 10, MPFR_RNDN);
        mpfr_init(r8682);
        mpfr_init(r8683);
        mpfr_init(r8684);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8682, x, MPFR_RNDN);
        mpfr_add(r8683, r8681, r8682, MPFR_RNDN);
        mpfr_log(r8684, r8683, MPFR_RNDN);
        return mpfr_get_d(r8684, MPFR_RNDN);
}

static mpfr_t r8685, r8686, r8687, r8688, r8689, r8690, r8691, r8692, r8693, r8694, r8695, r8696, r8697, r8698;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8685);
        mpfr_init_set_str(r8686, "1", 10, MPFR_RNDN);
        mpfr_init(r8687);
        mpfr_init(r8688);
        mpfr_init_set_str(r8689, "3.5186496954067207e-06", 10, MPFR_RNDN);
        mpfr_init(r8690);
        mpfr_init_set_str(r8691, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8692, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8693);
        mpfr_init(r8694);
        mpfr_init(r8695);
        mpfr_init(r8696);
        mpfr_init(r8697);
        mpfr_init(r8698);
}

double f_fm(double x) {
        mpfr_set_d(r8685, x, MPFR_RNDN);
        ;
        mpfr_add(r8687, r8685, r8686, MPFR_RNDN);
        mpfr_log(r8688, r8687, MPFR_RNDN);
        ;
        mpfr_set_si(r8690, mpfr_cmp(r8688, r8689) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8693, r8692, r8685, MPFR_RNDN);
        mpfr_sub(r8694, r8691, r8693, MPFR_RNDN);
        mpfr_mul(r8695, r8685, r8685, MPFR_RNDN);
        mpfr_mul(r8696, r8694, r8695, MPFR_RNDN);
        mpfr_sub(r8697, r8685, r8696, MPFR_RNDN);
        if (mpfr_get_si(r8690, MPFR_RNDN)) { mpfr_set(r8698, r8697, MPFR_RNDN); } else { mpfr_set(r8698, r8688, MPFR_RNDN); };
        return mpfr_get_d(r8698, MPFR_RNDN);
}

static mpfr_t r8699, r8700, r8701, r8702, r8703, r8704, r8705, r8706, r8707, r8708, r8709, r8710, r8711, r8712;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8699);
        mpfr_init_set_str(r8700, "1", 10, MPFR_RNDN);
        mpfr_init(r8701);
        mpfr_init(r8702);
        mpfr_init_set_str(r8703, "3.5186496954067207e-06", 10, MPFR_RNDN);
        mpfr_init(r8704);
        mpfr_init_set_str(r8705, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8706, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8707);
        mpfr_init(r8708);
        mpfr_init(r8709);
        mpfr_init(r8710);
        mpfr_init(r8711);
        mpfr_init(r8712);
}

double f_dm(double x) {
        mpfr_set_d(r8699, x, MPFR_RNDN);
        ;
        mpfr_add(r8701, r8699, r8700, MPFR_RNDN);
        mpfr_log(r8702, r8701, MPFR_RNDN);
        ;
        mpfr_set_si(r8704, mpfr_cmp(r8702, r8703) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8707, r8706, r8699, MPFR_RNDN);
        mpfr_sub(r8708, r8705, r8707, MPFR_RNDN);
        mpfr_mul(r8709, r8699, r8699, MPFR_RNDN);
        mpfr_mul(r8710, r8708, r8709, MPFR_RNDN);
        mpfr_sub(r8711, r8699, r8710, MPFR_RNDN);
        if (mpfr_get_si(r8704, MPFR_RNDN)) { mpfr_set(r8712, r8711, MPFR_RNDN); } else { mpfr_set(r8712, r8702, MPFR_RNDN); };
        return mpfr_get_d(r8712, MPFR_RNDN);
}

