#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 r43197 = x;
        float r43198 = y;
        float r43199 = log(r43198);
        float r43200 = r43197 * r43199;
        float r43201 = z;
        float r43202 = r43200 + r43201;
        float r43203 = t;
        float r43204 = r43202 + r43203;
        float r43205 = a;
        float r43206 = r43204 + r43205;
        float r43207 = b;
        float r43208 = 0.5;
        float r43209 = r43207 - r43208;
        float r43210 = c;
        float r43211 = log(r43210);
        float r43212 = r43209 * r43211;
        float r43213 = r43206 + r43212;
        float r43214 = i;
        float r43215 = r43198 * r43214;
        float r43216 = r43213 + r43215;
        return r43216;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r43217 = x;
        double r43218 = y;
        double r43219 = log(r43218);
        double r43220 = r43217 * r43219;
        double r43221 = z;
        double r43222 = r43220 + r43221;
        double r43223 = t;
        double r43224 = r43222 + r43223;
        double r43225 = a;
        double r43226 = r43224 + r43225;
        double r43227 = b;
        double r43228 = 0.5;
        double r43229 = r43227 - r43228;
        double r43230 = c;
        double r43231 = log(r43230);
        double r43232 = r43229 * r43231;
        double r43233 = r43226 + r43232;
        double r43234 = i;
        double r43235 = r43218 * r43234;
        double r43236 = r43233 + r43235;
        return r43236;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r43237 = x;
        float r43238 = y;
        float r43239 = log(r43238);
        float r43240 = r43237 * r43239;
        float r43241 = z;
        float r43242 = r43240 + r43241;
        float r43243 = t;
        float r43244 = r43242 + r43243;
        float r43245 = a;
        float r43246 = r43244 + r43245;
        float r43247 = b;
        float r43248 = 0.5;
        float r43249 = r43247 - r43248;
        float r43250 = c;
        float r43251 = log(r43250);
        float r43252 = r43249 * r43251;
        float r43253 = r43246 + r43252;
        float r43254 = i;
        float r43255 = r43238 * r43254;
        float r43256 = r43253 + r43255;
        return r43256;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r43257 = x;
        double r43258 = y;
        double r43259 = log(r43258);
        double r43260 = r43257 * r43259;
        double r43261 = z;
        double r43262 = r43260 + r43261;
        double r43263 = t;
        double r43264 = r43262 + r43263;
        double r43265 = a;
        double r43266 = r43264 + r43265;
        double r43267 = b;
        double r43268 = 0.5;
        double r43269 = r43267 - r43268;
        double r43270 = c;
        double r43271 = log(r43270);
        double r43272 = r43269 * r43271;
        double r43273 = r43266 + r43272;
        double r43274 = i;
        double r43275 = r43258 * r43274;
        double r43276 = r43273 + r43275;
        return r43276;
}

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 r43277, r43278, r43279, r43280, r43281, r43282, r43283, r43284, r43285, r43286, r43287, r43288, r43289, r43290, r43291, r43292, r43293, r43294, r43295, r43296;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r43277);
        mpfr_init(r43278);
        mpfr_init(r43279);
        mpfr_init(r43280);
        mpfr_init(r43281);
        mpfr_init(r43282);
        mpfr_init(r43283);
        mpfr_init(r43284);
        mpfr_init(r43285);
        mpfr_init(r43286);
        mpfr_init(r43287);
        mpfr_init_set_str(r43288, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43289);
        mpfr_init(r43290);
        mpfr_init(r43291);
        mpfr_init(r43292);
        mpfr_init(r43293);
        mpfr_init(r43294);
        mpfr_init(r43295);
        mpfr_init(r43296);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43277, x, MPFR_RNDN);
        mpfr_set_d(r43278, y, MPFR_RNDN);
        mpfr_log(r43279, r43278, MPFR_RNDN);
        mpfr_mul(r43280, r43277, r43279, MPFR_RNDN);
        mpfr_set_d(r43281, z, MPFR_RNDN);
        mpfr_add(r43282, r43280, r43281, MPFR_RNDN);
        mpfr_set_d(r43283, t, MPFR_RNDN);
        mpfr_add(r43284, r43282, r43283, MPFR_RNDN);
        mpfr_set_d(r43285, a, MPFR_RNDN);
        mpfr_add(r43286, r43284, r43285, MPFR_RNDN);
        mpfr_set_d(r43287, b, MPFR_RNDN);
        ;
        mpfr_sub(r43289, r43287, r43288, MPFR_RNDN);
        mpfr_set_d(r43290, c, MPFR_RNDN);
        mpfr_log(r43291, r43290, MPFR_RNDN);
        mpfr_mul(r43292, r43289, r43291, MPFR_RNDN);
        mpfr_add(r43293, r43286, r43292, MPFR_RNDN);
        mpfr_set_d(r43294, i, MPFR_RNDN);
        mpfr_mul(r43295, r43278, r43294, MPFR_RNDN);
        mpfr_add(r43296, r43293, r43295, MPFR_RNDN);
        return mpfr_get_d(r43296, MPFR_RNDN);
}

