#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 r8842 = x;
        float r8843 = y;
        float r8844 = 2.0f;
        float r8845 = z;
        float r8846 = t;
        float r8847 = a;
        float r8848 = r8846 + r8847;
        float r8849 = sqrt(r8848);
        float r8850 = r8845 * r8849;
        float r8851 = r8850 / r8846;
        float r8852 = b;
        float r8853 = c;
        float r8854 = r8852 - r8853;
        float r8855 = 5.0f;
        float r8856 = 6.0f;
        float r8857 = r8855 / r8856;
        float r8858 = r8847 + r8857;
        float r8859 = 3.0f;
        float r8860 = r8846 * r8859;
        float r8861 = r8844 / r8860;
        float r8862 = r8858 - r8861;
        float r8863 = r8854 * r8862;
        float r8864 = r8851 - r8863;
        float r8865 = r8844 * r8864;
        float r8866 = exp(r8865);
        float r8867 = r8843 * r8866;
        float r8868 = r8842 + r8867;
        float r8869 = r8842 / r8868;
        return r8869;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r8870 = x;
        double r8871 = y;
        double r8872 = 2.0;
        double r8873 = z;
        double r8874 = t;
        double r8875 = a;
        double r8876 = r8874 + r8875;
        double r8877 = sqrt(r8876);
        double r8878 = r8873 * r8877;
        double r8879 = r8878 / r8874;
        double r8880 = b;
        double r8881 = c;
        double r8882 = r8880 - r8881;
        double r8883 = 5.0;
        double r8884 = 6.0;
        double r8885 = r8883 / r8884;
        double r8886 = r8875 + r8885;
        double r8887 = 3.0;
        double r8888 = r8874 * r8887;
        double r8889 = r8872 / r8888;
        double r8890 = r8886 - r8889;
        double r8891 = r8882 * r8890;
        double r8892 = r8879 - r8891;
        double r8893 = r8872 * r8892;
        double r8894 = exp(r8893);
        double r8895 = r8871 * r8894;
        double r8896 = r8870 + r8895;
        double r8897 = r8870 / r8896;
        return r8897;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r8898 = x;
        float r8899 = y;
        float r8900 = c;
        float r8901 = b;
        float r8902 = r8900 - r8901;
        float r8903 = 2.0f;
        float r8904 = r8902 * r8903;
        float r8905 = a;
        float r8906 = 5.0f;
        float r8907 = 6.0f;
        float r8908 = r8906 / r8907;
        float r8909 = r8905 + r8908;
        float r8910 = t;
        float r8911 = r8903 / r8910;
        float r8912 = 3.0f;
        float r8913 = r8911 / r8912;
        float r8914 = r8909 - r8913;
        float r8915 = r8910 + r8905;
        float r8916 = sqrt(r8915);
        float r8917 = z;
        float r8918 = r8917 / r8910;
        float r8919 = r8903 * r8918;
        float r8920 = r8916 * r8919;
        float r8921 = fma(r8904, r8914, r8920);
        float r8922 = exp(r8921);
        float r8923 = fma(r8899, r8922, r8898);
        float r8924 = r8898 / r8923;
        return r8924;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r8925 = x;
        double r8926 = y;
        double r8927 = c;
        double r8928 = b;
        double r8929 = r8927 - r8928;
        double r8930 = 2.0;
        double r8931 = r8929 * r8930;
        double r8932 = a;
        double r8933 = 5.0;
        double r8934 = 6.0;
        double r8935 = r8933 / r8934;
        double r8936 = r8932 + r8935;
        double r8937 = t;
        double r8938 = r8930 / r8937;
        double r8939 = 3.0;
        double r8940 = r8938 / r8939;
        double r8941 = r8936 - r8940;
        double r8942 = r8937 + r8932;
        double r8943 = sqrt(r8942);
        double r8944 = z;
        double r8945 = r8944 / r8937;
        double r8946 = r8930 * r8945;
        double r8947 = r8943 * r8946;
        double r8948 = fma(r8931, r8941, r8947);
        double r8949 = exp(r8948);
        double r8950 = fma(r8926, r8949, r8925);
        double r8951 = r8925 / r8950;
        return r8951;
}

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 r8952, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963, r8964, r8965, r8966, r8967, r8968, r8969, r8970, r8971, r8972, r8973, r8974, r8975, r8976, r8977, r8978, r8979;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init_set_str(r8954, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8955);
        mpfr_init(r8956);
        mpfr_init(r8957);
        mpfr_init(r8958);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init(r8961);
        mpfr_init(r8962);
        mpfr_init(r8963);
        mpfr_init(r8964);
        mpfr_init_set_str(r8965, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r8966, "6.0", 10, MPFR_RNDN);
        mpfr_init(r8967);
        mpfr_init(r8968);
        mpfr_init_set_str(r8969, "3.0", 10, MPFR_RNDN);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init(r8973);
        mpfr_init(r8974);
        mpfr_init(r8975);
        mpfr_init(r8976);
        mpfr_init(r8977);
        mpfr_init(r8978);
        mpfr_init(r8979);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r8952, x, MPFR_RNDN);
        mpfr_set_d(r8953, y, MPFR_RNDN);
        ;
        mpfr_set_d(r8955, z, MPFR_RNDN);
        mpfr_set_d(r8956, t, MPFR_RNDN);
        mpfr_set_d(r8957, a, MPFR_RNDN);
        mpfr_add(r8958, r8956, r8957, MPFR_RNDN);
        mpfr_sqrt(r8959, r8958, MPFR_RNDN);
        mpfr_mul(r8960, r8955, r8959, MPFR_RNDN);
        mpfr_div(r8961, r8960, r8956, MPFR_RNDN);
        mpfr_set_d(r8962, b, MPFR_RNDN);
        mpfr_set_d(r8963, c, MPFR_RNDN);
        mpfr_sub(r8964, r8962, r8963, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8967, r8965, r8966, MPFR_RNDN);
        mpfr_add(r8968, r8957, r8967, MPFR_RNDN);
        ;
        mpfr_mul(r8970, r8956, r8969, MPFR_RNDN);
        mpfr_div(r8971, r8954, r8970, MPFR_RNDN);
        mpfr_sub(r8972, r8968, r8971, MPFR_RNDN);
        mpfr_mul(r8973, r8964, r8972, MPFR_RNDN);
        mpfr_sub(r8974, r8961, r8973, MPFR_RNDN);
        mpfr_mul(r8975, r8954, r8974, MPFR_RNDN);
        mpfr_exp(r8976, r8975, MPFR_RNDN);
        mpfr_mul(r8977, r8953, r8976, MPFR_RNDN);
        mpfr_add(r8978, r8952, r8977, MPFR_RNDN);
        mpfr_div(r8979, r8952, r8978, MPFR_RNDN);
        return mpfr_get_d(r8979, MPFR_RNDN);
}

