#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 r39336 = x;
        float r39337 = y;
        float r39338 = r39336 * r39337;
        float r39339 = z;
        float r39340 = r39338 + r39339;
        float r39341 = r39340 * r39337;
        float r39342 = 27464.7644705f;
        float r39343 = r39341 + r39342;
        float r39344 = r39343 * r39337;
        float r39345 = 230661.510616f;
        float r39346 = r39344 + r39345;
        float r39347 = r39346 * r39337;
        float r39348 = t;
        float r39349 = r39347 + r39348;
        float r39350 = a;
        float r39351 = r39337 + r39350;
        float r39352 = r39351 * r39337;
        float r39353 = b;
        float r39354 = r39352 + r39353;
        float r39355 = r39354 * r39337;
        float r39356 = c;
        float r39357 = r39355 + r39356;
        float r39358 = r39357 * r39337;
        float r39359 = i;
        float r39360 = r39358 + r39359;
        float r39361 = r39349 / r39360;
        return r39361;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r39362 = x;
        double r39363 = y;
        double r39364 = r39362 * r39363;
        double r39365 = z;
        double r39366 = r39364 + r39365;
        double r39367 = r39366 * r39363;
        double r39368 = 27464.7644705;
        double r39369 = r39367 + r39368;
        double r39370 = r39369 * r39363;
        double r39371 = 230661.510616;
        double r39372 = r39370 + r39371;
        double r39373 = r39372 * r39363;
        double r39374 = t;
        double r39375 = r39373 + r39374;
        double r39376 = a;
        double r39377 = r39363 + r39376;
        double r39378 = r39377 * r39363;
        double r39379 = b;
        double r39380 = r39378 + r39379;
        double r39381 = r39380 * r39363;
        double r39382 = c;
        double r39383 = r39381 + r39382;
        double r39384 = r39383 * r39363;
        double r39385 = i;
        double r39386 = r39384 + r39385;
        double r39387 = r39375 / r39386;
        return r39387;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r39388 = x;
        float r39389 = y;
        float r39390 = r39388 * r39389;
        float r39391 = z;
        float r39392 = r39390 + r39391;
        float r39393 = r39392 * r39389;
        float r39394 = 27464.7644705f;
        float r39395 = r39393 + r39394;
        float r39396 = r39395 * r39389;
        float r39397 = 230661.510616f;
        float r39398 = r39396 + r39397;
        float r39399 = r39398 * r39389;
        float r39400 = t;
        float r39401 = r39399 + r39400;
        float r39402 = 1.0f;
        float r39403 = a;
        float r39404 = r39389 + r39403;
        float r39405 = r39404 * r39389;
        float r39406 = b;
        float r39407 = r39405 + r39406;
        float r39408 = r39407 * r39389;
        float r39409 = c;
        float r39410 = r39408 + r39409;
        float r39411 = r39410 * r39389;
        float r39412 = i;
        float r39413 = r39411 + r39412;
        float r39414 = r39402 / r39413;
        float r39415 = r39401 * r39414;
        return r39415;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r39416 = x;
        double r39417 = y;
        double r39418 = r39416 * r39417;
        double r39419 = z;
        double r39420 = r39418 + r39419;
        double r39421 = r39420 * r39417;
        double r39422 = 27464.7644705;
        double r39423 = r39421 + r39422;
        double r39424 = r39423 * r39417;
        double r39425 = 230661.510616;
        double r39426 = r39424 + r39425;
        double r39427 = r39426 * r39417;
        double r39428 = t;
        double r39429 = r39427 + r39428;
        double r39430 = 1.0;
        double r39431 = a;
        double r39432 = r39417 + r39431;
        double r39433 = r39432 * r39417;
        double r39434 = b;
        double r39435 = r39433 + r39434;
        double r39436 = r39435 * r39417;
        double r39437 = c;
        double r39438 = r39436 + r39437;
        double r39439 = r39438 * r39417;
        double r39440 = i;
        double r39441 = r39439 + r39440;
        double r39442 = r39430 / r39441;
        double r39443 = r39429 * r39442;
        return r39443;
}

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 r39444, r39445, r39446, r39447, r39448, r39449, r39450, r39451, r39452, r39453, r39454, r39455, r39456, r39457, r39458, r39459, r39460, r39461, r39462, r39463, r39464, r39465, r39466, r39467, r39468, r39469;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r39444);
        mpfr_init(r39445);
        mpfr_init(r39446);
        mpfr_init(r39447);
        mpfr_init(r39448);
        mpfr_init(r39449);
        mpfr_init_set_str(r39450, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r39451);
        mpfr_init(r39452);
        mpfr_init_set_str(r39453, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r39454);
        mpfr_init(r39455);
        mpfr_init(r39456);
        mpfr_init(r39457);
        mpfr_init(r39458);
        mpfr_init(r39459);
        mpfr_init(r39460);
        mpfr_init(r39461);
        mpfr_init(r39462);
        mpfr_init(r39463);
        mpfr_init(r39464);
        mpfr_init(r39465);
        mpfr_init(r39466);
        mpfr_init(r39467);
        mpfr_init(r39468);
        mpfr_init(r39469);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39444, x, MPFR_RNDN);
        mpfr_set_d(r39445, y, MPFR_RNDN);
        mpfr_mul(r39446, r39444, r39445, MPFR_RNDN);
        mpfr_set_d(r39447, z, MPFR_RNDN);
        mpfr_add(r39448, r39446, r39447, MPFR_RNDN);
        mpfr_mul(r39449, r39448, r39445, MPFR_RNDN);
        ;
        mpfr_add(r39451, r39449, r39450, MPFR_RNDN);
        mpfr_mul(r39452, r39451, r39445, MPFR_RNDN);
        ;
        mpfr_add(r39454, r39452, r39453, MPFR_RNDN);
        mpfr_mul(r39455, r39454, r39445, MPFR_RNDN);
        mpfr_set_d(r39456, t, MPFR_RNDN);
        mpfr_add(r39457, r39455, r39456, MPFR_RNDN);
        mpfr_set_d(r39458, a, MPFR_RNDN);
        mpfr_add(r39459, r39445, r39458, MPFR_RNDN);
        mpfr_mul(r39460, r39459, r39445, MPFR_RNDN);
        mpfr_set_d(r39461, b, MPFR_RNDN);
        mpfr_add(r39462, r39460, r39461, MPFR_RNDN);
        mpfr_mul(r39463, r39462, r39445, MPFR_RNDN);
        mpfr_set_d(r39464, c, MPFR_RNDN);
        mpfr_add(r39465, r39463, r39464, MPFR_RNDN);
        mpfr_mul(r39466, r39465, r39445, MPFR_RNDN);
        mpfr_set_d(r39467, i, MPFR_RNDN);
        mpfr_add(r39468, r39466, r39467, MPFR_RNDN);
        mpfr_div(r39469, r39457, r39468, MPFR_RNDN);
        return mpfr_get_d(r39469, MPFR_RNDN);
}

