#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 r42026 = x;
        float r42027 = 2.0;
        float r42028 = r42026 - r42027;
        float r42029 = 4.16438922228;
        float r42030 = r42026 * r42029;
        float r42031 = 78.6994924154;
        float r42032 = r42030 + r42031;
        float r42033 = r42032 * r42026;
        float r42034 = 137.519416416;
        float r42035 = r42033 + r42034;
        float r42036 = r42035 * r42026;
        float r42037 = y;
        float r42038 = r42036 + r42037;
        float r42039 = r42038 * r42026;
        float r42040 = z;
        float r42041 = r42039 + r42040;
        float r42042 = r42028 * r42041;
        float r42043 = 43.3400022514;
        float r42044 = r42026 + r42043;
        float r42045 = r42044 * r42026;
        float r42046 = 263.505074721;
        float r42047 = r42045 + r42046;
        float r42048 = r42047 * r42026;
        float r42049 = 313.399215894;
        float r42050 = r42048 + r42049;
        float r42051 = r42050 * r42026;
        float r42052 = 47.066876606;
        float r42053 = r42051 + r42052;
        float r42054 = r42042 / r42053;
        return r42054;
}

double f_id(double x, double y, double z) {
        double r42055 = x;
        double r42056 = 2.0;
        double r42057 = r42055 - r42056;
        double r42058 = 4.16438922228;
        double r42059 = r42055 * r42058;
        double r42060 = 78.6994924154;
        double r42061 = r42059 + r42060;
        double r42062 = r42061 * r42055;
        double r42063 = 137.519416416;
        double r42064 = r42062 + r42063;
        double r42065 = r42064 * r42055;
        double r42066 = y;
        double r42067 = r42065 + r42066;
        double r42068 = r42067 * r42055;
        double r42069 = z;
        double r42070 = r42068 + r42069;
        double r42071 = r42057 * r42070;
        double r42072 = 43.3400022514;
        double r42073 = r42055 + r42072;
        double r42074 = r42073 * r42055;
        double r42075 = 263.505074721;
        double r42076 = r42074 + r42075;
        double r42077 = r42076 * r42055;
        double r42078 = 313.399215894;
        double r42079 = r42077 + r42078;
        double r42080 = r42079 * r42055;
        double r42081 = 47.066876606;
        double r42082 = r42080 + r42081;
        double r42083 = r42071 / r42082;
        return r42083;
}


double f_of(float x, float y, float z) {
        float r42084 = x;
        float r42085 = -2.7093826433504146e+43;
        bool r42086 = r42084 <= r42085;
        float r42087 = y;
        float r42088 = 2;
        float r42089 = pow(r42084, r42088);
        float r42090 = r42087 / r42089;
        float r42091 = 4.16438922228;
        float r42092 = r42091 * r42084;
        float r42093 = r42090 + r42092;
        float r42094 = 110.1139242984811;
        float r42095 = r42093 - r42094;
        float r42096 = 4.256900496243778e+44;
        bool r42097 = r42084 <= r42096;
        float r42098 = 2.0;
        float r42099 = r42084 - r42098;
        float r42100 = 1;
        float r42101 = r42099 / r42100;
        float r42102 = r42084 * r42091;
        float r42103 = 78.6994924154;
        float r42104 = r42102 + r42103;
        float r42105 = r42104 * r42084;
        float r42106 = 137.519416416;
        float r42107 = r42105 + r42106;
        float r42108 = r42107 * r42084;
        float r42109 = r42108 + r42087;
        float r42110 = r42109 * r42084;
        float r42111 = z;
        float r42112 = r42110 + r42111;
        float r42113 = 43.3400022514;
        float r42114 = r42084 + r42113;
        float r42115 = r42114 * r42084;
        float r42116 = 263.505074721;
        float r42117 = r42115 + r42116;
        float r42118 = r42117 * r42084;
        float r42119 = 313.399215894;
        float r42120 = r42118 + r42119;
        float r42121 = r42120 * r42084;
        float r42122 = 47.066876606;
        float r42123 = r42121 + r42122;
        float r42124 = r42112 / r42123;
        float r42125 = r42101 * r42124;
        float r42126 = r42097 ? r42125 : r42095;
        float r42127 = r42086 ? r42095 : r42126;
        return r42127;
}

