#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 r45700 = x;
        float r45701 = 2.0;
        float r45702 = r45700 * r45701;
        float r45703 = r45702 * r45700;
        return r45703;
}

double f_id(double x) {
        double r45704 = x;
        double r45705 = 2.0;
        double r45706 = r45704 * r45705;
        double r45707 = r45706 * r45704;
        return r45707;
}


double f_of(float x) {
        float r45708 = x;
        float r45709 = 2.0;
        float r45710 = r45708 * r45709;
        float r45711 = r45710 * r45708;
        return r45711;
}

double f_od(double x) {
        double r45712 = x;
        double r45713 = 2.0;
        double r45714 = r45712 * r45713;
        double r45715 = r45714 * r45712;
        return r45715;
}

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 r45716, r45717, r45718, r45719;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45716);
        mpfr_init_set_str(r45717, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45718);
        mpfr_init(r45719);
}

double f_im(double x) {
        mpfr_set_d(r45716, x, MPFR_RNDN);
        ;
        mpfr_mul(r45718, r45716, r45717, MPFR_RNDN);
        mpfr_mul(r45719, r45718, r45716, MPFR_RNDN);
        return mpfr_get_d(r45719, MPFR_RNDN);
}

static mpfr_t r45720, r45721, r45722, r45723;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45720);
        mpfr_init_set_str(r45721, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45722);
        mpfr_init(r45723);
}

double f_fm(double x) {
        mpfr_set_d(r45720, x, MPFR_RNDN);
        ;
        mpfr_mul(r45722, r45720, r45721, MPFR_RNDN);
        mpfr_mul(r45723, r45722, r45720, MPFR_RNDN);
        return mpfr_get_d(r45723, MPFR_RNDN);
}

static mpfr_t r45724, r45725, r45726, r45727;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45724);
        mpfr_init_set_str(r45725, "2.0", 10, MPFR_RNDN);
        mpfr_init(r45726);
        mpfr_init(r45727);
}

double f_dm(double x) {
        mpfr_set_d(r45724, x, MPFR_RNDN);
        ;
        mpfr_mul(r45726, r45724, r45725, MPFR_RNDN);
        mpfr_mul(r45727, r45726, r45724, MPFR_RNDN);
        return mpfr_get_d(r45727, MPFR_RNDN);
}

