#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 r43041 = x;
        float r43042 = y;
        float r43043 = r43041 + r43042;
        float r43044 = z;
        float r43045 = r43043 + r43044;
        float r43046 = t;
        float r43047 = log(r43046);
        float r43048 = r43044 * r43047;
        float r43049 = r43045 - r43048;
        float r43050 = a;
        float r43051 = 0.5;
        float r43052 = r43050 - r43051;
        float r43053 = b;
        float r43054 = r43052 * r43053;
        float r43055 = r43049 + r43054;
        return r43055;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r43056 = x;
        double r43057 = y;
        double r43058 = r43056 + r43057;
        double r43059 = z;
        double r43060 = r43058 + r43059;
        double r43061 = t;
        double r43062 = log(r43061);
        double r43063 = r43059 * r43062;
        double r43064 = r43060 - r43063;
        double r43065 = a;
        double r43066 = 0.5;
        double r43067 = r43065 - r43066;
        double r43068 = b;
        double r43069 = r43067 * r43068;
        double r43070 = r43064 + r43069;
        return r43070;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r43071 = x;
        float r43072 = y;
        float r43073 = r43071 + r43072;
        float r43074 = z;
        float r43075 = r43073 + r43074;
        float r43076 = t;
        float r43077 = log(r43076);
        float r43078 = r43074 * r43077;
        float r43079 = r43075 - r43078;
        float r43080 = a;
        float r43081 = 0.5;
        float r43082 = r43080 - r43081;
        float r43083 = b;
        float r43084 = r43082 * r43083;
        float r43085 = r43079 + r43084;
        return r43085;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r43086 = x;
        double r43087 = y;
        double r43088 = r43086 + r43087;
        double r43089 = z;
        double r43090 = r43088 + r43089;
        double r43091 = t;
        double r43092 = log(r43091);
        double r43093 = r43089 * r43092;
        double r43094 = r43090 - r43093;
        double r43095 = a;
        double r43096 = 0.5;
        double r43097 = r43095 - r43096;
        double r43098 = b;
        double r43099 = r43097 * r43098;
        double r43100 = r43094 + r43099;
        return r43100;
}

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 r43101, r43102, r43103, r43104, r43105, r43106, r43107, r43108, r43109, r43110, r43111, r43112, r43113, r43114, r43115;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r43101);
        mpfr_init(r43102);
        mpfr_init(r43103);
        mpfr_init(r43104);
        mpfr_init(r43105);
        mpfr_init(r43106);
        mpfr_init(r43107);
        mpfr_init(r43108);
        mpfr_init(r43109);
        mpfr_init(r43110);
        mpfr_init_set_str(r43111, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43112);
        mpfr_init(r43113);
        mpfr_init(r43114);
        mpfr_init(r43115);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43101, x, MPFR_RNDN);
        mpfr_set_d(r43102, y, MPFR_RNDN);
        mpfr_add(r43103, r43101, r43102, MPFR_RNDN);
        mpfr_set_d(r43104, z, MPFR_RNDN);
        mpfr_add(r43105, r43103, r43104, MPFR_RNDN);
        mpfr_set_d(r43106, t, MPFR_RNDN);
        mpfr_log(r43107, r43106, MPFR_RNDN);
        mpfr_mul(r43108, r43104, r43107, MPFR_RNDN);
        mpfr_sub(r43109, r43105, r43108, MPFR_RNDN);
        mpfr_set_d(r43110, a, MPFR_RNDN);
        ;
        mpfr_sub(r43112, r43110, r43111, MPFR_RNDN);
        mpfr_set_d(r43113, b, MPFR_RNDN);
        mpfr_mul(r43114, r43112, r43113, MPFR_RNDN);
        mpfr_add(r43115, r43109, r43114, MPFR_RNDN);
        return mpfr_get_d(r43115, MPFR_RNDN);
}

static mpfr_t r43116, r43117, r43118, r43119, r43120, r43121, r43122, r43123, r43124, r43125, r43126, r43127, r43128, r43129, r43130;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43116);
        mpfr_init(r43117);
        mpfr_init(r43118);
        mpfr_init(r43119);
        mpfr_init(r43120);
        mpfr_init(r43121);
        mpfr_init(r43122);
        mpfr_init(r43123);
        mpfr_init(r43124);
        mpfr_init(r43125);
        mpfr_init_set_str(r43126, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43127);
        mpfr_init(r43128);
        mpfr_init(r43129);
        mpfr_init(r43130);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43116, x, MPFR_RNDN);
        mpfr_set_d(r43117, y, MPFR_RNDN);
        mpfr_add(r43118, r43116, r43117, MPFR_RNDN);
        mpfr_set_d(r43119, z, MPFR_RNDN);
        mpfr_add(r43120, r43118, r43119, MPFR_RNDN);
        mpfr_set_d(r43121, t, MPFR_RNDN);
        mpfr_log(r43122, r43121, MPFR_RNDN);
        mpfr_mul(r43123, r43119, r43122, MPFR_RNDN);
        mpfr_sub(r43124, r43120, r43123, MPFR_RNDN);
        mpfr_set_d(r43125, a, MPFR_RNDN);
        ;
        mpfr_sub(r43127, r43125, r43126, MPFR_RNDN);
        mpfr_set_d(r43128, b, MPFR_RNDN);
        mpfr_mul(r43129, r43127, r43128, MPFR_RNDN);
        mpfr_add(r43130, r43124, r43129, MPFR_RNDN);
        return mpfr_get_d(r43130, MPFR_RNDN);
}

static mpfr_t r43131, r43132, r43133, r43134, r43135, r43136, r43137, r43138, r43139, r43140, r43141, r43142, r43143, r43144, r43145;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r43131);
        mpfr_init(r43132);
        mpfr_init(r43133);
        mpfr_init(r43134);
        mpfr_init(r43135);
        mpfr_init(r43136);
        mpfr_init(r43137);
        mpfr_init(r43138);
        mpfr_init(r43139);
        mpfr_init(r43140);
        mpfr_init_set_str(r43141, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43142);
        mpfr_init(r43143);
        mpfr_init(r43144);
        mpfr_init(r43145);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r43131, x, MPFR_RNDN);
        mpfr_set_d(r43132, y, MPFR_RNDN);
        mpfr_add(r43133, r43131, r43132, MPFR_RNDN);
        mpfr_set_d(r43134, z, MPFR_RNDN);
        mpfr_add(r43135, r43133, r43134, MPFR_RNDN);
        mpfr_set_d(r43136, t, MPFR_RNDN);
        mpfr_log(r43137, r43136, MPFR_RNDN);
        mpfr_mul(r43138, r43134, r43137, MPFR_RNDN);
        mpfr_sub(r43139, r43135, r43138, MPFR_RNDN);
        mpfr_set_d(r43140, a, MPFR_RNDN);
        ;
        mpfr_sub(r43142, r43140, r43141, MPFR_RNDN);
        mpfr_set_d(r43143, b, MPFR_RNDN);
        mpfr_mul(r43144, r43142, r43143, MPFR_RNDN);
        mpfr_add(r43145, r43139, r43144, MPFR_RNDN);
        return mpfr_get_d(r43145, MPFR_RNDN);
}

