#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 r44966 = x;
        float r44967 = y;
        float r44968 = r44966 * r44967;
        float r44969 = r44966 + r44967;
        float r44970 = r44969 * r44969;
        float r44971 = 1.0;
        float r44972 = r44969 + r44971;
        float r44973 = r44970 * r44972;
        float r44974 = r44968 / r44973;
        return r44974;
}

double f_id(double x, double y) {
        double r44975 = x;
        double r44976 = y;
        double r44977 = r44975 * r44976;
        double r44978 = r44975 + r44976;
        double r44979 = r44978 * r44978;
        double r44980 = 1.0;
        double r44981 = r44978 + r44980;
        double r44982 = r44979 * r44981;
        double r44983 = r44977 / r44982;
        return r44983;
}


double f_of(float x, float y) {
        float r44984 = x;
        float r44985 = y;
        float r44986 = r44984 + r44985;
        float r44987 = r44984 / r44986;
        float r44988 = r44985 / r44986;
        float r44989 = 1.0;
        float r44990 = r44985 + r44989;
        float r44991 = r44990 + r44984;
        float r44992 = r44988 / r44991;
        float r44993 = r44987 * r44992;
        return r44993;
}

double f_od(double x, double y) {
        double r44994 = x;
        double r44995 = y;
        double r44996 = r44994 + r44995;
        double r44997 = r44994 / r44996;
        double r44998 = r44995 / r44996;
        double r44999 = 1.0;
        double r45000 = r44995 + r44999;
        double r45001 = r45000 + r44994;
        double r45002 = r44998 / r45001;
        double r45003 = r44997 * r45002;
        return r45003;
}

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 r45004, r45005, r45006, r45007, r45008, r45009, r45010, r45011, r45012;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45004);
        mpfr_init(r45005);
        mpfr_init(r45006);
        mpfr_init(r45007);
        mpfr_init(r45008);
        mpfr_init_set_str(r45009, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45010);
        mpfr_init(r45011);
        mpfr_init(r45012);
}

double f_im(double x, double y) {
        mpfr_set_d(r45004, x, MPFR_RNDN);
        mpfr_set_d(r45005, y, MPFR_RNDN);
        mpfr_mul(r45006, r45004, r45005, MPFR_RNDN);
        mpfr_add(r45007, r45004, r45005, MPFR_RNDN);
        mpfr_mul(r45008, r45007, r45007, MPFR_RNDN);
        ;
        mpfr_add(r45010, r45007, r45009, MPFR_RNDN);
        mpfr_mul(r45011, r45008, r45010, MPFR_RNDN);
        mpfr_div(r45012, r45006, r45011, MPFR_RNDN);
        return mpfr_get_d(r45012, MPFR_RNDN);
}

static mpfr_t r45013, r45014, r45015, r45016, r45017, r45018, r45019, r45020, r45021, r45022;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45013);
        mpfr_init(r45014);
        mpfr_init(r45015);
        mpfr_init(r45016);
        mpfr_init(r45017);
        mpfr_init_set_str(r45018, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45019);
        mpfr_init(r45020);
        mpfr_init(r45021);
        mpfr_init(r45022);
}

double f_fm(double x, double y) {
        mpfr_set_d(r45013, x, MPFR_RNDN);
        mpfr_set_d(r45014, y, MPFR_RNDN);
        mpfr_add(r45015, r45013, r45014, MPFR_RNDN);
        mpfr_div(r45016, r45013, r45015, MPFR_RNDN);
        mpfr_div(r45017, r45014, r45015, MPFR_RNDN);
        ;
        mpfr_add(r45019, r45014, r45018, MPFR_RNDN);
        mpfr_add(r45020, r45019, r45013, MPFR_RNDN);
        mpfr_div(r45021, r45017, r45020, MPFR_RNDN);
        mpfr_mul(r45022, r45016, r45021, MPFR_RNDN);
        return mpfr_get_d(r45022, MPFR_RNDN);
}

static mpfr_t r45023, r45024, r45025, r45026, r45027, r45028, r45029, r45030, r45031, r45032;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45023);
        mpfr_init(r45024);
        mpfr_init(r45025);
        mpfr_init(r45026);
        mpfr_init(r45027);
        mpfr_init_set_str(r45028, "1.0", 10, MPFR_RNDN);
        mpfr_init(r45029);
        mpfr_init(r45030);
        mpfr_init(r45031);
        mpfr_init(r45032);
}

double f_dm(double x, double y) {
        mpfr_set_d(r45023, x, MPFR_RNDN);
        mpfr_set_d(r45024, y, MPFR_RNDN);
        mpfr_add(r45025, r45023, r45024, MPFR_RNDN);
        mpfr_div(r45026, r45023, r45025, MPFR_RNDN);
        mpfr_div(r45027, r45024, r45025, MPFR_RNDN);
        ;
        mpfr_add(r45029, r45024, r45028, MPFR_RNDN);
        mpfr_add(r45030, r45029, r45023, MPFR_RNDN);
        mpfr_div(r45031, r45027, r45030, MPFR_RNDN);
        mpfr_mul(r45032, r45026, r45031, MPFR_RNDN);
        return mpfr_get_d(r45032, MPFR_RNDN);
}

