#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, B";

double f_if(float x, float y) {
        float r43484 = 1.0;
        float r43485 = x;
        float r43486 = y;
        float r43487 = r43485 - r43486;
        float r43488 = r43484 - r43486;
        float r43489 = r43487 / r43488;
        float r43490 = r43484 - r43489;
        float r43491 = log(r43490);
        float r43492 = r43484 - r43491;
        return r43492;
}

double f_id(double x, double y) {
        double r43493 = 1.0;
        double r43494 = x;
        double r43495 = y;
        double r43496 = r43494 - r43495;
        double r43497 = r43493 - r43495;
        double r43498 = r43496 / r43497;
        double r43499 = r43493 - r43498;
        double r43500 = log(r43499);
        double r43501 = r43493 - r43500;
        return r43501;
}


double f_of(float x, float y) {
        float r43502 = y;
        float r43503 = -159550078.41948086;
        bool r43504 = r43502 <= r43503;
        float r43505 = 1.0;
        float r43506 = x;
        float r43507 = r43506 * r43505;
        float r43508 = r43502 * r43502;
        float r43509 = r43507 / r43508;
        float r43510 = r43506 / r43502;
        float r43511 = r43505 / r43502;
        float r43512 = r43510 - r43511;
        float r43513 = r43509 + r43512;
        float r43514 = log(r43513);
        float r43515 = r43505 - r43514;
        float r43516 = 5654171.140492215;
        bool r43517 = r43502 <= r43516;
        float r43518 = r43506 - r43502;
        float r43519 = r43505 - r43502;
        float r43520 = r43518 / r43519;
        float r43521 = r43505 - r43520;
        float r43522 = sqrt(r43521);
        float r43523 = r43522 * r43522;
        float r43524 = log(r43523);
        float r43525 = r43505 - r43524;
        float r43526 = r43517 ? r43525 : r43515;
        float r43527 = r43504 ? r43515 : r43526;
        return r43527;
}

double f_od(double x, double y) {
        double r43528 = y;
        double r43529 = -159550078.41948086;
        bool r43530 = r43528 <= r43529;
        double r43531 = 1.0;
        double r43532 = x;
        double r43533 = r43532 * r43531;
        double r43534 = r43528 * r43528;
        double r43535 = r43533 / r43534;
        double r43536 = r43532 / r43528;
        double r43537 = r43531 / r43528;
        double r43538 = r43536 - r43537;
        double r43539 = r43535 + r43538;
        double r43540 = log(r43539);
        double r43541 = r43531 - r43540;
        double r43542 = 5654171.140492215;
        bool r43543 = r43528 <= r43542;
        double r43544 = r43532 - r43528;
        double r43545 = r43531 - r43528;
        double r43546 = r43544 / r43545;
        double r43547 = r43531 - r43546;
        double r43548 = sqrt(r43547);
        double r43549 = r43548 * r43548;
        double r43550 = log(r43549);
        double r43551 = r43531 - r43550;
        double r43552 = r43543 ? r43551 : r43541;
        double r43553 = r43530 ? r43541 : r43552;
        return r43553;
}

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 r43554, r43555, r43556, r43557, r43558, r43559, r43560, r43561, r43562;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r43554, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43555);
        mpfr_init(r43556);
        mpfr_init(r43557);
        mpfr_init(r43558);
        mpfr_init(r43559);
        mpfr_init(r43560);
        mpfr_init(r43561);
        mpfr_init(r43562);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43555, x, MPFR_RNDN);
        mpfr_set_d(r43556, y, MPFR_RNDN);
        mpfr_sub(r43557, r43555, r43556, MPFR_RNDN);
        mpfr_sub(r43558, r43554, r43556, MPFR_RNDN);
        mpfr_div(r43559, r43557, r43558, MPFR_RNDN);
        mpfr_sub(r43560, r43554, r43559, MPFR_RNDN);
        mpfr_log(r43561, r43560, MPFR_RNDN);
        mpfr_sub(r43562, r43554, r43561, MPFR_RNDN);
        return mpfr_get_d(r43562, MPFR_RNDN);
}

