#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 r41868 = x;
        float r41869 = r41868 * r41868;
        float r41870 = 2.0;
        float r41871 = r41869 * r41870;
        float r41872 = 1.0;
        float r41873 = r41871 - r41872;
        return r41873;
}

double f_id(double x) {
        double r41874 = x;
        double r41875 = r41874 * r41874;
        double r41876 = 2.0;
        double r41877 = r41875 * r41876;
        double r41878 = 1.0;
        double r41879 = r41877 - r41878;
        return r41879;
}


double f_of(float x) {
        float r41880 = x;
        float r41881 = r41880 * r41880;
        float r41882 = 2.0;
        float r41883 = r41881 * r41882;
        float r41884 = 1.0;
        float r41885 = r41883 - r41884;
        return r41885;
}

double f_od(double x) {
        double r41886 = x;
        double r41887 = r41886 * r41886;
        double r41888 = 2.0;
        double r41889 = r41887 * r41888;
        double r41890 = 1.0;
        double r41891 = r41889 - r41890;
        return r41891;
}

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 r41892, r41893, r41894, r41895, r41896, r41897;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41892);
        mpfr_init(r41893);
        mpfr_init_set_str(r41894, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41895);
        mpfr_init_set_str(r41896, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41897);
}

double f_im(double x) {
        mpfr_set_d(r41892, x, MPFR_RNDN);
        mpfr_mul(r41893, r41892, r41892, MPFR_RNDN);
        ;
        mpfr_mul(r41895, r41893, r41894, MPFR_RNDN);
        ;
        mpfr_sub(r41897, r41895, r41896, MPFR_RNDN);
        return mpfr_get_d(r41897, MPFR_RNDN);
}

static mpfr_t r41898, r41899, r41900, r41901, r41902, r41903;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41898);
        mpfr_init(r41899);
        mpfr_init_set_str(r41900, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41901);
        mpfr_init_set_str(r41902, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41903);
}

double f_fm(double x) {
        mpfr_set_d(r41898, x, MPFR_RNDN);
        mpfr_mul(r41899, r41898, r41898, MPFR_RNDN);
        ;
        mpfr_mul(r41901, r41899, r41900, MPFR_RNDN);
        ;
        mpfr_sub(r41903, r41901, r41902, MPFR_RNDN);
        return mpfr_get_d(r41903, MPFR_RNDN);
}

static mpfr_t r41904, r41905, r41906, r41907, r41908, r41909;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41904);
        mpfr_init(r41905);
        mpfr_init_set_str(r41906, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41907);
        mpfr_init_set_str(r41908, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41909);
}

double f_dm(double x) {
        mpfr_set_d(r41904, x, MPFR_RNDN);
        mpfr_mul(r41905, r41904, r41904, MPFR_RNDN);
        ;
        mpfr_mul(r41907, r41905, r41906, MPFR_RNDN);
        ;
        mpfr_sub(r41909, r41907, r41908, MPFR_RNDN);
        return mpfr_get_d(r41909, MPFR_RNDN);
}

