#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 r9195 = x;
        float r9196 = y;
        float r9197 = r9195 + r9196;
        float r9198 = log(r9197);
        float r9199 = z;
        float r9200 = log(r9199);
        float r9201 = r9198 + r9200;
        float r9202 = t;
        float r9203 = r9201 - r9202;
        float r9204 = a;
        float r9205 = 0.5;
        float r9206 = r9204 - r9205;
        float r9207 = log(r9202);
        float r9208 = r9206 * r9207;
        float r9209 = r9203 + r9208;
        return r9209;
}

double f_id(double x, double y, double z, double t, double a) {
        double r9210 = x;
        double r9211 = y;
        double r9212 = r9210 + r9211;
        double r9213 = log(r9212);
        double r9214 = z;
        double r9215 = log(r9214);
        double r9216 = r9213 + r9215;
        double r9217 = t;
        double r9218 = r9216 - r9217;
        double r9219 = a;
        double r9220 = 0.5;
        double r9221 = r9219 - r9220;
        double r9222 = log(r9217);
        double r9223 = r9221 * r9222;
        double r9224 = r9218 + r9223;
        return r9224;
}


double f_of(float x, float y, float z, float t, float a) {
        float r9225 = x;
        float r9226 = y;
        float r9227 = r9225 + r9226;
        float r9228 = log(r9227);
        float r9229 = z;
        float r9230 = log(r9229);
        float r9231 = r9228 + r9230;
        float r9232 = cbrt(r9231);
        float r9233 = r9232 * r9232;
        float r9234 = r9233 * r9232;
        float r9235 = t;
        float r9236 = r9234 - r9235;
        float r9237 = a;
        float r9238 = 0.5;
        float r9239 = r9237 - r9238;
        float r9240 = log(r9235);
        float r9241 = r9239 * r9240;
        float r9242 = r9236 + r9241;
        return r9242;
}

double f_od(double x, double y, double z, double t, double a) {
        double r9243 = x;
        double r9244 = y;
        double r9245 = r9243 + r9244;
        double r9246 = log(r9245);
        double r9247 = z;
        double r9248 = log(r9247);
        double r9249 = r9246 + r9248;
        double r9250 = cbrt(r9249);
        double r9251 = r9250 * r9250;
        double r9252 = r9251 * r9250;
        double r9253 = t;
        double r9254 = r9252 - r9253;
        double r9255 = a;
        double r9256 = 0.5;
        double r9257 = r9255 - r9256;
        double r9258 = log(r9253);
        double r9259 = r9257 * r9258;
        double r9260 = r9254 + r9259;
        return r9260;
}

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 r9261, r9262, r9263, r9264, r9265, r9266, r9267, r9268, r9269, r9270, r9271, r9272, r9273, r9274, r9275;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9261);
        mpfr_init(r9262);
        mpfr_init(r9263);
        mpfr_init(r9264);
        mpfr_init(r9265);
        mpfr_init(r9266);
        mpfr_init(r9267);
        mpfr_init(r9268);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init_set_str(r9271, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init(r9274);
        mpfr_init(r9275);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r9261, x, MPFR_RNDN);
        mpfr_set_d(r9262, y, MPFR_RNDN);
        mpfr_add(r9263, r9261, r9262, MPFR_RNDN);
        mpfr_log(r9264, r9263, MPFR_RNDN);
        mpfr_set_d(r9265, z, MPFR_RNDN);
        mpfr_log(r9266, r9265, MPFR_RNDN);
        mpfr_add(r9267, r9264, r9266, MPFR_RNDN);
        mpfr_set_d(r9268, t, MPFR_RNDN);
        mpfr_sub(r9269, r9267, r9268, MPFR_RNDN);
        mpfr_set_d(r9270, a, MPFR_RNDN);
        ;
        mpfr_sub(r9272, r9270, r9271, MPFR_RNDN);
        mpfr_log(r9273, r9268, MPFR_RNDN);
        mpfr_mul(r9274, r9272, r9273, MPFR_RNDN);
        mpfr_add(r9275, r9269, r9274, MPFR_RNDN);
        return mpfr_get_d(r9275, MPFR_RNDN);
}

static mpfr_t r9276, r9277, r9278, r9279, r9280, r9281, r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9276);
        mpfr_init(r9277);
        mpfr_init(r9278);
        mpfr_init(r9279);
        mpfr_init(r9280);
        mpfr_init(r9281);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init_set_str(r9289, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r9276, x, MPFR_RNDN);
        mpfr_set_d(r9277, y, MPFR_RNDN);
        mpfr_add(r9278, r9276, r9277, MPFR_RNDN);
        mpfr_log(r9279, r9278, MPFR_RNDN);
        mpfr_set_d(r9280, z, MPFR_RNDN);
        mpfr_log(r9281, r9280, MPFR_RNDN);
        mpfr_add(r9282, r9279, r9281, MPFR_RNDN);
        mpfr_cbrt(r9283, r9282, MPFR_RNDN);
        mpfr_mul(r9284, r9283, r9283, MPFR_RNDN);
        mpfr_mul(r9285, r9284, r9283, MPFR_RNDN);
        mpfr_set_d(r9286, t, MPFR_RNDN);
        mpfr_sub(r9287, r9285, r9286, MPFR_RNDN);
        mpfr_set_d(r9288, a, MPFR_RNDN);
        ;
        mpfr_sub(r9290, r9288, r9289, MPFR_RNDN);
        mpfr_log(r9291, r9286, MPFR_RNDN);
        mpfr_mul(r9292, r9290, r9291, MPFR_RNDN);
        mpfr_add(r9293, r9287, r9292, MPFR_RNDN);
        return mpfr_get_d(r9293, MPFR_RNDN);
}

static mpfr_t r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init_set_str(r9307, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9308);
        mpfr_init(r9309);
        mpfr_init(r9310);
        mpfr_init(r9311);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r9294, x, MPFR_RNDN);
        mpfr_set_d(r9295, y, MPFR_RNDN);
        mpfr_add(r9296, r9294, r9295, MPFR_RNDN);
        mpfr_log(r9297, r9296, MPFR_RNDN);
        mpfr_set_d(r9298, z, MPFR_RNDN);
        mpfr_log(r9299, r9298, MPFR_RNDN);
        mpfr_add(r9300, r9297, r9299, MPFR_RNDN);
        mpfr_cbrt(r9301, r9300, MPFR_RNDN);
        mpfr_mul(r9302, r9301, r9301, MPFR_RNDN);
        mpfr_mul(r9303, r9302, r9301, MPFR_RNDN);
        mpfr_set_d(r9304, t, MPFR_RNDN);
        mpfr_sub(r9305, r9303, r9304, MPFR_RNDN);
        mpfr_set_d(r9306, a, MPFR_RNDN);
        ;
        mpfr_sub(r9308, r9306, r9307, MPFR_RNDN);
        mpfr_log(r9309, r9304, MPFR_RNDN);
        mpfr_mul(r9310, r9308, r9309, MPFR_RNDN);
        mpfr_add(r9311, r9305, r9310, MPFR_RNDN);
        return mpfr_get_d(r9311, MPFR_RNDN);
}