static mpfr_t r43563, r43564, r43565, r43566, r43567, r43568, r43569, r43570, r43571, r43572, r43573, r43574, r43575, r43576, r43577, r43578, r43579, r43580, r43581, r43582, r43583, r43584, r43585, r43586, r43587, r43588;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43563);
        mpfr_init_set_str(r43564, "-159550078.41948086", 10, MPFR_RNDN);
        mpfr_init(r43565);
        mpfr_init_set_str(r43566, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43567);
        mpfr_init(r43568);
        mpfr_init(r43569);
        mpfr_init(r43570);
        mpfr_init(r43571);
        mpfr_init(r43572);
        mpfr_init(r43573);
        mpfr_init(r43574);
        mpfr_init(r43575);
        mpfr_init(r43576);
        mpfr_init_set_str(r43577, "5654171.140492215", 10, MPFR_RNDN);
        mpfr_init(r43578);
        mpfr_init(r43579);
        mpfr_init(r43580);
        mpfr_init(r43581);
        mpfr_init(r43582);
        mpfr_init(r43583);
        mpfr_init(r43584);
        mpfr_init(r43585);
        mpfr_init(r43586);
        mpfr_init(r43587);
        mpfr_init(r43588);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43563, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43565, mpfr_cmp(r43563, r43564) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r43567, x, MPFR_RNDN);
        mpfr_mul(r43568, r43567, r43566, MPFR_RNDN);
        mpfr_mul(r43569, r43563, r43563, MPFR_RNDN);
        mpfr_div(r43570, r43568, r43569, MPFR_RNDN);
        mpfr_div(r43571, r43567, r43563, MPFR_RNDN);
        mpfr_div(r43572, r43566, r43563, MPFR_RNDN);
        mpfr_sub(r43573, r43571, r43572, MPFR_RNDN);
        mpfr_add(r43574, r43570, r43573, MPFR_RNDN);
        mpfr_log(r43575, r43574, MPFR_RNDN);
        mpfr_sub(r43576, r43566, r43575, MPFR_RNDN);
        ;
        mpfr_set_si(r43578, mpfr_cmp(r43563, r43577) <= 0, MPFR_RNDN);
        mpfr_sub(r43579, r43567, r43563, MPFR_RNDN);
        mpfr_sub(r43580, r43566, r43563, MPFR_RNDN);
        mpfr_div(r43581, r43579, r43580, MPFR_RNDN);
        mpfr_sub(r43582, r43566, r43581, MPFR_RNDN);
        mpfr_sqrt(r43583, r43582, MPFR_RNDN);
        mpfr_mul(r43584, r43583, r43583, MPFR_RNDN);
        mpfr_log(r43585, r43584, MPFR_RNDN);
        mpfr_sub(r43586, r43566, r43585, MPFR_RNDN);
        if (mpfr_get_si(r43578, MPFR_RNDN)) { mpfr_set(r43587, r43586, MPFR_RNDN); } else { mpfr_set(r43587, r43576, MPFR_RNDN); };
        if (mpfr_get_si(r43565, MPFR_RNDN)) { mpfr_set(r43588, r43576, MPFR_RNDN); } else { mpfr_set(r43588, r43587, MPFR_RNDN); };
        return mpfr_get_d(r43588, MPFR_RNDN);
}

static mpfr_t r43589, r43590, r43591, r43592, r43593, r43594, r43595, r43596, r43597, r43598, r43599, r43600, r43601, r43602, r43603, r43604, r43605, r43606, r43607, r43608, r43609, r43610, r43611, r43612, r43613, r43614;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43589);
        mpfr_init_set_str(r43590, "-159550078.41948086", 10, MPFR_RNDN);
        mpfr_init(r43591);
        mpfr_init_set_str(r43592, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43593);
        mpfr_init(r43594);
        mpfr_init(r43595);
        mpfr_init(r43596);
        mpfr_init(r43597);
        mpfr_init(r43598);
        mpfr_init(r43599);
        mpfr_init(r43600);
        mpfr_init(r43601);
        mpfr_init(r43602);
        mpfr_init_set_str(r43603, "5654171.140492215", 10, MPFR_RNDN);
        mpfr_init(r43604);
        mpfr_init(r43605);
        mpfr_init(r43606);
        mpfr_init(r43607);
        mpfr_init(r43608);
        mpfr_init(r43609);
        mpfr_init(r43610);
        mpfr_init(r43611);
        mpfr_init(r43612);
        mpfr_init(r43613);
        mpfr_init(r43614);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43589, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43591, mpfr_cmp(r43589, r43590) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r43593, x, MPFR_RNDN);
        mpfr_mul(r43594, r43593, r43592, MPFR_RNDN);
        mpfr_mul(r43595, r43589, r43589, MPFR_RNDN);
        mpfr_div(r43596, r43594, r43595, MPFR_RNDN);
        mpfr_div(r43597, r43593, r43589, MPFR_RNDN);
        mpfr_div(r43598, r43592, r43589, MPFR_RNDN);
        mpfr_sub(r43599, r43597, r43598, MPFR_RNDN);
        mpfr_add(r43600, r43596, r43599, MPFR_RNDN);
        mpfr_log(r43601, r43600, MPFR_RNDN);
        mpfr_sub(r43602, r43592, r43601, MPFR_RNDN);
        ;
        mpfr_set_si(r43604, mpfr_cmp(r43589, r43603) <= 0, MPFR_RNDN);
        mpfr_sub(r43605, r43593, r43589, MPFR_RNDN);
        mpfr_sub(r43606, r43592, r43589, MPFR_RNDN);
        mpfr_div(r43607, r43605, r43606, MPFR_RNDN);
        mpfr_sub(r43608, r43592, r43607, MPFR_RNDN);
        mpfr_sqrt(r43609, r43608, MPFR_RNDN);
        mpfr_mul(r43610, r43609, r43609, MPFR_RNDN);
        mpfr_log(r43611, r43610, MPFR_RNDN);
        mpfr_sub(r43612, r43592, r43611, MPFR_RNDN);
        if (mpfr_get_si(r43604, MPFR_RNDN)) { mpfr_set(r43613, r43612, MPFR_RNDN); } else { mpfr_set(r43613, r43602, MPFR_RNDN); };
        if (mpfr_get_si(r43591, MPFR_RNDN)) { mpfr_set(r43614, r43602, MPFR_RNDN); } else { mpfr_set(r43614, r43613, MPFR_RNDN); };
        return mpfr_get_d(r43614, MPFR_RNDN);
}

