#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 r43254 = 1.0;
        float r43255 = x;
        float r43256 = y;
        float r43257 = r43255 - r43256;
        float r43258 = r43254 - r43256;
        float r43259 = r43257 / r43258;
        float r43260 = r43254 - r43259;
        float r43261 = log(r43260);
        float r43262 = r43254 - r43261;
        return r43262;
}

double f_id(double x, double y) {
        double r43263 = 1.0;
        double r43264 = x;
        double r43265 = y;
        double r43266 = r43264 - r43265;
        double r43267 = r43263 - r43265;
        double r43268 = r43266 / r43267;
        double r43269 = r43263 - r43268;
        double r43270 = log(r43269);
        double r43271 = r43263 - r43270;
        return r43271;
}


double f_of(float x, float y) {
        float r43272 = x;
        float r43273 = y;
        float r43274 = r43272 - r43273;
        float r43275 = 1.0;
        float r43276 = r43275 - r43273;
        float r43277 = r43274 / r43276;
        float r43278 = 0.9995693633938032;
        bool r43279 = r43277 <= r43278;
        float r43280 = exp(r43275);
        float r43281 = r43275 - r43277;
        float r43282 = r43280 / r43281;
        float r43283 = log(r43282);
        float r43284 = r43272 * r43275;
        float r43285 = r43273 * r43273;
        float r43286 = r43284 / r43285;
        float r43287 = r43272 / r43273;
        float r43288 = r43275 / r43273;
        float r43289 = r43287 - r43288;
        float r43290 = r43286 + r43289;
        float r43291 = log(r43290);
        float r43292 = r43275 - r43291;
        float r43293 = r43279 ? r43283 : r43292;
        return r43293;
}

double f_od(double x, double y) {
        double r43294 = x;
        double r43295 = y;
        double r43296 = r43294 - r43295;
        double r43297 = 1.0;
        double r43298 = r43297 - r43295;
        double r43299 = r43296 / r43298;
        double r43300 = 0.9995693633938032;
        bool r43301 = r43299 <= r43300;
        double r43302 = exp(r43297);
        double r43303 = r43297 - r43299;
        double r43304 = r43302 / r43303;
        double r43305 = log(r43304);
        double r43306 = r43294 * r43297;
        double r43307 = r43295 * r43295;
        double r43308 = r43306 / r43307;
        double r43309 = r43294 / r43295;
        double r43310 = r43297 / r43295;
        double r43311 = r43309 - r43310;
        double r43312 = r43308 + r43311;
        double r43313 = log(r43312);
        double r43314 = r43297 - r43313;
        double r43315 = r43301 ? r43305 : r43314;
        return r43315;
}

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 r43316, r43317, r43318, r43319, r43320, r43321, r43322, r43323, r43324;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r43316, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43317);
        mpfr_init(r43318);
        mpfr_init(r43319);
        mpfr_init(r43320);
        mpfr_init(r43321);
        mpfr_init(r43322);
        mpfr_init(r43323);
        mpfr_init(r43324);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43317, x, MPFR_RNDN);
        mpfr_set_d(r43318, y, MPFR_RNDN);
        mpfr_sub(r43319, r43317, r43318, MPFR_RNDN);
        mpfr_sub(r43320, r43316, r43318, MPFR_RNDN);
        mpfr_div(r43321, r43319, r43320, MPFR_RNDN);
        mpfr_sub(r43322, r43316, r43321, MPFR_RNDN);
        mpfr_log(r43323, r43322, MPFR_RNDN);
        mpfr_sub(r43324, r43316, r43323, MPFR_RNDN);
        return mpfr_get_d(r43324, MPFR_RNDN);
}

