#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, B";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r44843 = x;
        float r44844 = y;
        float r44845 = z;
        float r44846 = log(r44845);
        float r44847 = t;
        float r44848 = r44846 - r44847;
        float r44849 = r44844 * r44848;
        float r44850 = a;
        float r44851 = 1.0;
        float r44852 = r44851 - r44845;
        float r44853 = log(r44852);
        float r44854 = b;
        float r44855 = r44853 - r44854;
        float r44856 = r44850 * r44855;
        float r44857 = r44849 + r44856;
        float r44858 = exp(r44857);
        float r44859 = r44843 * r44858;
        return r44859;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r44860 = x;
        double r44861 = y;
        double r44862 = z;
        double r44863 = log(r44862);
        double r44864 = t;
        double r44865 = r44863 - r44864;
        double r44866 = r44861 * r44865;
        double r44867 = a;
        double r44868 = 1.0;
        double r44869 = r44868 - r44862;
        double r44870 = log(r44869);
        double r44871 = b;
        double r44872 = r44870 - r44871;
        double r44873 = r44867 * r44872;
        double r44874 = r44866 + r44873;
        double r44875 = exp(r44874);
        double r44876 = r44860 * r44875;
        return r44876;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r44877 = x;
        float r44878 = 6.162182387522347e-283;
        bool r44879 = r44877 <= r44878;
        float r44880 = 1.0;
        float r44881 = z;
        float r44882 = r44880 - r44881;
        float r44883 = log(r44882);
        float r44884 = b;
        float r44885 = r44883 - r44884;
        float r44886 = a;
        float r44887 = r44885 * r44886;
        float r44888 = exp(r44887);
        float r44889 = r44877 * r44888;
        float r44890 = y;
        float r44891 = log(r44881);
        float r44892 = t;
        float r44893 = r44891 - r44892;
        float r44894 = r44890 * r44893;
        float r44895 = exp(r44894);
        float r44896 = r44889 * r44895;
        float r44897 = log(r44877);
        float r44898 = r44893 * r44890;
        float r44899 = r44897 + r44898;
        float r44900 = r44886 * r44885;
        float r44901 = r44899 + r44900;
        float r44902 = exp(r44901);
        float r44903 = r44879 ? r44896 : r44902;
        return r44903;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r44904 = x;
        double r44905 = 6.162182387522347e-283;
        bool r44906 = r44904 <= r44905;
        double r44907 = 1.0;
        double r44908 = z;
        double r44909 = r44907 - r44908;
        double r44910 = log(r44909);
        double r44911 = b;
        double r44912 = r44910 - r44911;
        double r44913 = a;
        double r44914 = r44912 * r44913;
        double r44915 = exp(r44914);
        double r44916 = r44904 * r44915;
        double r44917 = y;
        double r44918 = log(r44908);
        double r44919 = t;
        double r44920 = r44918 - r44919;
        double r44921 = r44917 * r44920;
        double r44922 = exp(r44921);
        double r44923 = r44916 * r44922;
        double r44924 = log(r44904);
        double r44925 = r44920 * r44917;
        double r44926 = r44924 + r44925;
        double r44927 = r44913 * r44912;
        double r44928 = r44926 + r44927;
        double r44929 = exp(r44928);
        double r44930 = r44906 ? r44923 : r44929;
        return r44930;
}

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 r44931, r44932, r44933, r44934, r44935, r44936, r44937, r44938, r44939, r44940, r44941, r44942, r44943, r44944, r44945, r44946, r44947;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44931);
        mpfr_init(r44932);
        mpfr_init(r44933);
        mpfr_init(r44934);
        mpfr_init(r44935);
        mpfr_init(r44936);
        mpfr_init(r44937);
        mpfr_init(r44938);
        mpfr_init_set_str(r44939, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44940);
        mpfr_init(r44941);
        mpfr_init(r44942);
        mpfr_init(r44943);
        mpfr_init(r44944);
        mpfr_init(r44945);
        mpfr_init(r44946);
        mpfr_init(r44947);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44931, x, MPFR_RNDN);
        mpfr_set_d(r44932, y, MPFR_RNDN);
        mpfr_set_d(r44933, z, MPFR_RNDN);
        mpfr_log(r44934, r44933, MPFR_RNDN);
        mpfr_set_d(r44935, t, MPFR_RNDN);
        mpfr_sub(r44936, r44934, r44935, MPFR_RNDN);
        mpfr_mul(r44937, r44932, r44936, MPFR_RNDN);
        mpfr_set_d(r44938, a, MPFR_RNDN);
        ;
        mpfr_sub(r44940, r44939, r44933, MPFR_RNDN);
        mpfr_log(r44941, r44940, MPFR_RNDN);
        mpfr_set_d(r44942, b, MPFR_RNDN);
        mpfr_sub(r44943, r44941, r44942, MPFR_RNDN);
        mpfr_mul(r44944, r44938, r44943, MPFR_RNDN);
        mpfr_add(r44945, r44937, r44944, MPFR_RNDN);
        mpfr_exp(r44946, r44945, MPFR_RNDN);
        mpfr_mul(r44947, r44931, r44946, MPFR_RNDN);
        return mpfr_get_d(r44947, MPFR_RNDN);
}

