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

double f_if(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r9298 = x;
        float r9299 = y;
        float r9300 = r9298 * r9299;
        float r9301 = z;
        float r9302 = r9300 + r9301;
        float r9303 = r9302 * r9299;
        float r9304 = 27464.7644705;
        float r9305 = r9303 + r9304;
        float r9306 = r9305 * r9299;
        float r9307 = 230661.510616;
        float r9308 = r9306 + r9307;
        float r9309 = r9308 * r9299;
        float r9310 = t;
        float r9311 = r9309 + r9310;
        float r9312 = a;
        float r9313 = r9299 + r9312;
        float r9314 = r9313 * r9299;
        float r9315 = b;
        float r9316 = r9314 + r9315;
        float r9317 = r9316 * r9299;
        float r9318 = c;
        float r9319 = r9317 + r9318;
        float r9320 = r9319 * r9299;
        float r9321 = i;
        float r9322 = r9320 + r9321;
        float r9323 = r9311 / r9322;
        return r9323;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r9324 = x;
        double r9325 = y;
        double r9326 = r9324 * r9325;
        double r9327 = z;
        double r9328 = r9326 + r9327;
        double r9329 = r9328 * r9325;
        double r9330 = 27464.7644705;
        double r9331 = r9329 + r9330;
        double r9332 = r9331 * r9325;
        double r9333 = 230661.510616;
        double r9334 = r9332 + r9333;
        double r9335 = r9334 * r9325;
        double r9336 = t;
        double r9337 = r9335 + r9336;
        double r9338 = a;
        double r9339 = r9325 + r9338;
        double r9340 = r9339 * r9325;
        double r9341 = b;
        double r9342 = r9340 + r9341;
        double r9343 = r9342 * r9325;
        double r9344 = c;
        double r9345 = r9343 + r9344;
        double r9346 = r9345 * r9325;
        double r9347 = i;
        double r9348 = r9346 + r9347;
        double r9349 = r9337 / r9348;
        return r9349;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r9350 = y;
        float r9351 = -2.0574620682300267e+32;
        bool r9352 = r9350 <= r9351;
        float r9353 = 1.1489600686818634e+60;
        bool r9354 = r9350 <= r9353;
        float r9355 = !r9354;
        bool r9356 = r9352 || r9355;
        float r9357 = x;
        float r9358 = z;
        float r9359 = r9358 / r9350;
        float r9360 = r9357 + r9359;
        float r9361 = t;
        float r9362 = 230661.510616;
        float r9363 = 27464.7644705;
        float r9364 = r9357 * r9350;
        float r9365 = r9358 + r9364;
        float r9366 = r9350 * r9365;
        float r9367 = r9363 + r9366;
        float r9368 = r9350 * r9367;
        float r9369 = r9362 + r9368;
        float r9370 = r9350 * r9369;
        float r9371 = r9361 + r9370;
        float r9372 = i;
        float r9373 = a;
        float r9374 = r9350 + r9373;
        float r9375 = r9350 * r9374;
        float r9376 = b;
        float r9377 = r9375 + r9376;
        float r9378 = r9377 * r9350;
        float r9379 = c;
        float r9380 = r9378 + r9379;
        float r9381 = r9350 * r9380;
        float r9382 = r9372 + r9381;
        float r9383 = r9371 / r9382;
        float r9384 = r9356 ? r9360 : r9383;
        return r9384;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r9385 = y;
        double r9386 = -2.0574620682300267e+32;
        bool r9387 = r9385 <= r9386;
        double r9388 = 1.1489600686818634e+60;
        bool r9389 = r9385 <= r9388;
        double r9390 = !r9389;
        bool r9391 = r9387 || r9390;
        double r9392 = x;
        double r9393 = z;
        double r9394 = r9393 / r9385;
        double r9395 = r9392 + r9394;
        double r9396 = t;
        double r9397 = 230661.510616;
        double r9398 = 27464.7644705;
        double r9399 = r9392 * r9385;
        double r9400 = r9393 + r9399;
        double r9401 = r9385 * r9400;
        double r9402 = r9398 + r9401;
        double r9403 = r9385 * r9402;
        double r9404 = r9397 + r9403;
        double r9405 = r9385 * r9404;
        double r9406 = r9396 + r9405;
        double r9407 = i;
        double r9408 = a;
        double r9409 = r9385 + r9408;
        double r9410 = r9385 * r9409;
        double r9411 = b;
        double r9412 = r9410 + r9411;
        double r9413 = r9412 * r9385;
        double r9414 = c;
        double r9415 = r9413 + r9414;
        double r9416 = r9385 * r9415;
        double r9417 = r9407 + r9416;
        double r9418 = r9406 / r9417;
        double r9419 = r9391 ? r9395 : r9418;
        return r9419;
}

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 r9420, r9421, r9422, r9423, r9424, r9425, r9426, r9427, r9428, r9429, r9430, r9431, r9432, r9433, r9434, r9435, r9436, r9437, r9438, r9439, r9440, r9441, r9442, r9443, r9444, r9445;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9420);
        mpfr_init(r9421);
        mpfr_init(r9422);
        mpfr_init(r9423);
        mpfr_init(r9424);
        mpfr_init(r9425);
        mpfr_init_set_str(r9426, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9427);
        mpfr_init(r9428);
        mpfr_init_set_str(r9429, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r9430);
        mpfr_init(r9431);
        mpfr_init(r9432);
        mpfr_init(r9433);
        mpfr_init(r9434);
        mpfr_init(r9435);
        mpfr_init(r9436);
        mpfr_init(r9437);
        mpfr_init(r9438);
        mpfr_init(r9439);
        mpfr_init(r9440);
        mpfr_init(r9441);
        mpfr_init(r9442);
        mpfr_init(r9443);
        mpfr_init(r9444);
        mpfr_init(r9445);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9420, x, MPFR_RNDN);
        mpfr_set_d(r9421, y, MPFR_RNDN);
        mpfr_mul(r9422, r9420, r9421, MPFR_RNDN);
        mpfr_set_d(r9423, z, MPFR_RNDN);
        mpfr_add(r9424, r9422, r9423, MPFR_RNDN);
        mpfr_mul(r9425, r9424, r9421, MPFR_RNDN);
        ;
        mpfr_add(r9427, r9425, r9426, MPFR_RNDN);
        mpfr_mul(r9428, r9427, r9421, MPFR_RNDN);
        ;
        mpfr_add(r9430, r9428, r9429, MPFR_RNDN);
        mpfr_mul(r9431, r9430, r9421, MPFR_RNDN);
        mpfr_set_d(r9432, t, MPFR_RNDN);
        mpfr_add(r9433, r9431, r9432, MPFR_RNDN);
        mpfr_set_d(r9434, a, MPFR_RNDN);
        mpfr_add(r9435, r9421, r9434, MPFR_RNDN);
        mpfr_mul(r9436, r9435, r9421, MPFR_RNDN);
        mpfr_set_d(r9437, b, MPFR_RNDN);
        mpfr_add(r9438, r9436, r9437, MPFR_RNDN);
        mpfr_mul(r9439, r9438, r9421, MPFR_RNDN);
        mpfr_set_d(r9440, c, MPFR_RNDN);
        mpfr_add(r9441, r9439, r9440, MPFR_RNDN);
        mpfr_mul(r9442, r9441, r9421, MPFR_RNDN);
        mpfr_set_d(r9443, i, MPFR_RNDN);
        mpfr_add(r9444, r9442, r9443, MPFR_RNDN);
        mpfr_div(r9445, r9433, r9444, MPFR_RNDN);
        return mpfr_get_d(r9445, MPFR_RNDN);
}

