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

char *name = "Numeric.Log:$clog1p from log-domain-0.10.2.1, B";

double f_if(float x) {
        float r42710 = x;
        float r42711 = 1.0f;
        float r42712 = r42710 + r42711;
        float r42713 = sqrt(r42712);
        float r42714 = r42711 + r42713;
        float r42715 = r42710 / r42714;
        return r42715;
}

double f_id(double x) {
        double r42716 = x;
        double r42717 = 1.0;
        double r42718 = r42716 + r42717;
        double r42719 = sqrt(r42718);
        double r42720 = r42717 + r42719;
        double r42721 = r42716 / r42720;
        return r42721;
}


double f_of(float x) {
        float r42722 = x;
        float r42723 = 1.0f;
        float r42724 = r42722 + r42723;
        float r42725 = sqrt(r42724);
        float r42726 = r42723 + r42725;
        float r42727 = r42722 / r42726;
        return r42727;
}

double f_od(double x) {
        double r42728 = x;
        double r42729 = 1.0;
        double r42730 = r42728 + r42729;
        double r42731 = sqrt(r42730);
        double r42732 = r42729 + r42731;
        double r42733 = r42728 / r42732;
        return r42733;
}

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 r42734, r42735, r42736, r42737, r42738, r42739;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42734);
        mpfr_init_set_str(r42735, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42736);
        mpfr_init(r42737);
        mpfr_init(r42738);
        mpfr_init(r42739);
}

double f_im(double x) {
        mpfr_set_d(r42734, x, MPFR_RNDN);
        ;
        mpfr_add(r42736, r42734, r42735, MPFR_RNDN);
        mpfr_sqrt(r42737, r42736, MPFR_RNDN);
        mpfr_add(r42738, r42735, r42737, MPFR_RNDN);
        mpfr_div(r42739, r42734, r42738, MPFR_RNDN);
        return mpfr_get_d(r42739, MPFR_RNDN);
}

static mpfr_t r42740, r42741, r42742, r42743, r42744, r42745;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42740);
        mpfr_init_set_str(r42741, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42742);
        mpfr_init(r42743);
        mpfr_init(r42744);
        mpfr_init(r42745);
}

double f_fm(double x) {
        mpfr_set_d(r42740, x, MPFR_RNDN);
        ;
        mpfr_add(r42742, r42740, r42741, MPFR_RNDN);
        mpfr_sqrt(r42743, r42742, MPFR_RNDN);
        mpfr_add(r42744, r42741, r42743, MPFR_RNDN);
        mpfr_div(r42745, r42740, r42744, MPFR_RNDN);
        return mpfr_get_d(r42745, MPFR_RNDN);
}

static mpfr_t r42746, r42747, r42748, r42749, r42750, r42751;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42746);
        mpfr_init_set_str(r42747, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42748);
        mpfr_init(r42749);
        mpfr_init(r42750);
        mpfr_init(r42751);
}

double f_dm(double x) {
        mpfr_set_d(r42746, x, MPFR_RNDN);
        ;
        mpfr_add(r42748, r42746, r42747, MPFR_RNDN);
        mpfr_sqrt(r42749, r42748, MPFR_RNDN);
        mpfr_add(r42750, r42747, r42749, MPFR_RNDN);
        mpfr_div(r42751, r42746, r42750, MPFR_RNDN);
        return mpfr_get_d(r42751, MPFR_RNDN);
}

