#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 r42901 = x;
        float r42902 = y;
        float r42903 = log(r42902);
        float r42904 = r42901 * r42903;
        float r42905 = z;
        float r42906 = r42904 + r42905;
        float r42907 = t;
        float r42908 = r42906 + r42907;
        float r42909 = a;
        float r42910 = r42908 + r42909;
        float r42911 = b;
        float r42912 = 0.5;
        float r42913 = r42911 - r42912;
        float r42914 = c;
        float r42915 = log(r42914);
        float r42916 = r42913 * r42915;
        float r42917 = r42910 + r42916;
        float r42918 = i;
        float r42919 = r42902 * r42918;
        float r42920 = r42917 + r42919;
        return r42920;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r42921 = x;
        double r42922 = y;
        double r42923 = log(r42922);
        double r42924 = r42921 * r42923;
        double r42925 = z;
        double r42926 = r42924 + r42925;
        double r42927 = t;
        double r42928 = r42926 + r42927;
        double r42929 = a;
        double r42930 = r42928 + r42929;
        double r42931 = b;
        double r42932 = 0.5;
        double r42933 = r42931 - r42932;
        double r42934 = c;
        double r42935 = log(r42934);
        double r42936 = r42933 * r42935;
        double r42937 = r42930 + r42936;
        double r42938 = i;
        double r42939 = r42922 * r42938;
        double r42940 = r42937 + r42939;
        return r42940;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r42941 = x;
        float r42942 = y;
        float r42943 = log(r42942);
        float r42944 = r42941 * r42943;
        float r42945 = z;
        float r42946 = r42944 + r42945;
        float r42947 = t;
        float r42948 = r42946 + r42947;
        float r42949 = a;
        float r42950 = r42948 + r42949;
        float r42951 = b;
        float r42952 = 0.5;
        float r42953 = r42951 - r42952;
        float r42954 = c;
        float r42955 = log(r42954);
        float r42956 = r42953 * r42955;
        float r42957 = r42950 + r42956;
        float r42958 = i;
        float r42959 = r42942 * r42958;
        float r42960 = r42957 + r42959;
        return r42960;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r42961 = x;
        double r42962 = y;
        double r42963 = log(r42962);
        double r42964 = r42961 * r42963;
        double r42965 = z;
        double r42966 = r42964 + r42965;
        double r42967 = t;
        double r42968 = r42966 + r42967;
        double r42969 = a;
        double r42970 = r42968 + r42969;
        double r42971 = b;
        double r42972 = 0.5;
        double r42973 = r42971 - r42972;
        double r42974 = c;
        double r42975 = log(r42974);
        double r42976 = r42973 * r42975;
        double r42977 = r42970 + r42976;
        double r42978 = i;
        double r42979 = r42962 * r42978;
        double r42980 = r42977 + r42979;
        return r42980;
}

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 r42981, r42982, r42983, r42984, r42985, r42986, r42987, r42988, r42989, r42990, r42991, r42992, r42993, r42994, r42995, r42996, r42997, r42998, r42999, r43000;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r42981);
        mpfr_init(r42982);
        mpfr_init(r42983);
        mpfr_init(r42984);
        mpfr_init(r42985);
        mpfr_init(r42986);
        mpfr_init(r42987);
        mpfr_init(r42988);
        mpfr_init(r42989);
        mpfr_init(r42990);
        mpfr_init(r42991);
        mpfr_init_set_str(r42992, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42993);
        mpfr_init(r42994);
        mpfr_init(r42995);
        mpfr_init(r42996);
        mpfr_init(r42997);
        mpfr_init(r42998);
        mpfr_init(r42999);
        mpfr_init(r43000);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r42981, x, MPFR_RNDN);
        mpfr_set_d(r42982, y, MPFR_RNDN);
        mpfr_log(r42983, r42982, MPFR_RNDN);
        mpfr_mul(r42984, r42981, r42983, MPFR_RNDN);
        mpfr_set_d(r42985, z, MPFR_RNDN);
        mpfr_add(r42986, r42984, r42985, MPFR_RNDN);
        mpfr_set_d(r42987, t, MPFR_RNDN);
        mpfr_add(r42988, r42986, r42987, MPFR_RNDN);
        mpfr_set_d(r42989, a, MPFR_RNDN);
        mpfr_add(r42990, r42988, r42989, MPFR_RNDN);
        mpfr_set_d(r42991, b, MPFR_RNDN);
        ;
        mpfr_sub(r42993, r42991, r42992, MPFR_RNDN);
        mpfr_set_d(r42994, c, MPFR_RNDN);
        mpfr_log(r42995, r42994, MPFR_RNDN);
        mpfr_mul(r42996, r42993, r42995, MPFR_RNDN);
        mpfr_add(r42997, r42990, r42996, MPFR_RNDN);
        mpfr_set_d(r42998, i, MPFR_RNDN);
        mpfr_mul(r42999, r42982, r42998, MPFR_RNDN);
        mpfr_add(r43000, r42997, r42999, MPFR_RNDN);
        return mpfr_get_d(r43000, MPFR_RNDN);
}

