#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 r43337 = x;
        float r43338 = y;
        float r43339 = r43337 + r43338;
        float r43340 = z;
        float r43341 = r43339 + r43340;
        float r43342 = t;
        float r43343 = log(r43342);
        float r43344 = r43340 * r43343;
        float r43345 = r43341 - r43344;
        float r43346 = a;
        float r43347 = 0.5;
        float r43348 = r43346 - r43347;
        float r43349 = b;
        float r43350 = r43348 * r43349;
        float r43351 = r43345 + r43350;
        return r43351;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r43352 = x;
        double r43353 = y;
        double r43354 = r43352 + r43353;
        double r43355 = z;
        double r43356 = r43354 + r43355;
        double r43357 = t;
        double r43358 = log(r43357);
        double r43359 = r43355 * r43358;
        double r43360 = r43356 - r43359;
        double r43361 = a;
        double r43362 = 0.5;
        double r43363 = r43361 - r43362;
        double r43364 = b;
        double r43365 = r43363 * r43364;
        double r43366 = r43360 + r43365;
        return r43366;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r43367 = x;
        float r43368 = y;
        float r43369 = r43367 + r43368;
        float r43370 = z;
        float r43371 = r43369 + r43370;
        float r43372 = t;
        float r43373 = log(r43372);
        float r43374 = r43370 * r43373;
        float r43375 = r43371 - r43374;
        float r43376 = a;
        float r43377 = 0.5;
        float r43378 = r43376 - r43377;
        float r43379 = b;
        float r43380 = r43378 * r43379;
        float r43381 = r43375 + r43380;
        return r43381;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r43382 = x;
        double r43383 = y;
        double r43384 = r43382 + r43383;
        double r43385 = z;
        double r43386 = r43384 + r43385;
        double r43387 = t;
        double r43388 = log(r43387);
        double r43389 = r43385 * r43388;
        double r43390 = r43386 - r43389;
        double r43391 = a;
        double r43392 = 0.5;
        double r43393 = r43391 - r43392;
        double r43394 = b;
        double r43395 = r43393 * r43394;
        double r43396 = r43390 + r43395;
        return r43396;
}

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 r43397, r43398, r43399, r43400, r43401, r43402, r43403, r43404, r43405, r43406, r43407, r43408, r43409, r43410, r43411;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r43397);
        mpfr_init(r43398);
        mpfr_init(r43399);
        mpfr_init(r43400);
        mpfr_init(r43401);
        mpfr_init(r43402);
        mpfr_init(r43403);
        mpfr_init(r43404);
        mpfr_init(r43405);
        mpfr_init(r43406);
        mpfr_init_set_str(r43407, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43408);
        mpfr_init(r43409);
        mpfr_init(r43410);
        mpfr_init(r43411);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43397, x, MPFR_RNDN);
        mpfr_set_d(r43398, y, MPFR_RNDN);
        mpfr_add(r43399, r43397, r43398, MPFR_RNDN);
        mpfr_set_d(r43400, z, MPFR_RNDN);
        mpfr_add(r43401, r43399, r43400, MPFR_RNDN);
        mpfr_set_d(r43402, t, MPFR_RNDN);
        mpfr_log(r43403, r43402, MPFR_RNDN);
        mpfr_mul(r43404, r43400, r43403, MPFR_RNDN);
        mpfr_sub(r43405, r43401, r43404, MPFR_RNDN);
        mpfr_set_d(r43406, a, MPFR_RNDN);
        ;
        mpfr_sub(r43408, r43406, r43407, MPFR_RNDN);
        mpfr_set_d(r43409, b, MPFR_RNDN);
        mpfr_mul(r43410, r43408, r43409, MPFR_RNDN);
        mpfr_add(r43411, r43405, r43410, MPFR_RNDN);
        return mpfr_get_d(r43411, MPFR_RNDN);
}

static mpfr_t r43412, r43413, r43414, r43415, r43416, r43417, r43418, r43419, r43420, r43421, r43422, r43423, r43424, r43425, r43426;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43412);
        mpfr_init(r43413);
        mpfr_init(r43414);
        mpfr_init(r43415);
        mpfr_init(r43416);
        mpfr_init(r43417);
        mpfr_init(r43418);
        mpfr_init(r43419);
        mpfr_init(r43420);
        mpfr_init(r43421);
        mpfr_init_set_str(r43422, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43423);
        mpfr_init(r43424);
        mpfr_init(r43425);
        mpfr_init(r43426);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43412, x, MPFR_RNDN);
        mpfr_set_d(r43413, y, MPFR_RNDN);
        mpfr_add(r43414, r43412, r43413, MPFR_RNDN);
        mpfr_set_d(r43415, z, MPFR_RNDN);
        mpfr_add(r43416, r43414, r43415, MPFR_RNDN);
        mpfr_set_d(r43417, t, MPFR_RNDN);
        mpfr_log(r43418, r43417, MPFR_RNDN);
        mpfr_mul(r43419, r43415, r43418, MPFR_RNDN);
        mpfr_sub(r43420, r43416, r43419, MPFR_RNDN);
        mpfr_set_d(r43421, a, MPFR_RNDN);
        ;
        mpfr_sub(r43423, r43421, r43422, MPFR_RNDN);
        mpfr_set_d(r43424, b, MPFR_RNDN);
        mpfr_mul(r43425, r43423, r43424, MPFR_RNDN);
        mpfr_add(r43426, r43420, r43425, MPFR_RNDN);
        return mpfr_get_d(r43426, MPFR_RNDN);
}

static mpfr_t r43427, r43428, r43429, r43430, r43431, r43432, r43433, r43434, r43435, r43436, r43437, r43438, r43439, r43440, r43441;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43427);
        mpfr_init(r43428);
        mpfr_init(r43429);
        mpfr_init(r43430);
        mpfr_init(r43431);
        mpfr_init(r43432);
        mpfr_init(r43433);
        mpfr_init(r43434);
        mpfr_init(r43435);
        mpfr_init(r43436);
        mpfr_init_set_str(r43437, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43438);
        mpfr_init(r43439);
        mpfr_init(r43440);
        mpfr_init(r43441);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43427, x, MPFR_RNDN);
        mpfr_set_d(r43428, y, MPFR_RNDN);
        mpfr_add(r43429, r43427, r43428, MPFR_RNDN);
        mpfr_set_d(r43430, z, MPFR_RNDN);
        mpfr_add(r43431, r43429, r43430, MPFR_RNDN);
        mpfr_set_d(r43432, t, MPFR_RNDN);
        mpfr_log(r43433, r43432, MPFR_RNDN);
        mpfr_mul(r43434, r43430, r43433, MPFR_RNDN);
        mpfr_sub(r43435, r43431, r43434, MPFR_RNDN);
        mpfr_set_d(r43436, a, MPFR_RNDN);
        ;
        mpfr_sub(r43438, r43436, r43437, MPFR_RNDN);
        mpfr_set_d(r43439, b, MPFR_RNDN);
        mpfr_mul(r43440, r43438, r43439, MPFR_RNDN);
        mpfr_add(r43441, r43435, r43440, MPFR_RNDN);
        return mpfr_get_d(r43441, MPFR_RNDN);
}

