#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 r42883 = x;
        float r42884 = y;
        float r42885 = r42883 + r42884;
        float r42886 = z;
        float r42887 = r42885 + r42886;
        float r42888 = t;
        float r42889 = log(r42888);
        float r42890 = r42886 * r42889;
        float r42891 = r42887 - r42890;
        float r42892 = a;
        float r42893 = 0.5;
        float r42894 = r42892 - r42893;
        float r42895 = b;
        float r42896 = r42894 * r42895;
        float r42897 = r42891 + r42896;
        return r42897;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r42898 = x;
        double r42899 = y;
        double r42900 = r42898 + r42899;
        double r42901 = z;
        double r42902 = r42900 + r42901;
        double r42903 = t;
        double r42904 = log(r42903);
        double r42905 = r42901 * r42904;
        double r42906 = r42902 - r42905;
        double r42907 = a;
        double r42908 = 0.5;
        double r42909 = r42907 - r42908;
        double r42910 = b;
        double r42911 = r42909 * r42910;
        double r42912 = r42906 + r42911;
        return r42912;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r42913 = x;
        float r42914 = y;
        float r42915 = r42913 + r42914;
        float r42916 = z;
        float r42917 = r42915 + r42916;
        float r42918 = t;
        float r42919 = log(r42918);
        float r42920 = r42916 * r42919;
        float r42921 = r42917 - r42920;
        float r42922 = a;
        float r42923 = 0.5;
        float r42924 = r42922 - r42923;
        float r42925 = b;
        float r42926 = r42924 * r42925;
        float r42927 = r42921 + r42926;
        return r42927;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r42928 = x;
        double r42929 = y;
        double r42930 = r42928 + r42929;
        double r42931 = z;
        double r42932 = r42930 + r42931;
        double r42933 = t;
        double r42934 = log(r42933);
        double r42935 = r42931 * r42934;
        double r42936 = r42932 - r42935;
        double r42937 = a;
        double r42938 = 0.5;
        double r42939 = r42937 - r42938;
        double r42940 = b;
        double r42941 = r42939 * r42940;
        double r42942 = r42936 + r42941;
        return r42942;
}

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 r42943, r42944, r42945, r42946, r42947, r42948, r42949, r42950, r42951, r42952, r42953, r42954, r42955, r42956, r42957;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init(r42943);
        mpfr_init(r42944);
        mpfr_init(r42945);
        mpfr_init(r42946);
        mpfr_init(r42947);
        mpfr_init(r42948);
        mpfr_init(r42949);
        mpfr_init(r42950);
        mpfr_init(r42951);
        mpfr_init(r42952);
        mpfr_init_set_str(r42953, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42954);
        mpfr_init(r42955);
        mpfr_init(r42956);
        mpfr_init(r42957);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42943, x, MPFR_RNDN);
        mpfr_set_d(r42944, y, MPFR_RNDN);
        mpfr_add(r42945, r42943, r42944, MPFR_RNDN);
        mpfr_set_d(r42946, z, MPFR_RNDN);
        mpfr_add(r42947, r42945, r42946, MPFR_RNDN);
        mpfr_set_d(r42948, t, MPFR_RNDN);
        mpfr_log(r42949, r42948, MPFR_RNDN);
        mpfr_mul(r42950, r42946, r42949, MPFR_RNDN);
        mpfr_sub(r42951, r42947, r42950, MPFR_RNDN);
        mpfr_set_d(r42952, a, MPFR_RNDN);
        ;
        mpfr_sub(r42954, r42952, r42953, MPFR_RNDN);
        mpfr_set_d(r42955, b, MPFR_RNDN);
        mpfr_mul(r42956, r42954, r42955, MPFR_RNDN);
        mpfr_add(r42957, r42951, r42956, MPFR_RNDN);
        return mpfr_get_d(r42957, MPFR_RNDN);
}

static mpfr_t r42958, r42959, r42960, r42961, r42962, r42963, r42964, r42965, r42966, r42967, r42968, r42969, r42970, r42971, r42972;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init(r42958);
        mpfr_init(r42959);
        mpfr_init(r42960);
        mpfr_init(r42961);
        mpfr_init(r42962);
        mpfr_init(r42963);
        mpfr_init(r42964);
        mpfr_init(r42965);
        mpfr_init(r42966);
        mpfr_init(r42967);
        mpfr_init_set_str(r42968, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42969);
        mpfr_init(r42970);
        mpfr_init(r42971);
        mpfr_init(r42972);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42958, x, MPFR_RNDN);
        mpfr_set_d(r42959, y, MPFR_RNDN);
        mpfr_add(r42960, r42958, r42959, MPFR_RNDN);
        mpfr_set_d(r42961, z, MPFR_RNDN);
        mpfr_add(r42962, r42960, r42961, MPFR_RNDN);
        mpfr_set_d(r42963, t, MPFR_RNDN);
        mpfr_log(r42964, r42963, MPFR_RNDN);
        mpfr_mul(r42965, r42961, r42964, MPFR_RNDN);
        mpfr_sub(r42966, r42962, r42965, MPFR_RNDN);
        mpfr_set_d(r42967, a, MPFR_RNDN);
        ;
        mpfr_sub(r42969, r42967, r42968, MPFR_RNDN);
        mpfr_set_d(r42970, b, MPFR_RNDN);
        mpfr_mul(r42971, r42969, r42970, MPFR_RNDN);
        mpfr_add(r42972, r42966, r42971, MPFR_RNDN);
        return mpfr_get_d(r42972, MPFR_RNDN);
}

static mpfr_t r42973, r42974, r42975, r42976, r42977, r42978, r42979, r42980, r42981, r42982, r42983, r42984, r42985, r42986, r42987;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init(r42973);
        mpfr_init(r42974);
        mpfr_init(r42975);
        mpfr_init(r42976);
        mpfr_init(r42977);
        mpfr_init(r42978);
        mpfr_init(r42979);
        mpfr_init(r42980);
        mpfr_init(r42981);
        mpfr_init(r42982);
        mpfr_init_set_str(r42983, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42984);
        mpfr_init(r42985);
        mpfr_init(r42986);
        mpfr_init(r42987);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42973, x, MPFR_RNDN);
        mpfr_set_d(r42974, y, MPFR_RNDN);
        mpfr_add(r42975, r42973, r42974, MPFR_RNDN);
        mpfr_set_d(r42976, z, MPFR_RNDN);
        mpfr_add(r42977, r42975, r42976, MPFR_RNDN);
        mpfr_set_d(r42978, t, MPFR_RNDN);
        mpfr_log(r42979, r42978, MPFR_RNDN);
        mpfr_mul(r42980, r42976, r42979, MPFR_RNDN);
        mpfr_sub(r42981, r42977, r42980, MPFR_RNDN);
        mpfr_set_d(r42982, a, MPFR_RNDN);
        ;
        mpfr_sub(r42984, r42982, r42983, MPFR_RNDN);
        mpfr_set_d(r42985, b, MPFR_RNDN);
        mpfr_mul(r42986, r42984, r42985, MPFR_RNDN);
        mpfr_add(r42987, r42981, r42986, MPFR_RNDN);
        return mpfr_get_d(r42987, MPFR_RNDN);
}

