#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, A";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r39666 = x;
        float r39667 = y;
        float r39668 = r39666 + r39667;
        float r39669 = z;
        float r39670 = r39668 + r39669;
        float r39671 = t;
        float r39672 = log(r39671);
        float r39673 = r39669 * r39672;
        float r39674 = r39670 - r39673;
        float r39675 = a;
        float r39676 = 0.5f;
        float r39677 = r39675 - r39676;
        float r39678 = b;
        float r39679 = r39677 * r39678;
        float r39680 = r39674 + r39679;
        return r39680;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r39681 = x;
        double r39682 = y;
        double r39683 = r39681 + r39682;
        double r39684 = z;
        double r39685 = r39683 + r39684;
        double r39686 = t;
        double r39687 = log(r39686);
        double r39688 = r39684 * r39687;
        double r39689 = r39685 - r39688;
        double r39690 = a;
        double r39691 = 0.5;
        double r39692 = r39690 - r39691;
        double r39693 = b;
        double r39694 = r39692 * r39693;
        double r39695 = r39689 + r39694;
        return r39695;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r39696 = x;
        float r39697 = y;
        float r39698 = r39696 + r39697;
        float r39699 = z;
        float r39700 = r39698 + r39699;
        float r39701 = t;
        float r39702 = log(r39701);
        float r39703 = r39699 * r39702;
        float r39704 = cbrt(r39703);
        float r39705 = 3.0f;
        float r39706 = pow(r39704, r39705);
        float r39707 = r39700 - r39706;
        float r39708 = a;
        float r39709 = 0.5f;
        float r39710 = r39708 - r39709;
        float r39711 = b;
        float r39712 = r39710 * r39711;
        float r39713 = r39707 + r39712;
        return r39713;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r39714 = x;
        double r39715 = y;
        double r39716 = r39714 + r39715;
        double r39717 = z;
        double r39718 = r39716 + r39717;
        double r39719 = t;
        double r39720 = log(r39719);
        double r39721 = r39717 * r39720;
        double r39722 = cbrt(r39721);
        double r39723 = 3.0;
        double r39724 = pow(r39722, r39723);
        double r39725 = r39718 - r39724;
        double r39726 = a;
        double r39727 = 0.5;
        double r39728 = r39726 - r39727;
        double r39729 = b;
        double r39730 = r39728 * r39729;
        double r39731 = r39725 + r39730;
        return r39731;
}

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 r39732, r39733, r39734, r39735, r39736, r39737, r39738, r39739, r39740, r39741, r39742, r39743, r39744, r39745, r39746;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r39732);
        mpfr_init(r39733);
        mpfr_init(r39734);
        mpfr_init(r39735);
        mpfr_init(r39736);
        mpfr_init(r39737);
        mpfr_init(r39738);
        mpfr_init(r39739);
        mpfr_init(r39740);
        mpfr_init(r39741);
        mpfr_init_set_str(r39742, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39743);
        mpfr_init(r39744);
        mpfr_init(r39745);
        mpfr_init(r39746);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r39732, x, MPFR_RNDN);
        mpfr_set_d(r39733, y, MPFR_RNDN);
        mpfr_add(r39734, r39732, r39733, MPFR_RNDN);
        mpfr_set_d(r39735, z, MPFR_RNDN);
        mpfr_add(r39736, r39734, r39735, MPFR_RNDN);
        mpfr_set_d(r39737, t, MPFR_RNDN);
        mpfr_log(r39738, r39737, MPFR_RNDN);
        mpfr_mul(r39739, r39735, r39738, MPFR_RNDN);
        mpfr_sub(r39740, r39736, r39739, MPFR_RNDN);
        mpfr_set_d(r39741, a, MPFR_RNDN);
        ;
        mpfr_sub(r39743, r39741, r39742, MPFR_RNDN);
        mpfr_set_d(r39744, b, MPFR_RNDN);
        mpfr_mul(r39745, r39743, r39744, MPFR_RNDN);
        mpfr_add(r39746, r39740, r39745, MPFR_RNDN);
        return mpfr_get_d(r39746, MPFR_RNDN);
}

