#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 r9806 = x;
        float r9807 = y;
        float r9808 = z;
        float r9809 = log(r9808);
        float r9810 = r9807 * r9809;
        float r9811 = t;
        float r9812 = 1.0;
        float r9813 = r9811 - r9812;
        float r9814 = a;
        float r9815 = log(r9814);
        float r9816 = r9813 * r9815;
        float r9817 = r9810 + r9816;
        float r9818 = b;
        float r9819 = r9817 - r9818;
        float r9820 = exp(r9819);
        float r9821 = r9806 * r9820;
        float r9822 = r9821 / r9807;
        return r9822;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r9823 = x;
        double r9824 = y;
        double r9825 = z;
        double r9826 = log(r9825);
        double r9827 = r9824 * r9826;
        double r9828 = t;
        double r9829 = 1.0;
        double r9830 = r9828 - r9829;
        double r9831 = a;
        double r9832 = log(r9831);
        double r9833 = r9830 * r9832;
        double r9834 = r9827 + r9833;
        double r9835 = b;
        double r9836 = r9834 - r9835;
        double r9837 = exp(r9836);
        double r9838 = r9823 * r9837;
        double r9839 = r9838 / r9824;
        return r9839;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r9840 = a;
        float r9841 = t;
        float r9842 = 1.0;
        float r9843 = r9841 - r9842;
        float r9844 = pow(r9840, r9843);
        float r9845 = b;
        float r9846 = exp(r9845);
        float r9847 = r9844 / r9846;
        float r9848 = 1.3132982387813807e-305;
        bool r9849 = r9847 <= r9848;
        float r9850 = 8.899030995520257e+57;
        bool r9851 = r9847 <= r9850;
        float r9852 = !r9851;
        bool r9853 = r9849 || r9852;
        float r9854 = exp(1.0);
        float r9855 = log(r9840);
        float r9856 = r9843 * r9855;
        float r9857 = y;
        float r9858 = z;
        float r9859 = log(r9858);
        float r9860 = r9857 * r9859;
        float r9861 = r9856 + r9860;
        float r9862 = r9861 - r9845;
        float r9863 = pow(r9854, r9862);
        float r9864 = x;
        float r9865 = r9863 * r9864;
        float r9866 = r9865 / r9857;
        float r9867 = pow(r9858, r9857);
        float r9868 = r9867 * r9864;
        float r9869 = r9868 / r9846;
        float r9870 = r9844 / r9857;
        float r9871 = r9869 * r9870;
        float r9872 = r9853 ? r9866 : r9871;
        return r9872;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r9873 = a;
        double r9874 = t;
        double r9875 = 1.0;
        double r9876 = r9874 - r9875;
        double r9877 = pow(r9873, r9876);
        double r9878 = b;
        double r9879 = exp(r9878);
        double r9880 = r9877 / r9879;
        double r9881 = 1.3132982387813807e-305;
        bool r9882 = r9880 <= r9881;
        double r9883 = 8.899030995520257e+57;
        bool r9884 = r9880 <= r9883;
        double r9885 = !r9884;
        bool r9886 = r9882 || r9885;
        double r9887 = exp(1.0);
        double r9888 = log(r9873);
        double r9889 = r9876 * r9888;
        double r9890 = y;
        double r9891 = z;
        double r9892 = log(r9891);
        double r9893 = r9890 * r9892;
        double r9894 = r9889 + r9893;
        double r9895 = r9894 - r9878;
        double r9896 = pow(r9887, r9895);
        double r9897 = x;
        double r9898 = r9896 * r9897;
        double r9899 = r9898 / r9890;
        double r9900 = pow(r9891, r9890);
        double r9901 = r9900 * r9897;
        double r9902 = r9901 / r9879;
        double r9903 = r9877 / r9890;
        double r9904 = r9902 * r9903;
        double r9905 = r9886 ? r9899 : r9904;
        return r9905;
}

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 r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914, r9915, r9916, r9917, r9918, r9919, r9920, r9921, r9922;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
        mpfr_init(r9909);
        mpfr_init(r9910);
        mpfr_init(r9911);
        mpfr_init_set_str(r9912, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
        mpfr_init(r9918);
        mpfr_init(r9919);
        mpfr_init(r9920);
        mpfr_init(r9921);
        mpfr_init(r9922);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9906, x, MPFR_RNDN);
        mpfr_set_d(r9907, y, MPFR_RNDN);
        mpfr_set_d(r9908, z, MPFR_RNDN);
        mpfr_log(r9909, r9908, MPFR_RNDN);
        mpfr_mul(r9910, r9907, r9909, MPFR_RNDN);
        mpfr_set_d(r9911, t, MPFR_RNDN);
        ;
        mpfr_sub(r9913, r9911, r9912, MPFR_RNDN);
        mpfr_set_d(r9914, a, MPFR_RNDN);
        mpfr_log(r9915, r9914, MPFR_RNDN);
        mpfr_mul(r9916, r9913, r9915, MPFR_RNDN);
        mpfr_add(r9917, r9910, r9916, MPFR_RNDN);
        mpfr_set_d(r9918, b, MPFR_RNDN);
        mpfr_sub(r9919, r9917, r9918, MPFR_RNDN);
        mpfr_exp(r9920, r9919, MPFR_RNDN);
        mpfr_mul(r9921, r9906, r9920, MPFR_RNDN);
        mpfr_div(r9922, r9921, r9907, MPFR_RNDN);
        return mpfr_get_d(r9922, MPFR_RNDN);
}

