#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, C";

double f_if(float x, float y, float z) {
        float r42367 = x;
        float r42368 = 2.0;
        float r42369 = r42367 - r42368;
        float r42370 = 4.16438922228;
        float r42371 = r42367 * r42370;
        float r42372 = 78.6994924154;
        float r42373 = r42371 + r42372;
        float r42374 = r42373 * r42367;
        float r42375 = 137.519416416;
        float r42376 = r42374 + r42375;
        float r42377 = r42376 * r42367;
        float r42378 = y;
        float r42379 = r42377 + r42378;
        float r42380 = r42379 * r42367;
        float r42381 = z;
        float r42382 = r42380 + r42381;
        float r42383 = r42369 * r42382;
        float r42384 = 43.3400022514;
        float r42385 = r42367 + r42384;
        float r42386 = r42385 * r42367;
        float r42387 = 263.505074721;
        float r42388 = r42386 + r42387;
        float r42389 = r42388 * r42367;
        float r42390 = 313.399215894;
        float r42391 = r42389 + r42390;
        float r42392 = r42391 * r42367;
        float r42393 = 47.066876606;
        float r42394 = r42392 + r42393;
        float r42395 = r42383 / r42394;
        return r42395;
}

double f_id(double x, double y, double z) {
        double r42396 = x;
        double r42397 = 2.0;
        double r42398 = r42396 - r42397;
        double r42399 = 4.16438922228;
        double r42400 = r42396 * r42399;
        double r42401 = 78.6994924154;
        double r42402 = r42400 + r42401;
        double r42403 = r42402 * r42396;
        double r42404 = 137.519416416;
        double r42405 = r42403 + r42404;
        double r42406 = r42405 * r42396;
        double r42407 = y;
        double r42408 = r42406 + r42407;
        double r42409 = r42408 * r42396;
        double r42410 = z;
        double r42411 = r42409 + r42410;
        double r42412 = r42398 * r42411;
        double r42413 = 43.3400022514;
        double r42414 = r42396 + r42413;
        double r42415 = r42414 * r42396;
        double r42416 = 263.505074721;
        double r42417 = r42415 + r42416;
        double r42418 = r42417 * r42396;
        double r42419 = 313.399215894;
        double r42420 = r42418 + r42419;
        double r42421 = r42420 * r42396;
        double r42422 = 47.066876606;
        double r42423 = r42421 + r42422;
        double r42424 = r42412 / r42423;
        return r42424;
}


double f_of(float x, float y, float z) {
        float r42425 = x;
        float r42426 = -2.7093826433504146e+43;
        bool r42427 = r42425 <= r42426;
        float r42428 = y;
        float r42429 = 2;
        float r42430 = pow(r42425, r42429);
        float r42431 = r42428 / r42430;
        float r42432 = 4.16438922228;
        float r42433 = r42432 * r42425;
        float r42434 = r42431 + r42433;
        float r42435 = 110.1139242984811;
        float r42436 = r42434 - r42435;
        float r42437 = 4.256900496243778e+44;
        bool r42438 = r42425 <= r42437;
        float r42439 = 2.0;
        float r42440 = r42425 - r42439;
        float r42441 = 1;
        float r42442 = r42440 / r42441;
        float r42443 = r42425 * r42432;
        float r42444 = 78.6994924154;
        float r42445 = r42443 + r42444;
        float r42446 = r42445 * r42425;
        float r42447 = 137.519416416;
        float r42448 = r42446 + r42447;
        float r42449 = r42448 * r42425;
        float r42450 = r42449 + r42428;
        float r42451 = r42450 * r42425;
        float r42452 = z;
        float r42453 = r42451 + r42452;
        float r42454 = 43.3400022514;
        float r42455 = r42425 + r42454;
        float r42456 = r42455 * r42425;
        float r42457 = 263.505074721;
        float r42458 = r42456 + r42457;
        float r42459 = r42458 * r42425;
        float r42460 = 313.399215894;
        float r42461 = r42459 + r42460;
        float r42462 = r42461 * r42425;
        float r42463 = 47.066876606;
        float r42464 = r42462 + r42463;
        float r42465 = r42453 / r42464;
        float r42466 = r42442 * r42465;
        float r42467 = r42438 ? r42466 : r42436;
        float r42468 = r42427 ? r42436 : r42467;
        return r42468;
}

