#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t, float a) {
        float r41930 = x;
        float r41931 = y;
        float r41932 = r41930 + r41931;
        float r41933 = log(r41932);
        float r41934 = z;
        float r41935 = log(r41934);
        float r41936 = r41933 + r41935;
        float r41937 = t;
        float r41938 = r41936 - r41937;
        float r41939 = a;
        float r41940 = 0.5;
        float r41941 = r41939 - r41940;
        float r41942 = log(r41937);
        float r41943 = r41941 * r41942;
        float r41944 = r41938 + r41943;
        return r41944;
}

double f_id(double x, double y, double z, double t, double a) {
        double r41945 = x;
        double r41946 = y;
        double r41947 = r41945 + r41946;
        double r41948 = log(r41947);
        double r41949 = z;
        double r41950 = log(r41949);
        double r41951 = r41948 + r41950;
        double r41952 = t;
        double r41953 = r41951 - r41952;
        double r41954 = a;
        double r41955 = 0.5;
        double r41956 = r41954 - r41955;
        double r41957 = log(r41952);
        double r41958 = r41956 * r41957;
        double r41959 = r41953 + r41958;
        return r41959;
}


double f_of(float x, float y, float z, float t, float a) {
        float r41960 = x;
        float r41961 = y;
        float r41962 = r41960 + r41961;
        float r41963 = cbrt(r41962);
        float r41964 = r41963 * r41963;
        float r41965 = log(r41964);
        float r41966 = log(r41963);
        float r41967 = z;
        float r41968 = log(r41967);
        float r41969 = r41966 + r41968;
        float r41970 = r41965 + r41969;
        float r41971 = t;
        float r41972 = r41970 - r41971;
        float r41973 = a;
        float r41974 = 0.5;
        float r41975 = r41973 - r41974;
        float r41976 = log(r41971);
        float r41977 = r41975 * r41976;
        float r41978 = r41972 + r41977;
        return r41978;
}

double f_od(double x, double y, double z, double t, double a) {
        double r41979 = x;
        double r41980 = y;
        double r41981 = r41979 + r41980;
        double r41982 = cbrt(r41981);
        double r41983 = r41982 * r41982;
        double r41984 = log(r41983);
        double r41985 = log(r41982);
        double r41986 = z;
        double r41987 = log(r41986);
        double r41988 = r41985 + r41987;
        double r41989 = r41984 + r41988;
        double r41990 = t;
        double r41991 = r41989 - r41990;
        double r41992 = a;
        double r41993 = 0.5;
        double r41994 = r41992 - r41993;
        double r41995 = log(r41990);
        double r41996 = r41994 * r41995;
        double r41997 = r41991 + r41996;
        return r41997;
}

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 r41998, r41999, r42000, r42001, r42002, r42003, r42004, r42005, r42006, r42007, r42008, r42009, r42010, r42011, r42012;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41998);
        mpfr_init(r41999);
        mpfr_init(r42000);
        mpfr_init(r42001);
        mpfr_init(r42002);
        mpfr_init(r42003);
        mpfr_init(r42004);
        mpfr_init(r42005);
        mpfr_init(r42006);
        mpfr_init(r42007);
        mpfr_init_set_str(r42008, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42009);
        mpfr_init(r42010);
        mpfr_init(r42011);
        mpfr_init(r42012);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41998, x, MPFR_RNDN);
        mpfr_set_d(r41999, y, MPFR_RNDN);
        mpfr_add(r42000, r41998, r41999, MPFR_RNDN);
        mpfr_log(r42001, r42000, MPFR_RNDN);
        mpfr_set_d(r42002, z, MPFR_RNDN);
        mpfr_log(r42003, r42002, MPFR_RNDN);
        mpfr_add(r42004, r42001, r42003, MPFR_RNDN);
        mpfr_set_d(r42005, t, MPFR_RNDN);
        mpfr_sub(r42006, r42004, r42005, MPFR_RNDN);
        mpfr_set_d(r42007, a, MPFR_RNDN);
        ;
        mpfr_sub(r42009, r42007, r42008, MPFR_RNDN);
        mpfr_log(r42010, r42005, MPFR_RNDN);
        mpfr_mul(r42011, r42009, r42010, MPFR_RNDN);
        mpfr_add(r42012, r42006, r42011, MPFR_RNDN);
        return mpfr_get_d(r42012, MPFR_RNDN);
}

