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

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

double f_if(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r22214 = x;
        float r22215 = y;
        float r22216 = r22214 * r22215;
        float r22217 = z;
        float r22218 = r22216 + r22217;
        float r22219 = r22218 * r22215;
        float r22220 = 27464.7644705;
        float r22221 = r22219 + r22220;
        float r22222 = r22221 * r22215;
        float r22223 = 230661.510616;
        float r22224 = r22222 + r22223;
        float r22225 = r22224 * r22215;
        float r22226 = t;
        float r22227 = r22225 + r22226;
        float r22228 = a;
        float r22229 = r22215 + r22228;
        float r22230 = r22229 * r22215;
        float r22231 = b;
        float r22232 = r22230 + r22231;
        float r22233 = r22232 * r22215;
        float r22234 = c;
        float r22235 = r22233 + r22234;
        float r22236 = r22235 * r22215;
        float r22237 = i;
        float r22238 = r22236 + r22237;
        float r22239 = r22227 / r22238;
        return r22239;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r22240 = x;
        double r22241 = y;
        double r22242 = r22240 * r22241;
        double r22243 = z;
        double r22244 = r22242 + r22243;
        double r22245 = r22244 * r22241;
        double r22246 = 27464.7644705;
        double r22247 = r22245 + r22246;
        double r22248 = r22247 * r22241;
        double r22249 = 230661.510616;
        double r22250 = r22248 + r22249;
        double r22251 = r22250 * r22241;
        double r22252 = t;
        double r22253 = r22251 + r22252;
        double r22254 = a;
        double r22255 = r22241 + r22254;
        double r22256 = r22255 * r22241;
        double r22257 = b;
        double r22258 = r22256 + r22257;
        double r22259 = r22258 * r22241;
        double r22260 = c;
        double r22261 = r22259 + r22260;
        double r22262 = r22261 * r22241;
        double r22263 = i;
        double r22264 = r22262 + r22263;
        double r22265 = r22253 / r22264;
        return r22265;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r22266 = x;
        float r22267 = y;
        float r22268 = r22266 * r22267;
        float r22269 = z;
        float r22270 = r22268 + r22269;
        float r22271 = r22270 * r22267;
        float r22272 = 27464.7644705;
        float r22273 = r22271 + r22272;
        float r22274 = r22273 * r22267;
        float r22275 = 230661.510616;
        float r22276 = r22274 + r22275;
        float r22277 = r22276 * r22267;
        float r22278 = t;
        float r22279 = r22277 + r22278;
        float r22280 = 1;
        float r22281 = a;
        float r22282 = r22267 + r22281;
        float r22283 = r22282 * r22267;
        float r22284 = b;
        float r22285 = r22283 + r22284;
        float r22286 = r22285 * r22267;
        float r22287 = c;
        float r22288 = r22286 + r22287;
        float r22289 = r22288 * r22267;
        float r22290 = i;
        float r22291 = r22289 + r22290;
        float r22292 = r22280 / r22291;
        float r22293 = r22279 * r22292;
        return r22293;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r22294 = x;
        double r22295 = y;
        double r22296 = r22294 * r22295;
        double r22297 = z;
        double r22298 = r22296 + r22297;
        double r22299 = r22298 * r22295;
        double r22300 = 27464.7644705;
        double r22301 = r22299 + r22300;
        double r22302 = r22301 * r22295;
        double r22303 = 230661.510616;
        double r22304 = r22302 + r22303;
        double r22305 = r22304 * r22295;
        double r22306 = t;
        double r22307 = r22305 + r22306;
        double r22308 = 1;
        double r22309 = a;
        double r22310 = r22295 + r22309;
        double r22311 = r22310 * r22295;
        double r22312 = b;
        double r22313 = r22311 + r22312;
        double r22314 = r22313 * r22295;
        double r22315 = c;
        double r22316 = r22314 + r22315;
        double r22317 = r22316 * r22295;
        double r22318 = i;
        double r22319 = r22317 + r22318;
        double r22320 = r22308 / r22319;
        double r22321 = r22307 * r22320;
        return r22321;
}

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 r22322, r22323, r22324, r22325, r22326, r22327, r22328, r22329, r22330, r22331, r22332, r22333, r22334, r22335, r22336, r22337, r22338, r22339, r22340, r22341, r22342, r22343, r22344, r22345, r22346, r22347;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r22322);
        mpfr_init(r22323);
        mpfr_init(r22324);
        mpfr_init(r22325);
        mpfr_init(r22326);
        mpfr_init(r22327);
        mpfr_init_set_str(r22328, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r22329);
        mpfr_init(r22330);
        mpfr_init_set_str(r22331, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r22332);
        mpfr_init(r22333);
        mpfr_init(r22334);
        mpfr_init(r22335);
        mpfr_init(r22336);
        mpfr_init(r22337);
        mpfr_init(r22338);
        mpfr_init(r22339);
        mpfr_init(r22340);
        mpfr_init(r22341);
        mpfr_init(r22342);
        mpfr_init(r22343);
        mpfr_init(r22344);
        mpfr_init(r22345);
        mpfr_init(r22346);
        mpfr_init(r22347);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r22322, x, MPFR_RNDN);
        mpfr_set_d(r22323, y, MPFR_RNDN);
        mpfr_mul(r22324, r22322, r22323, MPFR_RNDN);
        mpfr_set_d(r22325, z, MPFR_RNDN);
        mpfr_add(r22326, r22324, r22325, MPFR_RNDN);
        mpfr_mul(r22327, r22326, r22323, MPFR_RNDN);
        ;
        mpfr_add(r22329, r22327, r22328, MPFR_RNDN);
        mpfr_mul(r22330, r22329, r22323, MPFR_RNDN);
        ;
        mpfr_add(r22332, r22330, r22331, MPFR_RNDN);
        mpfr_mul(r22333, r22332, r22323, MPFR_RNDN);
        mpfr_set_d(r22334, t, MPFR_RNDN);
        mpfr_add(r22335, r22333, r22334, MPFR_RNDN);
        mpfr_set_d(r22336, a, MPFR_RNDN);
        mpfr_add(r22337, r22323, r22336, MPFR_RNDN);
        mpfr_mul(r22338, r22337, r22323, MPFR_RNDN);
        mpfr_set_d(r22339, b, MPFR_RNDN);
        mpfr_add(r22340, r22338, r22339, MPFR_RNDN);
        mpfr_mul(r22341, r22340, r22323, MPFR_RNDN);
        mpfr_set_d(r22342, c, MPFR_RNDN);
        mpfr_add(r22343, r22341, r22342, MPFR_RNDN);
        mpfr_mul(r22344, r22343, r22323, MPFR_RNDN);
        mpfr_set_d(r22345, i, MPFR_RNDN);
        mpfr_add(r22346, r22344, r22345, MPFR_RNDN);
        mpfr_div(r22347, r22335, r22346, MPFR_RNDN);
        return mpfr_get_d(r22347, MPFR_RNDN);
}