static mpfr_t r8980, r8981, r8982, r8983, r8984, r8985, r8986, r8987, r8988, r8989, r8990, r8991, r8992, r8993, r8994, r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8980);
        mpfr_init(r8981);
        mpfr_init(r8982);
        mpfr_init(r8983);
        mpfr_init(r8984);
        mpfr_init_set_str(r8985, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8986);
        mpfr_init(r8987);
        mpfr_init_set_str(r8988, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r8989, "6.0", 10, MPFR_RNDN);
        mpfr_init(r8990);
        mpfr_init(r8991);
        mpfr_init(r8992);
        mpfr_init(r8993);
        mpfr_init_set_str(r8994, "3.0", 10, MPFR_RNDN);
        mpfr_init(r8995);
        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(r9006);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r8980, x, MPFR_RNDN);
        mpfr_set_d(r8981, y, MPFR_RNDN);
        mpfr_set_d(r8982, c, MPFR_RNDN);
        mpfr_set_d(r8983, b, MPFR_RNDN);
        mpfr_sub(r8984, r8982, r8983, MPFR_RNDN);
        ;
        mpfr_mul(r8986, r8984, r8985, MPFR_RNDN);
        mpfr_set_d(r8987, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r8990, r8988, r8989, MPFR_RNDN);
        mpfr_add(r8991, r8987, r8990, MPFR_RNDN);
        mpfr_set_d(r8992, t, MPFR_RNDN);
        mpfr_div(r8993, r8985, r8992, MPFR_RNDN);
        ;
        mpfr_div(r8995, r8993, r8994, MPFR_RNDN);
        mpfr_sub(r8996, r8991, r8995, MPFR_RNDN);
        mpfr_add(r8997, r8992, r8987, MPFR_RNDN);
        mpfr_sqrt(r8998, r8997, MPFR_RNDN);
        mpfr_set_d(r8999, z, MPFR_RNDN);
        mpfr_div(r9000, r8999, r8992, MPFR_RNDN);
        mpfr_mul(r9001, r8985, r9000, MPFR_RNDN);
        mpfr_mul(r9002, r8998, r9001, MPFR_RNDN);
        mpfr_fma(r9003, r8986, r8996, r9002, MPFR_RNDN);
        mpfr_exp(r9004, r9003, MPFR_RNDN);
        mpfr_fma(r9005, r8981, r9004, r8980, MPFR_RNDN);
        mpfr_div(r9006, r8980, r9005, MPFR_RNDN);
        return mpfr_get_d(r9006, MPFR_RNDN);
}