static mpfr_t r43001, r43002, r43003, r43004, r43005, r43006, r43007, r43008, r43009, r43010, r43011, r43012, r43013, r43014, r43015, r43016, r43017, r43018, r43019, r43020;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43001);
        mpfr_init(r43002);
        mpfr_init(r43003);
        mpfr_init(r43004);
        mpfr_init(r43005);
        mpfr_init(r43006);
        mpfr_init(r43007);
        mpfr_init(r43008);
        mpfr_init(r43009);
        mpfr_init(r43010);
        mpfr_init(r43011);
        mpfr_init_set_str(r43012, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43013);
        mpfr_init(r43014);
        mpfr_init(r43015);
        mpfr_init(r43016);
        mpfr_init(r43017);
        mpfr_init(r43018);
        mpfr_init(r43019);
        mpfr_init(r43020);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43001, x, MPFR_RNDN);
        mpfr_set_d(r43002, y, MPFR_RNDN);
        mpfr_log(r43003, r43002, MPFR_RNDN);
        mpfr_mul(r43004, r43001, r43003, MPFR_RNDN);
        mpfr_set_d(r43005, z, MPFR_RNDN);
        mpfr_add(r43006, r43004, r43005, MPFR_RNDN);
        mpfr_set_d(r43007, t, MPFR_RNDN);
        mpfr_add(r43008, r43006, r43007, MPFR_RNDN);
        mpfr_set_d(r43009, a, MPFR_RNDN);
        mpfr_add(r43010, r43008, r43009, MPFR_RNDN);
        mpfr_set_d(r43011, b, MPFR_RNDN);
        ;
        mpfr_sub(r43013, r43011, r43012, MPFR_RNDN);
        mpfr_set_d(r43014, c, MPFR_RNDN);
        mpfr_log(r43015, r43014, MPFR_RNDN);
        mpfr_mul(r43016, r43013, r43015, MPFR_RNDN);
        mpfr_add(r43017, r43010, r43016, MPFR_RNDN);
        mpfr_set_d(r43018, i, MPFR_RNDN);
        mpfr_mul(r43019, r43002, r43018, MPFR_RNDN);
        mpfr_add(r43020, r43017, r43019, MPFR_RNDN);
        return mpfr_get_d(r43020, MPFR_RNDN);
}

static mpfr_t r43021, r43022, r43023, r43024, r43025, r43026, r43027, r43028, r43029, r43030, r43031, r43032, r43033, r43034, r43035, r43036, r43037, r43038, r43039, r43040;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r43021);
        mpfr_init(r43022);
        mpfr_init(r43023);
        mpfr_init(r43024);
        mpfr_init(r43025);
        mpfr_init(r43026);
        mpfr_init(r43027);
        mpfr_init(r43028);
        mpfr_init(r43029);
        mpfr_init(r43030);
        mpfr_init(r43031);
        mpfr_init_set_str(r43032, "0.5", 10, MPFR_RNDN);
        mpfr_init(r43033);
        mpfr_init(r43034);
        mpfr_init(r43035);
        mpfr_init(r43036);
        mpfr_init(r43037);
        mpfr_init(r43038);
        mpfr_init(r43039);
        mpfr_init(r43040);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r43021, x, MPFR_RNDN);
        mpfr_set_d(r43022, y, MPFR_RNDN);
        mpfr_log(r43023, r43022, MPFR_RNDN);
        mpfr_mul(r43024, r43021, r43023, MPFR_RNDN);
        mpfr_set_d(r43025, z, MPFR_RNDN);
        mpfr_add(r43026, r43024, r43025, MPFR_RNDN);
        mpfr_set_d(r43027, t, MPFR_RNDN);
        mpfr_add(r43028, r43026, r43027, MPFR_RNDN);
        mpfr_set_d(r43029, a, MPFR_RNDN);
        mpfr_add(r43030, r43028, r43029, MPFR_RNDN);
        mpfr_set_d(r43031, b, MPFR_RNDN);
        ;
        mpfr_sub(r43033, r43031, r43032, MPFR_RNDN);
        mpfr_set_d(r43034, c, MPFR_RNDN);
        mpfr_log(r43035, r43034, MPFR_RNDN);
        mpfr_mul(r43036, r43033, r43035, MPFR_RNDN);
        mpfr_add(r43037, r43030, r43036, MPFR_RNDN);
        mpfr_set_d(r43038, i, MPFR_RNDN);
        mpfr_mul(r43039, r43022, r43038, MPFR_RNDN);
        mpfr_add(r43040, r43037, r43039, MPFR_RNDN);
        return mpfr_get_d(r43040, MPFR_RNDN);
}