static mpfr_t r22348, r22349, r22350, r22351, r22352, r22353, r22354, r22355, r22356, r22357, r22358, r22359, r22360, r22361, r22362, r22363, r22364, r22365, r22366, r22367, r22368, r22369, r22370, r22371, r22372, r22373, r22374, r22375;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22348);
        mpfr_init(r22349);
        mpfr_init(r22350);
        mpfr_init(r22351);
        mpfr_init(r22352);
        mpfr_init(r22353);
        mpfr_init_set_str(r22354, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r22355);
        mpfr_init(r22356);
        mpfr_init_set_str(r22357, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r22358);
        mpfr_init(r22359);
        mpfr_init(r22360);
        mpfr_init(r22361);
        mpfr_init_set_str(r22362, "1", 10, MPFR_RNDN);
        mpfr_init(r22363);
        mpfr_init(r22364);
        mpfr_init(r22365);
        mpfr_init(r22366);
        mpfr_init(r22367);
        mpfr_init(r22368);
        mpfr_init(r22369);
        mpfr_init(r22370);
        mpfr_init(r22371);
        mpfr_init(r22372);
        mpfr_init(r22373);
        mpfr_init(r22374);
        mpfr_init(r22375);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r22348, x, MPFR_RNDN);
        mpfr_set_d(r22349, y, MPFR_RNDN);
        mpfr_mul(r22350, r22348, r22349, MPFR_RNDN);
        mpfr_set_d(r22351, z, MPFR_RNDN);
        mpfr_add(r22352, r22350, r22351, MPFR_RNDN);
        mpfr_mul(r22353, r22352, r22349, MPFR_RNDN);
        ;
        mpfr_add(r22355, r22353, r22354, MPFR_RNDN);
        mpfr_mul(r22356, r22355, r22349, MPFR_RNDN);
        ;
        mpfr_add(r22358, r22356, r22357, MPFR_RNDN);
        mpfr_mul(r22359, r22358, r22349, MPFR_RNDN);
        mpfr_set_d(r22360, t, MPFR_RNDN);
        mpfr_add(r22361, r22359, r22360, MPFR_RNDN);
        ;
        mpfr_set_d(r22363, a, MPFR_RNDN);
        mpfr_add(r22364, r22349, r22363, MPFR_RNDN);
        mpfr_mul(r22365, r22364, r22349, MPFR_RNDN);
        mpfr_set_d(r22366, b, MPFR_RNDN);
        mpfr_add(r22367, r22365, r22366, MPFR_RNDN);
        mpfr_mul(r22368, r22367, r22349, MPFR_RNDN);
        mpfr_set_d(r22369, c, MPFR_RNDN);
        mpfr_add(r22370, r22368, r22369, MPFR_RNDN);
        mpfr_mul(r22371, r22370, r22349, MPFR_RNDN);
        mpfr_set_d(r22372, i, MPFR_RNDN);
        mpfr_add(r22373, r22371, r22372, MPFR_RNDN);
        mpfr_div(r22374, r22362, r22373, MPFR_RNDN);
        mpfr_mul(r22375, r22361, r22374, MPFR_RNDN);
        return mpfr_get_d(r22375, MPFR_RNDN);
}

