#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 r43541 = x;
        float r43542 = y;
        float r43543 = r43541 + r43542;
        float r43544 = z;
        float r43545 = r43543 + r43544;
        float r43546 = t;
        float r43547 = log(r43546);
        float r43548 = r43544 * r43547;
        float r43549 = r43545 - r43548;
        float r43550 = a;
        float r43551 = 0.5;
        float r43552 = r43550 - r43551;
        float r43553 = b;
        float r43554 = r43552 * r43553;
        float r43555 = r43549 + r43554;
        return r43555;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r43556 = x;
        double r43557 = y;
        double r43558 = r43556 + r43557;
        double r43559 = z;
        double r43560 = r43558 + r43559;
        double r43561 = t;
        double r43562 = log(r43561);
        double r43563 = r43559 * r43562;
        double r43564 = r43560 - r43563;
        double r43565 = a;
        double r43566 = 0.5;
        double r43567 = r43565 - r43566;
        double r43568 = b;
        double r43569 = r43567 * r43568;
        double r43570 = r43564 + r43569;
        return r43570;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r43571 = x;
        float r43572 = y;
        float r43573 = r43571 + r43572;
        float r43574 = z;
        float r43575 = r43573 + r43574;
        float r43576 = t;
        float r43577 = log(r43576);
        float r43578 = r43574 * r43577;
        float r43579 = r43575 - r43578;
        float r43580 = a;
        float r43581 = 0.5;
        float r43582 = r43580 - r43581;
        float r43583 = b;
        float r43584 = r43582 * r43583;
        float r43585 = r43579 + r43584;
        return r43585;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r43586 = x;
        double r43587 = y;
        double r43588 = r43586 + r43587;
        double r43589 = z;
        double r43590 = r43588 + r43589;
        double r43591 = t;
        double r43592 = log(r43591);
        double r43593 = r43589 * r43592;
        double r43594 = r43590 - r43593;
        double r43595 = a;
        double r43596 = 0.5;
        double r43597 = r43595 - r43596;
        double r43598 = b;
        double r43599 = r43597 * r43598;
        double r43600 = r43594 + r43599;
        return r43600;
}

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 r43601, r43602, r43603, r43604, r43605, r43606, r43607, r43608, r43609, r43610, r43611, r43612, r43613, r43614, r43615;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r43601);
        mpfr_init(r43602);
        mpfr_init(r43603);
        mpfr_init(r43604);
        mpfr_init(r43605);
        mpfr_init(r43606);
        mpfr_init(r43607);
        mpfr_init(r43608);
        mpfr_init(r43609);
        mpfr_init(r43610);
        mpfr_init_set_str(r43611, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43612);
        mpfr_init(r43613);
        mpfr_init(r43614);
        mpfr_init(r43615);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43601, x, MPFR_RNDN);
        mpfr_set_d(r43602, y, MPFR_RNDN);
        mpfr_add(r43603, r43601, r43602, MPFR_RNDN);
        mpfr_set_d(r43604, z, MPFR_RNDN);
        mpfr_add(r43605, r43603, r43604, MPFR_RNDN);
        mpfr_set_d(r43606, t, MPFR_RNDN);
        mpfr_log(r43607, r43606, MPFR_RNDN);
        mpfr_mul(r43608, r43604, r43607, MPFR_RNDN);
        mpfr_sub(r43609, r43605, r43608, MPFR_RNDN);
        mpfr_set_d(r43610, a, MPFR_RNDN);
        ;
        mpfr_sub(r43612, r43610, r43611, MPFR_RNDN);
        mpfr_set_d(r43613, b, MPFR_RNDN);
        mpfr_mul(r43614, r43612, r43613, MPFR_RNDN);
        mpfr_add(r43615, r43609, r43614, MPFR_RNDN);
        return mpfr_get_d(r43615, MPFR_RNDN);
}

static mpfr_t r43616, r43617, r43618, r43619, r43620, r43621, r43622, r43623, r43624, r43625, r43626, r43627, r43628, r43629, r43630;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43616);
        mpfr_init(r43617);
        mpfr_init(r43618);
        mpfr_init(r43619);
        mpfr_init(r43620);
        mpfr_init(r43621);
        mpfr_init(r43622);
        mpfr_init(r43623);
        mpfr_init(r43624);
        mpfr_init(r43625);
        mpfr_init_set_str(r43626, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43627);
        mpfr_init(r43628);
        mpfr_init(r43629);
        mpfr_init(r43630);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43616, x, MPFR_RNDN);
        mpfr_set_d(r43617, y, MPFR_RNDN);
        mpfr_add(r43618, r43616, r43617, MPFR_RNDN);
        mpfr_set_d(r43619, z, MPFR_RNDN);
        mpfr_add(r43620, r43618, r43619, MPFR_RNDN);
        mpfr_set_d(r43621, t, MPFR_RNDN);
        mpfr_log(r43622, r43621, MPFR_RNDN);
        mpfr_mul(r43623, r43619, r43622, MPFR_RNDN);
        mpfr_sub(r43624, r43620, r43623, MPFR_RNDN);
        mpfr_set_d(r43625, a, MPFR_RNDN);
        ;
        mpfr_sub(r43627, r43625, r43626, MPFR_RNDN);
        mpfr_set_d(r43628, b, MPFR_RNDN);
        mpfr_mul(r43629, r43627, r43628, MPFR_RNDN);
        mpfr_add(r43630, r43624, r43629, MPFR_RNDN);
        return mpfr_get_d(r43630, MPFR_RNDN);
}

static mpfr_t r43631, r43632, r43633, r43634, r43635, r43636, r43637, r43638, r43639, r43640, r43641, r43642, r43643, r43644, r43645;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43631);
        mpfr_init(r43632);
        mpfr_init(r43633);
        mpfr_init(r43634);
        mpfr_init(r43635);
        mpfr_init(r43636);
        mpfr_init(r43637);
        mpfr_init(r43638);
        mpfr_init(r43639);
        mpfr_init(r43640);
        mpfr_init_set_str(r43641, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43642);
        mpfr_init(r43643);
        mpfr_init(r43644);
        mpfr_init(r43645);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43631, x, MPFR_RNDN);
        mpfr_set_d(r43632, y, MPFR_RNDN);
        mpfr_add(r43633, r43631, r43632, MPFR_RNDN);
        mpfr_set_d(r43634, z, MPFR_RNDN);
        mpfr_add(r43635, r43633, r43634, MPFR_RNDN);
        mpfr_set_d(r43636, t, MPFR_RNDN);
        mpfr_log(r43637, r43636, MPFR_RNDN);
        mpfr_mul(r43638, r43634, r43637, MPFR_RNDN);
        mpfr_sub(r43639, r43635, r43638, MPFR_RNDN);
        mpfr_set_d(r43640, a, MPFR_RNDN);
        ;
        mpfr_sub(r43642, r43640, r43641, MPFR_RNDN);
        mpfr_set_d(r43643, b, MPFR_RNDN);
        mpfr_mul(r43644, r43642, r43643, MPFR_RNDN);
        mpfr_add(r43645, r43639, r43644, MPFR_RNDN);
        return mpfr_get_d(r43645, MPFR_RNDN);
}

