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

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

double f_if(float x, float y) {
        float r45254 = x;
        float r45255 = y;
        float r45256 = r45254 * r45255;
        float r45257 = r45254 + r45255;
        float r45258 = r45257 * r45257;
        float r45259 = 1.0;
        float r45260 = r45257 + r45259;
        float r45261 = r45258 * r45260;
        float r45262 = r45256 / r45261;
        return r45262;
}

double f_id(double x, double y) {
        double r45263 = x;
        double r45264 = y;
        double r45265 = r45263 * r45264;
        double r45266 = r45263 + r45264;
        double r45267 = r45266 * r45266;
        double r45268 = 1.0;
        double r45269 = r45266 + r45268;
        double r45270 = r45267 * r45269;
        double r45271 = r45265 / r45270;
        return r45271;
}


double f_of(float x, float y) {
        float r45272 = x;
        float r45273 = y;
        float r45274 = r45272 + r45273;
        float r45275 = r45272 / r45274;
        float r45276 = r45273 / r45274;
        float r45277 = 1.0;
        float r45278 = r45273 + r45277;
        float r45279 = r45278 + r45272;
        float r45280 = r45276 / r45279;
        float r45281 = r45275 * r45280;
        return r45281;
}

double f_od(double x, double y) {
        double r45282 = x;
        double r45283 = y;
        double r45284 = r45282 + r45283;
        double r45285 = r45282 / r45284;
        double r45286 = r45283 / r45284;
        double r45287 = 1.0;
        double r45288 = r45283 + r45287;
        double r45289 = r45288 + r45282;
        double r45290 = r45286 / r45289;
        double r45291 = r45285 * r45290;
        return r45291;
}

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 r45292, r45293, r45294, r45295, r45296, r45297, r45298, r45299, r45300;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45292);
        mpfr_init(r45293);
        mpfr_init(r45294);
        mpfr_init(r45295);
        mpfr_init(r45296);
        mpfr_init_set_str(r45297, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45298);
        mpfr_init(r45299);
        mpfr_init(r45300);
}

double f_im(double x, double y) {
        mpfr_set_d(r45292, x, MPFR_RNDN);
        mpfr_set_d(r45293, y, MPFR_RNDN);
        mpfr_mul(r45294, r45292, r45293, MPFR_RNDN);
        mpfr_add(r45295, r45292, r45293, MPFR_RNDN);
        mpfr_mul(r45296, r45295, r45295, MPFR_RNDN);
        ;
        mpfr_add(r45298, r45295, r45297, MPFR_RNDN);
        mpfr_mul(r45299, r45296, r45298, MPFR_RNDN);
        mpfr_div(r45300, r45294, r45299, MPFR_RNDN);
        return mpfr_get_d(r45300, MPFR_RNDN);
}

static mpfr_t r45301, r45302, r45303, r45304, r45305, r45306, r45307, r45308, r45309, r45310;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45301);
        mpfr_init(r45302);
        mpfr_init(r45303);
        mpfr_init(r45304);
        mpfr_init(r45305);
        mpfr_init_set_str(r45306, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45307);
        mpfr_init(r45308);
        mpfr_init(r45309);
        mpfr_init(r45310);
}

double f_fm(double x, double y) {
        mpfr_set_d(r45301, x, MPFR_RNDN);
        mpfr_set_d(r45302, y, MPFR_RNDN);
        mpfr_add(r45303, r45301, r45302, MPFR_RNDN);
        mpfr_div(r45304, r45301, r45303, MPFR_RNDN);
        mpfr_div(r45305, r45302, r45303, MPFR_RNDN);
        ;
        mpfr_add(r45307, r45302, r45306, MPFR_RNDN);
        mpfr_add(r45308, r45307, r45301, MPFR_RNDN);
        mpfr_div(r45309, r45305, r45308, MPFR_RNDN);
        mpfr_mul(r45310, r45304, r45309, MPFR_RNDN);
        return mpfr_get_d(r45310, MPFR_RNDN);
}

static mpfr_t r45311, r45312, r45313, r45314, r45315, r45316, r45317, r45318, r45319, r45320;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45311);
        mpfr_init(r45312);
        mpfr_init(r45313);
        mpfr_init(r45314);
        mpfr_init(r45315);
        mpfr_init_set_str(r45316, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45317);
        mpfr_init(r45318);
        mpfr_init(r45319);
        mpfr_init(r45320);
}

double f_dm(double x, double y) {
        mpfr_set_d(r45311, x, MPFR_RNDN);
        mpfr_set_d(r45312, y, MPFR_RNDN);
        mpfr_add(r45313, r45311, r45312, MPFR_RNDN);
        mpfr_div(r45314, r45311, r45313, MPFR_RNDN);
        mpfr_div(r45315, r45312, r45313, MPFR_RNDN);
        ;
        mpfr_add(r45317, r45312, r45316, MPFR_RNDN);
        mpfr_add(r45318, r45317, r45311, MPFR_RNDN);
        mpfr_div(r45319, r45315, r45318, MPFR_RNDN);
        mpfr_mul(r45320, r45314, r45319, MPFR_RNDN);
        return mpfr_get_d(r45320, MPFR_RNDN);
}

