#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 r27428 = x;
        float r27429 = y;
        float r27430 = r27428 * r27429;
        float r27431 = z;
        float r27432 = r27430 + r27431;
        float r27433 = r27432 * r27429;
        float r27434 = 27464.7644705;
        float r27435 = r27433 + r27434;
        float r27436 = r27435 * r27429;
        float r27437 = 230661.510616;
        float r27438 = r27436 + r27437;
        float r27439 = r27438 * r27429;
        float r27440 = t;
        float r27441 = r27439 + r27440;
        float r27442 = a;
        float r27443 = r27429 + r27442;
        float r27444 = r27443 * r27429;
        float r27445 = b;
        float r27446 = r27444 + r27445;
        float r27447 = r27446 * r27429;
        float r27448 = c;
        float r27449 = r27447 + r27448;
        float r27450 = r27449 * r27429;
        float r27451 = i;
        float r27452 = r27450 + r27451;
        float r27453 = r27441 / r27452;
        return r27453;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r27454 = x;
        double r27455 = y;
        double r27456 = r27454 * r27455;
        double r27457 = z;
        double r27458 = r27456 + r27457;
        double r27459 = r27458 * r27455;
        double r27460 = 27464.7644705;
        double r27461 = r27459 + r27460;
        double r27462 = r27461 * r27455;
        double r27463 = 230661.510616;
        double r27464 = r27462 + r27463;
        double r27465 = r27464 * r27455;
        double r27466 = t;
        double r27467 = r27465 + r27466;
        double r27468 = a;
        double r27469 = r27455 + r27468;
        double r27470 = r27469 * r27455;
        double r27471 = b;
        double r27472 = r27470 + r27471;
        double r27473 = r27472 * r27455;
        double r27474 = c;
        double r27475 = r27473 + r27474;
        double r27476 = r27475 * r27455;
        double r27477 = i;
        double r27478 = r27476 + r27477;
        double r27479 = r27467 / r27478;
        return r27479;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r27480 = x;
        float r27481 = y;
        float r27482 = r27480 * r27481;
        float r27483 = z;
        float r27484 = r27482 + r27483;
        float r27485 = r27484 * r27481;
        float r27486 = 27464.7644705;
        float r27487 = r27485 + r27486;
        float r27488 = r27487 * r27481;
        float r27489 = 230661.510616;
        float r27490 = r27488 + r27489;
        float r27491 = r27490 * r27481;
        float r27492 = t;
        float r27493 = r27491 + r27492;
        float r27494 = a;
        float r27495 = r27481 + r27494;
        float r27496 = r27495 * r27481;
        float r27497 = b;
        float r27498 = r27496 + r27497;
        float r27499 = r27498 * r27481;
        float r27500 = c;
        float r27501 = r27499 + r27500;
        float r27502 = r27501 * r27481;
        float r27503 = i;
        float r27504 = r27502 + r27503;
        float r27505 = r27493 / r27504;
        return r27505;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r27506 = x;
        double r27507 = y;
        double r27508 = r27506 * r27507;
        double r27509 = z;
        double r27510 = r27508 + r27509;
        double r27511 = r27510 * r27507;
        double r27512 = 27464.7644705;
        double r27513 = r27511 + r27512;
        double r27514 = r27513 * r27507;
        double r27515 = 230661.510616;
        double r27516 = r27514 + r27515;
        double r27517 = r27516 * r27507;
        double r27518 = t;
        double r27519 = r27517 + r27518;
        double r27520 = a;
        double r27521 = r27507 + r27520;
        double r27522 = r27521 * r27507;
        double r27523 = b;
        double r27524 = r27522 + r27523;
        double r27525 = r27524 * r27507;
        double r27526 = c;
        double r27527 = r27525 + r27526;
        double r27528 = r27527 * r27507;
        double r27529 = i;
        double r27530 = r27528 + r27529;
        double r27531 = r27519 / r27530;
        return r27531;
}

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 r27532, r27533, r27534, r27535, r27536, r27537, r27538, r27539, r27540, r27541, r27542, r27543, r27544, r27545, r27546, r27547, r27548, r27549, r27550, r27551, r27552, r27553, r27554, r27555, r27556, r27557;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r27532);
        mpfr_init(r27533);
        mpfr_init(r27534);
        mpfr_init(r27535);
        mpfr_init(r27536);
        mpfr_init(r27537);
        mpfr_init_set_str(r27538, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r27539);
        mpfr_init(r27540);
        mpfr_init_set_str(r27541, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r27542);
        mpfr_init(r27543);
        mpfr_init(r27544);
        mpfr_init(r27545);
        mpfr_init(r27546);
        mpfr_init(r27547);
        mpfr_init(r27548);
        mpfr_init(r27549);
        mpfr_init(r27550);
        mpfr_init(r27551);
        mpfr_init(r27552);
        mpfr_init(r27553);
        mpfr_init(r27554);
        mpfr_init(r27555);
        mpfr_init(r27556);
        mpfr_init(r27557);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r27532, x, MPFR_RNDN);
        mpfr_set_d(r27533, y, MPFR_RNDN);
        mpfr_mul(r27534, r27532, r27533, MPFR_RNDN);
        mpfr_set_d(r27535, z, MPFR_RNDN);
        mpfr_add(r27536, r27534, r27535, MPFR_RNDN);
        mpfr_mul(r27537, r27536, r27533, MPFR_RNDN);
        ;
        mpfr_add(r27539, r27537, r27538, MPFR_RNDN);
        mpfr_mul(r27540, r27539, r27533, MPFR_RNDN);
        ;
        mpfr_add(r27542, r27540, r27541, MPFR_RNDN);
        mpfr_mul(r27543, r27542, r27533, MPFR_RNDN);
        mpfr_set_d(r27544, t, MPFR_RNDN);
        mpfr_add(r27545, r27543, r27544, MPFR_RNDN);
        mpfr_set_d(r27546, a, MPFR_RNDN);
        mpfr_add(r27547, r27533, r27546, MPFR_RNDN);
        mpfr_mul(r27548, r27547, r27533, MPFR_RNDN);
        mpfr_set_d(r27549, b, MPFR_RNDN);
        mpfr_add(r27550, r27548, r27549, MPFR_RNDN);
        mpfr_mul(r27551, r27550, r27533, MPFR_RNDN);
        mpfr_set_d(r27552, c, MPFR_RNDN);
        mpfr_add(r27553, r27551, r27552, MPFR_RNDN);
        mpfr_mul(r27554, r27553, r27533, MPFR_RNDN);
        mpfr_set_d(r27555, i, MPFR_RNDN);
        mpfr_add(r27556, r27554, r27555, MPFR_RNDN);
        mpfr_div(r27557, r27545, r27556, MPFR_RNDN);
        return mpfr_get_d(r27557, MPFR_RNDN);
}

