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

char *name = "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r44759 = x;
        float r44760 = y;
        float r44761 = z;
        float r44762 = log(r44761);
        float r44763 = t;
        float r44764 = r44762 - r44763;
        float r44765 = r44760 * r44764;
        float r44766 = a;
        float r44767 = 1.0;
        float r44768 = r44767 - r44761;
        float r44769 = log(r44768);
        float r44770 = b;
        float r44771 = r44769 - r44770;
        float r44772 = r44766 * r44771;
        float r44773 = r44765 + r44772;
        float r44774 = exp(r44773);
        float r44775 = r44759 * r44774;
        return r44775;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r44776 = x;
        double r44777 = y;
        double r44778 = z;
        double r44779 = log(r44778);
        double r44780 = t;
        double r44781 = r44779 - r44780;
        double r44782 = r44777 * r44781;
        double r44783 = a;
        double r44784 = 1.0;
        double r44785 = r44784 - r44778;
        double r44786 = log(r44785);
        double r44787 = b;
        double r44788 = r44786 - r44787;
        double r44789 = r44783 * r44788;
        double r44790 = r44782 + r44789;
        double r44791 = exp(r44790);
        double r44792 = r44776 * r44791;
        return r44792;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r44793 = y;
        float r44794 = -3.267451223538e-46;
        bool r44795 = r44793 <= r44794;
        float r44796 = x;
        float r44797 = exp(r44796);
        float r44798 = 1.0;
        float r44799 = z;
        float r44800 = r44798 - r44799;
        float r44801 = b;
        float r44802 = exp(r44801);
        float r44803 = r44800 / r44802;
        float r44804 = a;
        float r44805 = pow(r44803, r44804);
        float r44806 = pow(r44797, r44805);
        float r44807 = t;
        float r44808 = exp(r44807);
        float r44809 = r44799 / r44808;
        float r44810 = pow(r44809, r44793);
        float r44811 = pow(r44806, r44810);
        float r44812 = log(r44811);
        float r44813 = 0.802860764679358;
        bool r44814 = r44793 <= r44813;
        float r44815 = log(r44800);
        float r44816 = r44815 - r44801;
        float r44817 = r44816 * r44804;
        float r44818 = exp(r44817);
        float r44819 = r44796 * r44818;
        float r44820 = 1/2;
        float r44821 = 2;
        float r44822 = pow(r44807, r44821);
        float r44823 = r44799 * r44822;
        float r44824 = r44820 * r44823;
        float r44825 = r44799 + r44824;
        float r44826 = r44799 * r44807;
        float r44827 = r44825 - r44826;
        float r44828 = pow(r44827, r44793);
        float r44829 = r44819 * r44828;
        float r44830 = r44814 ? r44829 : r44812;
        float r44831 = r44795 ? r44812 : r44830;
        return r44831;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r44832 = y;
        double r44833 = -3.267451223538e-46;
        bool r44834 = r44832 <= r44833;
        double r44835 = x;
        double r44836 = exp(r44835);
        double r44837 = 1.0;
        double r44838 = z;
        double r44839 = r44837 - r44838;
        double r44840 = b;
        double r44841 = exp(r44840);
        double r44842 = r44839 / r44841;
        double r44843 = a;
        double r44844 = pow(r44842, r44843);
        double r44845 = pow(r44836, r44844);
        double r44846 = t;
        double r44847 = exp(r44846);
        double r44848 = r44838 / r44847;
        double r44849 = pow(r44848, r44832);
        double r44850 = pow(r44845, r44849);
        double r44851 = log(r44850);
        double r44852 = 0.802860764679358;
        bool r44853 = r44832 <= r44852;
        double r44854 = log(r44839);
        double r44855 = r44854 - r44840;
        double r44856 = r44855 * r44843;
        double r44857 = exp(r44856);
        double r44858 = r44835 * r44857;
        double r44859 = 1/2;
        double r44860 = 2;
        double r44861 = pow(r44846, r44860);
        double r44862 = r44838 * r44861;
        double r44863 = r44859 * r44862;
        double r44864 = r44838 + r44863;
        double r44865 = r44838 * r44846;
        double r44866 = r44864 - r44865;
        double r44867 = pow(r44866, r44832);
        double r44868 = r44858 * r44867;
        double r44869 = r44853 ? r44868 : r44851;
        double r44870 = r44834 ? r44851 : r44869;
        return r44870;
}

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 r44871, r44872, r44873, r44874, r44875, r44876, r44877, r44878, r44879, r44880, r44881, r44882, r44883, r44884, r44885, r44886, r44887;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44871);
        mpfr_init(r44872);
        mpfr_init(r44873);
        mpfr_init(r44874);
        mpfr_init(r44875);
        mpfr_init(r44876);
        mpfr_init(r44877);
        mpfr_init(r44878);
        mpfr_init_set_str(r44879, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44880);
        mpfr_init(r44881);
        mpfr_init(r44882);
        mpfr_init(r44883);
        mpfr_init(r44884);
        mpfr_init(r44885);
        mpfr_init(r44886);
        mpfr_init(r44887);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44871, x, MPFR_RNDN);
        mpfr_set_d(r44872, y, MPFR_RNDN);
        mpfr_set_d(r44873, z, MPFR_RNDN);
        mpfr_log(r44874, r44873, MPFR_RNDN);
        mpfr_set_d(r44875, t, MPFR_RNDN);
        mpfr_sub(r44876, r44874, r44875, MPFR_RNDN);
        mpfr_mul(r44877, r44872, r44876, MPFR_RNDN);
        mpfr_set_d(r44878, a, MPFR_RNDN);
        ;
        mpfr_sub(r44880, r44879, r44873, MPFR_RNDN);
        mpfr_log(r44881, r44880, MPFR_RNDN);
        mpfr_set_d(r44882, b, MPFR_RNDN);
        mpfr_sub(r44883, r44881, r44882, MPFR_RNDN);
        mpfr_mul(r44884, r44878, r44883, MPFR_RNDN);
        mpfr_add(r44885, r44877, r44884, MPFR_RNDN);
        mpfr_exp(r44886, r44885, MPFR_RNDN);
        mpfr_mul(r44887, r44871, r44886, MPFR_RNDN);
        return mpfr_get_d(r44887, MPFR_RNDN);
}

