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

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

double f_if(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r42743 = x;
        float r42744 = y;
        float r42745 = log(r42744);
        float r42746 = r42743 * r42745;
        float r42747 = z;
        float r42748 = r42746 + r42747;
        float r42749 = t;
        float r42750 = r42748 + r42749;
        float r42751 = a;
        float r42752 = r42750 + r42751;
        float r42753 = b;
        float r42754 = 0.5;
        float r42755 = r42753 - r42754;
        float r42756 = c;
        float r42757 = log(r42756);
        float r42758 = r42755 * r42757;
        float r42759 = r42752 + r42758;
        float r42760 = i;
        float r42761 = r42744 * r42760;
        float r42762 = r42759 + r42761;
        return r42762;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r42763 = x;
        double r42764 = y;
        double r42765 = log(r42764);
        double r42766 = r42763 * r42765;
        double r42767 = z;
        double r42768 = r42766 + r42767;
        double r42769 = t;
        double r42770 = r42768 + r42769;
        double r42771 = a;
        double r42772 = r42770 + r42771;
        double r42773 = b;
        double r42774 = 0.5;
        double r42775 = r42773 - r42774;
        double r42776 = c;
        double r42777 = log(r42776);
        double r42778 = r42775 * r42777;
        double r42779 = r42772 + r42778;
        double r42780 = i;
        double r42781 = r42764 * r42780;
        double r42782 = r42779 + r42781;
        return r42782;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r42783 = x;
        float r42784 = y;
        float r42785 = log(r42784);
        float r42786 = r42783 * r42785;
        float r42787 = z;
        float r42788 = r42786 + r42787;
        float r42789 = t;
        float r42790 = r42788 + r42789;
        float r42791 = a;
        float r42792 = r42790 + r42791;
        float r42793 = b;
        float r42794 = 0.5;
        float r42795 = r42793 - r42794;
        float r42796 = c;
        float r42797 = log(r42796);
        float r42798 = r42795 * r42797;
        float r42799 = r42792 + r42798;
        float r42800 = i;
        float r42801 = r42784 * r42800;
        float r42802 = r42799 + r42801;
        return r42802;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r42803 = x;
        double r42804 = y;
        double r42805 = log(r42804);
        double r42806 = r42803 * r42805;
        double r42807 = z;
        double r42808 = r42806 + r42807;
        double r42809 = t;
        double r42810 = r42808 + r42809;
        double r42811 = a;
        double r42812 = r42810 + r42811;
        double r42813 = b;
        double r42814 = 0.5;
        double r42815 = r42813 - r42814;
        double r42816 = c;
        double r42817 = log(r42816);
        double r42818 = r42815 * r42817;
        double r42819 = r42812 + r42818;
        double r42820 = i;
        double r42821 = r42804 * r42820;
        double r42822 = r42819 + r42821;
        return r42822;
}

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 r42823, r42824, r42825, r42826, r42827, r42828, r42829, r42830, r42831, r42832, r42833, r42834, r42835, r42836, r42837, r42838, r42839, r42840, r42841, r42842;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r42823);
        mpfr_init(r42824);
        mpfr_init(r42825);
        mpfr_init(r42826);
        mpfr_init(r42827);
        mpfr_init(r42828);
        mpfr_init(r42829);
        mpfr_init(r42830);
        mpfr_init(r42831);
        mpfr_init(r42832);
        mpfr_init(r42833);
        mpfr_init_set_str(r42834, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42835);
        mpfr_init(r42836);
        mpfr_init(r42837);
        mpfr_init(r42838);
        mpfr_init(r42839);
        mpfr_init(r42840);
        mpfr_init(r42841);
        mpfr_init(r42842);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r42823, x, MPFR_RNDN);
        mpfr_set_d(r42824, y, MPFR_RNDN);
        mpfr_log(r42825, r42824, MPFR_RNDN);
        mpfr_mul(r42826, r42823, r42825, MPFR_RNDN);
        mpfr_set_d(r42827, z, MPFR_RNDN);
        mpfr_add(r42828, r42826, r42827, MPFR_RNDN);
        mpfr_set_d(r42829, t, MPFR_RNDN);
        mpfr_add(r42830, r42828, r42829, MPFR_RNDN);
        mpfr_set_d(r42831, a, MPFR_RNDN);
        mpfr_add(r42832, r42830, r42831, MPFR_RNDN);
        mpfr_set_d(r42833, b, MPFR_RNDN);
        ;
        mpfr_sub(r42835, r42833, r42834, MPFR_RNDN);
        mpfr_set_d(r42836, c, MPFR_RNDN);
        mpfr_log(r42837, r42836, MPFR_RNDN);
        mpfr_mul(r42838, r42835, r42837, MPFR_RNDN);
        mpfr_add(r42839, r42832, r42838, MPFR_RNDN);
        mpfr_set_d(r42840, i, MPFR_RNDN);
        mpfr_mul(r42841, r42824, r42840, MPFR_RNDN);
        mpfr_add(r42842, r42839, r42841, MPFR_RNDN);
        return mpfr_get_d(r42842, MPFR_RNDN);
}

