#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 r39526 = x;
        float r39527 = y;
        float r39528 = log(r39527);
        float r39529 = r39526 * r39528;
        float r39530 = z;
        float r39531 = r39529 + r39530;
        float r39532 = t;
        float r39533 = r39531 + r39532;
        float r39534 = a;
        float r39535 = r39533 + r39534;
        float r39536 = b;
        float r39537 = 0.5f;
        float r39538 = r39536 - r39537;
        float r39539 = c;
        float r39540 = log(r39539);
        float r39541 = r39538 * r39540;
        float r39542 = r39535 + r39541;
        float r39543 = i;
        float r39544 = r39527 * r39543;
        float r39545 = r39542 + r39544;
        return r39545;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r39546 = x;
        double r39547 = y;
        double r39548 = log(r39547);
        double r39549 = r39546 * r39548;
        double r39550 = z;
        double r39551 = r39549 + r39550;
        double r39552 = t;
        double r39553 = r39551 + r39552;
        double r39554 = a;
        double r39555 = r39553 + r39554;
        double r39556 = b;
        double r39557 = 0.5;
        double r39558 = r39556 - r39557;
        double r39559 = c;
        double r39560 = log(r39559);
        double r39561 = r39558 * r39560;
        double r39562 = r39555 + r39561;
        double r39563 = i;
        double r39564 = r39547 * r39563;
        double r39565 = r39562 + r39564;
        return r39565;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r39566 = x;
        float r39567 = y;
        float r39568 = log(r39567);
        float r39569 = r39566 * r39568;
        float r39570 = z;
        float r39571 = r39569 + r39570;
        float r39572 = t;
        float r39573 = r39571 + r39572;
        float r39574 = a;
        float r39575 = r39573 + r39574;
        float r39576 = b;
        float r39577 = 0.5f;
        float r39578 = r39576 - r39577;
        float r39579 = c;
        float r39580 = log(r39579);
        float r39581 = r39578 * r39580;
        float r39582 = r39575 + r39581;
        float r39583 = i;
        float r39584 = r39567 * r39583;
        float r39585 = r39582 + r39584;
        return r39585;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r39586 = x;
        double r39587 = y;
        double r39588 = log(r39587);
        double r39589 = r39586 * r39588;
        double r39590 = z;
        double r39591 = r39589 + r39590;
        double r39592 = t;
        double r39593 = r39591 + r39592;
        double r39594 = a;
        double r39595 = r39593 + r39594;
        double r39596 = b;
        double r39597 = 0.5;
        double r39598 = r39596 - r39597;
        double r39599 = c;
        double r39600 = log(r39599);
        double r39601 = r39598 * r39600;
        double r39602 = r39595 + r39601;
        double r39603 = i;
        double r39604 = r39587 * r39603;
        double r39605 = r39602 + r39604;
        return r39605;
}

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 r39606, r39607, r39608, r39609, r39610, r39611, r39612, r39613, r39614, r39615, r39616, r39617, r39618, r39619, r39620, r39621, r39622, r39623, r39624, r39625;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r39606);
        mpfr_init(r39607);
        mpfr_init(r39608);
        mpfr_init(r39609);
        mpfr_init(r39610);
        mpfr_init(r39611);
        mpfr_init(r39612);
        mpfr_init(r39613);
        mpfr_init(r39614);
        mpfr_init(r39615);
        mpfr_init(r39616);
        mpfr_init_set_str(r39617, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39618);
        mpfr_init(r39619);
        mpfr_init(r39620);
        mpfr_init(r39621);
        mpfr_init(r39622);
        mpfr_init(r39623);
        mpfr_init(r39624);
        mpfr_init(r39625);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39606, x, MPFR_RNDN);
        mpfr_set_d(r39607, y, MPFR_RNDN);
        mpfr_log(r39608, r39607, MPFR_RNDN);
        mpfr_mul(r39609, r39606, r39608, MPFR_RNDN);
        mpfr_set_d(r39610, z, MPFR_RNDN);
        mpfr_add(r39611, r39609, r39610, MPFR_RNDN);
        mpfr_set_d(r39612, t, MPFR_RNDN);
        mpfr_add(r39613, r39611, r39612, MPFR_RNDN);
        mpfr_set_d(r39614, a, MPFR_RNDN);
        mpfr_add(r39615, r39613, r39614, MPFR_RNDN);
        mpfr_set_d(r39616, b, MPFR_RNDN);
        ;
        mpfr_sub(r39618, r39616, r39617, MPFR_RNDN);
        mpfr_set_d(r39619, c, MPFR_RNDN);
        mpfr_log(r39620, r39619, MPFR_RNDN);
        mpfr_mul(r39621, r39618, r39620, MPFR_RNDN);
        mpfr_add(r39622, r39615, r39621, MPFR_RNDN);
        mpfr_set_d(r39623, i, MPFR_RNDN);
        mpfr_mul(r39624, r39607, r39623, MPFR_RNDN);
        mpfr_add(r39625, r39622, r39624, MPFR_RNDN);
        return mpfr_get_d(r39625, MPFR_RNDN);
}

