#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 r43113 = x;
        float r43114 = y;
        float r43115 = r43113 + r43114;
        float r43116 = z;
        float r43117 = r43115 + r43116;
        float r43118 = t;
        float r43119 = log(r43118);
        float r43120 = r43116 * r43119;
        float r43121 = r43117 - r43120;
        float r43122 = a;
        float r43123 = 0.5;
        float r43124 = r43122 - r43123;
        float r43125 = b;
        float r43126 = r43124 * r43125;
        float r43127 = r43121 + r43126;
        return r43127;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r43128 = x;
        double r43129 = y;
        double r43130 = r43128 + r43129;
        double r43131 = z;
        double r43132 = r43130 + r43131;
        double r43133 = t;
        double r43134 = log(r43133);
        double r43135 = r43131 * r43134;
        double r43136 = r43132 - r43135;
        double r43137 = a;
        double r43138 = 0.5;
        double r43139 = r43137 - r43138;
        double r43140 = b;
        double r43141 = r43139 * r43140;
        double r43142 = r43136 + r43141;
        return r43142;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r43143 = x;
        float r43144 = y;
        float r43145 = r43143 + r43144;
        float r43146 = z;
        float r43147 = r43145 + r43146;
        float r43148 = t;
        float r43149 = log(r43148);
        float r43150 = r43146 * r43149;
        float r43151 = r43147 - r43150;
        float r43152 = a;
        float r43153 = 0.5;
        float r43154 = r43152 - r43153;
        float r43155 = b;
        float r43156 = r43154 * r43155;
        float r43157 = r43151 + r43156;
        return r43157;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r43158 = x;
        double r43159 = y;
        double r43160 = r43158 + r43159;
        double r43161 = z;
        double r43162 = r43160 + r43161;
        double r43163 = t;
        double r43164 = log(r43163);
        double r43165 = r43161 * r43164;
        double r43166 = r43162 - r43165;
        double r43167 = a;
        double r43168 = 0.5;
        double r43169 = r43167 - r43168;
        double r43170 = b;
        double r43171 = r43169 * r43170;
        double r43172 = r43166 + r43171;
        return r43172;
}

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 r43173, r43174, r43175, r43176, r43177, r43178, r43179, r43180, r43181, r43182, r43183, r43184, r43185, r43186, r43187;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r43173);
        mpfr_init(r43174);
        mpfr_init(r43175);
        mpfr_init(r43176);
        mpfr_init(r43177);
        mpfr_init(r43178);
        mpfr_init(r43179);
        mpfr_init(r43180);
        mpfr_init(r43181);
        mpfr_init(r43182);
        mpfr_init_set_str(r43183, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43184);
        mpfr_init(r43185);
        mpfr_init(r43186);
        mpfr_init(r43187);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43173, x, MPFR_RNDN);
        mpfr_set_d(r43174, y, MPFR_RNDN);
        mpfr_add(r43175, r43173, r43174, MPFR_RNDN);
        mpfr_set_d(r43176, z, MPFR_RNDN);
        mpfr_add(r43177, r43175, r43176, MPFR_RNDN);
        mpfr_set_d(r43178, t, MPFR_RNDN);
        mpfr_log(r43179, r43178, MPFR_RNDN);
        mpfr_mul(r43180, r43176, r43179, MPFR_RNDN);
        mpfr_sub(r43181, r43177, r43180, MPFR_RNDN);
        mpfr_set_d(r43182, a, MPFR_RNDN);
        ;
        mpfr_sub(r43184, r43182, r43183, MPFR_RNDN);
        mpfr_set_d(r43185, b, MPFR_RNDN);
        mpfr_mul(r43186, r43184, r43185, MPFR_RNDN);
        mpfr_add(r43187, r43181, r43186, MPFR_RNDN);
        return mpfr_get_d(r43187, MPFR_RNDN);
}

static mpfr_t r43188, r43189, r43190, r43191, r43192, r43193, r43194, r43195, r43196, r43197, r43198, r43199, r43200, r43201, r43202;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43188);
        mpfr_init(r43189);
        mpfr_init(r43190);
        mpfr_init(r43191);
        mpfr_init(r43192);
        mpfr_init(r43193);
        mpfr_init(r43194);
        mpfr_init(r43195);
        mpfr_init(r43196);
        mpfr_init(r43197);
        mpfr_init_set_str(r43198, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43199);
        mpfr_init(r43200);
        mpfr_init(r43201);
        mpfr_init(r43202);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43188, x, MPFR_RNDN);
        mpfr_set_d(r43189, y, MPFR_RNDN);
        mpfr_add(r43190, r43188, r43189, MPFR_RNDN);
        mpfr_set_d(r43191, z, MPFR_RNDN);
        mpfr_add(r43192, r43190, r43191, MPFR_RNDN);
        mpfr_set_d(r43193, t, MPFR_RNDN);
        mpfr_log(r43194, r43193, MPFR_RNDN);
        mpfr_mul(r43195, r43191, r43194, MPFR_RNDN);
        mpfr_sub(r43196, r43192, r43195, MPFR_RNDN);
        mpfr_set_d(r43197, a, MPFR_RNDN);
        ;
        mpfr_sub(r43199, r43197, r43198, MPFR_RNDN);
        mpfr_set_d(r43200, b, MPFR_RNDN);
        mpfr_mul(r43201, r43199, r43200, MPFR_RNDN);
        mpfr_add(r43202, r43196, r43201, MPFR_RNDN);
        return mpfr_get_d(r43202, MPFR_RNDN);
}

static mpfr_t r43203, r43204, r43205, r43206, r43207, r43208, r43209, r43210, r43211, r43212, r43213, r43214, r43215, r43216, r43217;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43203);
        mpfr_init(r43204);
        mpfr_init(r43205);
        mpfr_init(r43206);
        mpfr_init(r43207);
        mpfr_init(r43208);
        mpfr_init(r43209);
        mpfr_init(r43210);
        mpfr_init(r43211);
        mpfr_init(r43212);
        mpfr_init_set_str(r43213, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43214);
        mpfr_init(r43215);
        mpfr_init(r43216);
        mpfr_init(r43217);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43203, x, MPFR_RNDN);
        mpfr_set_d(r43204, y, MPFR_RNDN);
        mpfr_add(r43205, r43203, r43204, MPFR_RNDN);
        mpfr_set_d(r43206, z, MPFR_RNDN);
        mpfr_add(r43207, r43205, r43206, MPFR_RNDN);
        mpfr_set_d(r43208, t, MPFR_RNDN);
        mpfr_log(r43209, r43208, MPFR_RNDN);
        mpfr_mul(r43210, r43206, r43209, MPFR_RNDN);
        mpfr_sub(r43211, r43207, r43210, MPFR_RNDN);
        mpfr_set_d(r43212, a, MPFR_RNDN);
        ;
        mpfr_sub(r43214, r43212, r43213, MPFR_RNDN);
        mpfr_set_d(r43215, b, MPFR_RNDN);
        mpfr_mul(r43216, r43214, r43215, MPFR_RNDN);
        mpfr_add(r43217, r43211, r43216, MPFR_RNDN);
        return mpfr_get_d(r43217, MPFR_RNDN);
}

