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

char *name = "Numeric.SpecFunctions:logGammaCorrection from math-functions-0.1.5.2";

double f_if(float x) {
        float r41710 = x;
        float r41711 = r41710 * r41710;
        float r41712 = 2.0;
        float r41713 = r41711 * r41712;
        float r41714 = 1.0;
        float r41715 = r41713 - r41714;
        return r41715;
}

double f_id(double x) {
        double r41716 = x;
        double r41717 = r41716 * r41716;
        double r41718 = 2.0;
        double r41719 = r41717 * r41718;
        double r41720 = 1.0;
        double r41721 = r41719 - r41720;
        return r41721;
}


double f_of(float x) {
        float r41722 = x;
        float r41723 = r41722 * r41722;
        float r41724 = 2.0;
        float r41725 = r41723 * r41724;
        float r41726 = 1.0;
        float r41727 = r41725 - r41726;
        return r41727;
}

double f_od(double x) {
        double r41728 = x;
        double r41729 = r41728 * r41728;
        double r41730 = 2.0;
        double r41731 = r41729 * r41730;
        double r41732 = 1.0;
        double r41733 = r41731 - r41732;
        return r41733;
}

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 r41734, r41735, r41736, r41737, r41738, r41739;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41734);
        mpfr_init(r41735);
        mpfr_init_set_str(r41736, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41737);
        mpfr_init_set_str(r41738, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41739);
}

double f_im(double x) {
        mpfr_set_d(r41734, x, MPFR_RNDN);
        mpfr_mul(r41735, r41734, r41734, MPFR_RNDN);
        ;
        mpfr_mul(r41737, r41735, r41736, MPFR_RNDN);
        ;
        mpfr_sub(r41739, r41737, r41738, MPFR_RNDN);
        return mpfr_get_d(r41739, MPFR_RNDN);
}

static mpfr_t r41740, r41741, r41742, r41743, r41744, r41745;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41740);
        mpfr_init(r41741);
        mpfr_init_set_str(r41742, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41743);
        mpfr_init_set_str(r41744, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41745);
}

double f_fm(double x) {
        mpfr_set_d(r41740, x, MPFR_RNDN);
        mpfr_mul(r41741, r41740, r41740, MPFR_RNDN);
        ;
        mpfr_mul(r41743, r41741, r41742, MPFR_RNDN);
        ;
        mpfr_sub(r41745, r41743, r41744, MPFR_RNDN);
        return mpfr_get_d(r41745, MPFR_RNDN);
}

static mpfr_t r41746, r41747, r41748, r41749, r41750, r41751;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41746);
        mpfr_init(r41747);
        mpfr_init_set_str(r41748, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41749);
        mpfr_init_set_str(r41750, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41751);
}

double f_dm(double x) {
        mpfr_set_d(r41746, x, MPFR_RNDN);
        mpfr_mul(r41747, r41746, r41746, MPFR_RNDN);
        ;
        mpfr_mul(r41749, r41747, r41748, MPFR_RNDN);
        ;
        mpfr_sub(r41751, r41749, r41750, MPFR_RNDN);
        return mpfr_get_d(r41751, MPFR_RNDN);
}