static mpfr_t r39626, r39627, r39628, r39629, r39630, r39631, r39632, r39633, r39634, r39635, r39636, r39637, r39638, r39639, r39640, r39641, r39642, r39643, r39644, r39645;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39626);
        mpfr_init(r39627);
        mpfr_init(r39628);
        mpfr_init(r39629);
        mpfr_init(r39630);
        mpfr_init(r39631);
        mpfr_init(r39632);
        mpfr_init(r39633);
        mpfr_init(r39634);
        mpfr_init(r39635);
        mpfr_init(r39636);
        mpfr_init_set_str(r39637, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39638);
        mpfr_init(r39639);
        mpfr_init(r39640);
        mpfr_init(r39641);
        mpfr_init(r39642);
        mpfr_init(r39643);
        mpfr_init(r39644);
        mpfr_init(r39645);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39626, x, MPFR_RNDN);
        mpfr_set_d(r39627, y, MPFR_RNDN);
        mpfr_log(r39628, r39627, MPFR_RNDN);
        mpfr_mul(r39629, r39626, r39628, MPFR_RNDN);
        mpfr_set_d(r39630, z, MPFR_RNDN);
        mpfr_add(r39631, r39629, r39630, MPFR_RNDN);
        mpfr_set_d(r39632, t, MPFR_RNDN);
        mpfr_add(r39633, r39631, r39632, MPFR_RNDN);
        mpfr_set_d(r39634, a, MPFR_RNDN);
        mpfr_add(r39635, r39633, r39634, MPFR_RNDN);
        mpfr_set_d(r39636, b, MPFR_RNDN);
        ;
        mpfr_sub(r39638, r39636, r39637, MPFR_RNDN);
        mpfr_set_d(r39639, c, MPFR_RNDN);
        mpfr_log(r39640, r39639, MPFR_RNDN);
        mpfr_mul(r39641, r39638, r39640, MPFR_RNDN);
        mpfr_add(r39642, r39635, r39641, MPFR_RNDN);
        mpfr_set_d(r39643, i, MPFR_RNDN);
        mpfr_mul(r39644, r39627, r39643, MPFR_RNDN);
        mpfr_add(r39645, r39642, r39644, MPFR_RNDN);
        return mpfr_get_d(r39645, MPFR_RNDN);
}

static mpfr_t r39646, r39647, r39648, r39649, r39650, r39651, r39652, r39653, r39654, r39655, r39656, r39657, r39658, r39659, r39660, r39661, r39662, r39663, r39664, r39665;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39646);
        mpfr_init(r39647);
        mpfr_init(r39648);
        mpfr_init(r39649);
        mpfr_init(r39650);
        mpfr_init(r39651);
        mpfr_init(r39652);
        mpfr_init(r39653);
        mpfr_init(r39654);
        mpfr_init(r39655);
        mpfr_init(r39656);
        mpfr_init_set_str(r39657, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39658);
        mpfr_init(r39659);
        mpfr_init(r39660);
        mpfr_init(r39661);
        mpfr_init(r39662);
        mpfr_init(r39663);
        mpfr_init(r39664);
        mpfr_init(r39665);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39646, x, MPFR_RNDN);
        mpfr_set_d(r39647, y, MPFR_RNDN);
        mpfr_log(r39648, r39647, MPFR_RNDN);
        mpfr_mul(r39649, r39646, r39648, MPFR_RNDN);
        mpfr_set_d(r39650, z, MPFR_RNDN);
        mpfr_add(r39651, r39649, r39650, MPFR_RNDN);
        mpfr_set_d(r39652, t, MPFR_RNDN);
        mpfr_add(r39653, r39651, r39652, MPFR_RNDN);
        mpfr_set_d(r39654, a, MPFR_RNDN);
        mpfr_add(r39655, r39653, r39654, MPFR_RNDN);
        mpfr_set_d(r39656, b, MPFR_RNDN);
        ;
        mpfr_sub(r39658, r39656, r39657, MPFR_RNDN);
        mpfr_set_d(r39659, c, MPFR_RNDN);
        mpfr_log(r39660, r39659, MPFR_RNDN);
        mpfr_mul(r39661, r39658, r39660, MPFR_RNDN);
        mpfr_add(r39662, r39655, r39661, MPFR_RNDN);
        mpfr_set_d(r39663, i, MPFR_RNDN);
        mpfr_mul(r39664, r39647, r39663, MPFR_RNDN);
        mpfr_add(r39665, r39662, r39664, MPFR_RNDN);
        return mpfr_get_d(r39665, MPFR_RNDN);
}

