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

char *name = "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t, float a, float b, float c) {
        float r8883 = x;
        float r8884 = y;
        float r8885 = 2.0f;
        float r8886 = z;
        float r8887 = t;
        float r8888 = a;
        float r8889 = r8887 + r8888;
        float r8890 = sqrt(r8889);
        float r8891 = r8886 * r8890;
        float r8892 = r8891 / r8887;
        float r8893 = b;
        float r8894 = c;
        float r8895 = r8893 - r8894;
        float r8896 = 5.0f;
        float r8897 = 6.0f;
        float r8898 = r8896 / r8897;
        float r8899 = r8888 + r8898;
        float r8900 = 3.0f;
        float r8901 = r8887 * r8900;
        float r8902 = r8885 / r8901;
        float r8903 = r8899 - r8902;
        float r8904 = r8895 * r8903;
        float r8905 = r8892 - r8904;
        float r8906 = r8885 * r8905;
        float r8907 = exp(r8906);
        float r8908 = r8884 * r8907;
        float r8909 = r8883 + r8908;
        float r8910 = r8883 / r8909;
        return r8910;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r8911 = x;
        double r8912 = y;
        double r8913 = 2.0;
        double r8914 = z;
        double r8915 = t;
        double r8916 = a;
        double r8917 = r8915 + r8916;
        double r8918 = sqrt(r8917);
        double r8919 = r8914 * r8918;
        double r8920 = r8919 / r8915;
        double r8921 = b;
        double r8922 = c;
        double r8923 = r8921 - r8922;
        double r8924 = 5.0;
        double r8925 = 6.0;
        double r8926 = r8924 / r8925;
        double r8927 = r8916 + r8926;
        double r8928 = 3.0;
        double r8929 = r8915 * r8928;
        double r8930 = r8913 / r8929;
        double r8931 = r8927 - r8930;
        double r8932 = r8923 * r8931;
        double r8933 = r8920 - r8932;
        double r8934 = r8913 * r8933;
        double r8935 = exp(r8934);
        double r8936 = r8912 * r8935;
        double r8937 = r8911 + r8936;
        double r8938 = r8911 / r8937;
        return r8938;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r8939 = x;
        float r8940 = y;
        float r8941 = c;
        float r8942 = b;
        float r8943 = r8941 - r8942;
        float r8944 = 2.0f;
        float r8945 = r8943 * r8944;
        float r8946 = a;
        float r8947 = 5.0f;
        float r8948 = 6.0f;
        float r8949 = r8947 / r8948;
        float r8950 = r8946 + r8949;
        float r8951 = t;
        float r8952 = r8944 / r8951;
        float r8953 = 3.0f;
        float r8954 = r8952 / r8953;
        float r8955 = r8950 - r8954;
        float r8956 = r8951 + r8946;
        float r8957 = sqrt(r8956);
        float r8958 = z;
        float r8959 = r8958 / r8951;
        float r8960 = r8944 * r8959;
        float r8961 = r8957 * r8960;
        float r8962 = fma(r8945, r8955, r8961);
        float r8963 = exp(r8962);
        float r8964 = fma(r8940, r8963, r8939);
        float r8965 = r8939 / r8964;
        return r8965;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r8966 = x;
        double r8967 = y;
        double r8968 = c;
        double r8969 = b;
        double r8970 = r8968 - r8969;
        double r8971 = 2.0;
        double r8972 = r8970 * r8971;
        double r8973 = a;
        double r8974 = 5.0;
        double r8975 = 6.0;
        double r8976 = r8974 / r8975;
        double r8977 = r8973 + r8976;
        double r8978 = t;
        double r8979 = r8971 / r8978;
        double r8980 = 3.0;
        double r8981 = r8979 / r8980;
        double r8982 = r8977 - r8981;
        double r8983 = r8978 + r8973;
        double r8984 = sqrt(r8983);
        double r8985 = z;
        double r8986 = r8985 / r8978;
        double r8987 = r8971 * r8986;
        double r8988 = r8984 * r8987;
        double r8989 = fma(r8972, r8982, r8988);
        double r8990 = exp(r8989);
        double r8991 = fma(r8967, r8990, r8966);
        double r8992 = r8966 / r8991;
        return r8992;
}

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 r8993, r8994, r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006, r9007, r9008, r9009, r9010, r9011, r9012, r9013, r9014, r9015, r9016, r9017, r9018, r9019, r9020;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8993);
        mpfr_init(r8994);
        mpfr_init_set_str(r8995, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8996);
        mpfr_init(r8997);
        mpfr_init(r8998);
        mpfr_init(r8999);
        mpfr_init(r9000);
        mpfr_init(r9001);
        mpfr_init(r9002);
        mpfr_init(r9003);
        mpfr_init(r9004);
        mpfr_init(r9005);
        mpfr_init_set_str(r9006, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9007, "6.0", 10, MPFR_RNDN);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init_set_str(r9010, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9011);
        mpfr_init(r9012);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init(r9015);
        mpfr_init(r9016);
        mpfr_init(r9017);
        mpfr_init(r9018);
        mpfr_init(r9019);
        mpfr_init(r9020);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r8993, x, MPFR_RNDN);
        mpfr_set_d(r8994, y, MPFR_RNDN);
        ;
        mpfr_set_d(r8996, z, MPFR_RNDN);
        mpfr_set_d(r8997, t, MPFR_RNDN);
        mpfr_set_d(r8998, a, MPFR_RNDN);
        mpfr_add(r8999, r8997, r8998, MPFR_RNDN);
        mpfr_sqrt(r9000, r8999, MPFR_RNDN);
        mpfr_mul(r9001, r8996, r9000, MPFR_RNDN);
        mpfr_div(r9002, r9001, r8997, MPFR_RNDN);
        mpfr_set_d(r9003, b, MPFR_RNDN);
        mpfr_set_d(r9004, c, MPFR_RNDN);
        mpfr_sub(r9005, r9003, r9004, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9008, r9006, r9007, MPFR_RNDN);
        mpfr_add(r9009, r8998, r9008, MPFR_RNDN);
        ;
        mpfr_mul(r9011, r8997, r9010, MPFR_RNDN);
        mpfr_div(r9012, r8995, r9011, MPFR_RNDN);
        mpfr_sub(r9013, r9009, r9012, MPFR_RNDN);
        mpfr_mul(r9014, r9005, r9013, MPFR_RNDN);
        mpfr_sub(r9015, r9002, r9014, MPFR_RNDN);
        mpfr_mul(r9016, r8995, r9015, MPFR_RNDN);
        mpfr_exp(r9017, r9016, MPFR_RNDN);
        mpfr_mul(r9018, r8994, r9017, MPFR_RNDN);
        mpfr_add(r9019, r8993, r9018, MPFR_RNDN);
        mpfr_div(r9020, r8993, r9019, MPFR_RNDN);
        return mpfr_get_d(r9020, MPFR_RNDN);
}

