#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 r9730 = x;
        float r9731 = y;
        float r9732 = z;
        float r9733 = log(r9732);
        float r9734 = r9731 * r9733;
        float r9735 = t;
        float r9736 = 1.0;
        float r9737 = r9735 - r9736;
        float r9738 = a;
        float r9739 = log(r9738);
        float r9740 = r9737 * r9739;
        float r9741 = r9734 + r9740;
        float r9742 = b;
        float r9743 = r9741 - r9742;
        float r9744 = exp(r9743);
        float r9745 = r9730 * r9744;
        float r9746 = r9745 / r9731;
        return r9746;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r9747 = x;
        double r9748 = y;
        double r9749 = z;
        double r9750 = log(r9749);
        double r9751 = r9748 * r9750;
        double r9752 = t;
        double r9753 = 1.0;
        double r9754 = r9752 - r9753;
        double r9755 = a;
        double r9756 = log(r9755);
        double r9757 = r9754 * r9756;
        double r9758 = r9751 + r9757;
        double r9759 = b;
        double r9760 = r9758 - r9759;
        double r9761 = exp(r9760);
        double r9762 = r9747 * r9761;
        double r9763 = r9762 / r9748;
        return r9763;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r9764 = z;
        float r9765 = y;
        float r9766 = pow(r9764, r9765);
        float r9767 = b;
        float r9768 = exp(r9767);
        float r9769 = r9766 / r9768;
        float r9770 = a;
        float r9771 = t;
        float r9772 = pow(r9770, r9771);
        float r9773 = 1.0;
        float r9774 = pow(r9770, r9773);
        float r9775 = r9772 / r9774;
        float r9776 = r9769 * r9775;
        float r9777 = x;
        float r9778 = r9765 / r9777;
        float r9779 = r9776 / r9778;
        float r9780 = 5.21196274515651e+272;
        bool r9781 = r9779 <= r9780;
        float r9782 = exp(1.0);
        float r9783 = log(r9764);
        float r9784 = r9765 * r9783;
        float r9785 = r9771 - r9773;
        float r9786 = log(r9770);
        float r9787 = r9785 * r9786;
        float r9788 = r9784 + r9787;
        float r9789 = r9788 - r9767;
        float r9790 = pow(r9782, r9789);
        float r9791 = r9777 * r9790;
        float r9792 = r9791 / r9765;
        float r9793 = r9781 ? r9779 : r9792;
        return r9793;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r9794 = z;
        double r9795 = y;
        double r9796 = pow(r9794, r9795);
        double r9797 = b;
        double r9798 = exp(r9797);
        double r9799 = r9796 / r9798;
        double r9800 = a;
        double r9801 = t;
        double r9802 = pow(r9800, r9801);
        double r9803 = 1.0;
        double r9804 = pow(r9800, r9803);
        double r9805 = r9802 / r9804;
        double r9806 = r9799 * r9805;
        double r9807 = x;
        double r9808 = r9795 / r9807;
        double r9809 = r9806 / r9808;
        double r9810 = 5.21196274515651e+272;
        bool r9811 = r9809 <= r9810;
        double r9812 = exp(1.0);
        double r9813 = log(r9794);
        double r9814 = r9795 * r9813;
        double r9815 = r9801 - r9803;
        double r9816 = log(r9800);
        double r9817 = r9815 * r9816;
        double r9818 = r9814 + r9817;
        double r9819 = r9818 - r9797;
        double r9820 = pow(r9812, r9819);
        double r9821 = r9807 * r9820;
        double r9822 = r9821 / r9795;
        double r9823 = r9811 ? r9809 : r9822;
        return r9823;
}

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 r9824, r9825, r9826, r9827, r9828, r9829, r9830, r9831, r9832, r9833, r9834, r9835, r9836, r9837, r9838, r9839, r9840;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9824);
        mpfr_init(r9825);
        mpfr_init(r9826);
        mpfr_init(r9827);
        mpfr_init(r9828);
        mpfr_init(r9829);
        mpfr_init_set_str(r9830, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9831);
        mpfr_init(r9832);
        mpfr_init(r9833);
        mpfr_init(r9834);
        mpfr_init(r9835);
        mpfr_init(r9836);
        mpfr_init(r9837);
        mpfr_init(r9838);
        mpfr_init(r9839);
        mpfr_init(r9840);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9824, x, MPFR_RNDN);
        mpfr_set_d(r9825, y, MPFR_RNDN);
        mpfr_set_d(r9826, z, MPFR_RNDN);
        mpfr_log(r9827, r9826, MPFR_RNDN);
        mpfr_mul(r9828, r9825, r9827, MPFR_RNDN);
        mpfr_set_d(r9829, t, MPFR_RNDN);
        ;
        mpfr_sub(r9831, r9829, r9830, MPFR_RNDN);
        mpfr_set_d(r9832, a, MPFR_RNDN);
        mpfr_log(r9833, r9832, MPFR_RNDN);
        mpfr_mul(r9834, r9831, r9833, MPFR_RNDN);
        mpfr_add(r9835, r9828, r9834, MPFR_RNDN);
        mpfr_set_d(r9836, b, MPFR_RNDN);
        mpfr_sub(r9837, r9835, r9836, MPFR_RNDN);
        mpfr_exp(r9838, r9837, MPFR_RNDN);
        mpfr_mul(r9839, r9824, r9838, MPFR_RNDN);
        mpfr_div(r9840, r9839, r9825, MPFR_RNDN);
        return mpfr_get_d(r9840, MPFR_RNDN);
}