static mpfr_t r39747, r39748, r39749, r39750, r39751, r39752, r39753, r39754, r39755, r39756, r39757, r39758, r39759, r39760, r39761, r39762, r39763, r39764;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39747);
        mpfr_init(r39748);
        mpfr_init(r39749);
        mpfr_init(r39750);
        mpfr_init(r39751);
        mpfr_init(r39752);
        mpfr_init(r39753);
        mpfr_init(r39754);
        mpfr_init(r39755);
        mpfr_init_set_str(r39756, "3", 10, MPFR_RNDN);
        mpfr_init(r39757);
        mpfr_init(r39758);
        mpfr_init(r39759);
        mpfr_init_set_str(r39760, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39761);
        mpfr_init(r39762);
        mpfr_init(r39763);
        mpfr_init(r39764);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r39747, x, MPFR_RNDN);
        mpfr_set_d(r39748, y, MPFR_RNDN);
        mpfr_add(r39749, r39747, r39748, MPFR_RNDN);
        mpfr_set_d(r39750, z, MPFR_RNDN);
        mpfr_add(r39751, r39749, r39750, MPFR_RNDN);
        mpfr_set_d(r39752, t, MPFR_RNDN);
        mpfr_log(r39753, r39752, MPFR_RNDN);
        mpfr_mul(r39754, r39750, r39753, MPFR_RNDN);
        mpfr_cbrt(r39755, r39754, MPFR_RNDN);
        ;
        mpfr_pow(r39757, r39755, r39756, MPFR_RNDN);
        mpfr_sub(r39758, r39751, r39757, MPFR_RNDN);
        mpfr_set_d(r39759, a, MPFR_RNDN);
        ;
        mpfr_sub(r39761, r39759, r39760, MPFR_RNDN);
        mpfr_set_d(r39762, b, MPFR_RNDN);
        mpfr_mul(r39763, r39761, r39762, MPFR_RNDN);
        mpfr_add(r39764, r39758, r39763, MPFR_RNDN);
        return mpfr_get_d(r39764, MPFR_RNDN);
}

static mpfr_t r39765, r39766, r39767, r39768, r39769, r39770, r39771, r39772, r39773, r39774, r39775, r39776, r39777, r39778, r39779, r39780, r39781, r39782;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39765);
        mpfr_init(r39766);
        mpfr_init(r39767);
        mpfr_init(r39768);
        mpfr_init(r39769);
        mpfr_init(r39770);
        mpfr_init(r39771);
        mpfr_init(r39772);
        mpfr_init(r39773);
        mpfr_init_set_str(r39774, "3", 10, MPFR_RNDN);
        mpfr_init(r39775);
        mpfr_init(r39776);
        mpfr_init(r39777);
        mpfr_init_set_str(r39778, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39779);
        mpfr_init(r39780);
        mpfr_init(r39781);
        mpfr_init(r39782);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r39765, x, MPFR_RNDN);
        mpfr_set_d(r39766, y, MPFR_RNDN);
        mpfr_add(r39767, r39765, r39766, MPFR_RNDN);
        mpfr_set_d(r39768, z, MPFR_RNDN);
        mpfr_add(r39769, r39767, r39768, MPFR_RNDN);
        mpfr_set_d(r39770, t, MPFR_RNDN);
        mpfr_log(r39771, r39770, MPFR_RNDN);
        mpfr_mul(r39772, r39768, r39771, MPFR_RNDN);
        mpfr_cbrt(r39773, r39772, MPFR_RNDN);
        ;
        mpfr_pow(r39775, r39773, r39774, MPFR_RNDN);
        mpfr_sub(r39776, r39769, r39775, MPFR_RNDN);
        mpfr_set_d(r39777, a, MPFR_RNDN);
        ;
        mpfr_sub(r39779, r39777, r39778, MPFR_RNDN);
        mpfr_set_d(r39780, b, MPFR_RNDN);
        mpfr_mul(r39781, r39779, r39780, MPFR_RNDN);
        mpfr_add(r39782, r39776, r39781, MPFR_RNDN);
        return mpfr_get_d(r39782, MPFR_RNDN);
}

