#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 r42256 = x;
        float r42257 = 2.0;
        float r42258 = r42256 - r42257;
        float r42259 = 4.16438922228;
        float r42260 = r42256 * r42259;
        float r42261 = 78.6994924154;
        float r42262 = r42260 + r42261;
        float r42263 = r42262 * r42256;
        float r42264 = 137.519416416;
        float r42265 = r42263 + r42264;
        float r42266 = r42265 * r42256;
        float r42267 = y;
        float r42268 = r42266 + r42267;
        float r42269 = r42268 * r42256;
        float r42270 = z;
        float r42271 = r42269 + r42270;
        float r42272 = r42258 * r42271;
        float r42273 = 43.3400022514;
        float r42274 = r42256 + r42273;
        float r42275 = r42274 * r42256;
        float r42276 = 263.505074721;
        float r42277 = r42275 + r42276;
        float r42278 = r42277 * r42256;
        float r42279 = 313.399215894;
        float r42280 = r42278 + r42279;
        float r42281 = r42280 * r42256;
        float r42282 = 47.066876606;
        float r42283 = r42281 + r42282;
        float r42284 = r42272 / r42283;
        return r42284;
}

double f_id(double x, double y, double z) {
        double r42285 = x;
        double r42286 = 2.0;
        double r42287 = r42285 - r42286;
        double r42288 = 4.16438922228;
        double r42289 = r42285 * r42288;
        double r42290 = 78.6994924154;
        double r42291 = r42289 + r42290;
        double r42292 = r42291 * r42285;
        double r42293 = 137.519416416;
        double r42294 = r42292 + r42293;
        double r42295 = r42294 * r42285;
        double r42296 = y;
        double r42297 = r42295 + r42296;
        double r42298 = r42297 * r42285;
        double r42299 = z;
        double r42300 = r42298 + r42299;
        double r42301 = r42287 * r42300;
        double r42302 = 43.3400022514;
        double r42303 = r42285 + r42302;
        double r42304 = r42303 * r42285;
        double r42305 = 263.505074721;
        double r42306 = r42304 + r42305;
        double r42307 = r42306 * r42285;
        double r42308 = 313.399215894;
        double r42309 = r42307 + r42308;
        double r42310 = r42309 * r42285;
        double r42311 = 47.066876606;
        double r42312 = r42310 + r42311;
        double r42313 = r42301 / r42312;
        return r42313;
}


double f_of(float x, float y, float z) {
        float r42314 = x;
        float r42315 = -2.7093826433504146e+43;
        bool r42316 = r42314 <= r42315;
        float r42317 = y;
        float r42318 = 2;
        float r42319 = pow(r42314, r42318);
        float r42320 = r42317 / r42319;
        float r42321 = 4.16438922228;
        float r42322 = r42321 * r42314;
        float r42323 = r42320 + r42322;
        float r42324 = 110.1139242984811;
        float r42325 = r42323 - r42324;
        float r42326 = 4.256900496243778e+44;
        bool r42327 = r42314 <= r42326;
        float r42328 = 2.0;
        float r42329 = r42314 - r42328;
        float r42330 = 1;
        float r42331 = r42329 / r42330;
        float r42332 = r42314 * r42321;
        float r42333 = 78.6994924154;
        float r42334 = r42332 + r42333;
        float r42335 = r42334 * r42314;
        float r42336 = 137.519416416;
        float r42337 = r42335 + r42336;
        float r42338 = r42337 * r42314;
        float r42339 = r42338 + r42317;
        float r42340 = r42339 * r42314;
        float r42341 = z;
        float r42342 = r42340 + r42341;
        float r42343 = 43.3400022514;
        float r42344 = r42314 + r42343;
        float r42345 = r42344 * r42314;
        float r42346 = 263.505074721;
        float r42347 = r42345 + r42346;
        float r42348 = r42347 * r42314;
        float r42349 = 313.399215894;
        float r42350 = r42348 + r42349;
        float r42351 = r42350 * r42314;
        float r42352 = 47.066876606;
        float r42353 = r42351 + r42352;
        float r42354 = r42342 / r42353;
        float r42355 = r42331 * r42354;
        float r42356 = r42327 ? r42355 : r42325;
        float r42357 = r42316 ? r42325 : r42356;
        return r42357;
}

