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

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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r9834 = x;
        float r9835 = y;
        float r9836 = z;
        float r9837 = log(r9836);
        float r9838 = r9835 * r9837;
        float r9839 = t;
        float r9840 = 1.0;
        float r9841 = r9839 - r9840;
        float r9842 = a;
        float r9843 = log(r9842);
        float r9844 = r9841 * r9843;
        float r9845 = r9838 + r9844;
        float r9846 = b;
        float r9847 = r9845 - r9846;
        float r9848 = exp(r9847);
        float r9849 = r9834 * r9848;
        float r9850 = r9849 / r9835;
        return r9850;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r9851 = x;
        double r9852 = y;
        double r9853 = z;
        double r9854 = log(r9853);
        double r9855 = r9852 * r9854;
        double r9856 = t;
        double r9857 = 1.0;
        double r9858 = r9856 - r9857;
        double r9859 = a;
        double r9860 = log(r9859);
        double r9861 = r9858 * r9860;
        double r9862 = r9855 + r9861;
        double r9863 = b;
        double r9864 = r9862 - r9863;
        double r9865 = exp(r9864);
        double r9866 = r9851 * r9865;
        double r9867 = r9866 / r9852;
        return r9867;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r9868 = b;
        float r9869 = exp(r9868);
        float r9870 = a;
        float r9871 = t;
        float r9872 = 1.0;
        float r9873 = r9871 - r9872;
        float r9874 = pow(r9870, r9873);
        float r9875 = r9869 / r9874;
        float r9876 = 7.814213043956812e-163;
        bool r9877 = r9875 <= r9876;
        float r9878 = 1.88510480953367e+301;
        bool r9879 = r9875 <= r9878;
        float r9880 = !r9879;
        bool r9881 = r9877 || r9880;
        float r9882 = x;
        float r9883 = z;
        float r9884 = log(r9883);
        float r9885 = y;
        float r9886 = r9884 * r9885;
        float r9887 = log(r9870);
        float r9888 = r9887 * r9873;
        float r9889 = r9886 + r9888;
        float r9890 = r9889 - r9868;
        float r9891 = cbrt(r9890);
        float r9892 = r9891 * r9891;
        float r9893 = exp(r9892);
        float r9894 = pow(r9893, r9891);
        float r9895 = r9882 * r9894;
        float r9896 = r9895 / r9885;
        float r9897 = r9885 * r9869;
        float r9898 = pow(r9883, r9885);
        float r9899 = r9898 * r9874;
        float r9900 = r9897 / r9899;
        float r9901 = r9882 / r9900;
        float r9902 = r9881 ? r9896 : r9901;
        return r9902;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r9903 = b;
        double r9904 = exp(r9903);
        double r9905 = a;
        double r9906 = t;
        double r9907 = 1.0;
        double r9908 = r9906 - r9907;
        double r9909 = pow(r9905, r9908);
        double r9910 = r9904 / r9909;
        double r9911 = 7.814213043956812e-163;
        bool r9912 = r9910 <= r9911;
        double r9913 = 1.88510480953367e+301;
        bool r9914 = r9910 <= r9913;
        double r9915 = !r9914;
        bool r9916 = r9912 || r9915;
        double r9917 = x;
        double r9918 = z;
        double r9919 = log(r9918);
        double r9920 = y;
        double r9921 = r9919 * r9920;
        double r9922 = log(r9905);
        double r9923 = r9922 * r9908;
        double r9924 = r9921 + r9923;
        double r9925 = r9924 - r9903;
        double r9926 = cbrt(r9925);
        double r9927 = r9926 * r9926;
        double r9928 = exp(r9927);
        double r9929 = pow(r9928, r9926);
        double r9930 = r9917 * r9929;
        double r9931 = r9930 / r9920;
        double r9932 = r9920 * r9904;
        double r9933 = pow(r9918, r9920);
        double r9934 = r9933 * r9909;
        double r9935 = r9932 / r9934;
        double r9936 = r9917 / r9935;
        double r9937 = r9916 ? r9931 : r9936;
        return r9937;
}

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 r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9938);
        mpfr_init(r9939);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init_set_str(r9944, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9945);
        mpfr_init(r9946);
        mpfr_init(r9947);
        mpfr_init(r9948);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9938, x, MPFR_RNDN);
        mpfr_set_d(r9939, y, MPFR_RNDN);
        mpfr_set_d(r9940, z, MPFR_RNDN);
        mpfr_log(r9941, r9940, MPFR_RNDN);
        mpfr_mul(r9942, r9939, r9941, MPFR_RNDN);
        mpfr_set_d(r9943, t, MPFR_RNDN);
        ;
        mpfr_sub(r9945, r9943, r9944, MPFR_RNDN);
        mpfr_set_d(r9946, a, MPFR_RNDN);
        mpfr_log(r9947, r9946, MPFR_RNDN);
        mpfr_mul(r9948, r9945, r9947, MPFR_RNDN);
        mpfr_add(r9949, r9942, r9948, MPFR_RNDN);
        mpfr_set_d(r9950, b, MPFR_RNDN);
        mpfr_sub(r9951, r9949, r9950, MPFR_RNDN);
        mpfr_exp(r9952, r9951, MPFR_RNDN);
        mpfr_mul(r9953, r9938, r9952, MPFR_RNDN);
        mpfr_div(r9954, r9953, r9939, MPFR_RNDN);
        return mpfr_get_d(r9954, MPFR_RNDN);
}