static mpfr_t r9923, r9924, r9925, r9926, r9927, r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9923);
        mpfr_init(r9924);
        mpfr_init_set_str(r9925, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9926);
        mpfr_init(r9927);
        mpfr_init(r9928);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init_set_str(r9931, "1.3132982387813807e-305", 10, MPFR_RNDN);
        mpfr_init(r9932);
        mpfr_init_set_str(r9933, "8.899030995520257e+57", 10, MPFR_RNDN);
        mpfr_init(r9934);
        mpfr_init(r9935);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
        mpfr_init(r9939);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        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);
        mpfr_init(r9955);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9923, a, MPFR_RNDN);
        mpfr_set_d(r9924, t, MPFR_RNDN);
        ;
        mpfr_sub(r9926, r9924, r9925, MPFR_RNDN);
        mpfr_pow(r9927, r9923, r9926, MPFR_RNDN);
        mpfr_set_d(r9928, b, MPFR_RNDN);
        mpfr_exp(r9929, r9928, MPFR_RNDN);
        mpfr_div(r9930, r9927, r9929, MPFR_RNDN);
        ;
        mpfr_set_si(r9932, mpfr_cmp(r9930, r9931) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9934, mpfr_cmp(r9930, r9933) <= 0, MPFR_RNDN);
        mpfr_set_si(r9935, !mpfr_get_si(r9934, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9936, mpfr_get_si(r9932, MPFR_RNDN) || mpfr_get_si(r9935, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9937, 1, MPFR_RNDN), mpfr_const_exp(r9937, r9937, MPFR_RNDN);
        mpfr_log(r9938, r9923, MPFR_RNDN);
        mpfr_mul(r9939, r9926, r9938, MPFR_RNDN);
        mpfr_set_d(r9940, y, MPFR_RNDN);
        mpfr_set_d(r9941, z, MPFR_RNDN);
        mpfr_log(r9942, r9941, MPFR_RNDN);
        mpfr_mul(r9943, r9940, r9942, MPFR_RNDN);
        mpfr_add(r9944, r9939, r9943, MPFR_RNDN);
        mpfr_sub(r9945, r9944, r9928, MPFR_RNDN);
        mpfr_pow(r9946, r9937, r9945, MPFR_RNDN);
        mpfr_set_d(r9947, x, MPFR_RNDN);
        mpfr_mul(r9948, r9946, r9947, MPFR_RNDN);
        mpfr_div(r9949, r9948, r9940, MPFR_RNDN);
        mpfr_pow(r9950, r9941, r9940, MPFR_RNDN);
        mpfr_mul(r9951, r9950, r9947, MPFR_RNDN);
        mpfr_div(r9952, r9951, r9929, MPFR_RNDN);
        mpfr_div(r9953, r9927, r9940, MPFR_RNDN);
        mpfr_mul(r9954, r9952, r9953, MPFR_RNDN);
        if (mpfr_get_si(r9936, MPFR_RNDN)) { mpfr_set(r9955, r9949, MPFR_RNDN); } else { mpfr_set(r9955, r9954, MPFR_RNDN); };
        return mpfr_get_d(r9955, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init_set_str(r9958, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init(r9963);
        mpfr_init_set_str(r9964, "1.3132982387813807e-305", 10, MPFR_RNDN);
        mpfr_init(r9965);
        mpfr_init_set_str(r9966, "8.899030995520257e+57", 10, MPFR_RNDN);
        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);
}

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