double f_od(double x, double y, double z) {
        double r42469 = x;
        double r42470 = -2.7093826433504146e+43;
        bool r42471 = r42469 <= r42470;
        double r42472 = y;
        double r42473 = 2;
        double r42474 = pow(r42469, r42473);
        double r42475 = r42472 / r42474;
        double r42476 = 4.16438922228;
        double r42477 = r42476 * r42469;
        double r42478 = r42475 + r42477;
        double r42479 = 110.1139242984811;
        double r42480 = r42478 - r42479;
        double r42481 = 4.256900496243778e+44;
        bool r42482 = r42469 <= r42481;
        double r42483 = 2.0;
        double r42484 = r42469 - r42483;
        double r42485 = 1;
        double r42486 = r42484 / r42485;
        double r42487 = r42469 * r42476;
        double r42488 = 78.6994924154;
        double r42489 = r42487 + r42488;
        double r42490 = r42489 * r42469;
        double r42491 = 137.519416416;
        double r42492 = r42490 + r42491;
        double r42493 = r42492 * r42469;
        double r42494 = r42493 + r42472;
        double r42495 = r42494 * r42469;
        double r42496 = z;
        double r42497 = r42495 + r42496;
        double r42498 = 43.3400022514;
        double r42499 = r42469 + r42498;
        double r42500 = r42499 * r42469;
        double r42501 = 263.505074721;
        double r42502 = r42500 + r42501;
        double r42503 = r42502 * r42469;
        double r42504 = 313.399215894;
        double r42505 = r42503 + r42504;
        double r42506 = r42505 * r42469;
        double r42507 = 47.066876606;
        double r42508 = r42506 + r42507;
        double r42509 = r42497 / r42508;
        double r42510 = r42486 * r42509;
        double r42511 = r42482 ? r42510 : r42480;
        double r42512 = r42471 ? r42480 : r42511;
        return r42512;
}

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 r42513, r42514, r42515, r42516, r42517, r42518, r42519, r42520, r42521, r42522, r42523, r42524, r42525, r42526, r42527, r42528, r42529, r42530, r42531, r42532, r42533, r42534, r42535, r42536, r42537, r42538, r42539, r42540, r42541;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42513);
        mpfr_init_set_str(r42514, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42515);
        mpfr_init_set_str(r42516, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42517);
        mpfr_init_set_str(r42518, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42519);
        mpfr_init(r42520);
        mpfr_init_set_str(r42521, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42522);
        mpfr_init(r42523);
        mpfr_init(r42524);
        mpfr_init(r42525);
        mpfr_init(r42526);
        mpfr_init(r42527);
        mpfr_init(r42528);
        mpfr_init(r42529);
        mpfr_init_set_str(r42530, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42531);
        mpfr_init(r42532);
        mpfr_init_set_str(r42533, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42534);
        mpfr_init(r42535);
        mpfr_init_set_str(r42536, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42537);
        mpfr_init(r42538);
        mpfr_init_set_str(r42539, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42540);
        mpfr_init(r42541);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r42513, x, MPFR_RNDN);
        ;
        mpfr_sub(r42515, r42513, r42514, MPFR_RNDN);
        ;
        mpfr_mul(r42517, r42513, r42516, MPFR_RNDN);
        ;
        mpfr_add(r42519, r42517, r42518, MPFR_RNDN);
        mpfr_mul(r42520, r42519, r42513, MPFR_RNDN);
        ;
        mpfr_add(r42522, r42520, r42521, MPFR_RNDN);
        mpfr_mul(r42523, r42522, r42513, MPFR_RNDN);
        mpfr_set_d(r42524, y, MPFR_RNDN);
        mpfr_add(r42525, r42523, r42524, MPFR_RNDN);
        mpfr_mul(r42526, r42525, r42513, MPFR_RNDN);
        mpfr_set_d(r42527, z, MPFR_RNDN);
        mpfr_add(r42528, r42526, r42527, MPFR_RNDN);
        mpfr_mul(r42529, r42515, r42528, MPFR_RNDN);
        ;
        mpfr_add(r42531, r42513, r42530, MPFR_RNDN);
        mpfr_mul(r42532, r42531, r42513, MPFR_RNDN);
        ;
        mpfr_add(r42534, r42532, r42533, MPFR_RNDN);
        mpfr_mul(r42535, r42534, r42513, MPFR_RNDN);
        ;
        mpfr_add(r42537, r42535, r42536, MPFR_RNDN);
        mpfr_mul(r42538, r42537, r42513, MPFR_RNDN);
        ;
        mpfr_add(r42540, r42538, r42539, MPFR_RNDN);
        mpfr_div(r42541, r42529, r42540, MPFR_RNDN);
        return mpfr_get_d(r42541, MPFR_RNDN);
}

