#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 r42480 = x;
        float r42481 = 2.0;
        float r42482 = r42480 - r42481;
        float r42483 = 4.16438922228;
        float r42484 = r42480 * r42483;
        float r42485 = 78.6994924154;
        float r42486 = r42484 + r42485;
        float r42487 = r42486 * r42480;
        float r42488 = 137.519416416;
        float r42489 = r42487 + r42488;
        float r42490 = r42489 * r42480;
        float r42491 = y;
        float r42492 = r42490 + r42491;
        float r42493 = r42492 * r42480;
        float r42494 = z;
        float r42495 = r42493 + r42494;
        float r42496 = r42482 * r42495;
        float r42497 = 43.3400022514;
        float r42498 = r42480 + r42497;
        float r42499 = r42498 * r42480;
        float r42500 = 263.505074721;
        float r42501 = r42499 + r42500;
        float r42502 = r42501 * r42480;
        float r42503 = 313.399215894;
        float r42504 = r42502 + r42503;
        float r42505 = r42504 * r42480;
        float r42506 = 47.066876606;
        float r42507 = r42505 + r42506;
        float r42508 = r42496 / r42507;
        return r42508;
}

double f_id(double x, double y, double z) {
        double r42509 = x;
        double r42510 = 2.0;
        double r42511 = r42509 - r42510;
        double r42512 = 4.16438922228;
        double r42513 = r42509 * r42512;
        double r42514 = 78.6994924154;
        double r42515 = r42513 + r42514;
        double r42516 = r42515 * r42509;
        double r42517 = 137.519416416;
        double r42518 = r42516 + r42517;
        double r42519 = r42518 * r42509;
        double r42520 = y;
        double r42521 = r42519 + r42520;
        double r42522 = r42521 * r42509;
        double r42523 = z;
        double r42524 = r42522 + r42523;
        double r42525 = r42511 * r42524;
        double r42526 = 43.3400022514;
        double r42527 = r42509 + r42526;
        double r42528 = r42527 * r42509;
        double r42529 = 263.505074721;
        double r42530 = r42528 + r42529;
        double r42531 = r42530 * r42509;
        double r42532 = 313.399215894;
        double r42533 = r42531 + r42532;
        double r42534 = r42533 * r42509;
        double r42535 = 47.066876606;
        double r42536 = r42534 + r42535;
        double r42537 = r42525 / r42536;
        return r42537;
}


double f_of(float x, float y, float z) {
        float r42538 = x;
        float r42539 = -2.7093826433504146e+43;
        bool r42540 = r42538 <= r42539;
        float r42541 = y;
        float r42542 = 2;
        float r42543 = pow(r42538, r42542);
        float r42544 = r42541 / r42543;
        float r42545 = 4.16438922228;
        float r42546 = r42545 * r42538;
        float r42547 = r42544 + r42546;
        float r42548 = 110.1139242984811;
        float r42549 = r42547 - r42548;
        float r42550 = 4.256900496243778e+44;
        bool r42551 = r42538 <= r42550;
        float r42552 = 2.0;
        float r42553 = r42538 - r42552;
        float r42554 = 1;
        float r42555 = r42553 / r42554;
        float r42556 = r42538 * r42545;
        float r42557 = 78.6994924154;
        float r42558 = r42556 + r42557;
        float r42559 = r42558 * r42538;
        float r42560 = 137.519416416;
        float r42561 = r42559 + r42560;
        float r42562 = r42561 * r42538;
        float r42563 = r42562 + r42541;
        float r42564 = r42563 * r42538;
        float r42565 = z;
        float r42566 = r42564 + r42565;
        float r42567 = 43.3400022514;
        float r42568 = r42538 + r42567;
        float r42569 = r42568 * r42538;
        float r42570 = 263.505074721;
        float r42571 = r42569 + r42570;
        float r42572 = r42571 * r42538;
        float r42573 = 313.399215894;
        float r42574 = r42572 + r42573;
        float r42575 = r42574 * r42538;
        float r42576 = 47.066876606;
        float r42577 = r42575 + r42576;
        float r42578 = r42566 / r42577;
        float r42579 = r42555 * r42578;
        float r42580 = r42551 ? r42579 : r42549;
        float r42581 = r42540 ? r42549 : r42580;
        return r42581;
}

