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

double f_if(float x) {
        float r43314 = 2.30753;
        float r43315 = x;
        float r43316 = 0.27061;
        float r43317 = r43315 * r43316;
        float r43318 = r43314 + r43317;
        float r43319 = 1.0;
        float r43320 = 0.99229;
        float r43321 = 0.04481;
        float r43322 = r43315 * r43321;
        float r43323 = r43320 + r43322;
        float r43324 = r43315 * r43323;
        float r43325 = r43319 + r43324;
        float r43326 = r43318 / r43325;
        float r43327 = r43326 - r43315;
        return r43327;
}

double f_id(double x) {
        double r43328 = 2.30753;
        double r43329 = x;
        double r43330 = 0.27061;
        double r43331 = r43329 * r43330;
        double r43332 = r43328 + r43331;
        double r43333 = 1.0;
        double r43334 = 0.99229;
        double r43335 = 0.04481;
        double r43336 = r43329 * r43335;
        double r43337 = r43334 + r43336;
        double r43338 = r43329 * r43337;
        double r43339 = r43333 + r43338;
        double r43340 = r43332 / r43339;
        double r43341 = r43340 - r43329;
        return r43341;
}


double f_of(float x) {
        float r43342 = 2.30753;
        float r43343 = x;
        float r43344 = 0.27061;
        float r43345 = r43343 * r43344;
        float r43346 = r43342 + r43345;
        float r43347 = 1.0;
        float r43348 = 0.99229;
        float r43349 = 0.04481;
        float r43350 = r43343 * r43349;
        float r43351 = r43348 + r43350;
        float r43352 = r43343 * r43351;
        float r43353 = r43347 + r43352;
        float r43354 = r43346 / r43353;
        float r43355 = r43354 - r43343;
        return r43355;
}

double f_od(double x) {
        double r43356 = 2.30753;
        double r43357 = x;
        double r43358 = 0.27061;
        double r43359 = r43357 * r43358;
        double r43360 = r43356 + r43359;
        double r43361 = 1.0;
        double r43362 = 0.99229;
        double r43363 = 0.04481;
        double r43364 = r43357 * r43363;
        double r43365 = r43362 + r43364;
        double r43366 = r43357 * r43365;
        double r43367 = r43361 + r43366;
        double r43368 = r43360 / r43367;
        double r43369 = r43368 - r43357;
        return r43369;
}

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 r43370, r43371, r43372, r43373, r43374, r43375, r43376, r43377, r43378, r43379, r43380, r43381, r43382, r43383;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43370, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43371);
        mpfr_init_set_str(r43372, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43373);
        mpfr_init(r43374);
        mpfr_init_set_str(r43375, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43376, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43377, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43378);
        mpfr_init(r43379);
        mpfr_init(r43380);
        mpfr_init(r43381);
        mpfr_init(r43382);
        mpfr_init(r43383);
}

double f_im(double x) {
        ;
        mpfr_set_d(r43371, x, MPFR_RNDN);
        ;
        mpfr_mul(r43373, r43371, r43372, MPFR_RNDN);
        mpfr_add(r43374, r43370, r43373, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43378, r43371, r43377, MPFR_RNDN);
        mpfr_add(r43379, r43376, r43378, MPFR_RNDN);
        mpfr_mul(r43380, r43371, r43379, MPFR_RNDN);
        mpfr_add(r43381, r43375, r43380, MPFR_RNDN);
        mpfr_div(r43382, r43374, r43381, MPFR_RNDN);
        mpfr_sub(r43383, r43382, r43371, MPFR_RNDN);
        return mpfr_get_d(r43383, MPFR_RNDN);
}

static mpfr_t r43384, r43385, r43386, r43387, r43388, r43389, r43390, r43391, r43392, r43393, r43394, r43395, r43396, r43397;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43384, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43385);
        mpfr_init_set_str(r43386, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43387);
        mpfr_init(r43388);
        mpfr_init_set_str(r43389, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43390, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43391, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43392);
        mpfr_init(r43393);
        mpfr_init(r43394);
        mpfr_init(r43395);
        mpfr_init(r43396);
        mpfr_init(r43397);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r43385, x, MPFR_RNDN);
        ;
        mpfr_mul(r43387, r43385, r43386, MPFR_RNDN);
        mpfr_add(r43388, r43384, r43387, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43392, r43385, r43391, MPFR_RNDN);
        mpfr_add(r43393, r43390, r43392, MPFR_RNDN);
        mpfr_mul(r43394, r43385, r43393, MPFR_RNDN);
        mpfr_add(r43395, r43389, r43394, MPFR_RNDN);
        mpfr_div(r43396, r43388, r43395, MPFR_RNDN);
        mpfr_sub(r43397, r43396, r43385, MPFR_RNDN);
        return mpfr_get_d(r43397, MPFR_RNDN);
}

static mpfr_t r43398, r43399, r43400, r43401, r43402, r43403, r43404, r43405, r43406, r43407, r43408, r43409, r43410, r43411;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43398, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43399);
        mpfr_init_set_str(r43400, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43401);
        mpfr_init(r43402);
        mpfr_init_set_str(r43403, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43404, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43405, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43406);
        mpfr_init(r43407);
        mpfr_init(r43408);
        mpfr_init(r43409);
        mpfr_init(r43410);
        mpfr_init(r43411);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r43399, x, MPFR_RNDN);
        ;
        mpfr_mul(r43401, r43399, r43400, MPFR_RNDN);
        mpfr_add(r43402, r43398, r43401, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43406, r43399, r43405, MPFR_RNDN);
        mpfr_add(r43407, r43404, r43406, MPFR_RNDN);
        mpfr_mul(r43408, r43399, r43407, MPFR_RNDN);
        mpfr_add(r43409, r43403, r43408, MPFR_RNDN);
        mpfr_div(r43410, r43402, r43409, MPFR_RNDN);
        mpfr_sub(r43411, r43410, r43399, MPFR_RNDN);
        return mpfr_get_d(r43411, MPFR_RNDN);
}