static mpfr_t r44888, r44889, r44890, r44891, r44892, r44893, r44894, r44895, r44896, r44897, r44898, r44899, r44900, r44901, r44902, r44903, r44904, r44905, r44906, r44907, r44908, r44909, r44910, r44911, r44912, r44913, r44914, r44915, r44916, r44917, r44918, r44919, r44920, r44921, r44922, r44923, r44924, r44925, r44926;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44888);
        mpfr_init_set_str(r44889, "-3.267451223538e-46", 10, MPFR_RNDN);
        mpfr_init(r44890);
        mpfr_init(r44891);
        mpfr_init(r44892);
        mpfr_init_set_str(r44893, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44894);
        mpfr_init(r44895);
        mpfr_init(r44896);
        mpfr_init(r44897);
        mpfr_init(r44898);
        mpfr_init(r44899);
        mpfr_init(r44900);
        mpfr_init(r44901);
        mpfr_init(r44902);
        mpfr_init(r44903);
        mpfr_init(r44904);
        mpfr_init(r44905);
        mpfr_init(r44906);
        mpfr_init(r44907);
        mpfr_init_set_str(r44908, "0.802860764679358", 10, MPFR_RNDN);
        mpfr_init(r44909);
        mpfr_init(r44910);
        mpfr_init(r44911);
        mpfr_init(r44912);
        mpfr_init(r44913);
        mpfr_init(r44914);
        mpfr_init_set_str(r44915, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44916, "2", 10, MPFR_RNDN);
        mpfr_init(r44917);
        mpfr_init(r44918);
        mpfr_init(r44919);
        mpfr_init(r44920);
        mpfr_init(r44921);
        mpfr_init(r44922);
        mpfr_init(r44923);
        mpfr_init(r44924);
        mpfr_init(r44925);
        mpfr_init(r44926);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44888, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44890, mpfr_cmp(r44888, r44889) <= 0, MPFR_RNDN);
        mpfr_set_d(r44891, x, MPFR_RNDN);
        mpfr_exp(r44892, r44891, MPFR_RNDN);
        ;
        mpfr_set_d(r44894, z, MPFR_RNDN);
        mpfr_sub(r44895, r44893, r44894, MPFR_RNDN);
        mpfr_set_d(r44896, b, MPFR_RNDN);
        mpfr_exp(r44897, r44896, MPFR_RNDN);
        mpfr_div(r44898, r44895, r44897, MPFR_RNDN);
        mpfr_set_d(r44899, a, MPFR_RNDN);
        mpfr_pow(r44900, r44898, r44899, MPFR_RNDN);
        mpfr_pow(r44901, r44892, r44900, MPFR_RNDN);
        mpfr_set_d(r44902, t, MPFR_RNDN);
        mpfr_exp(r44903, r44902, MPFR_RNDN);
        mpfr_div(r44904, r44894, r44903, MPFR_RNDN);
        mpfr_pow(r44905, r44904, r44888, MPFR_RNDN);
        mpfr_pow(r44906, r44901, r44905, MPFR_RNDN);
        mpfr_log(r44907, r44906, MPFR_RNDN);
        ;
        mpfr_set_si(r44909, mpfr_cmp(r44888, r44908) <= 0, MPFR_RNDN);
        mpfr_log(r44910, r44895, MPFR_RNDN);
        mpfr_sub(r44911, r44910, r44896, MPFR_RNDN);
        mpfr_mul(r44912, r44911, r44899, MPFR_RNDN);
        mpfr_exp(r44913, r44912, MPFR_RNDN);
        mpfr_mul(r44914, r44891, r44913, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44917, r44902, r44916, MPFR_RNDN);
        mpfr_mul(r44918, r44894, r44917, MPFR_RNDN);
        mpfr_mul(r44919, r44915, r44918, MPFR_RNDN);
        mpfr_add(r44920, r44894, r44919, MPFR_RNDN);
        mpfr_mul(r44921, r44894, r44902, MPFR_RNDN);
        mpfr_sub(r44922, r44920, r44921, MPFR_RNDN);
        mpfr_pow(r44923, r44922, r44888, MPFR_RNDN);
        mpfr_mul(r44924, r44914, r44923, MPFR_RNDN);
        if (mpfr_get_si(r44909, MPFR_RNDN)) { mpfr_set(r44925, r44924, MPFR_RNDN); } else { mpfr_set(r44925, r44907, MPFR_RNDN); };
        if (mpfr_get_si(r44890, MPFR_RNDN)) { mpfr_set(r44926, r44907, MPFR_RNDN); } else { mpfr_set(r44926, r44925, MPFR_RNDN); };
        return mpfr_get_d(r44926, MPFR_RNDN);
}