double f_od(double x, double y, double z) {
        double r42128 = x;
        double r42129 = -2.7093826433504146e+43;
        bool r42130 = r42128 <= r42129;
        double r42131 = y;
        double r42132 = 2;
        double r42133 = pow(r42128, r42132);
        double r42134 = r42131 / r42133;
        double r42135 = 4.16438922228;
        double r42136 = r42135 * r42128;
        double r42137 = r42134 + r42136;
        double r42138 = 110.1139242984811;
        double r42139 = r42137 - r42138;
        double r42140 = 4.256900496243778e+44;
        bool r42141 = r42128 <= r42140;
        double r42142 = 2.0;
        double r42143 = r42128 - r42142;
        double r42144 = 1;
        double r42145 = r42143 / r42144;
        double r42146 = r42128 * r42135;
        double r42147 = 78.6994924154;
        double r42148 = r42146 + r42147;
        double r42149 = r42148 * r42128;
        double r42150 = 137.519416416;
        double r42151 = r42149 + r42150;
        double r42152 = r42151 * r42128;
        double r42153 = r42152 + r42131;
        double r42154 = r42153 * r42128;
        double r42155 = z;
        double r42156 = r42154 + r42155;
        double r42157 = 43.3400022514;
        double r42158 = r42128 + r42157;
        double r42159 = r42158 * r42128;
        double r42160 = 263.505074721;
        double r42161 = r42159 + r42160;
        double r42162 = r42161 * r42128;
        double r42163 = 313.399215894;
        double r42164 = r42162 + r42163;
        double r42165 = r42164 * r42128;
        double r42166 = 47.066876606;
        double r42167 = r42165 + r42166;
        double r42168 = r42156 / r42167;
        double r42169 = r42145 * r42168;
        double r42170 = r42141 ? r42169 : r42139;
        double r42171 = r42130 ? r42139 : r42170;
        return r42171;
}

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 r42172, r42173, r42174, r42175, r42176, r42177, r42178, r42179, r42180, r42181, r42182, r42183, r42184, r42185, r42186, r42187, r42188, r42189, r42190, r42191, r42192, r42193, r42194, r42195, r42196, r42197, r42198, r42199, r42200;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42172);
        mpfr_init_set_str(r42173, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42174);
        mpfr_init_set_str(r42175, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42176);
        mpfr_init_set_str(r42177, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42178);
        mpfr_init(r42179);
        mpfr_init_set_str(r42180, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42181);
        mpfr_init(r42182);
        mpfr_init(r42183);
        mpfr_init(r42184);
        mpfr_init(r42185);
        mpfr_init(r42186);
        mpfr_init(r42187);
        mpfr_init(r42188);
        mpfr_init_set_str(r42189, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42190);
        mpfr_init(r42191);
        mpfr_init_set_str(r42192, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42193);
        mpfr_init(r42194);
        mpfr_init_set_str(r42195, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42196);
        mpfr_init(r42197);
        mpfr_init_set_str(r42198, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42199);
        mpfr_init(r42200);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r42172, x, MPFR_RNDN);
        ;
        mpfr_sub(r42174, r42172, r42173, MPFR_RNDN);
        ;
        mpfr_mul(r42176, r42172, r42175, MPFR_RNDN);
        ;
        mpfr_add(r42178, r42176, r42177, MPFR_RNDN);
        mpfr_mul(r42179, r42178, r42172, MPFR_RNDN);
        ;
        mpfr_add(r42181, r42179, r42180, MPFR_RNDN);
        mpfr_mul(r42182, r42181, r42172, MPFR_RNDN);
        mpfr_set_d(r42183, y, MPFR_RNDN);
        mpfr_add(r42184, r42182, r42183, MPFR_RNDN);
        mpfr_mul(r42185, r42184, r42172, MPFR_RNDN);
        mpfr_set_d(r42186, z, MPFR_RNDN);
        mpfr_add(r42187, r42185, r42186, MPFR_RNDN);
        mpfr_mul(r42188, r42174, r42187, MPFR_RNDN);
        ;
        mpfr_add(r42190, r42172, r42189, MPFR_RNDN);
        mpfr_mul(r42191, r42190, r42172, MPFR_RNDN);
        ;
        mpfr_add(r42193, r42191, r42192, MPFR_RNDN);
        mpfr_mul(r42194, r42193, r42172, MPFR_RNDN);
        ;
        mpfr_add(r42196, r42194, r42195, MPFR_RNDN);
        mpfr_mul(r42197, r42196, r42172, MPFR_RNDN);
        ;
        mpfr_add(r42199, r42197, r42198, MPFR_RNDN);
        mpfr_div(r42200, r42188, r42199, MPFR_RNDN);
        return mpfr_get_d(r42200, MPFR_RNDN);
}