double f_od(double x, double y, double z) {
        double r42358 = x;
        double r42359 = -2.7093826433504146e+43;
        bool r42360 = r42358 <= r42359;
        double r42361 = y;
        double r42362 = 2;
        double r42363 = pow(r42358, r42362);
        double r42364 = r42361 / r42363;
        double r42365 = 4.16438922228;
        double r42366 = r42365 * r42358;
        double r42367 = r42364 + r42366;
        double r42368 = 110.1139242984811;
        double r42369 = r42367 - r42368;
        double r42370 = 4.256900496243778e+44;
        bool r42371 = r42358 <= r42370;
        double r42372 = 2.0;
        double r42373 = r42358 - r42372;
        double r42374 = 1;
        double r42375 = r42373 / r42374;
        double r42376 = r42358 * r42365;
        double r42377 = 78.6994924154;
        double r42378 = r42376 + r42377;
        double r42379 = r42378 * r42358;
        double r42380 = 137.519416416;
        double r42381 = r42379 + r42380;
        double r42382 = r42381 * r42358;
        double r42383 = r42382 + r42361;
        double r42384 = r42383 * r42358;
        double r42385 = z;
        double r42386 = r42384 + r42385;
        double r42387 = 43.3400022514;
        double r42388 = r42358 + r42387;
        double r42389 = r42388 * r42358;
        double r42390 = 263.505074721;
        double r42391 = r42389 + r42390;
        double r42392 = r42391 * r42358;
        double r42393 = 313.399215894;
        double r42394 = r42392 + r42393;
        double r42395 = r42394 * r42358;
        double r42396 = 47.066876606;
        double r42397 = r42395 + r42396;
        double r42398 = r42386 / r42397;
        double r42399 = r42375 * r42398;
        double r42400 = r42371 ? r42399 : r42369;
        double r42401 = r42360 ? r42369 : r42400;
        return r42401;
}

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 r42402, 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;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42402);
        mpfr_init_set_str(r42403, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42404);
        mpfr_init_set_str(r42405, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42406);
        mpfr_init_set_str(r42407, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42408);
        mpfr_init(r42409);
        mpfr_init_set_str(r42410, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42411);
        mpfr_init(r42412);
        mpfr_init(r42413);
        mpfr_init(r42414);
        mpfr_init(r42415);
        mpfr_init(r42416);
        mpfr_init(r42417);
        mpfr_init(r42418);
        mpfr_init_set_str(r42419, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42420);
        mpfr_init(r42421);
        mpfr_init_set_str(r42422, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42423);
        mpfr_init(r42424);
        mpfr_init_set_str(r42425, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42426);
        mpfr_init(r42427);
        mpfr_init_set_str(r42428, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42429);
        mpfr_init(r42430);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r42402, x, MPFR_RNDN);
        ;
        mpfr_sub(r42404, r42402, r42403, MPFR_RNDN);
        ;
        mpfr_mul(r42406, r42402, r42405, MPFR_RNDN);
        ;
        mpfr_add(r42408, r42406, r42407, MPFR_RNDN);
        mpfr_mul(r42409, r42408, r42402, MPFR_RNDN);
        ;
        mpfr_add(r42411, r42409, r42410, MPFR_RNDN);
        mpfr_mul(r42412, r42411, r42402, MPFR_RNDN);
        mpfr_set_d(r42413, y, MPFR_RNDN);
        mpfr_add(r42414, r42412, r42413, MPFR_RNDN);
        mpfr_mul(r42415, r42414, r42402, MPFR_RNDN);
        mpfr_set_d(r42416, z, MPFR_RNDN);
        mpfr_add(r42417, r42415, r42416, MPFR_RNDN);
        mpfr_mul(r42418, r42404, r42417, MPFR_RNDN);
        ;
        mpfr_add(r42420, r42402, r42419, MPFR_RNDN);
        mpfr_mul(r42421, r42420, r42402, MPFR_RNDN);
        ;
        mpfr_add(r42423, r42421, r42422, MPFR_RNDN);
        mpfr_mul(r42424, r42423, r42402, MPFR_RNDN);
        ;
        mpfr_add(r42426, r42424, r42425, MPFR_RNDN);
        mpfr_mul(r42427, r42426, r42402, MPFR_RNDN);
        ;
        mpfr_add(r42429, r42427, r42428, MPFR_RNDN);
        mpfr_div(r42430, r42418, r42429, MPFR_RNDN);
        return mpfr_get_d(r42430, MPFR_RNDN);
}