static mpfr_t r43325, r43326, r43327, r43328, r43329, r43330, r43331, r43332, r43333, r43334, r43335, r43336, r43337, r43338, r43339, r43340, r43341, r43342, r43343, r43344, r43345, r43346;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43325);
        mpfr_init(r43326);
        mpfr_init(r43327);
        mpfr_init_set_str(r43328, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43329);
        mpfr_init(r43330);
        mpfr_init_set_str(r43331, "0.9995693633938032", 10, MPFR_RNDN);
        mpfr_init(r43332);
        mpfr_init(r43333);
        mpfr_init(r43334);
        mpfr_init(r43335);
        mpfr_init(r43336);
        mpfr_init(r43337);
        mpfr_init(r43338);
        mpfr_init(r43339);
        mpfr_init(r43340);
        mpfr_init(r43341);
        mpfr_init(r43342);
        mpfr_init(r43343);
        mpfr_init(r43344);
        mpfr_init(r43345);
        mpfr_init(r43346);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43325, x, MPFR_RNDN);
        mpfr_set_d(r43326, y, MPFR_RNDN);
        mpfr_sub(r43327, r43325, r43326, MPFR_RNDN);
        ;
        mpfr_sub(r43329, r43328, r43326, MPFR_RNDN);
        mpfr_div(r43330, r43327, r43329, MPFR_RNDN);
        ;
        mpfr_set_si(r43332, mpfr_cmp(r43330, r43331) <= 0, MPFR_RNDN);
        mpfr_exp(r43333, r43328, MPFR_RNDN);
        mpfr_sub(r43334, r43328, r43330, MPFR_RNDN);
        mpfr_div(r43335, r43333, r43334, MPFR_RNDN);
        mpfr_log(r43336, r43335, MPFR_RNDN);
        mpfr_mul(r43337, r43325, r43328, MPFR_RNDN);
        mpfr_mul(r43338, r43326, r43326, MPFR_RNDN);
        mpfr_div(r43339, r43337, r43338, MPFR_RNDN);
        mpfr_div(r43340, r43325, r43326, MPFR_RNDN);
        mpfr_div(r43341, r43328, r43326, MPFR_RNDN);
        mpfr_sub(r43342, r43340, r43341, MPFR_RNDN);
        mpfr_add(r43343, r43339, r43342, MPFR_RNDN);
        mpfr_log(r43344, r43343, MPFR_RNDN);
        mpfr_sub(r43345, r43328, r43344, MPFR_RNDN);
        if (mpfr_get_si(r43332, MPFR_RNDN)) { mpfr_set(r43346, r43336, MPFR_RNDN); } else { mpfr_set(r43346, r43345, MPFR_RNDN); };
        return mpfr_get_d(r43346, MPFR_RNDN);
}

static mpfr_t r43347, r43348, r43349, r43350, r43351, r43352, r43353, r43354, r43355, r43356, r43357, r43358, r43359, r43360, r43361, r43362, r43363, r43364, r43365, r43366, r43367, r43368;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43347);
        mpfr_init(r43348);
        mpfr_init(r43349);
        mpfr_init_set_str(r43350, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43351);
        mpfr_init(r43352);
        mpfr_init_set_str(r43353, "0.9995693633938032", 10, MPFR_RNDN);
        mpfr_init(r43354);
        mpfr_init(r43355);
        mpfr_init(r43356);
        mpfr_init(r43357);
        mpfr_init(r43358);
        mpfr_init(r43359);
        mpfr_init(r43360);
        mpfr_init(r43361);
        mpfr_init(r43362);
        mpfr_init(r43363);
        mpfr_init(r43364);
        mpfr_init(r43365);
        mpfr_init(r43366);
        mpfr_init(r43367);
        mpfr_init(r43368);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43347, x, MPFR_RNDN);
        mpfr_set_d(r43348, y, MPFR_RNDN);
        mpfr_sub(r43349, r43347, r43348, MPFR_RNDN);
        ;
        mpfr_sub(r43351, r43350, r43348, MPFR_RNDN);
        mpfr_div(r43352, r43349, r43351, MPFR_RNDN);
        ;
        mpfr_set_si(r43354, mpfr_cmp(r43352, r43353) <= 0, MPFR_RNDN);
        mpfr_exp(r43355, r43350, MPFR_RNDN);
        mpfr_sub(r43356, r43350, r43352, MPFR_RNDN);
        mpfr_div(r43357, r43355, r43356, MPFR_RNDN);
        mpfr_log(r43358, r43357, MPFR_RNDN);
        mpfr_mul(r43359, r43347, r43350, MPFR_RNDN);
        mpfr_mul(r43360, r43348, r43348, MPFR_RNDN);
        mpfr_div(r43361, r43359, r43360, MPFR_RNDN);
        mpfr_div(r43362, r43347, r43348, MPFR_RNDN);
        mpfr_div(r43363, r43350, r43348, MPFR_RNDN);
        mpfr_sub(r43364, r43362, r43363, MPFR_RNDN);
        mpfr_add(r43365, r43361, r43364, MPFR_RNDN);
        mpfr_log(r43366, r43365, MPFR_RNDN);
        mpfr_sub(r43367, r43350, r43366, MPFR_RNDN);
        if (mpfr_get_si(r43354, MPFR_RNDN)) { mpfr_set(r43368, r43358, MPFR_RNDN); } else { mpfr_set(r43368, r43367, MPFR_RNDN); };
        return mpfr_get_d(r43368, MPFR_RNDN);
}

