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

char *name = "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, A";

double f_if(float x, float y) {
        float r42937 = x;
        float r42938 = y;
        float r42939 = 1.0;
        float r42940 = r42938 - r42939;
        float r42941 = r42937 * r42940;
        float r42942 = 0.5;
        float r42943 = r42938 * r42942;
        float r42944 = r42941 - r42943;
        float r42945 = 0.918938533204673;
        float r42946 = r42944 + r42945;
        return r42946;
}

double f_id(double x, double y) {
        double r42947 = x;
        double r42948 = y;
        double r42949 = 1.0;
        double r42950 = r42948 - r42949;
        double r42951 = r42947 * r42950;
        double r42952 = 0.5;
        double r42953 = r42948 * r42952;
        double r42954 = r42951 - r42953;
        double r42955 = 0.918938533204673;
        double r42956 = r42954 + r42955;
        return r42956;
}


double f_of(float x, float y) {
        float r42957 = x;
        float r42958 = y;
        float r42959 = 1.0;
        float r42960 = r42958 - r42959;
        float r42961 = r42957 * r42960;
        float r42962 = 0.5;
        float r42963 = r42958 * r42962;
        float r42964 = r42961 - r42963;
        float r42965 = 0.918938533204673;
        float r42966 = r42964 + r42965;
        return r42966;
}

double f_od(double x, double y) {
        double r42967 = x;
        double r42968 = y;
        double r42969 = 1.0;
        double r42970 = r42968 - r42969;
        double r42971 = r42967 * r42970;
        double r42972 = 0.5;
        double r42973 = r42968 * r42972;
        double r42974 = r42971 - r42973;
        double r42975 = 0.918938533204673;
        double r42976 = r42974 + r42975;
        return r42976;
}

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 r42977, r42978, r42979, r42980, r42981, r42982, r42983, r42984, r42985, r42986;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r42977);
        mpfr_init(r42978);
        mpfr_init_set_str(r42979, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42980);
        mpfr_init(r42981);
        mpfr_init_set_str(r42982, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42983);
        mpfr_init(r42984);
        mpfr_init_set_str(r42985, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r42986);
}

double f_im(double x, double y) {
        mpfr_set_d(r42977, x, MPFR_RNDN);
        mpfr_set_d(r42978, y, MPFR_RNDN);
        ;
        mpfr_sub(r42980, r42978, r42979, MPFR_RNDN);
        mpfr_mul(r42981, r42977, r42980, MPFR_RNDN);
        ;
        mpfr_mul(r42983, r42978, r42982, MPFR_RNDN);
        mpfr_sub(r42984, r42981, r42983, MPFR_RNDN);
        ;
        mpfr_add(r42986, r42984, r42985, MPFR_RNDN);
        return mpfr_get_d(r42986, MPFR_RNDN);
}

static mpfr_t r42987, r42988, r42989, r42990, r42991, r42992, r42993, r42994, r42995, r42996;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r42987);
        mpfr_init(r42988);
        mpfr_init_set_str(r42989, "1.0", 10, MPFR_RNDN);
        mpfr_init(r42990);
        mpfr_init(r42991);
        mpfr_init_set_str(r42992, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42993);
        mpfr_init(r42994);
        mpfr_init_set_str(r42995, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r42996);
}

double f_fm(double x, double y) {
        mpfr_set_d(r42987, x, MPFR_RNDN);
        mpfr_set_d(r42988, y, MPFR_RNDN);
        ;
        mpfr_sub(r42990, r42988, r42989, MPFR_RNDN);
        mpfr_mul(r42991, r42987, r42990, MPFR_RNDN);
        ;
        mpfr_mul(r42993, r42988, r42992, MPFR_RNDN);
        mpfr_sub(r42994, r42991, r42993, MPFR_RNDN);
        ;
        mpfr_add(r42996, r42994, r42995, MPFR_RNDN);
        return mpfr_get_d(r42996, MPFR_RNDN);
}

static mpfr_t r42997, r42998, r42999, r43000, r43001, r43002, r43003, r43004, r43005, r43006;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r42997);
        mpfr_init(r42998);
        mpfr_init_set_str(r42999, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43000);
        mpfr_init(r43001);
        mpfr_init_set_str(r43002, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43003);
        mpfr_init(r43004);
        mpfr_init_set_str(r43005, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r43006);
}

double f_dm(double x, double y) {
        mpfr_set_d(r42997, x, MPFR_RNDN);
        mpfr_set_d(r42998, y, MPFR_RNDN);
        ;
        mpfr_sub(r43000, r42998, r42999, MPFR_RNDN);
        mpfr_mul(r43001, r42997, r43000, MPFR_RNDN);
        ;
        mpfr_mul(r43003, r42998, r43002, MPFR_RNDN);
        mpfr_sub(r43004, r43001, r43003, MPFR_RNDN);
        ;
        mpfr_add(r43006, r43004, r43005, MPFR_RNDN);
        return mpfr_get_d(r43006, MPFR_RNDN);
}