static mpfr_t r42431, r42432, r42433, r42434, r42435, r42436, r42437, r42438, r42439, r42440, r42441, r42442, r42443, r42444, r42445, r42446, r42447, r42448, r42449, r42450, r42451, r42452, r42453, r42454, r42455, r42456, r42457, r42458, r42459, r42460, r42461, r42462, r42463, r42464, r42465, r42466, r42467, r42468, r42469, r42470, r42471, r42472, r42473, r42474;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42431);
        mpfr_init_set_str(r42432, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42433);
        mpfr_init(r42434);
        mpfr_init_set_str(r42435, "2", 10, MPFR_RNDN);
        mpfr_init(r42436);
        mpfr_init(r42437);
        mpfr_init_set_str(r42438, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42439);
        mpfr_init(r42440);
        mpfr_init_set_str(r42441, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42442);
        mpfr_init_set_str(r42443, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42444);
        mpfr_init_set_str(r42445, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42446);
        mpfr_init_set_str(r42447, "1", 10, MPFR_RNDN);
        mpfr_init(r42448);
        mpfr_init(r42449);
        mpfr_init_set_str(r42450, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42451);
        mpfr_init(r42452);
        mpfr_init_set_str(r42453, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42454);
        mpfr_init(r42455);
        mpfr_init(r42456);
        mpfr_init(r42457);
        mpfr_init(r42458);
        mpfr_init(r42459);
        mpfr_init_set_str(r42460, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42461);
        mpfr_init(r42462);
        mpfr_init_set_str(r42463, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42464);
        mpfr_init(r42465);
        mpfr_init_set_str(r42466, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42467);
        mpfr_init(r42468);
        mpfr_init_set_str(r42469, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42470);
        mpfr_init(r42471);
        mpfr_init(r42472);
        mpfr_init(r42473);
        mpfr_init(r42474);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r42431, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42433, mpfr_cmp(r42431, r42432) <= 0, MPFR_RNDN);
        mpfr_set_d(r42434, y, MPFR_RNDN);
        ;
        mpfr_pow(r42436, r42431, r42435, MPFR_RNDN);
        mpfr_div(r42437, r42434, r42436, MPFR_RNDN);
        ;
        mpfr_mul(r42439, r42438, r42431, MPFR_RNDN);
        mpfr_add(r42440, r42437, r42439, MPFR_RNDN);
        ;
        mpfr_sub(r42442, r42440, r42441, MPFR_RNDN);
        ;
        mpfr_set_si(r42444, mpfr_cmp(r42431, r42443) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42446, r42431, r42445, MPFR_RNDN);
        ;
        mpfr_div(r42448, r42446, r42447, MPFR_RNDN);
        mpfr_mul(r42449, r42431, r42438, MPFR_RNDN);
        ;
        mpfr_add(r42451, r42449, r42450, MPFR_RNDN);
        mpfr_mul(r42452, r42451, r42431, MPFR_RNDN);
        ;
        mpfr_add(r42454, r42452, r42453, MPFR_RNDN);
        mpfr_mul(r42455, r42454, r42431, MPFR_RNDN);
        mpfr_add(r42456, r42455, r42434, MPFR_RNDN);
        mpfr_mul(r42457, r42456, r42431, MPFR_RNDN);
        mpfr_set_d(r42458, z, MPFR_RNDN);
        mpfr_add(r42459, r42457, r42458, MPFR_RNDN);
        ;
        mpfr_add(r42461, r42431, r42460, MPFR_RNDN);
        mpfr_mul(r42462, r42461, r42431, MPFR_RNDN);
        ;
        mpfr_add(r42464, r42462, r42463, MPFR_RNDN);
        mpfr_mul(r42465, r42464, r42431, MPFR_RNDN);
        ;
        mpfr_add(r42467, r42465, r42466, MPFR_RNDN);
        mpfr_mul(r42468, r42467, r42431, MPFR_RNDN);
        ;
        mpfr_add(r42470, r42468, r42469, MPFR_RNDN);
        mpfr_div(r42471, r42459, r42470, MPFR_RNDN);
        mpfr_mul(r42472, r42448, r42471, MPFR_RNDN);
        if (mpfr_get_si(r42444, MPFR_RNDN)) { mpfr_set(r42473, r42472, MPFR_RNDN); } else { mpfr_set(r42473, r42442, MPFR_RNDN); };
        if (mpfr_get_si(r42433, MPFR_RNDN)) { mpfr_set(r42474, r42442, MPFR_RNDN); } else { mpfr_set(r42474, r42473, MPFR_RNDN); };
        return mpfr_get_d(r42474, MPFR_RNDN);
}

