#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 r43708 = 1.0;
        float r43709 = x;
        float r43710 = y;
        float r43711 = r43709 - r43710;
        float r43712 = r43708 - r43710;
        float r43713 = r43711 / r43712;
        float r43714 = r43708 - r43713;
        float r43715 = log(r43714);
        float r43716 = r43708 - r43715;
        return r43716;
}

double f_id(double x, double y) {
        double r43717 = 1.0;
        double r43718 = x;
        double r43719 = y;
        double r43720 = r43718 - r43719;
        double r43721 = r43717 - r43719;
        double r43722 = r43720 / r43721;
        double r43723 = r43717 - r43722;
        double r43724 = log(r43723);
        double r43725 = r43717 - r43724;
        return r43725;
}


double f_of(float x, float y) {
        float r43726 = y;
        float r43727 = -159550078.41948086;
        bool r43728 = r43726 <= r43727;
        float r43729 = 1.0;
        float r43730 = x;
        float r43731 = r43730 * r43729;
        float r43732 = r43726 * r43726;
        float r43733 = r43731 / r43732;
        float r43734 = r43730 / r43726;
        float r43735 = r43729 / r43726;
        float r43736 = r43734 - r43735;
        float r43737 = r43733 + r43736;
        float r43738 = log(r43737);
        float r43739 = r43729 - r43738;
        float r43740 = 5654171.140492215;
        bool r43741 = r43726 <= r43740;
        float r43742 = r43730 - r43726;
        float r43743 = r43729 - r43726;
        float r43744 = r43742 / r43743;
        float r43745 = r43729 - r43744;
        float r43746 = sqrt(r43745);
        float r43747 = r43746 * r43746;
        float r43748 = log(r43747);
        float r43749 = r43729 - r43748;
        float r43750 = r43741 ? r43749 : r43739;
        float r43751 = r43728 ? r43739 : r43750;
        return r43751;
}

double f_od(double x, double y) {
        double r43752 = y;
        double r43753 = -159550078.41948086;
        bool r43754 = r43752 <= r43753;
        double r43755 = 1.0;
        double r43756 = x;
        double r43757 = r43756 * r43755;
        double r43758 = r43752 * r43752;
        double r43759 = r43757 / r43758;
        double r43760 = r43756 / r43752;
        double r43761 = r43755 / r43752;
        double r43762 = r43760 - r43761;
        double r43763 = r43759 + r43762;
        double r43764 = log(r43763);
        double r43765 = r43755 - r43764;
        double r43766 = 5654171.140492215;
        bool r43767 = r43752 <= r43766;
        double r43768 = r43756 - r43752;
        double r43769 = r43755 - r43752;
        double r43770 = r43768 / r43769;
        double r43771 = r43755 - r43770;
        double r43772 = sqrt(r43771);
        double r43773 = r43772 * r43772;
        double r43774 = log(r43773);
        double r43775 = r43755 - r43774;
        double r43776 = r43767 ? r43775 : r43765;
        double r43777 = r43754 ? r43765 : r43776;
        return r43777;
}

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 r43778, r43779, r43780, r43781, r43782, r43783, r43784, r43785, r43786;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r43778, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43779);
        mpfr_init(r43780);
        mpfr_init(r43781);
        mpfr_init(r43782);
        mpfr_init(r43783);
        mpfr_init(r43784);
        mpfr_init(r43785);
        mpfr_init(r43786);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43779, x, MPFR_RNDN);
        mpfr_set_d(r43780, y, MPFR_RNDN);
        mpfr_sub(r43781, r43779, r43780, MPFR_RNDN);
        mpfr_sub(r43782, r43778, r43780, MPFR_RNDN);
        mpfr_div(r43783, r43781, r43782, MPFR_RNDN);
        mpfr_sub(r43784, r43778, r43783, MPFR_RNDN);
        mpfr_log(r43785, r43784, MPFR_RNDN);
        mpfr_sub(r43786, r43778, r43785, MPFR_RNDN);
        return mpfr_get_d(r43786, MPFR_RNDN);
}

