#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 r42164 = x;
        float r42165 = r42164 * r42164;
        float r42166 = 2.0;
        float r42167 = r42165 * r42166;
        float r42168 = 1.0;
        float r42169 = r42167 - r42168;
        return r42169;
}

double f_id(double x) {
        double r42170 = x;
        double r42171 = r42170 * r42170;
        double r42172 = 2.0;
        double r42173 = r42171 * r42172;
        double r42174 = 1.0;
        double r42175 = r42173 - r42174;
        return r42175;
}


double f_of(float x) {
        float r42176 = x;
        float r42177 = r42176 * r42176;
        float r42178 = 2.0;
        float r42179 = r42177 * r42178;
        float r42180 = 1.0;
        float r42181 = r42179 - r42180;
        return r42181;
}

double f_od(double x) {
        double r42182 = x;
        double r42183 = r42182 * r42182;
        double r42184 = 2.0;
        double r42185 = r42183 * r42184;
        double r42186 = 1.0;
        double r42187 = r42185 - r42186;
        return r42187;
}

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 r42188, r42189, r42190, r42191, r42192, r42193;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42188);
        mpfr_init(r42189);
        mpfr_init_set_str(r42190, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42191);
        mpfr_init_set_str(r42192, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42193);
}

double f_im(double x) {
        mpfr_set_d(r42188, x, MPFR_RNDN);
        mpfr_mul(r42189, r42188, r42188, MPFR_RNDN);
        ;
        mpfr_mul(r42191, r42189, r42190, MPFR_RNDN);
        ;
        mpfr_sub(r42193, r42191, r42192, MPFR_RNDN);
        return mpfr_get_d(r42193, MPFR_RNDN);
}

static mpfr_t r42194, r42195, r42196, r42197, r42198, r42199;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42194);
        mpfr_init(r42195);
        mpfr_init_set_str(r42196, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42197);
        mpfr_init_set_str(r42198, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42199);
}

double f_fm(double x) {
        mpfr_set_d(r42194, x, MPFR_RNDN);
        mpfr_mul(r42195, r42194, r42194, MPFR_RNDN);
        ;
        mpfr_mul(r42197, r42195, r42196, MPFR_RNDN);
        ;
        mpfr_sub(r42199, r42197, r42198, MPFR_RNDN);
        return mpfr_get_d(r42199, MPFR_RNDN);
}

static mpfr_t r42200, r42201, r42202, r42203, r42204, r42205;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42200);
        mpfr_init(r42201);
        mpfr_init_set_str(r42202, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42203);
        mpfr_init_set_str(r42204, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42205);
}

double f_dm(double x) {
        mpfr_set_d(r42200, x, MPFR_RNDN);
        mpfr_mul(r42201, r42200, r42200, MPFR_RNDN);
        ;
        mpfr_mul(r42203, r42201, r42202, MPFR_RNDN);
        ;
        mpfr_sub(r42205, r42203, r42204, MPFR_RNDN);
        return mpfr_get_d(r42205, MPFR_RNDN);
}