static mpfr_t r42542, r42543, r42544, r42545, r42546, r42547, r42548, r42549, r42550, r42551, r42552, r42553, r42554, r42555, r42556, r42557, r42558, r42559, r42560, r42561, r42562, r42563, r42564, r42565, r42566, r42567, r42568, r42569, r42570, r42571, r42572, r42573, r42574, r42575, r42576, r42577, r42578, r42579, r42580, r42581, r42582, r42583, r42584, r42585;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42542);
        mpfr_init_set_str(r42543, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42544);
        mpfr_init(r42545);
        mpfr_init_set_str(r42546, "2", 10, MPFR_RNDN);
        mpfr_init(r42547);
        mpfr_init(r42548);
        mpfr_init_set_str(r42549, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42550);
        mpfr_init(r42551);
        mpfr_init_set_str(r42552, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42553);
        mpfr_init_set_str(r42554, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42555);
        mpfr_init_set_str(r42556, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42557);
        mpfr_init_set_str(r42558, "1", 10, MPFR_RNDN);
        mpfr_init(r42559);
        mpfr_init(r42560);
        mpfr_init_set_str(r42561, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42562);
        mpfr_init(r42563);
        mpfr_init_set_str(r42564, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42565);
        mpfr_init(r42566);
        mpfr_init(r42567);
        mpfr_init(r42568);
        mpfr_init(r42569);
        mpfr_init(r42570);
        mpfr_init_set_str(r42571, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42572);
        mpfr_init(r42573);
        mpfr_init_set_str(r42574, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42575);
        mpfr_init(r42576);
        mpfr_init_set_str(r42577, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42578);
        mpfr_init(r42579);
        mpfr_init_set_str(r42580, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42581);
        mpfr_init(r42582);
        mpfr_init(r42583);
        mpfr_init(r42584);
        mpfr_init(r42585);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r42542, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42544, mpfr_cmp(r42542, r42543) <= 0, MPFR_RNDN);
        mpfr_set_d(r42545, y, MPFR_RNDN);
        ;
        mpfr_pow(r42547, r42542, r42546, MPFR_RNDN);
        mpfr_div(r42548, r42545, r42547, MPFR_RNDN);
        ;
        mpfr_mul(r42550, r42549, r42542, MPFR_RNDN);
        mpfr_add(r42551, r42548, r42550, MPFR_RNDN);
        ;
        mpfr_sub(r42553, r42551, r42552, MPFR_RNDN);
        ;
        mpfr_set_si(r42555, mpfr_cmp(r42542, r42554) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42557, r42542, r42556, MPFR_RNDN);
        ;
        mpfr_div(r42559, r42557, r42558, MPFR_RNDN);
        mpfr_mul(r42560, r42542, r42549, MPFR_RNDN);
        ;
        mpfr_add(r42562, r42560, r42561, MPFR_RNDN);
        mpfr_mul(r42563, r42562, r42542, MPFR_RNDN);
        ;
        mpfr_add(r42565, r42563, r42564, MPFR_RNDN);
        mpfr_mul(r42566, r42565, r42542, MPFR_RNDN);
        mpfr_add(r42567, r42566, r42545, MPFR_RNDN);
        mpfr_mul(r42568, r42567, r42542, MPFR_RNDN);
        mpfr_set_d(r42569, z, MPFR_RNDN);
        mpfr_add(r42570, r42568, r42569, MPFR_RNDN);
        ;
        mpfr_add(r42572, r42542, r42571, MPFR_RNDN);
        mpfr_mul(r42573, r42572, r42542, MPFR_RNDN);
        ;
        mpfr_add(r42575, r42573, r42574, MPFR_RNDN);
        mpfr_mul(r42576, r42575, r42542, MPFR_RNDN);
        ;
        mpfr_add(r42578, r42576, r42577, MPFR_RNDN);
        mpfr_mul(r42579, r42578, r42542, MPFR_RNDN);
        ;
        mpfr_add(r42581, r42579, r42580, MPFR_RNDN);
        mpfr_div(r42582, r42570, r42581, MPFR_RNDN);
        mpfr_mul(r42583, r42559, r42582, MPFR_RNDN);
        if (mpfr_get_si(r42555, MPFR_RNDN)) { mpfr_set(r42584, r42583, MPFR_RNDN); } else { mpfr_set(r42584, r42553, MPFR_RNDN); };
        if (mpfr_get_si(r42544, MPFR_RNDN)) { mpfr_set(r42585, r42553, MPFR_RNDN); } else { mpfr_set(r42585, r42584, MPFR_RNDN); };
        return mpfr_get_d(r42585, MPFR_RNDN);
}

