#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 r39258 = x;
        float r39259 = y;
        float r39260 = 1.0f;
        float r39261 = r39259 - r39260;
        float r39262 = r39258 * r39261;
        float r39263 = 0.5f;
        float r39264 = r39259 * r39263;
        float r39265 = r39262 - r39264;
        float r39266 = 0.918938533204673f;
        float r39267 = r39265 + r39266;
        return r39267;
}

double f_id(double x, double y) {
        double r39268 = x;
        double r39269 = y;
        double r39270 = 1.0;
        double r39271 = r39269 - r39270;
        double r39272 = r39268 * r39271;
        double r39273 = 0.5;
        double r39274 = r39269 * r39273;
        double r39275 = r39272 - r39274;
        double r39276 = 0.918938533204673;
        double r39277 = r39275 + r39276;
        return r39277;
}


double f_of(float x, float y) {
        float r39278 = x;
        float r39279 = y;
        float r39280 = r39278 * r39279;
        float r39281 = 1.0f;
        float r39282 = -r39281;
        float r39283 = r39278 * r39282;
        float r39284 = r39280 + r39283;
        float r39285 = 0.5f;
        float r39286 = r39279 * r39285;
        float r39287 = r39284 - r39286;
        float r39288 = 0.918938533204673f;
        float r39289 = r39287 + r39288;
        return r39289;
}

double f_od(double x, double y) {
        double r39290 = x;
        double r39291 = y;
        double r39292 = r39290 * r39291;
        double r39293 = 1.0;
        double r39294 = -r39293;
        double r39295 = r39290 * r39294;
        double r39296 = r39292 + r39295;
        double r39297 = 0.5;
        double r39298 = r39291 * r39297;
        double r39299 = r39296 - r39298;
        double r39300 = 0.918938533204673;
        double r39301 = r39299 + r39300;
        return r39301;
}

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 r39302, r39303, r39304, r39305, r39306, r39307, r39308, r39309, r39310, r39311;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r39302);
        mpfr_init(r39303);
        mpfr_init_set_str(r39304, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39305);
        mpfr_init(r39306);
        mpfr_init_set_str(r39307, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39308);
        mpfr_init(r39309);
        mpfr_init_set_str(r39310, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r39311);
}

double f_im(double x, double y) {
        mpfr_set_d(r39302, x, MPFR_RNDN);
        mpfr_set_d(r39303, y, MPFR_RNDN);
        ;
        mpfr_sub(r39305, r39303, r39304, MPFR_RNDN);
        mpfr_mul(r39306, r39302, r39305, MPFR_RNDN);
        ;
        mpfr_mul(r39308, r39303, r39307, MPFR_RNDN);
        mpfr_sub(r39309, r39306, r39308, MPFR_RNDN);
        ;
        mpfr_add(r39311, r39309, r39310, MPFR_RNDN);
        return mpfr_get_d(r39311, MPFR_RNDN);
}

static mpfr_t r39312, r39313, r39314, r39315, r39316, r39317, r39318, r39319, r39320, r39321, r39322, r39323;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39312);
        mpfr_init(r39313);
        mpfr_init(r39314);
        mpfr_init_set_str(r39315, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39316);
        mpfr_init(r39317);
        mpfr_init(r39318);
        mpfr_init_set_str(r39319, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39320);
        mpfr_init(r39321);
        mpfr_init_set_str(r39322, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r39323);
}

double f_fm(double x, double y) {
        mpfr_set_d(r39312, x, MPFR_RNDN);
        mpfr_set_d(r39313, y, MPFR_RNDN);
        mpfr_mul(r39314, r39312, r39313, MPFR_RNDN);
        ;
        mpfr_neg(r39316, r39315, MPFR_RNDN);
        mpfr_mul(r39317, r39312, r39316, MPFR_RNDN);
        mpfr_add(r39318, r39314, r39317, MPFR_RNDN);
        ;
        mpfr_mul(r39320, r39313, r39319, MPFR_RNDN);
        mpfr_sub(r39321, r39318, r39320, MPFR_RNDN);
        ;
        mpfr_add(r39323, r39321, r39322, MPFR_RNDN);
        return mpfr_get_d(r39323, MPFR_RNDN);
}

static mpfr_t r39324, r39325, r39326, r39327, r39328, r39329, r39330, r39331, r39332, r39333, r39334, r39335;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39324);
        mpfr_init(r39325);
        mpfr_init(r39326);
        mpfr_init_set_str(r39327, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39328);
        mpfr_init(r39329);
        mpfr_init(r39330);
        mpfr_init_set_str(r39331, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39332);
        mpfr_init(r39333);
        mpfr_init_set_str(r39334, "0.918938533204673", 10, MPFR_RNDN);
        mpfr_init(r39335);
}

double f_dm(double x, double y) {
        mpfr_set_d(r39324, x, MPFR_RNDN);
        mpfr_set_d(r39325, y, MPFR_RNDN);
        mpfr_mul(r39326, r39324, r39325, MPFR_RNDN);
        ;
        mpfr_neg(r39328, r39327, MPFR_RNDN);
        mpfr_mul(r39329, r39324, r39328, MPFR_RNDN);
        mpfr_add(r39330, r39326, r39329, MPFR_RNDN);
        ;
        mpfr_mul(r39332, r39325, r39331, MPFR_RNDN);
        mpfr_sub(r39333, r39330, r39332, MPFR_RNDN);
        ;
        mpfr_add(r39335, r39333, r39334, MPFR_RNDN);
        return mpfr_get_d(r39335, MPFR_RNDN);
}