static mpfr_t r9841, r9842, r9843, r9844, r9845, r9846, r9847, r9848, r9849, r9850, r9851, r9852, r9853, r9854, r9855, r9856, r9857, r9858, r9859, r9860, r9861, r9862, r9863, r9864, r9865, r9866, r9867, r9868, r9869, r9870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9841);
        mpfr_init(r9842);
        mpfr_init(r9843);
        mpfr_init(r9844);
        mpfr_init(r9845);
        mpfr_init(r9846);
        mpfr_init(r9847);
        mpfr_init(r9848);
        mpfr_init(r9849);
        mpfr_init_set_str(r9850, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9851);
        mpfr_init(r9852);
        mpfr_init(r9853);
        mpfr_init(r9854);
        mpfr_init(r9855);
        mpfr_init(r9856);
        mpfr_init_set_str(r9857, "5.21196274515651e+272", 10, MPFR_RNDN);
        mpfr_init(r9858);
        mpfr_init(r9859);
        mpfr_init(r9860);
        mpfr_init(r9861);
        mpfr_init(r9862);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init(r9865);
        mpfr_init(r9866);
        mpfr_init(r9867);
        mpfr_init(r9868);
        mpfr_init(r9869);
        mpfr_init(r9870);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9841, z, MPFR_RNDN);
        mpfr_set_d(r9842, y, MPFR_RNDN);
        mpfr_pow(r9843, r9841, r9842, MPFR_RNDN);
        mpfr_set_d(r9844, b, MPFR_RNDN);
        mpfr_exp(r9845, r9844, MPFR_RNDN);
        mpfr_div(r9846, r9843, r9845, MPFR_RNDN);
        mpfr_set_d(r9847, a, MPFR_RNDN);
        mpfr_set_d(r9848, t, MPFR_RNDN);
        mpfr_pow(r9849, r9847, r9848, MPFR_RNDN);
        ;
        mpfr_pow(r9851, r9847, r9850, MPFR_RNDN);
        mpfr_div(r9852, r9849, r9851, MPFR_RNDN);
        mpfr_mul(r9853, r9846, r9852, MPFR_RNDN);
        mpfr_set_d(r9854, x, MPFR_RNDN);
        mpfr_div(r9855, r9842, r9854, MPFR_RNDN);
        mpfr_div(r9856, r9853, r9855, MPFR_RNDN);
        ;
        mpfr_set_si(r9858, mpfr_cmp(r9856, r9857) <= 0, MPFR_RNDN);
        mpfr_set_si(r9859, 1, MPFR_RNDN), mpfr_const_exp(r9859, r9859, MPFR_RNDN);
        mpfr_log(r9860, r9841, MPFR_RNDN);
        mpfr_mul(r9861, r9842, r9860, MPFR_RNDN);
        mpfr_sub(r9862, r9848, r9850, MPFR_RNDN);
        mpfr_log(r9863, r9847, MPFR_RNDN);
        mpfr_mul(r9864, r9862, r9863, MPFR_RNDN);
        mpfr_add(r9865, r9861, r9864, MPFR_RNDN);
        mpfr_sub(r9866, r9865, r9844, MPFR_RNDN);
        mpfr_pow(r9867, r9859, r9866, MPFR_RNDN);
        mpfr_mul(r9868, r9854, r9867, MPFR_RNDN);
        mpfr_div(r9869, r9868, r9842, MPFR_RNDN);
        if (mpfr_get_si(r9858, MPFR_RNDN)) { mpfr_set(r9870, r9856, MPFR_RNDN); } else { mpfr_set(r9870, r9869, MPFR_RNDN); };
        return mpfr_get_d(r9870, MPFR_RNDN);
}

