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

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

double f_if(float x) {
        float r42839 = x;
        float r42840 = 2.0f;
        float r42841 = r42839 * r42840;
        float r42842 = r42841 * r42839;
        return r42842;
}

double f_id(double x) {
        double r42843 = x;
        double r42844 = 2.0;
        double r42845 = r42843 * r42844;
        double r42846 = r42845 * r42843;
        return r42846;
}


double f_of(float x) {
        float r42847 = 2.0f;
        float r42848 = x;
        float r42849 = r42847 * r42848;
        float r42850 = r42849 * r42848;
        return r42850;
}

double f_od(double x) {
        double r42851 = 2.0;
        double r42852 = x;
        double r42853 = r42851 * r42852;
        double r42854 = r42853 * r42852;
        return r42854;
}

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 r42855, r42856, r42857, r42858;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42855);
        mpfr_init_set_str(r42856, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42857);
        mpfr_init(r42858);
}

double f_im(double x) {
        mpfr_set_d(r42855, x, MPFR_RNDN);
        ;
        mpfr_mul(r42857, r42855, r42856, MPFR_RNDN);
        mpfr_mul(r42858, r42857, r42855, MPFR_RNDN);
        return mpfr_get_d(r42858, MPFR_RNDN);
}

static mpfr_t r42859, r42860, r42861, r42862;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r42859, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42860);
        mpfr_init(r42861);
        mpfr_init(r42862);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r42860, x, MPFR_RNDN);
        mpfr_mul(r42861, r42859, r42860, MPFR_RNDN);
        mpfr_mul(r42862, r42861, r42860, MPFR_RNDN);
        return mpfr_get_d(r42862, MPFR_RNDN);
}

static mpfr_t r42863, r42864, r42865, r42866;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r42863, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42864);
        mpfr_init(r42865);
        mpfr_init(r42866);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r42864, x, MPFR_RNDN);
        mpfr_mul(r42865, r42863, r42864, MPFR_RNDN);
        mpfr_mul(r42866, r42865, r42864, MPFR_RNDN);
        return mpfr_get_d(r42866, MPFR_RNDN);
}

