#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 r43084 = x;
        float r43085 = y;
        float r43086 = log(r43085);
        float r43087 = r43084 * r43086;
        float r43088 = z;
        float r43089 = r43087 + r43088;
        float r43090 = t;
        float r43091 = r43089 + r43090;
        float r43092 = a;
        float r43093 = r43091 + r43092;
        float r43094 = b;
        float r43095 = 0.5;
        float r43096 = r43094 - r43095;
        float r43097 = c;
        float r43098 = log(r43097);
        float r43099 = r43096 * r43098;
        float r43100 = r43093 + r43099;
        float r43101 = i;
        float r43102 = r43085 * r43101;
        float r43103 = r43100 + r43102;
        return r43103;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r43104 = x;
        double r43105 = y;
        double r43106 = log(r43105);
        double r43107 = r43104 * r43106;
        double r43108 = z;
        double r43109 = r43107 + r43108;
        double r43110 = t;
        double r43111 = r43109 + r43110;
        double r43112 = a;
        double r43113 = r43111 + r43112;
        double r43114 = b;
        double r43115 = 0.5;
        double r43116 = r43114 - r43115;
        double r43117 = c;
        double r43118 = log(r43117);
        double r43119 = r43116 * r43118;
        double r43120 = r43113 + r43119;
        double r43121 = i;
        double r43122 = r43105 * r43121;
        double r43123 = r43120 + r43122;
        return r43123;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r43124 = x;
        float r43125 = y;
        float r43126 = log(r43125);
        float r43127 = r43124 * r43126;
        float r43128 = z;
        float r43129 = r43127 + r43128;
        float r43130 = t;
        float r43131 = r43129 + r43130;
        float r43132 = a;
        float r43133 = r43131 + r43132;
        float r43134 = b;
        float r43135 = 0.5;
        float r43136 = r43134 - r43135;
        float r43137 = c;
        float r43138 = log(r43137);
        float r43139 = r43136 * r43138;
        float r43140 = r43133 + r43139;
        float r43141 = i;
        float r43142 = r43125 * r43141;
        float r43143 = r43140 + r43142;
        return r43143;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r43144 = x;
        double r43145 = y;
        double r43146 = log(r43145);
        double r43147 = r43144 * r43146;
        double r43148 = z;
        double r43149 = r43147 + r43148;
        double r43150 = t;
        double r43151 = r43149 + r43150;
        double r43152 = a;
        double r43153 = r43151 + r43152;
        double r43154 = b;
        double r43155 = 0.5;
        double r43156 = r43154 - r43155;
        double r43157 = c;
        double r43158 = log(r43157);
        double r43159 = r43156 * r43158;
        double r43160 = r43153 + r43159;
        double r43161 = i;
        double r43162 = r43145 * r43161;
        double r43163 = r43160 + r43162;
        return r43163;
}

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 r43164, r43165, r43166, r43167, r43168, r43169, r43170, r43171, r43172, r43173, r43174, r43175, r43176, r43177, r43178, r43179, r43180, r43181, r43182, r43183;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r43164);
        mpfr_init(r43165);
        mpfr_init(r43166);
        mpfr_init(r43167);
        mpfr_init(r43168);
        mpfr_init(r43169);
        mpfr_init(r43170);
        mpfr_init(r43171);
        mpfr_init(r43172);
        mpfr_init(r43173);
        mpfr_init(r43174);
        mpfr_init_set_str(r43175, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43176);
        mpfr_init(r43177);
        mpfr_init(r43178);
        mpfr_init(r43179);
        mpfr_init(r43180);
        mpfr_init(r43181);
        mpfr_init(r43182);
        mpfr_init(r43183);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43164, x, MPFR_RNDN);
        mpfr_set_d(r43165, y, MPFR_RNDN);
        mpfr_log(r43166, r43165, MPFR_RNDN);
        mpfr_mul(r43167, r43164, r43166, MPFR_RNDN);
        mpfr_set_d(r43168, z, MPFR_RNDN);
        mpfr_add(r43169, r43167, r43168, MPFR_RNDN);
        mpfr_set_d(r43170, t, MPFR_RNDN);
        mpfr_add(r43171, r43169, r43170, MPFR_RNDN);
        mpfr_set_d(r43172, a, MPFR_RNDN);
        mpfr_add(r43173, r43171, r43172, MPFR_RNDN);
        mpfr_set_d(r43174, b, MPFR_RNDN);
        ;
        mpfr_sub(r43176, r43174, r43175, MPFR_RNDN);
        mpfr_set_d(r43177, c, MPFR_RNDN);
        mpfr_log(r43178, r43177, MPFR_RNDN);
        mpfr_mul(r43179, r43176, r43178, MPFR_RNDN);
        mpfr_add(r43180, r43173, r43179, MPFR_RNDN);
        mpfr_set_d(r43181, i, MPFR_RNDN);
        mpfr_mul(r43182, r43165, r43181, MPFR_RNDN);
        mpfr_add(r43183, r43180, r43182, MPFR_RNDN);
        return mpfr_get_d(r43183, MPFR_RNDN);
}