static mpfr_t r44948, r44949, r44950, r44951, r44952, r44953, r44954, r44955, r44956, r44957, r44958, r44959, r44960, r44961, r44962, r44963, r44964, r44965, r44966, r44967, r44968, r44969, r44970, r44971, r44972, r44973, r44974;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44948);
        mpfr_init_set_str(r44949, "6.162182387522347e-283", 10, MPFR_RNDN);
        mpfr_init(r44950);
        mpfr_init_set_str(r44951, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44952);
        mpfr_init(r44953);
        mpfr_init(r44954);
        mpfr_init(r44955);
        mpfr_init(r44956);
        mpfr_init(r44957);
        mpfr_init(r44958);
        mpfr_init(r44959);
        mpfr_init(r44960);
        mpfr_init(r44961);
        mpfr_init(r44962);
        mpfr_init(r44963);
        mpfr_init(r44964);
        mpfr_init(r44965);
        mpfr_init(r44966);
        mpfr_init(r44967);
        mpfr_init(r44968);
        mpfr_init(r44969);
        mpfr_init(r44970);
        mpfr_init(r44971);
        mpfr_init(r44972);
        mpfr_init(r44973);
        mpfr_init(r44974);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44948, x, MPFR_RNDN);
        ;
        mpfr_set_si(r44950, mpfr_cmp(r44948, r44949) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r44952, z, MPFR_RNDN);
        mpfr_sub(r44953, r44951, r44952, MPFR_RNDN);
        mpfr_log(r44954, r44953, MPFR_RNDN);
        mpfr_set_d(r44955, b, MPFR_RNDN);
        mpfr_sub(r44956, r44954, r44955, MPFR_RNDN);
        mpfr_set_d(r44957, a, MPFR_RNDN);
        mpfr_mul(r44958, r44956, r44957, MPFR_RNDN);
        mpfr_exp(r44959, r44958, MPFR_RNDN);
        mpfr_mul(r44960, r44948, r44959, MPFR_RNDN);
        mpfr_set_d(r44961, y, MPFR_RNDN);
        mpfr_log(r44962, r44952, MPFR_RNDN);
        mpfr_set_d(r44963, t, MPFR_RNDN);
        mpfr_sub(r44964, r44962, r44963, MPFR_RNDN);
        mpfr_mul(r44965, r44961, r44964, MPFR_RNDN);
        mpfr_exp(r44966, r44965, MPFR_RNDN);
        mpfr_mul(r44967, r44960, r44966, MPFR_RNDN);
        mpfr_log(r44968, r44948, MPFR_RNDN);
        mpfr_mul(r44969, r44964, r44961, MPFR_RNDN);
        mpfr_add(r44970, r44968, r44969, MPFR_RNDN);
        mpfr_mul(r44971, r44957, r44956, MPFR_RNDN);
        mpfr_add(r44972, r44970, r44971, MPFR_RNDN);
        mpfr_exp(r44973, r44972, MPFR_RNDN);
        if (mpfr_get_si(r44950, MPFR_RNDN)) { mpfr_set(r44974, r44967, MPFR_RNDN); } else { mpfr_set(r44974, r44973, MPFR_RNDN); };
        return mpfr_get_d(r44974, MPFR_RNDN);
}

