#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 r43224 = x;
        float r43225 = y;
        float r43226 = r43224 + r43225;
        float r43227 = z;
        float r43228 = r43226 + r43227;
        float r43229 = t;
        float r43230 = log(r43229);
        float r43231 = r43227 * r43230;
        float r43232 = r43228 - r43231;
        float r43233 = a;
        float r43234 = 0.5;
        float r43235 = r43233 - r43234;
        float r43236 = b;
        float r43237 = r43235 * r43236;
        float r43238 = r43232 + r43237;
        return r43238;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r43239 = x;
        double r43240 = y;
        double r43241 = r43239 + r43240;
        double r43242 = z;
        double r43243 = r43241 + r43242;
        double r43244 = t;
        double r43245 = log(r43244);
        double r43246 = r43242 * r43245;
        double r43247 = r43243 - r43246;
        double r43248 = a;
        double r43249 = 0.5;
        double r43250 = r43248 - r43249;
        double r43251 = b;
        double r43252 = r43250 * r43251;
        double r43253 = r43247 + r43252;
        return r43253;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r43254 = x;
        float r43255 = y;
        float r43256 = r43254 + r43255;
        float r43257 = z;
        float r43258 = r43256 + r43257;
        float r43259 = t;
        float r43260 = log(r43259);
        float r43261 = r43257 * r43260;
        float r43262 = r43258 - r43261;
        float r43263 = a;
        float r43264 = 0.5;
        float r43265 = r43263 - r43264;
        float r43266 = b;
        float r43267 = r43265 * r43266;
        float r43268 = r43262 + r43267;
        return r43268;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r43269 = x;
        double r43270 = y;
        double r43271 = r43269 + r43270;
        double r43272 = z;
        double r43273 = r43271 + r43272;
        double r43274 = t;
        double r43275 = log(r43274);
        double r43276 = r43272 * r43275;
        double r43277 = r43273 - r43276;
        double r43278 = a;
        double r43279 = 0.5;
        double r43280 = r43278 - r43279;
        double r43281 = b;
        double r43282 = r43280 * r43281;
        double r43283 = r43277 + r43282;
        return r43283;
}

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 r43284, r43285, r43286, r43287, r43288, r43289, r43290, r43291, r43292, r43293, r43294, r43295, r43296, r43297, r43298;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r43284);
        mpfr_init(r43285);
        mpfr_init(r43286);
        mpfr_init(r43287);
        mpfr_init(r43288);
        mpfr_init(r43289);
        mpfr_init(r43290);
        mpfr_init(r43291);
        mpfr_init(r43292);
        mpfr_init(r43293);
        mpfr_init_set_str(r43294, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43295);
        mpfr_init(r43296);
        mpfr_init(r43297);
        mpfr_init(r43298);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43284, x, MPFR_RNDN);
        mpfr_set_d(r43285, y, MPFR_RNDN);
        mpfr_add(r43286, r43284, r43285, MPFR_RNDN);
        mpfr_set_d(r43287, z, MPFR_RNDN);
        mpfr_add(r43288, r43286, r43287, MPFR_RNDN);
        mpfr_set_d(r43289, t, MPFR_RNDN);
        mpfr_log(r43290, r43289, MPFR_RNDN);
        mpfr_mul(r43291, r43287, r43290, MPFR_RNDN);
        mpfr_sub(r43292, r43288, r43291, MPFR_RNDN);
        mpfr_set_d(r43293, a, MPFR_RNDN);
        ;
        mpfr_sub(r43295, r43293, r43294, MPFR_RNDN);
        mpfr_set_d(r43296, b, MPFR_RNDN);
        mpfr_mul(r43297, r43295, r43296, MPFR_RNDN);
        mpfr_add(r43298, r43292, r43297, MPFR_RNDN);
        return mpfr_get_d(r43298, MPFR_RNDN);
}

static mpfr_t r43299, r43300, r43301, r43302, r43303, r43304, r43305, r43306, r43307, r43308, r43309, r43310, r43311, r43312, r43313;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43299);
        mpfr_init(r43300);
        mpfr_init(r43301);
        mpfr_init(r43302);
        mpfr_init(r43303);
        mpfr_init(r43304);
        mpfr_init(r43305);
        mpfr_init(r43306);
        mpfr_init(r43307);
        mpfr_init(r43308);
        mpfr_init_set_str(r43309, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43310);
        mpfr_init(r43311);
        mpfr_init(r43312);
        mpfr_init(r43313);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43299, x, MPFR_RNDN);
        mpfr_set_d(r43300, y, MPFR_RNDN);
        mpfr_add(r43301, r43299, r43300, MPFR_RNDN);
        mpfr_set_d(r43302, z, MPFR_RNDN);
        mpfr_add(r43303, r43301, r43302, MPFR_RNDN);
        mpfr_set_d(r43304, t, MPFR_RNDN);
        mpfr_log(r43305, r43304, MPFR_RNDN);
        mpfr_mul(r43306, r43302, r43305, MPFR_RNDN);
        mpfr_sub(r43307, r43303, r43306, MPFR_RNDN);
        mpfr_set_d(r43308, a, MPFR_RNDN);
        ;
        mpfr_sub(r43310, r43308, r43309, MPFR_RNDN);
        mpfr_set_d(r43311, b, MPFR_RNDN);
        mpfr_mul(r43312, r43310, r43311, MPFR_RNDN);
        mpfr_add(r43313, r43307, r43312, MPFR_RNDN);
        return mpfr_get_d(r43313, MPFR_RNDN);
}

static mpfr_t r43314, r43315, r43316, r43317, r43318, r43319, r43320, r43321, r43322, r43323, r43324, r43325, r43326, r43327, r43328;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43314);
        mpfr_init(r43315);
        mpfr_init(r43316);
        mpfr_init(r43317);
        mpfr_init(r43318);
        mpfr_init(r43319);
        mpfr_init(r43320);
        mpfr_init(r43321);
        mpfr_init(r43322);
        mpfr_init(r43323);
        mpfr_init_set_str(r43324, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43325);
        mpfr_init(r43326);
        mpfr_init(r43327);
        mpfr_init(r43328);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43314, x, MPFR_RNDN);
        mpfr_set_d(r43315, y, MPFR_RNDN);
        mpfr_add(r43316, r43314, r43315, MPFR_RNDN);
        mpfr_set_d(r43317, z, MPFR_RNDN);
        mpfr_add(r43318, r43316, r43317, MPFR_RNDN);
        mpfr_set_d(r43319, t, MPFR_RNDN);
        mpfr_log(r43320, r43319, MPFR_RNDN);
        mpfr_mul(r43321, r43317, r43320, MPFR_RNDN);
        mpfr_sub(r43322, r43318, r43321, MPFR_RNDN);
        mpfr_set_d(r43323, a, MPFR_RNDN);
        ;
        mpfr_sub(r43325, r43323, r43324, MPFR_RNDN);
        mpfr_set_d(r43326, b, MPFR_RNDN);
        mpfr_mul(r43327, r43325, r43326, MPFR_RNDN);
        mpfr_add(r43328, r43322, r43327, MPFR_RNDN);
        return mpfr_get_d(r43328, MPFR_RNDN);
}