static mpfr_t r9446, r9447, r9448, r9449, r9450, r9451, r9452, r9453, r9454, r9455, r9456, r9457, r9458, r9459, r9460, r9461, r9462, r9463, r9464, r9465, r9466, r9467, r9468, r9469, r9470, r9471, r9472, r9473, r9474, r9475, r9476, r9477, r9478, r9479, r9480;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9446);
        mpfr_init_set_str(r9447, "-2.0574620682300267e+32", 10, MPFR_RNDN);
        mpfr_init(r9448);
        mpfr_init_set_str(r9449, "1.1489600686818634e+60", 10, MPFR_RNDN);
        mpfr_init(r9450);
        mpfr_init(r9451);
        mpfr_init(r9452);
        mpfr_init(r9453);
        mpfr_init(r9454);
        mpfr_init(r9455);
        mpfr_init(r9456);
        mpfr_init(r9457);
        mpfr_init_set_str(r9458, "230661.510616", 10, MPFR_RNDN);
        mpfr_init_set_str(r9459, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9460);
        mpfr_init(r9461);
        mpfr_init(r9462);
        mpfr_init(r9463);
        mpfr_init(r9464);
        mpfr_init(r9465);
        mpfr_init(r9466);
        mpfr_init(r9467);
        mpfr_init(r9468);
        mpfr_init(r9469);
        mpfr_init(r9470);
        mpfr_init(r9471);
        mpfr_init(r9472);
        mpfr_init(r9473);
        mpfr_init(r9474);
        mpfr_init(r9475);
        mpfr_init(r9476);
        mpfr_init(r9477);
        mpfr_init(r9478);
        mpfr_init(r9479);
        mpfr_init(r9480);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9446, y, MPFR_RNDN);
        ;
        mpfr_set_si(r9448, mpfr_cmp(r9446, r9447) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9450, mpfr_cmp(r9446, r9449) <= 0, MPFR_RNDN);
        mpfr_set_si(r9451, !mpfr_get_si(r9450, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9452, mpfr_get_si(r9448, MPFR_RNDN) || mpfr_get_si(r9451, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r9453, x, MPFR_RNDN);
        mpfr_set_d(r9454, z, MPFR_RNDN);
        mpfr_div(r9455, r9454, r9446, MPFR_RNDN);
        mpfr_add(r9456, r9453, r9455, MPFR_RNDN);
        mpfr_set_d(r9457, t, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9460, r9453, r9446, MPFR_RNDN);
        mpfr_add(r9461, r9454, r9460, MPFR_RNDN);
        mpfr_mul(r9462, r9446, r9461, MPFR_RNDN);
        mpfr_add(r9463, r9459, r9462, MPFR_RNDN);
        mpfr_mul(r9464, r9446, r9463, MPFR_RNDN);
        mpfr_add(r9465, r9458, r9464, MPFR_RNDN);
        mpfr_mul(r9466, r9446, r9465, MPFR_RNDN);
        mpfr_add(r9467, r9457, r9466, MPFR_RNDN);
        mpfr_set_d(r9468, i, MPFR_RNDN);
        mpfr_set_d(r9469, a, MPFR_RNDN);
        mpfr_add(r9470, r9446, r9469, MPFR_RNDN);
        mpfr_mul(r9471, r9446, r9470, MPFR_RNDN);
        mpfr_set_d(r9472, b, MPFR_RNDN);
        mpfr_add(r9473, r9471, r9472, MPFR_RNDN);
        mpfr_mul(r9474, r9473, r9446, MPFR_RNDN);
        mpfr_set_d(r9475, c, MPFR_RNDN);
        mpfr_add(r9476, r9474, r9475, MPFR_RNDN);
        mpfr_mul(r9477, r9446, r9476, MPFR_RNDN);
        mpfr_add(r9478, r9468, r9477, MPFR_RNDN);
        mpfr_div(r9479, r9467, r9478, MPFR_RNDN);
        if (mpfr_get_si(r9452, MPFR_RNDN)) { mpfr_set(r9480, r9456, MPFR_RNDN); } else { mpfr_set(r9480, r9479, MPFR_RNDN); };
        return mpfr_get_d(r9480, MPFR_RNDN);
}

static mpfr_t r9481, r9482, r9483, r9484, r9485, r9486, r9487, r9488, r9489, r9490, r9491, r9492, r9493, r9494, r9495, r9496, r9497, r9498, r9499, r9500, r9501, r9502, r9503, r9504, r9505, r9506, r9507, r9508, r9509, r9510, r9511, r9512, r9513, r9514, r9515;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9481);
        mpfr_init_set_str(r9482, "-2.0574620682300267e+32", 10, MPFR_RNDN);
        mpfr_init(r9483);
        mpfr_init_set_str(r9484, "1.1489600686818634e+60", 10, MPFR_RNDN);
        mpfr_init(r9485);
        mpfr_init(r9486);
        mpfr_init(r9487);
        mpfr_init(r9488);
        mpfr_init(r9489);
        mpfr_init(r9490);
        mpfr_init(r9491);
        mpfr_init(r9492);
        mpfr_init_set_str(r9493, "230661.510616", 10, MPFR_RNDN);
        mpfr_init_set_str(r9494, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9495);
        mpfr_init(r9496);
        mpfr_init(r9497);
        mpfr_init(r9498);
        mpfr_init(r9499);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
        mpfr_init(r9505);
        mpfr_init(r9506);
        mpfr_init(r9507);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init(r9512);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9481, y, MPFR_RNDN);
        ;
        mpfr_set_si(r9483, mpfr_cmp(r9481, r9482) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9485, mpfr_cmp(r9481, r9484) <= 0, MPFR_RNDN);
        mpfr_set_si(r9486, !mpfr_get_si(r9485, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9487, mpfr_get_si(r9483, MPFR_RNDN) || mpfr_get_si(r9486, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r9488, x, MPFR_RNDN);
        mpfr_set_d(r9489, z, MPFR_RNDN);
        mpfr_div(r9490, r9489, r9481, MPFR_RNDN);
        mpfr_add(r9491, r9488, r9490, MPFR_RNDN);
        mpfr_set_d(r9492, t, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9495, r9488, r9481, MPFR_RNDN);
        mpfr_add(r9496, r9489, r9495, MPFR_RNDN);
        mpfr_mul(r9497, r9481, r9496, MPFR_RNDN);
        mpfr_add(r9498, r9494, r9497, MPFR_RNDN);
        mpfr_mul(r9499, r9481, r9498, MPFR_RNDN);
        mpfr_add(r9500, r9493, r9499, MPFR_RNDN);
        mpfr_mul(r9501, r9481, r9500, MPFR_RNDN);
        mpfr_add(r9502, r9492, r9501, MPFR_RNDN);
        mpfr_set_d(r9503, i, MPFR_RNDN);
        mpfr_set_d(r9504, a, MPFR_RNDN);
        mpfr_add(r9505, r9481, r9504, MPFR_RNDN);
        mpfr_mul(r9506, r9481, r9505, MPFR_RNDN);
        mpfr_set_d(r9507, b, MPFR_RNDN);
        mpfr_add(r9508, r9506, r9507, MPFR_RNDN);
        mpfr_mul(r9509, r9508, r9481, MPFR_RNDN);
        mpfr_set_d(r9510, c, MPFR_RNDN);
        mpfr_add(r9511, r9509, r9510, MPFR_RNDN);
        mpfr_mul(r9512, r9481, r9511, MPFR_RNDN);
        mpfr_add(r9513, r9503, r9512, MPFR_RNDN);
        mpfr_div(r9514, r9502, r9513, MPFR_RNDN);
        if (mpfr_get_si(r9487, MPFR_RNDN)) { mpfr_set(r9515, r9491, MPFR_RNDN); } else { mpfr_set(r9515, r9514, MPFR_RNDN); };
        return mpfr_get_d(r9515, MPFR_RNDN);
}

