#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 r41747 = x;
        float r41748 = y;
        float r41749 = r41747 + r41748;
        float r41750 = log(r41749);
        float r41751 = z;
        float r41752 = log(r41751);
        float r41753 = r41750 + r41752;
        float r41754 = t;
        float r41755 = r41753 - r41754;
        float r41756 = a;
        float r41757 = 0.5;
        float r41758 = r41756 - r41757;
        float r41759 = log(r41754);
        float r41760 = r41758 * r41759;
        float r41761 = r41755 + r41760;
        return r41761;
}

double f_id(double x, double y, double z, double t, double a) {
        double r41762 = x;
        double r41763 = y;
        double r41764 = r41762 + r41763;
        double r41765 = log(r41764);
        double r41766 = z;
        double r41767 = log(r41766);
        double r41768 = r41765 + r41767;
        double r41769 = t;
        double r41770 = r41768 - r41769;
        double r41771 = a;
        double r41772 = 0.5;
        double r41773 = r41771 - r41772;
        double r41774 = log(r41769);
        double r41775 = r41773 * r41774;
        double r41776 = r41770 + r41775;
        return r41776;
}


double f_of(float x, float y, float z, float t, float a) {
        float r41777 = x;
        float r41778 = y;
        float r41779 = r41777 + r41778;
        float r41780 = cbrt(r41779);
        float r41781 = r41780 * r41780;
        float r41782 = log(r41781);
        float r41783 = log(r41780);
        float r41784 = z;
        float r41785 = log(r41784);
        float r41786 = r41783 + r41785;
        float r41787 = r41782 + r41786;
        float r41788 = t;
        float r41789 = r41787 - r41788;
        float r41790 = a;
        float r41791 = 0.5;
        float r41792 = r41790 - r41791;
        float r41793 = log(r41788);
        float r41794 = r41792 * r41793;
        float r41795 = r41789 + r41794;
        return r41795;
}

double f_od(double x, double y, double z, double t, double a) {
        double r41796 = x;
        double r41797 = y;
        double r41798 = r41796 + r41797;
        double r41799 = cbrt(r41798);
        double r41800 = r41799 * r41799;
        double r41801 = log(r41800);
        double r41802 = log(r41799);
        double r41803 = z;
        double r41804 = log(r41803);
        double r41805 = r41802 + r41804;
        double r41806 = r41801 + r41805;
        double r41807 = t;
        double r41808 = r41806 - r41807;
        double r41809 = a;
        double r41810 = 0.5;
        double r41811 = r41809 - r41810;
        double r41812 = log(r41807);
        double r41813 = r41811 * r41812;
        double r41814 = r41808 + r41813;
        return r41814;
}

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 r41815, r41816, r41817, r41818, r41819, r41820, r41821, r41822, r41823, r41824, r41825, r41826, r41827, r41828, r41829;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41815);
        mpfr_init(r41816);
        mpfr_init(r41817);
        mpfr_init(r41818);
        mpfr_init(r41819);
        mpfr_init(r41820);
        mpfr_init(r41821);
        mpfr_init(r41822);
        mpfr_init(r41823);
        mpfr_init(r41824);
        mpfr_init_set_str(r41825, "0.5", 10, MPFR_RNDN);
        mpfr_init(r41826);
        mpfr_init(r41827);
        mpfr_init(r41828);
        mpfr_init(r41829);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41815, x, MPFR_RNDN);
        mpfr_set_d(r41816, y, MPFR_RNDN);
        mpfr_add(r41817, r41815, r41816, MPFR_RNDN);
        mpfr_log(r41818, r41817, MPFR_RNDN);
        mpfr_set_d(r41819, z, MPFR_RNDN);
        mpfr_log(r41820, r41819, MPFR_RNDN);
        mpfr_add(r41821, r41818, r41820, MPFR_RNDN);
        mpfr_set_d(r41822, t, MPFR_RNDN);
        mpfr_sub(r41823, r41821, r41822, MPFR_RNDN);
        mpfr_set_d(r41824, a, MPFR_RNDN);
        ;
        mpfr_sub(r41826, r41824, r41825, MPFR_RNDN);
        mpfr_log(r41827, r41822, MPFR_RNDN);
        mpfr_mul(r41828, r41826, r41827, MPFR_RNDN);
        mpfr_add(r41829, r41823, r41828, MPFR_RNDN);
        return mpfr_get_d(r41829, MPFR_RNDN);
}