static mpfr_t r42843, r42844, r42845, r42846, r42847, r42848, r42849, r42850, r42851, r42852, r42853, r42854, r42855, r42856, r42857, r42858, r42859, r42860, r42861, r42862;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r42843);
        mpfr_init(r42844);
        mpfr_init(r42845);
        mpfr_init(r42846);
        mpfr_init(r42847);
        mpfr_init(r42848);
        mpfr_init(r42849);
        mpfr_init(r42850);
        mpfr_init(r42851);
        mpfr_init(r42852);
        mpfr_init(r42853);
        mpfr_init_set_str(r42854, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42855);
        mpfr_init(r42856);
        mpfr_init(r42857);
        mpfr_init(r42858);
        mpfr_init(r42859);
        mpfr_init(r42860);
        mpfr_init(r42861);
        mpfr_init(r42862);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r42843, x, MPFR_RNDN);
        mpfr_set_d(r42844, y, MPFR_RNDN);
        mpfr_log(r42845, r42844, MPFR_RNDN);
        mpfr_mul(r42846, r42843, r42845, MPFR_RNDN);
        mpfr_set_d(r42847, z, MPFR_RNDN);
        mpfr_add(r42848, r42846, r42847, MPFR_RNDN);
        mpfr_set_d(r42849, t, MPFR_RNDN);
        mpfr_add(r42850, r42848, r42849, MPFR_RNDN);
        mpfr_set_d(r42851, a, MPFR_RNDN);
        mpfr_add(r42852, r42850, r42851, MPFR_RNDN);
        mpfr_set_d(r42853, b, MPFR_RNDN);
        ;
        mpfr_sub(r42855, r42853, r42854, MPFR_RNDN);
        mpfr_set_d(r42856, c, MPFR_RNDN);
        mpfr_log(r42857, r42856, MPFR_RNDN);
        mpfr_mul(r42858, r42855, r42857, MPFR_RNDN);
        mpfr_add(r42859, r42852, r42858, MPFR_RNDN);
        mpfr_set_d(r42860, i, MPFR_RNDN);
        mpfr_mul(r42861, r42844, r42860, MPFR_RNDN);
        mpfr_add(r42862, r42859, r42861, MPFR_RNDN);
        return mpfr_get_d(r42862, MPFR_RNDN);
}

static mpfr_t r42863, r42864, r42865, r42866, r42867, r42868, r42869, r42870, r42871, r42872, r42873, r42874, r42875, r42876, r42877, r42878, r42879, r42880, r42881, r42882;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r42863);
        mpfr_init(r42864);
        mpfr_init(r42865);
        mpfr_init(r42866);
        mpfr_init(r42867);
        mpfr_init(r42868);
        mpfr_init(r42869);
        mpfr_init(r42870);
        mpfr_init(r42871);
        mpfr_init(r42872);
        mpfr_init(r42873);
        mpfr_init_set_str(r42874, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42875);
        mpfr_init(r42876);
        mpfr_init(r42877);
        mpfr_init(r42878);
        mpfr_init(r42879);
        mpfr_init(r42880);
        mpfr_init(r42881);
        mpfr_init(r42882);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r42863, x, MPFR_RNDN);
        mpfr_set_d(r42864, y, MPFR_RNDN);
        mpfr_log(r42865, r42864, MPFR_RNDN);
        mpfr_mul(r42866, r42863, r42865, MPFR_RNDN);
        mpfr_set_d(r42867, z, MPFR_RNDN);
        mpfr_add(r42868, r42866, r42867, MPFR_RNDN);
        mpfr_set_d(r42869, t, MPFR_RNDN);
        mpfr_add(r42870, r42868, r42869, MPFR_RNDN);
        mpfr_set_d(r42871, a, MPFR_RNDN);
        mpfr_add(r42872, r42870, r42871, MPFR_RNDN);
        mpfr_set_d(r42873, b, MPFR_RNDN);
        ;
        mpfr_sub(r42875, r42873, r42874, MPFR_RNDN);
        mpfr_set_d(r42876, c, MPFR_RNDN);
        mpfr_log(r42877, r42876, MPFR_RNDN);
        mpfr_mul(r42878, r42875, r42877, MPFR_RNDN);
        mpfr_add(r42879, r42872, r42878, MPFR_RNDN);
        mpfr_set_d(r42880, i, MPFR_RNDN);
        mpfr_mul(r42881, r42864, r42880, MPFR_RNDN);
        mpfr_add(r42882, r42879, r42881, MPFR_RNDN);
        return mpfr_get_d(r42882, MPFR_RNDN);
}