static mpfr_t r42475, r42476, r42477, r42478, r42479, r42480, r42481, r42482, r42483, r42484, r42485, r42486, r42487, r42488, r42489, r42490, r42491, r42492, r42493, r42494, r42495, r42496, r42497, r42498, r42499, r42500, r42501, r42502, r42503, r42504, r42505, r42506, r42507, r42508, r42509, r42510, r42511, r42512, r42513, r42514, r42515, r42516, r42517, r42518;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42475);
        mpfr_init_set_str(r42476, "-2.7093826433504146e+43", 10, MPFR_RNDN);
        mpfr_init(r42477);
        mpfr_init(r42478);
        mpfr_init_set_str(r42479, "2", 10, MPFR_RNDN);
        mpfr_init(r42480);
        mpfr_init(r42481);
        mpfr_init_set_str(r42482, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r42483);
        mpfr_init(r42484);
        mpfr_init_set_str(r42485, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r42486);
        mpfr_init_set_str(r42487, "4.256900496243778e+44", 10, MPFR_RNDN);
        mpfr_init(r42488);
        mpfr_init_set_str(r42489, "2.0", 10, MPFR_RNDN);
        mpfr_init(r42490);
        mpfr_init_set_str(r42491, "1", 10, MPFR_RNDN);
        mpfr_init(r42492);
        mpfr_init(r42493);
        mpfr_init_set_str(r42494, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r42495);
        mpfr_init(r42496);
        mpfr_init_set_str(r42497, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r42498);
        mpfr_init(r42499);
        mpfr_init(r42500);
        mpfr_init(r42501);
        mpfr_init(r42502);
        mpfr_init(r42503);
        mpfr_init_set_str(r42504, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r42505);
        mpfr_init(r42506);
        mpfr_init_set_str(r42507, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r42508);
        mpfr_init(r42509);
        mpfr_init_set_str(r42510, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r42511);
        mpfr_init(r42512);
        mpfr_init_set_str(r42513, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r42514);
        mpfr_init(r42515);
        mpfr_init(r42516);
        mpfr_init(r42517);
        mpfr_init(r42518);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r42475, x, MPFR_RNDN);
        ;
        mpfr_set_si(r42477, mpfr_cmp(r42475, r42476) <= 0, MPFR_RNDN);
        mpfr_set_d(r42478, y, MPFR_RNDN);
        ;
        mpfr_pow(r42480, r42475, r42479, MPFR_RNDN);
        mpfr_div(r42481, r42478, r42480, MPFR_RNDN);
        ;
        mpfr_mul(r42483, r42482, r42475, MPFR_RNDN);
        mpfr_add(r42484, r42481, r42483, MPFR_RNDN);
        ;
        mpfr_sub(r42486, r42484, r42485, MPFR_RNDN);
        ;
        mpfr_set_si(r42488, mpfr_cmp(r42475, r42487) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r42490, r42475, r42489, MPFR_RNDN);
        ;
        mpfr_div(r42492, r42490, r42491, MPFR_RNDN);
        mpfr_mul(r42493, r42475, r42482, MPFR_RNDN);
        ;
        mpfr_add(r42495, r42493, r42494, MPFR_RNDN);
        mpfr_mul(r42496, r42495, r42475, MPFR_RNDN);
        ;
        mpfr_add(r42498, r42496, r42497, MPFR_RNDN);
        mpfr_mul(r42499, r42498, r42475, MPFR_RNDN);
        mpfr_add(r42500, r42499, r42478, MPFR_RNDN);
        mpfr_mul(r42501, r42500, r42475, MPFR_RNDN);
        mpfr_set_d(r42502, z, MPFR_RNDN);
        mpfr_add(r42503, r42501, r42502, MPFR_RNDN);
        ;
        mpfr_add(r42505, r42475, r42504, MPFR_RNDN);
        mpfr_mul(r42506, r42505, r42475, MPFR_RNDN);
        ;
        mpfr_add(r42508, r42506, r42507, MPFR_RNDN);
        mpfr_mul(r42509, r42508, r42475, MPFR_RNDN);
        ;
        mpfr_add(r42511, r42509, r42510, MPFR_RNDN);
        mpfr_mul(r42512, r42511, r42475, MPFR_RNDN);
        ;
        mpfr_add(r42514, r42512, r42513, MPFR_RNDN);
        mpfr_div(r42515, r42503, r42514, MPFR_RNDN);
        mpfr_mul(r42516, r42492, r42515, MPFR_RNDN);
        if (mpfr_get_si(r42488, MPFR_RNDN)) { mpfr_set(r42517, r42516, MPFR_RNDN); } else { mpfr_set(r42517, r42486, MPFR_RNDN); };
        if (mpfr_get_si(r42477, MPFR_RNDN)) { mpfr_set(r42518, r42486, MPFR_RNDN); } else { mpfr_set(r42518, r42517, MPFR_RNDN); };
        return mpfr_get_d(r42518, MPFR_RNDN);
}