static mpfr_t r41830, r41831, r41832, r41833, r41834, r41835, r41836, r41837, r41838, r41839, r41840, r41841, r41842, r41843, r41844, r41845, r41846, r41847, r41848;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41830);
        mpfr_init(r41831);
        mpfr_init(r41832);
        mpfr_init(r41833);
        mpfr_init(r41834);
        mpfr_init(r41835);
        mpfr_init(r41836);
        mpfr_init(r41837);
        mpfr_init(r41838);
        mpfr_init(r41839);
        mpfr_init(r41840);
        mpfr_init(r41841);
        mpfr_init(r41842);
        mpfr_init(r41843);
        mpfr_init_set_str(r41844, "0.5", 10, MPFR_RNDN);
        mpfr_init(r41845);
        mpfr_init(r41846);
        mpfr_init(r41847);
        mpfr_init(r41848);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41830, x, MPFR_RNDN);
        mpfr_set_d(r41831, y, MPFR_RNDN);
        mpfr_add(r41832, r41830, r41831, MPFR_RNDN);
        mpfr_cbrt(r41833, r41832, MPFR_RNDN);
        mpfr_mul(r41834, r41833, r41833, MPFR_RNDN);
        mpfr_log(r41835, r41834, MPFR_RNDN);
        mpfr_log(r41836, r41833, MPFR_RNDN);
        mpfr_set_d(r41837, z, MPFR_RNDN);
        mpfr_log(r41838, r41837, MPFR_RNDN);
        mpfr_add(r41839, r41836, r41838, MPFR_RNDN);
        mpfr_add(r41840, r41835, r41839, MPFR_RNDN);
        mpfr_set_d(r41841, t, MPFR_RNDN);
        mpfr_sub(r41842, r41840, r41841, MPFR_RNDN);
        mpfr_set_d(r41843, a, MPFR_RNDN);
        ;
        mpfr_sub(r41845, r41843, r41844, MPFR_RNDN);
        mpfr_log(r41846, r41841, MPFR_RNDN);
        mpfr_mul(r41847, r41845, r41846, MPFR_RNDN);
        mpfr_add(r41848, r41842, r41847, MPFR_RNDN);
        return mpfr_get_d(r41848, MPFR_RNDN);
}

static mpfr_t r41849, r41850, r41851, r41852, r41853, r41854, r41855, r41856, r41857, r41858, r41859, r41860, r41861, r41862, r41863, r41864, r41865, r41866, r41867;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41849);
        mpfr_init(r41850);
        mpfr_init(r41851);
        mpfr_init(r41852);
        mpfr_init(r41853);
        mpfr_init(r41854);
        mpfr_init(r41855);
        mpfr_init(r41856);
        mpfr_init(r41857);
        mpfr_init(r41858);
        mpfr_init(r41859);
        mpfr_init(r41860);
        mpfr_init(r41861);
        mpfr_init(r41862);
        mpfr_init_set_str(r41863, "0.5", 10, MPFR_RNDN);
        mpfr_init(r41864);
        mpfr_init(r41865);
        mpfr_init(r41866);
        mpfr_init(r41867);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r41849, x, MPFR_RNDN);
        mpfr_set_d(r41850, y, MPFR_RNDN);
        mpfr_add(r41851, r41849, r41850, MPFR_RNDN);
        mpfr_cbrt(r41852, r41851, MPFR_RNDN);
        mpfr_mul(r41853, r41852, r41852, MPFR_RNDN);
        mpfr_log(r41854, r41853, MPFR_RNDN);
        mpfr_log(r41855, r41852, MPFR_RNDN);
        mpfr_set_d(r41856, z, MPFR_RNDN);
        mpfr_log(r41857, r41856, MPFR_RNDN);
        mpfr_add(r41858, r41855, r41857, MPFR_RNDN);
        mpfr_add(r41859, r41854, r41858, MPFR_RNDN);
        mpfr_set_d(r41860, t, MPFR_RNDN);
        mpfr_sub(r41861, r41859, r41860, MPFR_RNDN);
        mpfr_set_d(r41862, a, MPFR_RNDN);
        ;
        mpfr_sub(r41864, r41862, r41863, MPFR_RNDN);
        mpfr_log(r41865, r41860, MPFR_RNDN);
        mpfr_mul(r41866, r41864, r41865, MPFR_RNDN);
        mpfr_add(r41867, r41861, r41866, MPFR_RNDN);
        return mpfr_get_d(r41867, MPFR_RNDN);
}

