#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 r42184 = x;
        float r42185 = 2.0;
        float r42186 = r42184 - r42185;
        float r42187 = 4.16438922228;
        float r42188 = r42184 * r42187;
        float r42189 = 78.6994924154;
        float r42190 = r42188 + r42189;
        float r42191 = r42190 * r42184;
        float r42192 = 137.519416416;
        float r42193 = r42191 + r42192;
        float r42194 = r42193 * r42184;
        float r42195 = y;
        float r42196 = r42194 + r42195;
        float r42197 = r42196 * r42184;
        float r42198 = z;
        float r42199 = r42197 + r42198;
        float r42200 = r42186 * r42199;
        float r42201 = 43.3400022514;
        float r42202 = r42184 + r42201;
        float r42203 = r42202 * r42184;
        float r42204 = 263.505074721;
        float r42205 = r42203 + r42204;
        float r42206 = r42205 * r42184;
        float r42207 = 313.399215894;
        float r42208 = r42206 + r42207;
        float r42209 = r42208 * r42184;
        float r42210 = 47.066876606;
        float r42211 = r42209 + r42210;
        float r42212 = r42200 / r42211;
        return r42212;
}

double f_id(double x, double y, double z) {
        double r42213 = x;
        double r42214 = 2.0;
        double r42215 = r42213 - r42214;
        double r42216 = 4.16438922228;
        double r42217 = r42213 * r42216;
        double r42218 = 78.6994924154;
        double r42219 = r42217 + r42218;
        double r42220 = r42219 * r42213;
        double r42221 = 137.519416416;
        double r42222 = r42220 + r42221;
        double r42223 = r42222 * r42213;
        double r42224 = y;
        double r42225 = r42223 + r42224;
        double r42226 = r42225 * r42213;
        double r42227 = z;
        double r42228 = r42226 + r42227;
        double r42229 = r42215 * r42228;
        double r42230 = 43.3400022514;
        double r42231 = r42213 + r42230;
        double r42232 = r42231 * r42213;
        double r42233 = 263.505074721;
        double r42234 = r42232 + r42233;
        double r42235 = r42234 * r42213;
        double r42236 = 313.399215894;
        double r42237 = r42235 + r42236;
        double r42238 = r42237 * r42213;
        double r42239 = 47.066876606;
        double r42240 = r42238 + r42239;
        double r42241 = r42229 / r42240;
        return r42241;
}


double f_of(float x, float y, float z) {
        float r42242 = x;
        float r42243 = -1.9116033696668237e+36;
        bool r42244 = r42242 <= r42243;
        float r42245 = y;
        float r42246 = 2;
        float r42247 = pow(r42242, r42246);
        float r42248 = r42245 / r42247;
        float r42249 = 4.16438922228;
        float r42250 = r42249 * r42242;
        float r42251 = r42248 + r42250;
        float r42252 = 110.1139242984811;
        float r42253 = r42251 - r42252;
        float r42254 = 6.4866982817472785e+44;
        bool r42255 = r42242 <= r42254;
        float r42256 = 2.0;
        float r42257 = r42242 - r42256;
        float r42258 = 1;
        float r42259 = r42257 / r42258;
        float r42260 = r42242 * r42249;
        float r42261 = 78.6994924154;
        float r42262 = r42260 + r42261;
        float r42263 = r42262 * r42242;
        float r42264 = 137.519416416;
        float r42265 = r42263 + r42264;
        float r42266 = r42265 * r42242;
        float r42267 = r42266 + r42245;
        float r42268 = r42267 * r42242;
        float r42269 = z;
        float r42270 = r42268 + r42269;
        float r42271 = 43.3400022514;
        float r42272 = r42242 + r42271;
        float r42273 = r42272 * r42242;
        float r42274 = 263.505074721;
        float r42275 = r42273 + r42274;
        float r42276 = r42275 * r42242;
        float r42277 = 313.399215894;
        float r42278 = r42276 + r42277;
        float r42279 = r42278 * r42242;
        float r42280 = 47.066876606;
        float r42281 = r42279 + r42280;
        float r42282 = r42270 / r42281;
        float r42283 = r42259 * r42282;
        float r42284 = r42255 ? r42283 : r42253;
        float r42285 = r42244 ? r42253 : r42284;
        return r42285;
}