static mpfr_t r27558, r27559, r27560, r27561, r27562, r27563, r27564, r27565, r27566, r27567, r27568, r27569, r27570, r27571, r27572, r27573, r27574, r27575, r27576, r27577, r27578, r27579, r27580, r27581, r27582, r27583;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27558);
        mpfr_init(r27559);
        mpfr_init(r27560);
        mpfr_init(r27561);
        mpfr_init(r27562);
        mpfr_init(r27563);
        mpfr_init_set_str(r27564, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r27565);
        mpfr_init(r27566);
        mpfr_init_set_str(r27567, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r27568);
        mpfr_init(r27569);
        mpfr_init(r27570);
        mpfr_init(r27571);
        mpfr_init(r27572);
        mpfr_init(r27573);
        mpfr_init(r27574);
        mpfr_init(r27575);
        mpfr_init(r27576);
        mpfr_init(r27577);
        mpfr_init(r27578);
        mpfr_init(r27579);
        mpfr_init(r27580);
        mpfr_init(r27581);
        mpfr_init(r27582);
        mpfr_init(r27583);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r27558, x, MPFR_RNDN);
        mpfr_set_d(r27559, y, MPFR_RNDN);
        mpfr_mul(r27560, r27558, r27559, MPFR_RNDN);
        mpfr_set_d(r27561, z, MPFR_RNDN);
        mpfr_add(r27562, r27560, r27561, MPFR_RNDN);
        mpfr_mul(r27563, r27562, r27559, MPFR_RNDN);
        ;
        mpfr_add(r27565, r27563, r27564, MPFR_RNDN);
        mpfr_mul(r27566, r27565, r27559, MPFR_RNDN);
        ;
        mpfr_add(r27568, r27566, r27567, MPFR_RNDN);
        mpfr_mul(r27569, r27568, r27559, MPFR_RNDN);
        mpfr_set_d(r27570, t, MPFR_RNDN);
        mpfr_add(r27571, r27569, r27570, MPFR_RNDN);
        mpfr_set_d(r27572, a, MPFR_RNDN);
        mpfr_add(r27573, r27559, r27572, MPFR_RNDN);
        mpfr_mul(r27574, r27573, r27559, MPFR_RNDN);
        mpfr_set_d(r27575, b, MPFR_RNDN);
        mpfr_add(r27576, r27574, r27575, MPFR_RNDN);
        mpfr_mul(r27577, r27576, r27559, MPFR_RNDN);
        mpfr_set_d(r27578, c, MPFR_RNDN);
        mpfr_add(r27579, r27577, r27578, MPFR_RNDN);
        mpfr_mul(r27580, r27579, r27559, MPFR_RNDN);
        mpfr_set_d(r27581, i, MPFR_RNDN);
        mpfr_add(r27582, r27580, r27581, MPFR_RNDN);
        mpfr_div(r27583, r27571, r27582, MPFR_RNDN);
        return mpfr_get_d(r27583, MPFR_RNDN);
}