static mpfr_t r43184, r43185, r43186, r43187, r43188, r43189, r43190, r43191, r43192, r43193, r43194, r43195, r43196, r43197, r43198, r43199, r43200, r43201, r43202, r43203;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43184);
        mpfr_init(r43185);
        mpfr_init(r43186);
        mpfr_init(r43187);
        mpfr_init(r43188);
        mpfr_init(r43189);
        mpfr_init(r43190);
        mpfr_init(r43191);
        mpfr_init(r43192);
        mpfr_init(r43193);
        mpfr_init(r43194);
        mpfr_init_set_str(r43195, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43196);
        mpfr_init(r43197);
        mpfr_init(r43198);
        mpfr_init(r43199);
        mpfr_init(r43200);
        mpfr_init(r43201);
        mpfr_init(r43202);
        mpfr_init(r43203);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43184, x, MPFR_RNDN);
        mpfr_set_d(r43185, y, MPFR_RNDN);
        mpfr_log(r43186, r43185, MPFR_RNDN);
        mpfr_mul(r43187, r43184, r43186, MPFR_RNDN);
        mpfr_set_d(r43188, z, MPFR_RNDN);
        mpfr_add(r43189, r43187, r43188, MPFR_RNDN);
        mpfr_set_d(r43190, t, MPFR_RNDN);
        mpfr_add(r43191, r43189, r43190, MPFR_RNDN);
        mpfr_set_d(r43192, a, MPFR_RNDN);
        mpfr_add(r43193, r43191, r43192, MPFR_RNDN);
        mpfr_set_d(r43194, b, MPFR_RNDN);
        ;
        mpfr_sub(r43196, r43194, r43195, MPFR_RNDN);
        mpfr_set_d(r43197, c, MPFR_RNDN);
        mpfr_log(r43198, r43197, MPFR_RNDN);
        mpfr_mul(r43199, r43196, r43198, MPFR_RNDN);
        mpfr_add(r43200, r43193, r43199, MPFR_RNDN);
        mpfr_set_d(r43201, i, MPFR_RNDN);
        mpfr_mul(r43202, r43185, r43201, MPFR_RNDN);
        mpfr_add(r43203, r43200, r43202, MPFR_RNDN);
        return mpfr_get_d(r43203, MPFR_RNDN);
}

static mpfr_t r43204, r43205, r43206, r43207, r43208, r43209, r43210, r43211, r43212, r43213, r43214, r43215, r43216, r43217, r43218, r43219, r43220, r43221, r43222, r43223;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43204);
        mpfr_init(r43205);
        mpfr_init(r43206);
        mpfr_init(r43207);
        mpfr_init(r43208);
        mpfr_init(r43209);
        mpfr_init(r43210);
        mpfr_init(r43211);
        mpfr_init(r43212);
        mpfr_init(r43213);
        mpfr_init(r43214);
        mpfr_init_set_str(r43215, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43216);
        mpfr_init(r43217);
        mpfr_init(r43218);
        mpfr_init(r43219);
        mpfr_init(r43220);
        mpfr_init(r43221);
        mpfr_init(r43222);
        mpfr_init(r43223);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43204, x, MPFR_RNDN);
        mpfr_set_d(r43205, y, MPFR_RNDN);
        mpfr_log(r43206, r43205, MPFR_RNDN);
        mpfr_mul(r43207, r43204, r43206, MPFR_RNDN);
        mpfr_set_d(r43208, z, MPFR_RNDN);
        mpfr_add(r43209, r43207, r43208, MPFR_RNDN);
        mpfr_set_d(r43210, t, MPFR_RNDN);
        mpfr_add(r43211, r43209, r43210, MPFR_RNDN);
        mpfr_set_d(r43212, a, MPFR_RNDN);
        mpfr_add(r43213, r43211, r43212, MPFR_RNDN);
        mpfr_set_d(r43214, b, MPFR_RNDN);
        ;
        mpfr_sub(r43216, r43214, r43215, MPFR_RNDN);
        mpfr_set_d(r43217, c, MPFR_RNDN);
        mpfr_log(r43218, r43217, MPFR_RNDN);
        mpfr_mul(r43219, r43216, r43218, MPFR_RNDN);
        mpfr_add(r43220, r43213, r43219, MPFR_RNDN);
        mpfr_set_d(r43221, i, MPFR_RNDN);
        mpfr_mul(r43222, r43205, r43221, MPFR_RNDN);
        mpfr_add(r43223, r43220, r43222, MPFR_RNDN);
        return mpfr_get_d(r43223, MPFR_RNDN);
}