static mpfr_t r9007, r9008, r9009, r9010, r9011, r9012, r9013, r9014, r9015, r9016, r9017, r9018, r9019, r9020, r9021, r9022, r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030, r9031, r9032, r9033;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init_set_str(r9012, "2.0", 10, MPFR_RNDN);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init_set_str(r9015, "5.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r9016, "6.0", 10, MPFR_RNDN);
        mpfr_init(r9017);
        mpfr_init(r9018);
        mpfr_init(r9019);
        mpfr_init(r9020);
        mpfr_init_set_str(r9021, "3.0", 10, MPFR_RNDN);
        mpfr_init(r9022);
        mpfr_init(r9023);
        mpfr_init(r9024);
        mpfr_init(r9025);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init(r9033);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r9007, x, MPFR_RNDN);
        mpfr_set_d(r9008, y, MPFR_RNDN);
        mpfr_set_d(r9009, c, MPFR_RNDN);
        mpfr_set_d(r9010, b, MPFR_RNDN);
        mpfr_sub(r9011, r9009, r9010, MPFR_RNDN);
        ;
        mpfr_mul(r9013, r9011, r9012, MPFR_RNDN);
        mpfr_set_d(r9014, a, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9017, r9015, r9016, MPFR_RNDN);
        mpfr_add(r9018, r9014, r9017, MPFR_RNDN);
        mpfr_set_d(r9019, t, MPFR_RNDN);
        mpfr_div(r9020, r9012, r9019, MPFR_RNDN);
        ;
        mpfr_div(r9022, r9020, r9021, MPFR_RNDN);
        mpfr_sub(r9023, r9018, r9022, MPFR_RNDN);
        mpfr_add(r9024, r9019, r9014, MPFR_RNDN);
        mpfr_sqrt(r9025, r9024, MPFR_RNDN);
        mpfr_set_d(r9026, z, MPFR_RNDN);
        mpfr_div(r9027, r9026, r9019, MPFR_RNDN);
        mpfr_mul(r9028, r9012, r9027, MPFR_RNDN);
        mpfr_mul(r9029, r9025, r9028, MPFR_RNDN);
        mpfr_fma(r9030, r9013, r9023, r9029, MPFR_RNDN);
        mpfr_exp(r9031, r9030, MPFR_RNDN);
        mpfr_fma(r9032, r9008, r9031, r9007, MPFR_RNDN);
        mpfr_div(r9033, r9007, r9032, MPFR_RNDN);
        return mpfr_get_d(r9033, MPFR_RNDN);
}