static mpfr_t r42201, r42202, r42203, r42204, r42205, r42206, r42207, r42208, r42209, r42210, r42211, r42212, r42213, r42214, r42215, r42216, r42217, r42218, r42219, r42220, r42221, r42222, r42223, r42224, r42225, r42226, r42227, r42228, r42229, r42230, r42231, r42232, r42233, r42234, r42235, r42236, r42237, r42238, r42239, r42240, r42241, r42242, r42243, r42244;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42201);
        mpfr_init_set_str(r42202, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42203);
        mpfr_init(r42204);
        mpfr_init_set_str(r42205, "2", 10, MPFR_RNDN);
        mpfr_init(r42206);
        mpfr_init(r42207);
        mpfr_init_set_str(r42208, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42209);
        mpfr_init(r42210);
        mpfr_init_set_str(r42211, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42212);
        mpfr_init_set_str(r42213, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42214);
        mpfr_init_set_str(r42215, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42216);
        mpfr_init_set_str(r42217, "1", 10, MPFR_RNDN);
        mpfr_init(r42218);
        mpfr_init(r42219);
        mpfr_init_set_str(r42220, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42221);
        mpfr_init(r42222);
        mpfr_init_set_str(r42223, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42224);
        mpfr_init(r42225);
        mpfr_init(r42226);
        mpfr_init(r42227);
        mpfr_init(r42228);
        mpfr_init(r42229);
        mpfr_init_set_str(r42230, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42231);
        mpfr_init(r42232);
        mpfr_init_set_str(r42233, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42234);
        mpfr_init(r42235);
        mpfr_init_set_str(r42236, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42237);
        mpfr_init(r42238);
        mpfr_init_set_str(r42239, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42240);
        mpfr_init(r42241);
        mpfr_init(r42242);
        mpfr_init(r42243);
        mpfr_init(r42244);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r42201, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42203, mpfr_cmp(r42201, r42202) <= 0, MPFR_RNDN);
        mpfr_set_d(r42204, y, MPFR_RNDN);
        ;
        mpfr_pow(r42206, r42201, r42205, MPFR_RNDN);
        mpfr_div(r42207, r42204, r42206, MPFR_RNDN);
        ;
        mpfr_mul(r42209, r42208, r42201, MPFR_RNDN);
        mpfr_add(r42210, r42207, r42209, MPFR_RNDN);
        ;
        mpfr_sub(r42212, r42210, r42211, MPFR_RNDN);
        ;
        mpfr_set_si(r42214, mpfr_cmp(r42201, r42213) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42216, r42201, r42215, MPFR_RNDN);
        ;
        mpfr_div(r42218, r42216, r42217, MPFR_RNDN);
        mpfr_mul(r42219, r42201, r42208, MPFR_RNDN);
        ;
        mpfr_add(r42221, r42219, r42220, MPFR_RNDN);
        mpfr_mul(r42222, r42221, r42201, MPFR_RNDN);
        ;
        mpfr_add(r42224, r42222, r42223, MPFR_RNDN);
        mpfr_mul(r42225, r42224, r42201, MPFR_RNDN);
        mpfr_add(r42226, r42225, r42204, MPFR_RNDN);
        mpfr_mul(r42227, r42226, r42201, MPFR_RNDN);
        mpfr_set_d(r42228, z, MPFR_RNDN);
        mpfr_add(r42229, r42227, r42228, MPFR_RNDN);
        ;
        mpfr_add(r42231, r42201, r42230, MPFR_RNDN);
        mpfr_mul(r42232, r42231, r42201, MPFR_RNDN);
        ;
        mpfr_add(r42234, r42232, r42233, MPFR_RNDN);
        mpfr_mul(r42235, r42234, r42201, MPFR_RNDN);
        ;
        mpfr_add(r42237, r42235, r42236, MPFR_RNDN);
        mpfr_mul(r42238, r42237, r42201, MPFR_RNDN);
        ;
        mpfr_add(r42240, r42238, r42239, MPFR_RNDN);
        mpfr_div(r42241, r42229, r42240, MPFR_RNDN);
        mpfr_mul(r42242, r42218, r42241, MPFR_RNDN);
        if (mpfr_get_si(r42214, MPFR_RNDN)) { mpfr_set(r42243, r42242, MPFR_RNDN); } else { mpfr_set(r42243, r42212, MPFR_RNDN); };
        if (mpfr_get_si(r42203, MPFR_RNDN)) { mpfr_set(r42244, r42212, MPFR_RNDN); } else { mpfr_set(r42244, r42243, MPFR_RNDN); };
        return mpfr_get_d(r42244, MPFR_RNDN);
}