double f_od(double x, double y, double z) {
        double r42582 = x;
        double r42583 = -2.7093826433504146e+43;
        bool r42584 = r42582 <= r42583;
        double r42585 = y;
        double r42586 = 2;
        double r42587 = pow(r42582, r42586);
        double r42588 = r42585 / r42587;
        double r42589 = 4.16438922228;
        double r42590 = r42589 * r42582;
        double r42591 = r42588 + r42590;
        double r42592 = 110.1139242984811;
        double r42593 = r42591 - r42592;
        double r42594 = 4.256900496243778e+44;
        bool r42595 = r42582 <= r42594;
        double r42596 = 2.0;
        double r42597 = r42582 - r42596;
        double r42598 = 1;
        double r42599 = r42597 / r42598;
        double r42600 = r42582 * r42589;
        double r42601 = 78.6994924154;
        double r42602 = r42600 + r42601;
        double r42603 = r42602 * r42582;
        double r42604 = 137.519416416;
        double r42605 = r42603 + r42604;
        double r42606 = r42605 * r42582;
        double r42607 = r42606 + r42585;
        double r42608 = r42607 * r42582;
        double r42609 = z;
        double r42610 = r42608 + r42609;
        double r42611 = 43.3400022514;
        double r42612 = r42582 + r42611;
        double r42613 = r42612 * r42582;
        double r42614 = 263.505074721;
        double r42615 = r42613 + r42614;
        double r42616 = r42615 * r42582;
        double r42617 = 313.399215894;
        double r42618 = r42616 + r42617;
        double r42619 = r42618 * r42582;
        double r42620 = 47.066876606;
        double r42621 = r42619 + r42620;
        double r42622 = r42610 / r42621;
        double r42623 = r42599 * r42622;
        double r42624 = r42595 ? r42623 : r42593;
        double r42625 = r42584 ? r42593 : r42624;
        return r42625;
}

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 r42626, r42627, r42628, r42629, r42630, r42631, r42632, r42633, r42634, r42635, r42636, r42637, r42638, r42639, r42640, r42641, r42642, r42643, r42644, r42645, r42646, r42647, r42648, r42649, r42650, r42651, r42652, r42653, r42654;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42626);
        mpfr_init_set_str(r42627, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42628);
        mpfr_init_set_str(r42629, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42630);
        mpfr_init_set_str(r42631, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42632);
        mpfr_init(r42633);
        mpfr_init_set_str(r42634, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42635);
        mpfr_init(r42636);
        mpfr_init(r42637);
        mpfr_init(r42638);
        mpfr_init(r42639);
        mpfr_init(r42640);
        mpfr_init(r42641);
        mpfr_init(r42642);
        mpfr_init_set_str(r42643, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42644);
        mpfr_init(r42645);
        mpfr_init_set_str(r42646, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42647);
        mpfr_init(r42648);
        mpfr_init_set_str(r42649, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42650);
        mpfr_init(r42651);
        mpfr_init_set_str(r42652, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42653);
        mpfr_init(r42654);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r42626, x, MPFR_RNDN);
        ;
        mpfr_sub(r42628, r42626, r42627, MPFR_RNDN);
        ;
        mpfr_mul(r42630, r42626, r42629, MPFR_RNDN);
        ;
        mpfr_add(r42632, r42630, r42631, MPFR_RNDN);
        mpfr_mul(r42633, r42632, r42626, MPFR_RNDN);
        ;
        mpfr_add(r42635, r42633, r42634, MPFR_RNDN);
        mpfr_mul(r42636, r42635, r42626, MPFR_RNDN);
        mpfr_set_d(r42637, y, MPFR_RNDN);
        mpfr_add(r42638, r42636, r42637, MPFR_RNDN);
        mpfr_mul(r42639, r42638, r42626, MPFR_RNDN);
        mpfr_set_d(r42640, z, MPFR_RNDN);
        mpfr_add(r42641, r42639, r42640, MPFR_RNDN);
        mpfr_mul(r42642, r42628, r42641, MPFR_RNDN);
        ;
        mpfr_add(r42644, r42626, r42643, MPFR_RNDN);
        mpfr_mul(r42645, r42644, r42626, MPFR_RNDN);
        ;
        mpfr_add(r42647, r42645, r42646, MPFR_RNDN);
        mpfr_mul(r42648, r42647, r42626, MPFR_RNDN);
        ;
        mpfr_add(r42650, r42648, r42649, MPFR_RNDN);
        mpfr_mul(r42651, r42650, r42626, MPFR_RNDN);
        ;
        mpfr_add(r42653, r42651, r42652, MPFR_RNDN);
        mpfr_div(r42654, r42642, r42653, MPFR_RNDN);
        return mpfr_get_d(r42654, MPFR_RNDN);
}