static mpfr_t r22376, r22377, r22378, r22379, r22380, r22381, r22382, r22383, r22384, r22385, r22386, r22387, r22388, r22389, r22390, r22391, r22392, r22393, r22394, r22395, r22396, r22397, r22398, r22399, r22400, r22401, r22402, r22403;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22376);
        mpfr_init(r22377);
        mpfr_init(r22378);
        mpfr_init(r22379);
        mpfr_init(r22380);
        mpfr_init(r22381);
        mpfr_init_set_str(r22382, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r22383);
        mpfr_init(r22384);
        mpfr_init_set_str(r22385, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r22386);
        mpfr_init(r22387);
        mpfr_init(r22388);
        mpfr_init(r22389);
        mpfr_init_set_str(r22390, "1", 10, MPFR_RNDN);
        mpfr_init(r22391);
        mpfr_init(r22392);
        mpfr_init(r22393);
        mpfr_init(r22394);
        mpfr_init(r22395);
        mpfr_init(r22396);
        mpfr_init(r22397);
        mpfr_init(r22398);
        mpfr_init(r22399);
        mpfr_init(r22400);
        mpfr_init(r22401);
        mpfr_init(r22402);
        mpfr_init(r22403);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r22376, x, MPFR_RNDN);
        mpfr_set_d(r22377, y, MPFR_RNDN);
        mpfr_mul(r22378, r22376, r22377, MPFR_RNDN);
        mpfr_set_d(r22379, z, MPFR_RNDN);
        mpfr_add(r22380, r22378, r22379, MPFR_RNDN);
        mpfr_mul(r22381, r22380, r22377, MPFR_RNDN);
        ;
        mpfr_add(r22383, r22381, r22382, MPFR_RNDN);
        mpfr_mul(r22384, r22383, r22377, MPFR_RNDN);
        ;
        mpfr_add(r22386, r22384, r22385, MPFR_RNDN);
        mpfr_mul(r22387, r22386, r22377, MPFR_RNDN);
        mpfr_set_d(r22388, t, MPFR_RNDN);
        mpfr_add(r22389, r22387, r22388, MPFR_RNDN);
        ;
        mpfr_set_d(r22391, a, MPFR_RNDN);
        mpfr_add(r22392, r22377, r22391, MPFR_RNDN);
        mpfr_mul(r22393, r22392, r22377, MPFR_RNDN);
        mpfr_set_d(r22394, b, MPFR_RNDN);
        mpfr_add(r22395, r22393, r22394, MPFR_RNDN);
        mpfr_mul(r22396, r22395, r22377, MPFR_RNDN);
        mpfr_set_d(r22397, c, MPFR_RNDN);
        mpfr_add(r22398, r22396, r22397, MPFR_RNDN);
        mpfr_mul(r22399, r22398, r22377, MPFR_RNDN);
        mpfr_set_d(r22400, i, MPFR_RNDN);
        mpfr_add(r22401, r22399, r22400, MPFR_RNDN);
        mpfr_div(r22402, r22390, r22401, MPFR_RNDN);
        mpfr_mul(r22403, r22389, r22402, MPFR_RNDN);
        return mpfr_get_d(r22403, MPFR_RNDN);
}