static mpfr_t r42013, r42014, r42015, r42016, r42017, r42018, r42019, r42020, r42021, r42022, r42023, r42024, r42025, r42026, r42027, r42028, r42029, r42030, r42031;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42013);
        mpfr_init(r42014);
        mpfr_init(r42015);
        mpfr_init(r42016);
        mpfr_init(r42017);
        mpfr_init(r42018);
        mpfr_init(r42019);
        mpfr_init(r42020);
        mpfr_init(r42021);
        mpfr_init(r42022);
        mpfr_init(r42023);
        mpfr_init(r42024);
        mpfr_init(r42025);
        mpfr_init(r42026);
        mpfr_init_set_str(r42027, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42028);
        mpfr_init(r42029);
        mpfr_init(r42030);
        mpfr_init(r42031);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r42013, x, MPFR_RNDN);
        mpfr_set_d(r42014, y, MPFR_RNDN);
        mpfr_add(r42015, r42013, r42014, MPFR_RNDN);
        mpfr_cbrt(r42016, r42015, MPFR_RNDN);
        mpfr_mul(r42017, r42016, r42016, MPFR_RNDN);
        mpfr_log(r42018, r42017, MPFR_RNDN);
        mpfr_log(r42019, r42016, MPFR_RNDN);
        mpfr_set_d(r42020, z, MPFR_RNDN);
        mpfr_log(r42021, r42020, MPFR_RNDN);
        mpfr_add(r42022, r42019, r42021, MPFR_RNDN);
        mpfr_add(r42023, r42018, r42022, MPFR_RNDN);
        mpfr_set_d(r42024, t, MPFR_RNDN);
        mpfr_sub(r42025, r42023, r42024, MPFR_RNDN);
        mpfr_set_d(r42026, a, MPFR_RNDN);
        ;
        mpfr_sub(r42028, r42026, r42027, MPFR_RNDN);
        mpfr_log(r42029, r42024, MPFR_RNDN);
        mpfr_mul(r42030, r42028, r42029, MPFR_RNDN);
        mpfr_add(r42031, r42025, r42030, MPFR_RNDN);
        return mpfr_get_d(r42031, MPFR_RNDN);
}

static mpfr_t r42032, r42033, r42034, r42035, r42036, r42037, r42038, r42039, r42040, r42041, r42042, r42043, r42044, r42045, r42046, r42047, r42048, r42049, r42050;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42032);
        mpfr_init(r42033);
        mpfr_init(r42034);
        mpfr_init(r42035);
        mpfr_init(r42036);
        mpfr_init(r42037);
        mpfr_init(r42038);
        mpfr_init(r42039);
        mpfr_init(r42040);
        mpfr_init(r42041);
        mpfr_init(r42042);
        mpfr_init(r42043);
        mpfr_init(r42044);
        mpfr_init(r42045);
        mpfr_init_set_str(r42046, "0.5", 10, MPFR_RNDN);
        mpfr_init(r42047);
        mpfr_init(r42048);
        mpfr_init(r42049);
        mpfr_init(r42050);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r42032, x, MPFR_RNDN);
        mpfr_set_d(r42033, y, MPFR_RNDN);
        mpfr_add(r42034, r42032, r42033, MPFR_RNDN);
        mpfr_cbrt(r42035, r42034, MPFR_RNDN);
        mpfr_mul(r42036, r42035, r42035, MPFR_RNDN);
        mpfr_log(r42037, r42036, MPFR_RNDN);
        mpfr_log(r42038, r42035, MPFR_RNDN);
        mpfr_set_d(r42039, z, MPFR_RNDN);
        mpfr_log(r42040, r42039, MPFR_RNDN);
        mpfr_add(r42041, r42038, r42040, MPFR_RNDN);
        mpfr_add(r42042, r42037, r42041, MPFR_RNDN);
        mpfr_set_d(r42043, t, MPFR_RNDN);
        mpfr_sub(r42044, r42042, r42043, MPFR_RNDN);
        mpfr_set_d(r42045, a, MPFR_RNDN);
        ;
        mpfr_sub(r42047, r42045, r42046, MPFR_RNDN);
        mpfr_log(r42048, r42043, MPFR_RNDN);
        mpfr_mul(r42049, r42047, r42048, MPFR_RNDN);
        mpfr_add(r42050, r42044, r42049, MPFR_RNDN);
        return mpfr_get_d(r42050, MPFR_RNDN);
}