double f_od(double x, double y, double z) {
        double r42286 = x;
        double r42287 = -1.9116033696668237e+36;
        bool r42288 = r42286 <= r42287;
        double r42289 = y;
        double r42290 = 2;
        double r42291 = pow(r42286, r42290);
        double r42292 = r42289 / r42291;
        double r42293 = 4.16438922228;
        double r42294 = r42293 * r42286;
        double r42295 = r42292 + r42294;
        double r42296 = 110.1139242984811;
        double r42297 = r42295 - r42296;
        double r42298 = 6.4866982817472785e+44;
        bool r42299 = r42286 <= r42298;
        double r42300 = 2.0;
        double r42301 = r42286 - r42300;
        double r42302 = 1;
        double r42303 = r42301 / r42302;
        double r42304 = r42286 * r42293;
        double r42305 = 78.6994924154;
        double r42306 = r42304 + r42305;
        double r42307 = r42306 * r42286;
        double r42308 = 137.519416416;
        double r42309 = r42307 + r42308;
        double r42310 = r42309 * r42286;
        double r42311 = r42310 + r42289;
        double r42312 = r42311 * r42286;
        double r42313 = z;
        double r42314 = r42312 + r42313;
        double r42315 = 43.3400022514;
        double r42316 = r42286 + r42315;
        double r42317 = r42316 * r42286;
        double r42318 = 263.505074721;
        double r42319 = r42317 + r42318;
        double r42320 = r42319 * r42286;
        double r42321 = 313.399215894;
        double r42322 = r42320 + r42321;
        double r42323 = r42322 * r42286;
        double r42324 = 47.066876606;
        double r42325 = r42323 + r42324;
        double r42326 = r42314 / r42325;
        double r42327 = r42303 * r42326;
        double r42328 = r42299 ? r42327 : r42297;
        double r42329 = r42288 ? r42297 : r42328;
        return r42329;
}

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 r42330, r42331, r42332, r42333, r42334, r42335, r42336, r42337, r42338, r42339, r42340, r42341, r42342, r42343, r42344, r42345, r42346, r42347, r42348, r42349, r42350, r42351, r42352, r42353, r42354, r42355, r42356, r42357, r42358;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42330);
        mpfr_init_set_str(r42331, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42332);
        mpfr_init_set_str(r42333, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42334);
        mpfr_init_set_str(r42335, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42336);
        mpfr_init(r42337);
        mpfr_init_set_str(r42338, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42339);
        mpfr_init(r42340);
        mpfr_init(r42341);
        mpfr_init(r42342);
        mpfr_init(r42343);
        mpfr_init(r42344);
        mpfr_init(r42345);
        mpfr_init(r42346);
        mpfr_init_set_str(r42347, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42348);
        mpfr_init(r42349);
        mpfr_init_set_str(r42350, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42351);
        mpfr_init(r42352);
        mpfr_init_set_str(r42353, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42354);
        mpfr_init(r42355);
        mpfr_init_set_str(r42356, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42357);
        mpfr_init(r42358);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r42330, x, MPFR_RNDN);
        ;
        mpfr_sub(r42332, r42330, r42331, MPFR_RNDN);
        ;
        mpfr_mul(r42334, r42330, r42333, MPFR_RNDN);
        ;
        mpfr_add(r42336, r42334, r42335, MPFR_RNDN);
        mpfr_mul(r42337, r42336, r42330, MPFR_RNDN);
        ;
        mpfr_add(r42339, r42337, r42338, MPFR_RNDN);
        mpfr_mul(r42340, r42339, r42330, MPFR_RNDN);
        mpfr_set_d(r42341, y, MPFR_RNDN);
        mpfr_add(r42342, r42340, r42341, MPFR_RNDN);
        mpfr_mul(r42343, r42342, r42330, MPFR_RNDN);
        mpfr_set_d(r42344, z, MPFR_RNDN);
        mpfr_add(r42345, r42343, r42344, MPFR_RNDN);
        mpfr_mul(r42346, r42332, r42345, MPFR_RNDN);
        ;
        mpfr_add(r42348, r42330, r42347, MPFR_RNDN);
        mpfr_mul(r42349, r42348, r42330, MPFR_RNDN);
        ;
        mpfr_add(r42351, r42349, r42350, MPFR_RNDN);
        mpfr_mul(r42352, r42351, r42330, MPFR_RNDN);
        ;
        mpfr_add(r42354, r42352, r42353, MPFR_RNDN);
        mpfr_mul(r42355, r42354, r42330, MPFR_RNDN);
        ;
        mpfr_add(r42357, r42355, r42356, MPFR_RNDN);
        mpfr_div(r42358, r42346, r42357, MPFR_RNDN);
        return mpfr_get_d(r42358, MPFR_RNDN);
}