static mpfr_t r39470, r39471, r39472, r39473, r39474, r39475, r39476, r39477, r39478, r39479, r39480, r39481, r39482, r39483, r39484, r39485, r39486, r39487, r39488, r39489, r39490, r39491, r39492, r39493, r39494, r39495, r39496, r39497;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39470);
        mpfr_init(r39471);
        mpfr_init(r39472);
        mpfr_init(r39473);
        mpfr_init(r39474);
        mpfr_init(r39475);
        mpfr_init_set_str(r39476, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r39477);
        mpfr_init(r39478);
        mpfr_init_set_str(r39479, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r39480);
        mpfr_init(r39481);
        mpfr_init(r39482);
        mpfr_init(r39483);
        mpfr_init_set_str(r39484, "1", 10, MPFR_RNDN);
        mpfr_init(r39485);
        mpfr_init(r39486);
        mpfr_init(r39487);
        mpfr_init(r39488);
        mpfr_init(r39489);
        mpfr_init(r39490);
        mpfr_init(r39491);
        mpfr_init(r39492);
        mpfr_init(r39493);
        mpfr_init(r39494);
        mpfr_init(r39495);
        mpfr_init(r39496);
        mpfr_init(r39497);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39470, x, MPFR_RNDN);
        mpfr_set_d(r39471, y, MPFR_RNDN);
        mpfr_mul(r39472, r39470, r39471, MPFR_RNDN);
        mpfr_set_d(r39473, z, MPFR_RNDN);
        mpfr_add(r39474, r39472, r39473, MPFR_RNDN);
        mpfr_mul(r39475, r39474, r39471, MPFR_RNDN);
        ;
        mpfr_add(r39477, r39475, r39476, MPFR_RNDN);
        mpfr_mul(r39478, r39477, r39471, MPFR_RNDN);
        ;
        mpfr_add(r39480, r39478, r39479, MPFR_RNDN);
        mpfr_mul(r39481, r39480, r39471, MPFR_RNDN);
        mpfr_set_d(r39482, t, MPFR_RNDN);
        mpfr_add(r39483, r39481, r39482, MPFR_RNDN);
        ;
        mpfr_set_d(r39485, a, MPFR_RNDN);
        mpfr_add(r39486, r39471, r39485, MPFR_RNDN);
        mpfr_mul(r39487, r39486, r39471, MPFR_RNDN);
        mpfr_set_d(r39488, b, MPFR_RNDN);
        mpfr_add(r39489, r39487, r39488, MPFR_RNDN);
        mpfr_mul(r39490, r39489, r39471, MPFR_RNDN);
        mpfr_set_d(r39491, c, MPFR_RNDN);
        mpfr_add(r39492, r39490, r39491, MPFR_RNDN);
        mpfr_mul(r39493, r39492, r39471, MPFR_RNDN);
        mpfr_set_d(r39494, i, MPFR_RNDN);
        mpfr_add(r39495, r39493, r39494, MPFR_RNDN);
        mpfr_div(r39496, r39484, r39495, MPFR_RNDN);
        mpfr_mul(r39497, r39483, r39496, MPFR_RNDN);
        return mpfr_get_d(r39497, MPFR_RNDN);
}