static mpfr_t r42245, r42246, r42247, r42248, r42249, r42250, r42251, r42252, r42253, r42254, r42255, r42256, r42257, r42258, r42259, r42260, r42261, r42262, r42263, r42264, r42265, r42266, r42267, r42268, r42269, r42270, r42271, r42272, r42273, r42274, r42275, r42276, r42277, r42278, r42279, r42280, r42281, r42282, r42283, r42284, r42285, r42286, r42287, r42288;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42245);
        mpfr_init_set_str(r42246, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42247);
        mpfr_init(r42248);
        mpfr_init_set_str(r42249, "2", 10, MPFR_RNDN);
        mpfr_init(r42250);
        mpfr_init(r42251);
        mpfr_init_set_str(r42252, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42253);
        mpfr_init(r42254);
        mpfr_init_set_str(r42255, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42256);
        mpfr_init_set_str(r42257, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42258);
        mpfr_init_set_str(r42259, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42260);
        mpfr_init_set_str(r42261, "1", 10, MPFR_RNDN);
        mpfr_init(r42262);
        mpfr_init(r42263);
        mpfr_init_set_str(r42264, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42265);
        mpfr_init(r42266);
        mpfr_init_set_str(r42267, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42268);
        mpfr_init(r42269);
        mpfr_init(r42270);
        mpfr_init(r42271);
        mpfr_init(r42272);
        mpfr_init(r42273);
        mpfr_init_set_str(r42274, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42275);
        mpfr_init(r42276);
        mpfr_init_set_str(r42277, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42278);
        mpfr_init(r42279);
        mpfr_init_set_str(r42280, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42281);
        mpfr_init(r42282);
        mpfr_init_set_str(r42283, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42284);
        mpfr_init(r42285);
        mpfr_init(r42286);
        mpfr_init(r42287);
        mpfr_init(r42288);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r42245, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42247, mpfr_cmp(r42245, r42246) <= 0, MPFR_RNDN);
        mpfr_set_d(r42248, y, MPFR_RNDN);
        ;
        mpfr_pow(r42250, r42245, r42249, MPFR_RNDN);
        mpfr_div(r42251, r42248, r42250, MPFR_RNDN);
        ;
        mpfr_mul(r42253, r42252, r42245, MPFR_RNDN);
        mpfr_add(r42254, r42251, r42253, MPFR_RNDN);
        ;
        mpfr_sub(r42256, r42254, r42255, MPFR_RNDN);
        ;
        mpfr_set_si(r42258, mpfr_cmp(r42245, r42257) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42260, r42245, r42259, MPFR_RNDN);
        ;
        mpfr_div(r42262, r42260, r42261, MPFR_RNDN);
        mpfr_mul(r42263, r42245, r42252, MPFR_RNDN);
        ;
        mpfr_add(r42265, r42263, r42264, MPFR_RNDN);
        mpfr_mul(r42266, r42265, r42245, MPFR_RNDN);
        ;
        mpfr_add(r42268, r42266, r42267, MPFR_RNDN);
        mpfr_mul(r42269, r42268, r42245, MPFR_RNDN);
        mpfr_add(r42270, r42269, r42248, MPFR_RNDN);
        mpfr_mul(r42271, r42270, r42245, MPFR_RNDN);
        mpfr_set_d(r42272, z, MPFR_RNDN);
        mpfr_add(r42273, r42271, r42272, MPFR_RNDN);
        ;
        mpfr_add(r42275, r42245, r42274, MPFR_RNDN);
        mpfr_mul(r42276, r42275, r42245, MPFR_RNDN);
        ;
        mpfr_add(r42278, r42276, r42277, MPFR_RNDN);
        mpfr_mul(r42279, r42278, r42245, MPFR_RNDN);
        ;
        mpfr_add(r42281, r42279, r42280, MPFR_RNDN);
        mpfr_mul(r42282, r42281, r42245, MPFR_RNDN);
        ;
        mpfr_add(r42284, r42282, r42283, MPFR_RNDN);
        mpfr_div(r42285, r42273, r42284, MPFR_RNDN);
        mpfr_mul(r42286, r42262, r42285, MPFR_RNDN);
        if (mpfr_get_si(r42258, MPFR_RNDN)) { mpfr_set(r42287, r42286, MPFR_RNDN); } else { mpfr_set(r42287, r42256, MPFR_RNDN); };
        if (mpfr_get_si(r42247, MPFR_RNDN)) { mpfr_set(r42288, r42256, MPFR_RNDN); } else { mpfr_set(r42288, r42287, MPFR_RNDN); };
        return mpfr_get_d(r42288, MPFR_RNDN);
}