static mpfr_t r43297, r43298, r43299, r43300, r43301, r43302, r43303, r43304, r43305, r43306, r43307, r43308, r43309, r43310, r43311, r43312, r43313, r43314, r43315, r43316;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43297);
        mpfr_init(r43298);
        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_set_str(r43308, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43309);
        mpfr_init(r43310);
        mpfr_init(r43311);
        mpfr_init(r43312);
        mpfr_init(r43313);
        mpfr_init(r43314);
        mpfr_init(r43315);
        mpfr_init(r43316);
}

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

static mpfr_t r43317, r43318, r43319, r43320, r43321, r43322, r43323, r43324, r43325, r43326, r43327, r43328, r43329, r43330, r43331, r43332, r43333, r43334, r43335, r43336;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43317);
        mpfr_init(r43318);
        mpfr_init(r43319);
        mpfr_init(r43320);
        mpfr_init(r43321);
        mpfr_init(r43322);
        mpfr_init(r43323);
        mpfr_init(r43324);
        mpfr_init(r43325);
        mpfr_init(r43326);
        mpfr_init(r43327);
        mpfr_init_set_str(r43328, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43329);
        mpfr_init(r43330);
        mpfr_init(r43331);
        mpfr_init(r43332);
        mpfr_init(r43333);
        mpfr_init(r43334);
        mpfr_init(r43335);
        mpfr_init(r43336);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43317, x, MPFR_RNDN);
        mpfr_set_d(r43318, y, MPFR_RNDN);
        mpfr_log(r43319, r43318, MPFR_RNDN);
        mpfr_mul(r43320, r43317, r43319, MPFR_RNDN);
        mpfr_set_d(r43321, z, MPFR_RNDN);
        mpfr_add(r43322, r43320, r43321, MPFR_RNDN);
        mpfr_set_d(r43323, t, MPFR_RNDN);
        mpfr_add(r43324, r43322, r43323, MPFR_RNDN);
        mpfr_set_d(r43325, a, MPFR_RNDN);
        mpfr_add(r43326, r43324, r43325, MPFR_RNDN);
        mpfr_set_d(r43327, b, MPFR_RNDN);
        ;
        mpfr_sub(r43329, r43327, r43328, MPFR_RNDN);
        mpfr_set_d(r43330, c, MPFR_RNDN);
        mpfr_log(r43331, r43330, MPFR_RNDN);
        mpfr_mul(r43332, r43329, r43331, MPFR_RNDN);
        mpfr_add(r43333, r43326, r43332, MPFR_RNDN);
        mpfr_set_d(r43334, i, MPFR_RNDN);
        mpfr_mul(r43335, r43318, r43334, MPFR_RNDN);
        mpfr_add(r43336, r43333, r43335, MPFR_RNDN);
        return mpfr_get_d(r43336, MPFR_RNDN);
}