static mpfr_t r39498, r39499, r39500, r39501, r39502, r39503, r39504, r39505, r39506, r39507, r39508, r39509, r39510, r39511, r39512, r39513, r39514, r39515, r39516, r39517, r39518, r39519, r39520, r39521, r39522, r39523, r39524, r39525;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39498);
        mpfr_init(r39499);
        mpfr_init(r39500);
        mpfr_init(r39501);
        mpfr_init(r39502);
        mpfr_init(r39503);
        mpfr_init_set_str(r39504, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r39505);
        mpfr_init(r39506);
        mpfr_init_set_str(r39507, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r39508);
        mpfr_init(r39509);
        mpfr_init(r39510);
        mpfr_init(r39511);
        mpfr_init_set_str(r39512, "1", 10, MPFR_RNDN);
        mpfr_init(r39513);
        mpfr_init(r39514);
        mpfr_init(r39515);
        mpfr_init(r39516);
        mpfr_init(r39517);
        mpfr_init(r39518);
        mpfr_init(r39519);
        mpfr_init(r39520);
        mpfr_init(r39521);
        mpfr_init(r39522);
        mpfr_init(r39523);
        mpfr_init(r39524);
        mpfr_init(r39525);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r39498, x, MPFR_RNDN);
        mpfr_set_d(r39499, y, MPFR_RNDN);
        mpfr_mul(r39500, r39498, r39499, MPFR_RNDN);
        mpfr_set_d(r39501, z, MPFR_RNDN);
        mpfr_add(r39502, r39500, r39501, MPFR_RNDN);
        mpfr_mul(r39503, r39502, r39499, MPFR_RNDN);
        ;
        mpfr_add(r39505, r39503, r39504, MPFR_RNDN);
        mpfr_mul(r39506, r39505, r39499, MPFR_RNDN);
        ;
        mpfr_add(r39508, r39506, r39507, MPFR_RNDN);
        mpfr_mul(r39509, r39508, r39499, MPFR_RNDN);
        mpfr_set_d(r39510, t, MPFR_RNDN);
        mpfr_add(r39511, r39509, r39510, MPFR_RNDN);
        ;
        mpfr_set_d(r39513, a, MPFR_RNDN);
        mpfr_add(r39514, r39499, r39513, MPFR_RNDN);
        mpfr_mul(r39515, r39514, r39499, MPFR_RNDN);
        mpfr_set_d(r39516, b, MPFR_RNDN);
        mpfr_add(r39517, r39515, r39516, MPFR_RNDN);
        mpfr_mul(r39518, r39517, r39499, MPFR_RNDN);
        mpfr_set_d(r39519, c, MPFR_RNDN);
        mpfr_add(r39520, r39518, r39519, MPFR_RNDN);
        mpfr_mul(r39521, r39520, r39499, MPFR_RNDN);
        mpfr_set_d(r39522, i, MPFR_RNDN);
        mpfr_add(r39523, r39521, r39522, MPFR_RNDN);
        mpfr_div(r39524, r39512, r39523, MPFR_RNDN);
        mpfr_mul(r39525, r39511, r39524, MPFR_RNDN);
        return mpfr_get_d(r39525, MPFR_RNDN);
}