static mpfr_t r44927, r44928, r44929, r44930, r44931, r44932, r44933, r44934, r44935, r44936, r44937, r44938, r44939, r44940, r44941, r44942, r44943, r44944, r44945, r44946, r44947, r44948, r44949, r44950, r44951, r44952, r44953, r44954, r44955, r44956, r44957, r44958, r44959, r44960, r44961, r44962, r44963, r44964, r44965;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44927);
        mpfr_init_set_str(r44928, "-3.267451223538e-46", 10, MPFR_RNDN);
        mpfr_init(r44929);
        mpfr_init(r44930);
        mpfr_init(r44931);
        mpfr_init_set_str(r44932, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44933);
        mpfr_init(r44934);
        mpfr_init(r44935);
        mpfr_init(r44936);
        mpfr_init(r44937);
        mpfr_init(r44938);
        mpfr_init(r44939);
        mpfr_init(r44940);
        mpfr_init(r44941);
        mpfr_init(r44942);
        mpfr_init(r44943);
        mpfr_init(r44944);
        mpfr_init(r44945);
        mpfr_init(r44946);
        mpfr_init_set_str(r44947, "0.802860764679358", 10, MPFR_RNDN);
        mpfr_init(r44948);
        mpfr_init(r44949);
        mpfr_init(r44950);
        mpfr_init(r44951);
        mpfr_init(r44952);
        mpfr_init(r44953);
        mpfr_init_set_str(r44954, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44955, "2", 10, MPFR_RNDN);
        mpfr_init(r44956);
        mpfr_init(r44957);
        mpfr_init(r44958);
        mpfr_init(r44959);
        mpfr_init(r44960);
        mpfr_init(r44961);
        mpfr_init(r44962);
        mpfr_init(r44963);
        mpfr_init(r44964);
        mpfr_init(r44965);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44927, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44929, mpfr_cmp(r44927, r44928) <= 0, MPFR_RNDN);
        mpfr_set_d(r44930, x, MPFR_RNDN);
        mpfr_exp(r44931, r44930, MPFR_RNDN);
        ;
        mpfr_set_d(r44933, z, MPFR_RNDN);
        mpfr_sub(r44934, r44932, r44933, MPFR_RNDN);
        mpfr_set_d(r44935, b, MPFR_RNDN);
        mpfr_exp(r44936, r44935, MPFR_RNDN);
        mpfr_div(r44937, r44934, r44936, MPFR_RNDN);
        mpfr_set_d(r44938, a, MPFR_RNDN);
        mpfr_pow(r44939, r44937, r44938, MPFR_RNDN);
        mpfr_pow(r44940, r44931, r44939, MPFR_RNDN);
        mpfr_set_d(r44941, t, MPFR_RNDN);
        mpfr_exp(r44942, r44941, MPFR_RNDN);
        mpfr_div(r44943, r44933, r44942, MPFR_RNDN);
        mpfr_pow(r44944, r44943, r44927, MPFR_RNDN);
        mpfr_pow(r44945, r44940, r44944, MPFR_RNDN);
        mpfr_log(r44946, r44945, MPFR_RNDN);
        ;
        mpfr_set_si(r44948, mpfr_cmp(r44927, r44947) <= 0, MPFR_RNDN);
        mpfr_log(r44949, r44934, MPFR_RNDN);
        mpfr_sub(r44950, r44949, r44935, MPFR_RNDN);
        mpfr_mul(r44951, r44950, r44938, MPFR_RNDN);
        mpfr_exp(r44952, r44951, MPFR_RNDN);
        mpfr_mul(r44953, r44930, r44952, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44956, r44941, r44955, MPFR_RNDN);
        mpfr_mul(r44957, r44933, r44956, MPFR_RNDN);
        mpfr_mul(r44958, r44954, r44957, MPFR_RNDN);
        mpfr_add(r44959, r44933, r44958, MPFR_RNDN);
        mpfr_mul(r44960, r44933, r44941, MPFR_RNDN);
        mpfr_sub(r44961, r44959, r44960, MPFR_RNDN);
        mpfr_pow(r44962, r44961, r44927, MPFR_RNDN);
        mpfr_mul(r44963, r44953, r44962, MPFR_RNDN);
        if (mpfr_get_si(r44948, MPFR_RNDN)) { mpfr_set(r44964, r44963, MPFR_RNDN); } else { mpfr_set(r44964, r44946, MPFR_RNDN); };
        if (mpfr_get_si(r44929, MPFR_RNDN)) { mpfr_set(r44965, r44946, MPFR_RNDN); } else { mpfr_set(r44965, r44964, MPFR_RNDN); };
        return mpfr_get_d(r44965, MPFR_RNDN);
}