static mpfr_t r27584, r27585, r27586, r27587, r27588, r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596, r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27584);
        mpfr_init(r27585);
        mpfr_init(r27586);
        mpfr_init(r27587);
        mpfr_init(r27588);
        mpfr_init(r27589);
        mpfr_init_set_str(r27590, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r27591);
        mpfr_init(r27592);
        mpfr_init_set_str(r27593, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r27594);
        mpfr_init(r27595);
        mpfr_init(r27596);
        mpfr_init(r27597);
        mpfr_init(r27598);
        mpfr_init(r27599);
        mpfr_init(r27600);
        mpfr_init(r27601);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init(r27606);
        mpfr_init(r27607);
        mpfr_init(r27608);
        mpfr_init(r27609);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r27584, x, MPFR_RNDN);
        mpfr_set_d(r27585, y, MPFR_RNDN);
        mpfr_mul(r27586, r27584, r27585, MPFR_RNDN);
        mpfr_set_d(r27587, z, MPFR_RNDN);
        mpfr_add(r27588, r27586, r27587, MPFR_RNDN);
        mpfr_mul(r27589, r27588, r27585, MPFR_RNDN);
        ;
        mpfr_add(r27591, r27589, r27590, MPFR_RNDN);
        mpfr_mul(r27592, r27591, r27585, MPFR_RNDN);
        ;
        mpfr_add(r27594, r27592, r27593, MPFR_RNDN);
        mpfr_mul(r27595, r27594, r27585, MPFR_RNDN);
        mpfr_set_d(r27596, t, MPFR_RNDN);
        mpfr_add(r27597, r27595, r27596, MPFR_RNDN);
        mpfr_set_d(r27598, a, MPFR_RNDN);
        mpfr_add(r27599, r27585, r27598, MPFR_RNDN);
        mpfr_mul(r27600, r27599, r27585, MPFR_RNDN);
        mpfr_set_d(r27601, b, MPFR_RNDN);
        mpfr_add(r27602, r27600, r27601, MPFR_RNDN);
        mpfr_mul(r27603, r27602, r27585, MPFR_RNDN);
        mpfr_set_d(r27604, c, MPFR_RNDN);
        mpfr_add(r27605, r27603, r27604, MPFR_RNDN);
        mpfr_mul(r27606, r27605, r27585, MPFR_RNDN);
        mpfr_set_d(r27607, i, MPFR_RNDN);
        mpfr_add(r27608, r27606, r27607, MPFR_RNDN);
        mpfr_div(r27609, r27597, r27608, MPFR_RNDN);
        return mpfr_get_d(r27609, MPFR_RNDN);
}