static mpfr_t r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982, r9983, r9984, r9985, r9986, r9987, r9988, r9989;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init_set_str(r9959, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init_set_str(r9963, "7.814213043956812e-163", 10, MPFR_RNDN);
        mpfr_init(r9964);
        mpfr_init_set_str(r9965, "1.88510480953367e+301", 10, MPFR_RNDN);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init(r9974);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init(r9977);
        mpfr_init(r9978);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
        mpfr_init(r9983);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init(r9987);
        mpfr_init(r9988);
        mpfr_init(r9989);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9955, b, MPFR_RNDN);
        mpfr_exp(r9956, r9955, MPFR_RNDN);
        mpfr_set_d(r9957, a, MPFR_RNDN);
        mpfr_set_d(r9958, t, MPFR_RNDN);
        ;
        mpfr_sub(r9960, r9958, r9959, MPFR_RNDN);
        mpfr_pow(r9961, r9957, r9960, MPFR_RNDN);
        mpfr_div(r9962, r9956, r9961, MPFR_RNDN);
        ;
        mpfr_set_si(r9964, mpfr_cmp(r9962, r9963) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9966, mpfr_cmp(r9962, r9965) <= 0, MPFR_RNDN);
        mpfr_set_si(r9967, !mpfr_get_si(r9966, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9968, mpfr_get_si(r9964, MPFR_RNDN) || mpfr_get_si(r9967, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r9969, x, MPFR_RNDN);
        mpfr_set_d(r9970, z, MPFR_RNDN);
        mpfr_log(r9971, r9970, MPFR_RNDN);
        mpfr_set_d(r9972, y, MPFR_RNDN);
        mpfr_mul(r9973, r9971, r9972, MPFR_RNDN);
        mpfr_log(r9974, r9957, MPFR_RNDN);
        mpfr_mul(r9975, r9974, r9960, MPFR_RNDN);
        mpfr_add(r9976, r9973, r9975, MPFR_RNDN);
        mpfr_sub(r9977, r9976, r9955, MPFR_RNDN);
        mpfr_cbrt(r9978, r9977, MPFR_RNDN);
        mpfr_mul(r9979, r9978, r9978, MPFR_RNDN);
        mpfr_exp(r9980, r9979, MPFR_RNDN);
        mpfr_pow(r9981, r9980, r9978, MPFR_RNDN);
        mpfr_mul(r9982, r9969, r9981, MPFR_RNDN);
        mpfr_div(r9983, r9982, r9972, MPFR_RNDN);
        mpfr_mul(r9984, r9972, r9956, MPFR_RNDN);
        mpfr_pow(r9985, r9970, r9972, MPFR_RNDN);
        mpfr_mul(r9986, r9985, r9961, MPFR_RNDN);
        mpfr_div(r9987, r9984, r9986, MPFR_RNDN);
        mpfr_div(r9988, r9969, r9987, MPFR_RNDN);
        if (mpfr_get_si(r9968, MPFR_RNDN)) { mpfr_set(r9989, r9983, MPFR_RNDN); } else { mpfr_set(r9989, r9988, MPFR_RNDN); };
        return mpfr_get_d(r9989, MPFR_RNDN);
}

static mpfr_t r9990, r9991, r9992, r9993, r9994, r9995, r9996, r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011, r10012, r10013, r10014, r10015, r10016, r10017, r10018, r10019, r10020, r10021, r10022, r10023, r10024;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
        mpfr_init_set_str(r9994, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9995);
        mpfr_init(r9996);
        mpfr_init(r9997);
        mpfr_init_set_str(r9998, "7.814213043956812e-163", 10, MPFR_RNDN);
        mpfr_init(r9999);
        mpfr_init_set_str(r10000, "1.88510480953367e+301", 10, MPFR_RNDN);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
        mpfr_init(r10010);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init(r10023);
        mpfr_init(r10024);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9990, b, MPFR_RNDN);
        mpfr_exp(r9991, r9990, MPFR_RNDN);
        mpfr_set_d(r9992, a, MPFR_RNDN);
        mpfr_set_d(r9993, t, MPFR_RNDN);
        ;
        mpfr_sub(r9995, r9993, r9994, MPFR_RNDN);
        mpfr_pow(r9996, r9992, r9995, MPFR_RNDN);
        mpfr_div(r9997, r9991, r9996, MPFR_RNDN);
        ;
        mpfr_set_si(r9999, mpfr_cmp(r9997, r9998) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10001, mpfr_cmp(r9997, r10000) <= 0, MPFR_RNDN);
        mpfr_set_si(r10002, !mpfr_get_si(r10001, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10003, mpfr_get_si(r9999, MPFR_RNDN) || mpfr_get_si(r10002, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r10004, x, MPFR_RNDN);
        mpfr_set_d(r10005, z, MPFR_RNDN);
        mpfr_log(r10006, r10005, MPFR_RNDN);
        mpfr_set_d(r10007, y, MPFR_RNDN);
        mpfr_mul(r10008, r10006, r10007, MPFR_RNDN);
        mpfr_log(r10009, r9992, MPFR_RNDN);
        mpfr_mul(r10010, r10009, r9995, MPFR_RNDN);
        mpfr_add(r10011, r10008, r10010, MPFR_RNDN);
        mpfr_sub(r10012, r10011, r9990, MPFR_RNDN);
        mpfr_cbrt(r10013, r10012, MPFR_RNDN);
        mpfr_mul(r10014, r10013, r10013, MPFR_RNDN);
        mpfr_exp(r10015, r10014, MPFR_RNDN);
        mpfr_pow(r10016, r10015, r10013, MPFR_RNDN);
        mpfr_mul(r10017, r10004, r10016, MPFR_RNDN);
        mpfr_div(r10018, r10017, r10007, MPFR_RNDN);
        mpfr_mul(r10019, r10007, r9991, MPFR_RNDN);
        mpfr_pow(r10020, r10005, r10007, MPFR_RNDN);
        mpfr_mul(r10021, r10020, r9996, MPFR_RNDN);
        mpfr_div(r10022, r10019, r10021, MPFR_RNDN);
        mpfr_div(r10023, r10004, r10022, MPFR_RNDN);
        if (mpfr_get_si(r10003, MPFR_RNDN)) { mpfr_set(r10024, r10018, MPFR_RNDN); } else { mpfr_set(r10024, r10023, MPFR_RNDN); };
        return mpfr_get_d(r10024, MPFR_RNDN);
}