static mpfr_t r42359, r42360, r42361, r42362, r42363, r42364, r42365, r42366, r42367, r42368, r42369, r42370, r42371, r42372, r42373, r42374, r42375, r42376, r42377, r42378, r42379, r42380, r42381, r42382, r42383, r42384, r42385, r42386, r42387, r42388, r42389, r42390, r42391, r42392, r42393, r42394, r42395, r42396, r42397, r42398, r42399, r42400, r42401, r42402;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42359);
        mpfr_init_set_str(r42360, "-1.9116033696668237e+36", 10, MPFR_RNDN);
        mpfr_init(r42361);
        mpfr_init(r42362);
        mpfr_init_set_str(r42363, "2", 10, MPFR_RNDN);
        mpfr_init(r42364);
        mpfr_init(r42365);
        mpfr_init_set_str(r42366, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42367);
        mpfr_init(r42368);
        mpfr_init_set_str(r42369, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42370);
        mpfr_init_set_str(r42371, "6.4866982817472785e+44", 10, MPFR_RNDN);
        mpfr_init(r42372);
        mpfr_init_set_str(r42373, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42374);
        mpfr_init_set_str(r42375, "1", 10, MPFR_RNDN);
        mpfr_init(r42376);
        mpfr_init(r42377);
        mpfr_init_set_str(r42378, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42379);
        mpfr_init(r42380);
        mpfr_init_set_str(r42381, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42382);
        mpfr_init(r42383);
        mpfr_init(r42384);
        mpfr_init(r42385);
        mpfr_init(r42386);
        mpfr_init(r42387);
        mpfr_init_set_str(r42388, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42389);
        mpfr_init(r42390);
        mpfr_init_set_str(r42391, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42392);
        mpfr_init(r42393);
        mpfr_init_set_str(r42394, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42395);
        mpfr_init(r42396);
        mpfr_init_set_str(r42397, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42398);
        mpfr_init(r42399);
        mpfr_init(r42400);
        mpfr_init(r42401);
        mpfr_init(r42402);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r42359, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42361, mpfr_cmp(r42359, r42360) <= 0, MPFR_RNDN);
        mpfr_set_d(r42362, y, MPFR_RNDN);
        ;
        mpfr_pow(r42364, r42359, r42363, MPFR_RNDN);
        mpfr_div(r42365, r42362, r42364, MPFR_RNDN);
        ;
        mpfr_mul(r42367, r42366, r42359, MPFR_RNDN);
        mpfr_add(r42368, r42365, r42367, MPFR_RNDN);
        ;
        mpfr_sub(r42370, r42368, r42369, MPFR_RNDN);
        ;
        mpfr_set_si(r42372, mpfr_cmp(r42359, r42371) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42374, r42359, r42373, MPFR_RNDN);
        ;
        mpfr_div(r42376, r42374, r42375, MPFR_RNDN);
        mpfr_mul(r42377, r42359, r42366, MPFR_RNDN);
        ;
        mpfr_add(r42379, r42377, r42378, MPFR_RNDN);
        mpfr_mul(r42380, r42379, r42359, MPFR_RNDN);
        ;
        mpfr_add(r42382, r42380, r42381, MPFR_RNDN);
        mpfr_mul(r42383, r42382, r42359, MPFR_RNDN);
        mpfr_add(r42384, r42383, r42362, MPFR_RNDN);
        mpfr_mul(r42385, r42384, r42359, MPFR_RNDN);
        mpfr_set_d(r42386, z, MPFR_RNDN);
        mpfr_add(r42387, r42385, r42386, MPFR_RNDN);
        ;
        mpfr_add(r42389, r42359, r42388, MPFR_RNDN);
        mpfr_mul(r42390, r42389, r42359, MPFR_RNDN);
        ;
        mpfr_add(r42392, r42390, r42391, MPFR_RNDN);
        mpfr_mul(r42393, r42392, r42359, MPFR_RNDN);
        ;
        mpfr_add(r42395, r42393, r42394, MPFR_RNDN);
        mpfr_mul(r42396, r42395, r42359, MPFR_RNDN);
        ;
        mpfr_add(r42398, r42396, r42397, MPFR_RNDN);
        mpfr_div(r42399, r42387, r42398, MPFR_RNDN);
        mpfr_mul(r42400, r42376, r42399, MPFR_RNDN);
        if (mpfr_get_si(r42372, MPFR_RNDN)) { mpfr_set(r42401, r42400, MPFR_RNDN); } else { mpfr_set(r42401, r42370, MPFR_RNDN); };
        if (mpfr_get_si(r42361, MPFR_RNDN)) { mpfr_set(r42402, r42370, MPFR_RNDN); } else { mpfr_set(r42402, r42401, MPFR_RNDN); };
        return mpfr_get_d(r42402, MPFR_RNDN);
}