static mpfr_t r42586, r42587, r42588, r42589, r42590, r42591, r42592, r42593, r42594, r42595, r42596, r42597, r42598, r42599, r42600, r42601, r42602, r42603, r42604, r42605, r42606, r42607, r42608, r42609, r42610, r42611, r42612, r42613, r42614, r42615, r42616, r42617, r42618, r42619, r42620, r42621, r42622, r42623, r42624, r42625, r42626, r42627, r42628, r42629;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42586);
        mpfr_init_set_str(r42587, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42588);
        mpfr_init(r42589);
        mpfr_init_set_str(r42590, "2", 10, MPFR_RNDN);
        mpfr_init(r42591);
        mpfr_init(r42592);
        mpfr_init_set_str(r42593, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42594);
        mpfr_init(r42595);
        mpfr_init_set_str(r42596, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42597);
        mpfr_init_set_str(r42598, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42599);
        mpfr_init_set_str(r42600, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42601);
        mpfr_init_set_str(r42602, "1", 10, MPFR_RNDN);
        mpfr_init(r42603);
        mpfr_init(r42604);
        mpfr_init_set_str(r42605, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42606);
        mpfr_init(r42607);
        mpfr_init_set_str(r42608, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42609);
        mpfr_init(r42610);
        mpfr_init(r42611);
        mpfr_init(r42612);
        mpfr_init(r42613);
        mpfr_init(r42614);
        mpfr_init_set_str(r42615, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42616);
        mpfr_init(r42617);
        mpfr_init_set_str(r42618, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42619);
        mpfr_init(r42620);
        mpfr_init_set_str(r42621, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42622);
        mpfr_init(r42623);
        mpfr_init_set_str(r42624, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42625);
        mpfr_init(r42626);
        mpfr_init(r42627);
        mpfr_init(r42628);
        mpfr_init(r42629);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r42586, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42588, mpfr_cmp(r42586, r42587) <= 0, MPFR_RNDN);
        mpfr_set_d(r42589, y, MPFR_RNDN);
        ;
        mpfr_pow(r42591, r42586, r42590, MPFR_RNDN);
        mpfr_div(r42592, r42589, r42591, MPFR_RNDN);
        ;
        mpfr_mul(r42594, r42593, r42586, MPFR_RNDN);
        mpfr_add(r42595, r42592, r42594, MPFR_RNDN);
        ;
        mpfr_sub(r42597, r42595, r42596, MPFR_RNDN);
        ;
        mpfr_set_si(r42599, mpfr_cmp(r42586, r42598) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42601, r42586, r42600, MPFR_RNDN);
        ;
        mpfr_div(r42603, r42601, r42602, MPFR_RNDN);
        mpfr_mul(r42604, r42586, r42593, MPFR_RNDN);
        ;
        mpfr_add(r42606, r42604, r42605, MPFR_RNDN);
        mpfr_mul(r42607, r42606, r42586, MPFR_RNDN);
        ;
        mpfr_add(r42609, r42607, r42608, MPFR_RNDN);
        mpfr_mul(r42610, r42609, r42586, MPFR_RNDN);
        mpfr_add(r42611, r42610, r42589, MPFR_RNDN);
        mpfr_mul(r42612, r42611, r42586, MPFR_RNDN);
        mpfr_set_d(r42613, z, MPFR_RNDN);
        mpfr_add(r42614, r42612, r42613, MPFR_RNDN);
        ;
        mpfr_add(r42616, r42586, r42615, MPFR_RNDN);
        mpfr_mul(r42617, r42616, r42586, MPFR_RNDN);
        ;
        mpfr_add(r42619, r42617, r42618, MPFR_RNDN);
        mpfr_mul(r42620, r42619, r42586, MPFR_RNDN);
        ;
        mpfr_add(r42622, r42620, r42621, MPFR_RNDN);
        mpfr_mul(r42623, r42622, r42586, MPFR_RNDN);
        ;
        mpfr_add(r42625, r42623, r42624, MPFR_RNDN);
        mpfr_div(r42626, r42614, r42625, MPFR_RNDN);
        mpfr_mul(r42627, r42603, r42626, MPFR_RNDN);
        if (mpfr_get_si(r42599, MPFR_RNDN)) { mpfr_set(r42628, r42627, MPFR_RNDN); } else { mpfr_set(r42628, r42597, MPFR_RNDN); };
        if (mpfr_get_si(r42588, MPFR_RNDN)) { mpfr_set(r42629, r42597, MPFR_RNDN); } else { mpfr_set(r42629, r42628, MPFR_RNDN); };
        return mpfr_get_d(r42629, MPFR_RNDN);
}