static mpfr_t r9871, r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9871);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init(r9875);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init_set_str(r9880, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init(r9883);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init_set_str(r9887, "5.21196274515651e+272", 10, MPFR_RNDN);
        mpfr_init(r9888);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init(r9897);
        mpfr_init(r9898);
        mpfr_init(r9899);
        mpfr_init(r9900);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r9871, z, MPFR_RNDN);
        mpfr_set_d(r9872, y, MPFR_RNDN);
        mpfr_pow(r9873, r9871, r9872, MPFR_RNDN);
        mpfr_set_d(r9874, b, MPFR_RNDN);
        mpfr_exp(r9875, r9874, MPFR_RNDN);
        mpfr_div(r9876, r9873, r9875, MPFR_RNDN);
        mpfr_set_d(r9877, a, MPFR_RNDN);
        mpfr_set_d(r9878, t, MPFR_RNDN);
        mpfr_pow(r9879, r9877, r9878, MPFR_RNDN);
        ;
        mpfr_pow(r9881, r9877, r9880, MPFR_RNDN);
        mpfr_div(r9882, r9879, r9881, MPFR_RNDN);
        mpfr_mul(r9883, r9876, r9882, MPFR_RNDN);
        mpfr_set_d(r9884, x, MPFR_RNDN);
        mpfr_div(r9885, r9872, r9884, MPFR_RNDN);
        mpfr_div(r9886, r9883, r9885, MPFR_RNDN);
        ;
        mpfr_set_si(r9888, mpfr_cmp(r9886, r9887) <= 0, MPFR_RNDN);
        mpfr_set_si(r9889, 1, MPFR_RNDN), mpfr_const_exp(r9889, r9889, MPFR_RNDN);
        mpfr_log(r9890, r9871, MPFR_RNDN);
        mpfr_mul(r9891, r9872, r9890, MPFR_RNDN);
        mpfr_sub(r9892, r9878, r9880, MPFR_RNDN);
        mpfr_log(r9893, r9877, MPFR_RNDN);
        mpfr_mul(r9894, r9892, r9893, MPFR_RNDN);
        mpfr_add(r9895, r9891, r9894, MPFR_RNDN);
        mpfr_sub(r9896, r9895, r9874, MPFR_RNDN);
        mpfr_pow(r9897, r9889, r9896, MPFR_RNDN);
        mpfr_mul(r9898, r9884, r9897, MPFR_RNDN);
        mpfr_div(r9899, r9898, r9872, MPFR_RNDN);
        if (mpfr_get_si(r9888, MPFR_RNDN)) { mpfr_set(r9900, r9886, MPFR_RNDN); } else { mpfr_set(r9900, r9899, MPFR_RNDN); };
        return mpfr_get_d(r9900, MPFR_RNDN);
}

