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

double f_if(float x, float y) {
        float r43230 = 1.0;
        float r43231 = x;
        float r43232 = 9.0;
        float r43233 = r43231 * r43232;
        float r43234 = r43230 / r43233;
        float r43235 = r43230 - r43234;
        float r43236 = y;
        float r43237 = 3.0;
        float r43238 = sqrt(r43231);
        float r43239 = r43237 * r43238;
        float r43240 = r43236 / r43239;
        float r43241 = r43235 - r43240;
        return r43241;
}

double f_id(double x, double y) {
        double r43242 = 1.0;
        double r43243 = x;
        double r43244 = 9.0;
        double r43245 = r43243 * r43244;
        double r43246 = r43242 / r43245;
        double r43247 = r43242 - r43246;
        double r43248 = y;
        double r43249 = 3.0;
        double r43250 = sqrt(r43243);
        double r43251 = r43249 * r43250;
        double r43252 = r43248 / r43251;
        double r43253 = r43247 - r43252;
        return r43253;
}


double f_of(float x, float y) {
        float r43254 = 1.0;
        float r43255 = x;
        float r43256 = r43254 / r43255;
        float r43257 = 9.0;
        float r43258 = r43256 / r43257;
        float r43259 = r43254 - r43258;
        float r43260 = y;
        float r43261 = 3.0;
        float r43262 = sqrt(r43255);
        float r43263 = r43261 * r43262;
        float r43264 = r43260 / r43263;
        float r43265 = r43259 - r43264;
        return r43265;
}

double f_od(double x, double y) {
        double r43266 = 1.0;
        double r43267 = x;
        double r43268 = r43266 / r43267;
        double r43269 = 9.0;
        double r43270 = r43268 / r43269;
        double r43271 = r43266 - r43270;
        double r43272 = y;
        double r43273 = 3.0;
        double r43274 = sqrt(r43267);
        double r43275 = r43273 * r43274;
        double r43276 = r43272 / r43275;
        double r43277 = r43271 - r43276;
        return r43277;
}

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 r43278, r43279, r43280, r43281, r43282, r43283, r43284, r43285, r43286, r43287, r43288, r43289;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43278, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43279);
        mpfr_init_set_str(r43280, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43281);
        mpfr_init(r43282);
        mpfr_init(r43283);
        mpfr_init(r43284);
        mpfr_init_set_str(r43285, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43286);
        mpfr_init(r43287);
        mpfr_init(r43288);
        mpfr_init(r43289);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43279, x, MPFR_RNDN);
        ;
        mpfr_mul(r43281, r43279, r43280, MPFR_RNDN);
        mpfr_div(r43282, r43278, r43281, MPFR_RNDN);
        mpfr_sub(r43283, r43278, r43282, MPFR_RNDN);
        mpfr_set_d(r43284, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43286, r43279, MPFR_RNDN);
        mpfr_mul(r43287, r43285, r43286, MPFR_RNDN);
        mpfr_div(r43288, r43284, r43287, MPFR_RNDN);
        mpfr_sub(r43289, r43283, r43288, MPFR_RNDN);
        return mpfr_get_d(r43289, MPFR_RNDN);
}

static mpfr_t r43290, r43291, r43292, r43293, r43294, r43295, r43296, r43297, r43298, r43299, r43300, r43301;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43290, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43291);
        mpfr_init(r43292);
        mpfr_init_set_str(r43293, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43294);
        mpfr_init(r43295);
        mpfr_init(r43296);
        mpfr_init_set_str(r43297, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43298);
        mpfr_init(r43299);
        mpfr_init(r43300);
        mpfr_init(r43301);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r43291, x, MPFR_RNDN);
        mpfr_div(r43292, r43290, r43291, MPFR_RNDN);
        ;
        mpfr_div(r43294, r43292, r43293, MPFR_RNDN);
        mpfr_sub(r43295, r43290, r43294, MPFR_RNDN);
        mpfr_set_d(r43296, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43298, r43291, MPFR_RNDN);
        mpfr_mul(r43299, r43297, r43298, MPFR_RNDN);
        mpfr_div(r43300, r43296, r43299, MPFR_RNDN);
        mpfr_sub(r43301, r43295, r43300, MPFR_RNDN);
        return mpfr_get_d(r43301, MPFR_RNDN);
}

static mpfr_t r43302, r43303, r43304, r43305, r43306, r43307, r43308, r43309, r43310, r43311, r43312, r43313;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43302, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43303);
        mpfr_init(r43304);
        mpfr_init_set_str(r43305, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43306);
        mpfr_init(r43307);
        mpfr_init(r43308);
        mpfr_init_set_str(r43309, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43310);
        mpfr_init(r43311);
        mpfr_init(r43312);
        mpfr_init(r43313);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r43303, x, MPFR_RNDN);
        mpfr_div(r43304, r43302, r43303, MPFR_RNDN);
        ;
        mpfr_div(r43306, r43304, r43305, MPFR_RNDN);
        mpfr_sub(r43307, r43302, r43306, MPFR_RNDN);
        mpfr_set_d(r43308, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43310, r43303, MPFR_RNDN);
        mpfr_mul(r43311, r43309, r43310, MPFR_RNDN);
        mpfr_div(r43312, r43308, r43311, MPFR_RNDN);
        mpfr_sub(r43313, r43307, r43312, MPFR_RNDN);
        return mpfr_get_d(r43313, MPFR_RNDN);
}

