#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 r45281 = x;
        float r45282 = y;
        float r45283 = r45281 * r45282;
        float r45284 = r45281 + r45282;
        float r45285 = r45284 * r45284;
        float r45286 = 1.0;
        float r45287 = r45284 + r45286;
        float r45288 = r45285 * r45287;
        float r45289 = r45283 / r45288;
        return r45289;
}

double f_id(double x, double y) {
        double r45290 = x;
        double r45291 = y;
        double r45292 = r45290 * r45291;
        double r45293 = r45290 + r45291;
        double r45294 = r45293 * r45293;
        double r45295 = 1.0;
        double r45296 = r45293 + r45295;
        double r45297 = r45294 * r45296;
        double r45298 = r45292 / r45297;
        return r45298;
}


double f_of(float x, float y) {
        float r45299 = x;
        float r45300 = y;
        float r45301 = r45299 + r45300;
        float r45302 = r45299 / r45301;
        float r45303 = r45300 / r45301;
        float r45304 = 1.0;
        float r45305 = r45300 + r45304;
        float r45306 = r45305 + r45299;
        float r45307 = r45303 / r45306;
        float r45308 = r45302 * r45307;
        return r45308;
}

double f_od(double x, double y) {
        double r45309 = x;
        double r45310 = y;
        double r45311 = r45309 + r45310;
        double r45312 = r45309 / r45311;
        double r45313 = r45310 / r45311;
        double r45314 = 1.0;
        double r45315 = r45310 + r45314;
        double r45316 = r45315 + r45309;
        double r45317 = r45313 / r45316;
        double r45318 = r45312 * r45317;
        return r45318;
}

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 r45319, r45320, r45321, r45322, r45323, r45324, r45325, r45326, r45327;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45319);
        mpfr_init(r45320);
        mpfr_init(r45321);
        mpfr_init(r45322);
        mpfr_init(r45323);
        mpfr_init_set_str(r45324, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45325);
        mpfr_init(r45326);
        mpfr_init(r45327);
}

double f_im(double x, double y) {
        mpfr_set_d(r45319, x, MPFR_RNDN);
        mpfr_set_d(r45320, y, MPFR_RNDN);
        mpfr_mul(r45321, r45319, r45320, MPFR_RNDN);
        mpfr_add(r45322, r45319, r45320, MPFR_RNDN);
        mpfr_mul(r45323, r45322, r45322, MPFR_RNDN);
        ;
        mpfr_add(r45325, r45322, r45324, MPFR_RNDN);
        mpfr_mul(r45326, r45323, r45325, MPFR_RNDN);
        mpfr_div(r45327, r45321, r45326, MPFR_RNDN);
        return mpfr_get_d(r45327, MPFR_RNDN);
}

static mpfr_t r45328, r45329, r45330, r45331, r45332, r45333, r45334, r45335, r45336, r45337;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45328);
        mpfr_init(r45329);
        mpfr_init(r45330);
        mpfr_init(r45331);
        mpfr_init(r45332);
        mpfr_init_set_str(r45333, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45334);
        mpfr_init(r45335);
        mpfr_init(r45336);
        mpfr_init(r45337);
}

double f_fm(double x, double y) {
        mpfr_set_d(r45328, x, MPFR_RNDN);
        mpfr_set_d(r45329, y, MPFR_RNDN);
        mpfr_add(r45330, r45328, r45329, MPFR_RNDN);
        mpfr_div(r45331, r45328, r45330, MPFR_RNDN);
        mpfr_div(r45332, r45329, r45330, MPFR_RNDN);
        ;
        mpfr_add(r45334, r45329, r45333, MPFR_RNDN);
        mpfr_add(r45335, r45334, r45328, MPFR_RNDN);
        mpfr_div(r45336, r45332, r45335, MPFR_RNDN);
        mpfr_mul(r45337, r45331, r45336, MPFR_RNDN);
        return mpfr_get_d(r45337, MPFR_RNDN);
}

static mpfr_t r45338, r45339, r45340, r45341, r45342, r45343, r45344, r45345, r45346, r45347;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45338);
        mpfr_init(r45339);
        mpfr_init(r45340);
        mpfr_init(r45341);
        mpfr_init(r45342);
        mpfr_init_set_str(r45343, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45344);
        mpfr_init(r45345);
        mpfr_init(r45346);
        mpfr_init(r45347);
}

double f_dm(double x, double y) {
        mpfr_set_d(r45338, x, MPFR_RNDN);
        mpfr_set_d(r45339, y, MPFR_RNDN);
        mpfr_add(r45340, r45338, r45339, MPFR_RNDN);
        mpfr_div(r45341, r45338, r45340, MPFR_RNDN);
        mpfr_div(r45342, r45339, r45340, MPFR_RNDN);
        ;
        mpfr_add(r45344, r45339, r45343, MPFR_RNDN);
        mpfr_add(r45345, r45344, r45338, MPFR_RNDN);
        mpfr_div(r45346, r45342, r45345, MPFR_RNDN);
        mpfr_mul(r45347, r45341, r45346, MPFR_RNDN);
        return mpfr_get_d(r45347, MPFR_RNDN);
}