static mpfr_t r43787, r43788, r43789, r43790, r43791, r43792, r43793, r43794, r43795, r43796, r43797, r43798, r43799, r43800, r43801, r43802, r43803, r43804, r43805, r43806, r43807, r43808, r43809, r43810, r43811, r43812;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43787);
        mpfr_init_set_str(r43788, "-159550078.41948086", 10, MPFR_RNDN);
        mpfr_init(r43789);
        mpfr_init_set_str(r43790, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43791);
        mpfr_init(r43792);
        mpfr_init(r43793);
        mpfr_init(r43794);
        mpfr_init(r43795);
        mpfr_init(r43796);
        mpfr_init(r43797);
        mpfr_init(r43798);
        mpfr_init(r43799);
        mpfr_init(r43800);
        mpfr_init_set_str(r43801, "5654171.140492215", 10, MPFR_RNDN);
        mpfr_init(r43802);
        mpfr_init(r43803);
        mpfr_init(r43804);
        mpfr_init(r43805);
        mpfr_init(r43806);
        mpfr_init(r43807);
        mpfr_init(r43808);
        mpfr_init(r43809);
        mpfr_init(r43810);
        mpfr_init(r43811);
        mpfr_init(r43812);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43787, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43789, mpfr_cmp(r43787, r43788) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r43791, x, MPFR_RNDN);
        mpfr_mul(r43792, r43791, r43790, MPFR_RNDN);
        mpfr_mul(r43793, r43787, r43787, MPFR_RNDN);
        mpfr_div(r43794, r43792, r43793, MPFR_RNDN);
        mpfr_div(r43795, r43791, r43787, MPFR_RNDN);
        mpfr_div(r43796, r43790, r43787, MPFR_RNDN);
        mpfr_sub(r43797, r43795, r43796, MPFR_RNDN);
        mpfr_add(r43798, r43794, r43797, MPFR_RNDN);
        mpfr_log(r43799, r43798, MPFR_RNDN);
        mpfr_sub(r43800, r43790, r43799, MPFR_RNDN);
        ;
        mpfr_set_si(r43802, mpfr_cmp(r43787, r43801) <= 0, MPFR_RNDN);
        mpfr_sub(r43803, r43791, r43787, MPFR_RNDN);
        mpfr_sub(r43804, r43790, r43787, MPFR_RNDN);
        mpfr_div(r43805, r43803, r43804, MPFR_RNDN);
        mpfr_sub(r43806, r43790, r43805, MPFR_RNDN);
        mpfr_sqrt(r43807, r43806, MPFR_RNDN);
        mpfr_mul(r43808, r43807, r43807, MPFR_RNDN);
        mpfr_log(r43809, r43808, MPFR_RNDN);
        mpfr_sub(r43810, r43790, r43809, MPFR_RNDN);
        if (mpfr_get_si(r43802, MPFR_RNDN)) { mpfr_set(r43811, r43810, MPFR_RNDN); } else { mpfr_set(r43811, r43800, MPFR_RNDN); };
        if (mpfr_get_si(r43789, MPFR_RNDN)) { mpfr_set(r43812, r43800, MPFR_RNDN); } else { mpfr_set(r43812, r43811, MPFR_RNDN); };
        return mpfr_get_d(r43812, MPFR_RNDN);
}

static mpfr_t r43813, r43814, r43815, r43816, r43817, r43818, r43819, r43820, r43821, r43822, r43823, r43824, r43825, r43826, r43827, r43828, r43829, r43830, r43831, r43832, r43833, r43834, r43835, r43836, r43837, r43838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43813);
        mpfr_init_set_str(r43814, "-159550078.41948086", 10, MPFR_RNDN);
        mpfr_init(r43815);
        mpfr_init_set_str(r43816, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43817);
        mpfr_init(r43818);
        mpfr_init(r43819);
        mpfr_init(r43820);
        mpfr_init(r43821);
        mpfr_init(r43822);
        mpfr_init(r43823);
        mpfr_init(r43824);
        mpfr_init(r43825);
        mpfr_init(r43826);
        mpfr_init_set_str(r43827, "5654171.140492215", 10, MPFR_RNDN);
        mpfr_init(r43828);
        mpfr_init(r43829);
        mpfr_init(r43830);
        mpfr_init(r43831);
        mpfr_init(r43832);
        mpfr_init(r43833);
        mpfr_init(r43834);
        mpfr_init(r43835);
        mpfr_init(r43836);
        mpfr_init(r43837);
        mpfr_init(r43838);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43813, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43815, mpfr_cmp(r43813, r43814) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r43817, x, MPFR_RNDN);
        mpfr_mul(r43818, r43817, r43816, MPFR_RNDN);
        mpfr_mul(r43819, r43813, r43813, MPFR_RNDN);
        mpfr_div(r43820, r43818, r43819, MPFR_RNDN);
        mpfr_div(r43821, r43817, r43813, MPFR_RNDN);
        mpfr_div(r43822, r43816, r43813, MPFR_RNDN);
        mpfr_sub(r43823, r43821, r43822, MPFR_RNDN);
        mpfr_add(r43824, r43820, r43823, MPFR_RNDN);
        mpfr_log(r43825, r43824, MPFR_RNDN);
        mpfr_sub(r43826, r43816, r43825, MPFR_RNDN);
        ;
        mpfr_set_si(r43828, mpfr_cmp(r43813, r43827) <= 0, MPFR_RNDN);
        mpfr_sub(r43829, r43817, r43813, MPFR_RNDN);
        mpfr_sub(r43830, r43816, r43813, MPFR_RNDN);
        mpfr_div(r43831, r43829, r43830, MPFR_RNDN);
        mpfr_sub(r43832, r43816, r43831, MPFR_RNDN);
        mpfr_sqrt(r43833, r43832, MPFR_RNDN);
        mpfr_mul(r43834, r43833, r43833, MPFR_RNDN);
        mpfr_log(r43835, r43834, MPFR_RNDN);
        mpfr_sub(r43836, r43816, r43835, MPFR_RNDN);
        if (mpfr_get_si(r43828, MPFR_RNDN)) { mpfr_set(r43837, r43836, MPFR_RNDN); } else { mpfr_set(r43837, r43826, MPFR_RNDN); };
        if (mpfr_get_si(r43815, MPFR_RNDN)) { mpfr_set(r43838, r43826, MPFR_RNDN); } else { mpfr_set(r43838, r43837, MPFR_RNDN); };
        return mpfr_get_d(r43838, MPFR_RNDN);
}