static mpfr_t r9021, r9022, r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030, r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9021);
        mpfr_init(r9022);
        mpfr_init(r9023);
        mpfr_init(r9024);
        mpfr_init(r9025);
        mpfr_init_set_str(r9026, "2.0", 10, MPFR_RNDN);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init_set_str(r9029, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9030, "6.0", 10, MPFR_RNDN);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init_set_str(r9035, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r9021, x, MPFR_RNDN);
        mpfr_set_d(r9022, y, MPFR_RNDN);
        mpfr_set_d(r9023, c, MPFR_RNDN);
        mpfr_set_d(r9024, b, MPFR_RNDN);
        mpfr_sub(r9025, r9023, r9024, MPFR_RNDN);
        ;
        mpfr_mul(r9027, r9025, r9026, MPFR_RNDN);
        mpfr_set_d(r9028, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9031, r9029, r9030, MPFR_RNDN);
        mpfr_add(r9032, r9028, r9031, MPFR_RNDN);
        mpfr_set_d(r9033, t, MPFR_RNDN);
        mpfr_div(r9034, r9026, r9033, MPFR_RNDN);
        ;
        mpfr_div(r9036, r9034, r9035, MPFR_RNDN);
        mpfr_sub(r9037, r9032, r9036, MPFR_RNDN);
        mpfr_add(r9038, r9033, r9028, MPFR_RNDN);
        mpfr_sqrt(r9039, r9038, MPFR_RNDN);
        mpfr_set_d(r9040, z, MPFR_RNDN);
        mpfr_div(r9041, r9040, r9033, MPFR_RNDN);
        mpfr_mul(r9042, r9026, r9041, MPFR_RNDN);
        mpfr_mul(r9043, r9039, r9042, MPFR_RNDN);
        mpfr_fma(r9044, r9027, r9037, r9043, MPFR_RNDN);
        mpfr_exp(r9045, r9044, MPFR_RNDN);
        mpfr_fma(r9046, r9022, r9045, r9021, MPFR_RNDN);
        mpfr_div(r9047, r9021, r9046, MPFR_RNDN);
        return mpfr_get_d(r9047, MPFR_RNDN);
}

static mpfr_t r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init(r9050);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init_set_str(r9053, "2.0", 10, MPFR_RNDN);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init_set_str(r9056, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9057, "6.0", 10, MPFR_RNDN);
        mpfr_init(r9058);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init_set_str(r9062, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r9048, x, MPFR_RNDN);
        mpfr_set_d(r9049, y, MPFR_RNDN);
        mpfr_set_d(r9050, c, MPFR_RNDN);
        mpfr_set_d(r9051, b, MPFR_RNDN);
        mpfr_sub(r9052, r9050, r9051, MPFR_RNDN);
        ;
        mpfr_mul(r9054, r9052, r9053, MPFR_RNDN);
        mpfr_set_d(r9055, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9058, r9056, r9057, MPFR_RNDN);
        mpfr_add(r9059, r9055, r9058, MPFR_RNDN);
        mpfr_set_d(r9060, t, MPFR_RNDN);
        mpfr_div(r9061, r9053, r9060, MPFR_RNDN);
        ;
        mpfr_div(r9063, r9061, r9062, MPFR_RNDN);
        mpfr_sub(r9064, r9059, r9063, MPFR_RNDN);
        mpfr_add(r9065, r9060, r9055, MPFR_RNDN);
        mpfr_sqrt(r9066, r9065, MPFR_RNDN);
        mpfr_set_d(r9067, z, MPFR_RNDN);
        mpfr_div(r9068, r9067, r9060, MPFR_RNDN);
        mpfr_mul(r9069, r9053, r9068, MPFR_RNDN);
        mpfr_mul(r9070, r9066, r9069, MPFR_RNDN);
        mpfr_fma(r9071, r9054, r9064, r9070, MPFR_RNDN);
        mpfr_exp(r9072, r9071, MPFR_RNDN);
        mpfr_fma(r9073, r9049, r9072, r9048, MPFR_RNDN);
        mpfr_div(r9074, r9048, r9073, MPFR_RNDN);
        return mpfr_get_d(r9074, MPFR_RNDN);
}