static mpfr_t r42403, r42404, r42405, r42406, r42407, r42408, r42409, r42410, r42411, r42412, r42413, r42414, r42415, r42416, r42417, r42418, r42419, r42420, r42421, r42422, r42423, r42424, r42425, r42426, r42427, r42428, r42429, r42430, r42431, r42432, r42433, r42434, r42435, r42436, r42437, r42438, r42439, r42440, r42441, r42442, r42443, r42444, r42445, r42446;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42403);
        mpfr_init_set_str(r42404, "-1.9116033696668237e+36", 10, MPFR_RNDN);
        mpfr_init(r42405);
        mpfr_init(r42406);
        mpfr_init_set_str(r42407, "2", 10, MPFR_RNDN);
        mpfr_init(r42408);
        mpfr_init(r42409);
        mpfr_init_set_str(r42410, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42411);
        mpfr_init(r42412);
        mpfr_init_set_str(r42413, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42414);
        mpfr_init_set_str(r42415, "6.4866982817472785e+44", 10, MPFR_RNDN);
        mpfr_init(r42416);
        mpfr_init_set_str(r42417, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42418);
        mpfr_init_set_str(r42419, "1", 10, MPFR_RNDN);
        mpfr_init(r42420);
        mpfr_init(r42421);
        mpfr_init_set_str(r42422, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42423);
        mpfr_init(r42424);
        mpfr_init_set_str(r42425, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42426);
        mpfr_init(r42427);
        mpfr_init(r42428);
        mpfr_init(r42429);
        mpfr_init(r42430);
        mpfr_init(r42431);
        mpfr_init_set_str(r42432, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42433);
        mpfr_init(r42434);
        mpfr_init_set_str(r42435, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42436);
        mpfr_init(r42437);
        mpfr_init_set_str(r42438, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42439);
        mpfr_init(r42440);
        mpfr_init_set_str(r42441, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42442);
        mpfr_init(r42443);
        mpfr_init(r42444);
        mpfr_init(r42445);
        mpfr_init(r42446);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r42403, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42405, mpfr_cmp(r42403, r42404) <= 0, MPFR_RNDN);
        mpfr_set_d(r42406, y, MPFR_RNDN);
        ;
        mpfr_pow(r42408, r42403, r42407, MPFR_RNDN);
        mpfr_div(r42409, r42406, r42408, MPFR_RNDN);
        ;
        mpfr_mul(r42411, r42410, r42403, MPFR_RNDN);
        mpfr_add(r42412, r42409, r42411, MPFR_RNDN);
        ;
        mpfr_sub(r42414, r42412, r42413, MPFR_RNDN);
        ;
        mpfr_set_si(r42416, mpfr_cmp(r42403, r42415) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42418, r42403, r42417, MPFR_RNDN);
        ;
        mpfr_div(r42420, r42418, r42419, MPFR_RNDN);
        mpfr_mul(r42421, r42403, r42410, MPFR_RNDN);
        ;
        mpfr_add(r42423, r42421, r42422, MPFR_RNDN);
        mpfr_mul(r42424, r42423, r42403, MPFR_RNDN);
        ;
        mpfr_add(r42426, r42424, r42425, MPFR_RNDN);
        mpfr_mul(r42427, r42426, r42403, MPFR_RNDN);
        mpfr_add(r42428, r42427, r42406, MPFR_RNDN);
        mpfr_mul(r42429, r42428, r42403, MPFR_RNDN);
        mpfr_set_d(r42430, z, MPFR_RNDN);
        mpfr_add(r42431, r42429, r42430, MPFR_RNDN);
        ;
        mpfr_add(r42433, r42403, r42432, MPFR_RNDN);
        mpfr_mul(r42434, r42433, r42403, MPFR_RNDN);
        ;
        mpfr_add(r42436, r42434, r42435, MPFR_RNDN);
        mpfr_mul(r42437, r42436, r42403, MPFR_RNDN);
        ;
        mpfr_add(r42439, r42437, r42438, MPFR_RNDN);
        mpfr_mul(r42440, r42439, r42403, MPFR_RNDN);
        ;
        mpfr_add(r42442, r42440, r42441, MPFR_RNDN);
        mpfr_div(r42443, r42431, r42442, MPFR_RNDN);
        mpfr_mul(r42444, r42420, r42443, MPFR_RNDN);
        if (mpfr_get_si(r42416, MPFR_RNDN)) { mpfr_set(r42445, r42444, MPFR_RNDN); } else { mpfr_set(r42445, r42414, MPFR_RNDN); };
        if (mpfr_get_si(r42405, MPFR_RNDN)) { mpfr_set(r42446, r42414, MPFR_RNDN); } else { mpfr_set(r42446, r42445, MPFR_RNDN); };
        return mpfr_get_d(r42446, MPFR_RNDN);
}