static mpfr_t r44975, r44976, r44977, r44978, r44979, r44980, r44981, r44982, r44983, r44984, r44985, r44986, r44987, r44988, r44989, r44990, r44991, r44992, r44993, r44994, r44995, r44996, r44997, r44998, r44999, r45000, r45001;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44975);
        mpfr_init_set_str(r44976, "6.162182387522347e-283", 10, MPFR_RNDN);
        mpfr_init(r44977);
        mpfr_init_set_str(r44978, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44979);
        mpfr_init(r44980);
        mpfr_init(r44981);
        mpfr_init(r44982);
        mpfr_init(r44983);
        mpfr_init(r44984);
        mpfr_init(r44985);
        mpfr_init(r44986);
        mpfr_init(r44987);
        mpfr_init(r44988);
        mpfr_init(r44989);
        mpfr_init(r44990);
        mpfr_init(r44991);
        mpfr_init(r44992);
        mpfr_init(r44993);
        mpfr_init(r44994);
        mpfr_init(r44995);
        mpfr_init(r44996);
        mpfr_init(r44997);
        mpfr_init(r44998);
        mpfr_init(r44999);
        mpfr_init(r45000);
        mpfr_init(r45001);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44975, x, MPFR_RNDN);
        ;
        mpfr_set_si(r44977, mpfr_cmp(r44975, r44976) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r44979, z, MPFR_RNDN);
        mpfr_sub(r44980, r44978, r44979, MPFR_RNDN);
        mpfr_log(r44981, r44980, MPFR_RNDN);
        mpfr_set_d(r44982, b, MPFR_RNDN);
        mpfr_sub(r44983, r44981, r44982, MPFR_RNDN);
        mpfr_set_d(r44984, a, MPFR_RNDN);
        mpfr_mul(r44985, r44983, r44984, MPFR_RNDN);
        mpfr_exp(r44986, r44985, MPFR_RNDN);
        mpfr_mul(r44987, r44975, r44986, MPFR_RNDN);
        mpfr_set_d(r44988, y, MPFR_RNDN);
        mpfr_log(r44989, r44979, MPFR_RNDN);
        mpfr_set_d(r44990, t, MPFR_RNDN);
        mpfr_sub(r44991, r44989, r44990, MPFR_RNDN);
        mpfr_mul(r44992, r44988, r44991, MPFR_RNDN);
        mpfr_exp(r44993, r44992, MPFR_RNDN);
        mpfr_mul(r44994, r44987, r44993, MPFR_RNDN);
        mpfr_log(r44995, r44975, MPFR_RNDN);
        mpfr_mul(r44996, r44991, r44988, MPFR_RNDN);
        mpfr_add(r44997, r44995, r44996, MPFR_RNDN);
        mpfr_mul(r44998, r44984, r44983, MPFR_RNDN);
        mpfr_add(r44999, r44997, r44998, MPFR_RNDN);
        mpfr_exp(r45000, r44999, MPFR_RNDN);
        if (mpfr_get_si(r44977, MPFR_RNDN)) { mpfr_set(r45001, r44994, MPFR_RNDN); } else { mpfr_set(r45001, r45000, MPFR_RNDN); };
        return mpfr_get_d(r45001, MPFR_RNDN);
}