static mpfr_t r42655, r42656, r42657, r42658, r42659, r42660, r42661, r42662, r42663, r42664, r42665, r42666, r42667, r42668, r42669, r42670, r42671, r42672, r42673, r42674, r42675, r42676, r42677, r42678, r42679, r42680, r42681, r42682, r42683, r42684, r42685, r42686, r42687, r42688, r42689, r42690, r42691, r42692, r42693, r42694, r42695, r42696, r42697, r42698;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42655);
        mpfr_init_set_str(r42656, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42657);
        mpfr_init(r42658);
        mpfr_init_set_str(r42659, "2", 10, MPFR_RNDN);
        mpfr_init(r42660);
        mpfr_init(r42661);
        mpfr_init_set_str(r42662, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42663);
        mpfr_init(r42664);
        mpfr_init_set_str(r42665, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42666);
        mpfr_init_set_str(r42667, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42668);
        mpfr_init_set_str(r42669, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42670);
        mpfr_init_set_str(r42671, "1", 10, MPFR_RNDN);
        mpfr_init(r42672);
        mpfr_init(r42673);
        mpfr_init_set_str(r42674, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42675);
        mpfr_init(r42676);
        mpfr_init_set_str(r42677, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42678);
        mpfr_init(r42679);
        mpfr_init(r42680);
        mpfr_init(r42681);
        mpfr_init(r42682);
        mpfr_init(r42683);
        mpfr_init_set_str(r42684, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42685);
        mpfr_init(r42686);
        mpfr_init_set_str(r42687, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42688);
        mpfr_init(r42689);
        mpfr_init_set_str(r42690, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42691);
        mpfr_init(r42692);
        mpfr_init_set_str(r42693, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42694);
        mpfr_init(r42695);
        mpfr_init(r42696);
        mpfr_init(r42697);
        mpfr_init(r42698);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r42655, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42657, mpfr_cmp(r42655, r42656) <= 0, MPFR_RNDN);
        mpfr_set_d(r42658, y, MPFR_RNDN);
        ;
        mpfr_pow(r42660, r42655, r42659, MPFR_RNDN);
        mpfr_div(r42661, r42658, r42660, MPFR_RNDN);
        ;
        mpfr_mul(r42663, r42662, r42655, MPFR_RNDN);
        mpfr_add(r42664, r42661, r42663, MPFR_RNDN);
        ;
        mpfr_sub(r42666, r42664, r42665, MPFR_RNDN);
        ;
        mpfr_set_si(r42668, mpfr_cmp(r42655, r42667) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42670, r42655, r42669, MPFR_RNDN);
        ;
        mpfr_div(r42672, r42670, r42671, MPFR_RNDN);
        mpfr_mul(r42673, r42655, r42662, MPFR_RNDN);
        ;
        mpfr_add(r42675, r42673, r42674, MPFR_RNDN);
        mpfr_mul(r42676, r42675, r42655, MPFR_RNDN);
        ;
        mpfr_add(r42678, r42676, r42677, MPFR_RNDN);
        mpfr_mul(r42679, r42678, r42655, MPFR_RNDN);
        mpfr_add(r42680, r42679, r42658, MPFR_RNDN);
        mpfr_mul(r42681, r42680, r42655, MPFR_RNDN);
        mpfr_set_d(r42682, z, MPFR_RNDN);
        mpfr_add(r42683, r42681, r42682, MPFR_RNDN);
        ;
        mpfr_add(r42685, r42655, r42684, MPFR_RNDN);
        mpfr_mul(r42686, r42685, r42655, MPFR_RNDN);
        ;
        mpfr_add(r42688, r42686, r42687, MPFR_RNDN);
        mpfr_mul(r42689, r42688, r42655, MPFR_RNDN);
        ;
        mpfr_add(r42691, r42689, r42690, MPFR_RNDN);
        mpfr_mul(r42692, r42691, r42655, MPFR_RNDN);
        ;
        mpfr_add(r42694, r42692, r42693, MPFR_RNDN);
        mpfr_div(r42695, r42683, r42694, MPFR_RNDN);
        mpfr_mul(r42696, r42672, r42695, MPFR_RNDN);
        if (mpfr_get_si(r42668, MPFR_RNDN)) { mpfr_set(r42697, r42696, MPFR_RNDN); } else { mpfr_set(r42697, r42666, MPFR_RNDN); };
        if (mpfr_get_si(r42657, MPFR_RNDN)) { mpfr_set(r42698, r42666, MPFR_RNDN); } else { mpfr_set(r42698, r42697, MPFR_RNDN); };
        return mpfr_get_d(r42698, MPFR_RNDN);
}

static mpfr_t r42699, r42700, r42701, r42702, r42703, r42704, r42705, r42706, r42707, r42708, r42709, r42710, r42711, r42712, r42713, r42714, r42715, r42716, r42717, r42718, r42719, r42720, r42721, r42722, r42723, r42724, r42725, r42726, r42727, r42728, r42729, r42730, r42731, r42732, r42733, r42734, r42735, r42736, r42737, r42738, r42739, r42740, r42741, r42742;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42699);
        mpfr_init_set_str(r42700, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42701);
        mpfr_init(r42702);
        mpfr_init_set_str(r42703, "2", 10, MPFR_RNDN);
        mpfr_init(r42704);
        mpfr_init(r42705);
        mpfr_init_set_str(r42706, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42707);
        mpfr_init(r42708);
        mpfr_init_set_str(r42709, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42710);
        mpfr_init_set_str(r42711, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42712);
        mpfr_init_set_str(r42713, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42714);
        mpfr_init_set_str(r42715, "1", 10, MPFR_RNDN);
        mpfr_init(r42716);
        mpfr_init(r42717);
        mpfr_init_set_str(r42718, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42719);
        mpfr_init(r42720);
        mpfr_init_set_str(r42721, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42722);
        mpfr_init(r42723);
        mpfr_init(r42724);
        mpfr_init(r42725);
        mpfr_init(r42726);
        mpfr_init(r42727);
        mpfr_init_set_str(r42728, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42729);
        mpfr_init(r42730);
        mpfr_init_set_str(r42731, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42732);
        mpfr_init(r42733);
        mpfr_init_set_str(r42734, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42735);
        mpfr_init(r42736);
        mpfr_init_set_str(r42737, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42738);
        mpfr_init(r42739);
        mpfr_init(r42740);
        mpfr_init(r42741);
        mpfr_init(r42742);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r42699, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42701, mpfr_cmp(r42699, r42700) <= 0, MPFR_RNDN);
        mpfr_set_d(r42702, y, MPFR_RNDN);
        ;
        mpfr_pow(r42704, r42699, r42703, MPFR_RNDN);
        mpfr_div(r42705, r42702, r42704, MPFR_RNDN);
        ;
        mpfr_mul(r42707, r42706, r42699, MPFR_RNDN);
        mpfr_add(r42708, r42705, r42707, MPFR_RNDN);
        ;
        mpfr_sub(r42710, r42708, r42709, MPFR_RNDN);
        ;
        mpfr_set_si(r42712, mpfr_cmp(r42699, r42711) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42714, r42699, r42713, MPFR_RNDN);
        ;
        mpfr_div(r42716, r42714, r42715, MPFR_RNDN);
        mpfr_mul(r42717, r42699, r42706, MPFR_RNDN);
        ;
        mpfr_add(r42719, r42717, r42718, MPFR_RNDN);
        mpfr_mul(r42720, r42719, r42699, MPFR_RNDN);
        ;
        mpfr_add(r42722, r42720, r42721, MPFR_RNDN);
        mpfr_mul(r42723, r42722, r42699, MPFR_RNDN);
        mpfr_add(r42724, r42723, r42702, MPFR_RNDN);
        mpfr_mul(r42725, r42724, r42699, MPFR_RNDN);
        mpfr_set_d(r42726, z, MPFR_RNDN);
        mpfr_add(r42727, r42725, r42726, MPFR_RNDN);
        ;
        mpfr_add(r42729, r42699, r42728, MPFR_RNDN);
        mpfr_mul(r42730, r42729, r42699, MPFR_RNDN);
        ;
        mpfr_add(r42732, r42730, r42731, MPFR_RNDN);
        mpfr_mul(r42733, r42732, r42699, MPFR_RNDN);
        ;
        mpfr_add(r42735, r42733, r42734, MPFR_RNDN);
        mpfr_mul(r42736, r42735, r42699, MPFR_RNDN);
        ;
        mpfr_add(r42738, r42736, r42737, MPFR_RNDN);
        mpfr_div(r42739, r42727, r42738, MPFR_RNDN);
        mpfr_mul(r42740, r42716, r42739, MPFR_RNDN);
        if (mpfr_get_si(r42712, MPFR_RNDN)) { mpfr_set(r42741, r42740, MPFR_RNDN); } else { mpfr_set(r42741, r42710, MPFR_RNDN); };
        if (mpfr_get_si(r42701, MPFR_RNDN)) { mpfr_set(r42742, r42710, MPFR_RNDN); } else { mpfr_set(r42742, r42741, MPFR_RNDN); };
        return mpfr_get_d(r42742, MPFR_RNDN);
}

