#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 r43386 = 2.30753;
        float r43387 = x;
        float r43388 = 0.27061;
        float r43389 = r43387 * r43388;
        float r43390 = r43386 + r43389;
        float r43391 = 1.0;
        float r43392 = 0.99229;
        float r43393 = 0.04481;
        float r43394 = r43387 * r43393;
        float r43395 = r43392 + r43394;
        float r43396 = r43387 * r43395;
        float r43397 = r43391 + r43396;
        float r43398 = r43390 / r43397;
        float r43399 = r43398 - r43387;
        return r43399;
}

double f_id(double x) {
        double r43400 = 2.30753;
        double r43401 = x;
        double r43402 = 0.27061;
        double r43403 = r43401 * r43402;
        double r43404 = r43400 + r43403;
        double r43405 = 1.0;
        double r43406 = 0.99229;
        double r43407 = 0.04481;
        double r43408 = r43401 * r43407;
        double r43409 = r43406 + r43408;
        double r43410 = r43401 * r43409;
        double r43411 = r43405 + r43410;
        double r43412 = r43404 / r43411;
        double r43413 = r43412 - r43401;
        return r43413;
}


double f_of(float x) {
        float r43414 = 2.30753;
        float r43415 = x;
        float r43416 = 0.27061;
        float r43417 = r43415 * r43416;
        float r43418 = r43414 + r43417;
        float r43419 = 1.0;
        float r43420 = 0.99229;
        float r43421 = 0.04481;
        float r43422 = r43415 * r43421;
        float r43423 = r43420 + r43422;
        float r43424 = r43415 * r43423;
        float r43425 = r43419 + r43424;
        float r43426 = r43418 / r43425;
        float r43427 = r43426 - r43415;
        return r43427;
}

double f_od(double x) {
        double r43428 = 2.30753;
        double r43429 = x;
        double r43430 = 0.27061;
        double r43431 = r43429 * r43430;
        double r43432 = r43428 + r43431;
        double r43433 = 1.0;
        double r43434 = 0.99229;
        double r43435 = 0.04481;
        double r43436 = r43429 * r43435;
        double r43437 = r43434 + r43436;
        double r43438 = r43429 * r43437;
        double r43439 = r43433 + r43438;
        double r43440 = r43432 / r43439;
        double r43441 = r43440 - r43429;
        return r43441;
}

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 r43442, r43443, r43444, r43445, r43446, r43447, r43448, r43449, r43450, r43451, r43452, r43453, r43454, r43455;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43442, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43443);
        mpfr_init_set_str(r43444, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43445);
        mpfr_init(r43446);
        mpfr_init_set_str(r43447, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43448, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43449, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43450);
        mpfr_init(r43451);
        mpfr_init(r43452);
        mpfr_init(r43453);
        mpfr_init(r43454);
        mpfr_init(r43455);
}

double f_im(double x) {
        ;
        mpfr_set_d(r43443, x, MPFR_RNDN);
        ;
        mpfr_mul(r43445, r43443, r43444, MPFR_RNDN);
        mpfr_add(r43446, r43442, r43445, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43450, r43443, r43449, MPFR_RNDN);
        mpfr_add(r43451, r43448, r43450, MPFR_RNDN);
        mpfr_mul(r43452, r43443, r43451, MPFR_RNDN);
        mpfr_add(r43453, r43447, r43452, MPFR_RNDN);
        mpfr_div(r43454, r43446, r43453, MPFR_RNDN);
        mpfr_sub(r43455, r43454, r43443, MPFR_RNDN);
        return mpfr_get_d(r43455, MPFR_RNDN);
}

static mpfr_t r43456, r43457, r43458, r43459, r43460, r43461, r43462, r43463, r43464, r43465, r43466, r43467, r43468, r43469;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43456, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43457);
        mpfr_init_set_str(r43458, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43459);
        mpfr_init(r43460);
        mpfr_init_set_str(r43461, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43462, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43463, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43464);
        mpfr_init(r43465);
        mpfr_init(r43466);
        mpfr_init(r43467);
        mpfr_init(r43468);
        mpfr_init(r43469);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r43457, x, MPFR_RNDN);
        ;
        mpfr_mul(r43459, r43457, r43458, MPFR_RNDN);
        mpfr_add(r43460, r43456, r43459, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43464, r43457, r43463, MPFR_RNDN);
        mpfr_add(r43465, r43462, r43464, MPFR_RNDN);
        mpfr_mul(r43466, r43457, r43465, MPFR_RNDN);
        mpfr_add(r43467, r43461, r43466, MPFR_RNDN);
        mpfr_div(r43468, r43460, r43467, MPFR_RNDN);
        mpfr_sub(r43469, r43468, r43457, MPFR_RNDN);
        return mpfr_get_d(r43469, MPFR_RNDN);
}

static mpfr_t r43470, r43471, r43472, r43473, r43474, r43475, r43476, r43477, r43478, r43479, r43480, r43481, r43482, r43483;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43470, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43471);
        mpfr_init_set_str(r43472, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43473);
        mpfr_init(r43474);
        mpfr_init_set_str(r43475, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43476, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43477, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43478);
        mpfr_init(r43479);
        mpfr_init(r43480);
        mpfr_init(r43481);
        mpfr_init(r43482);
        mpfr_init(r43483);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r43471, x, MPFR_RNDN);
        ;
        mpfr_mul(r43473, r43471, r43472, MPFR_RNDN);
        mpfr_add(r43474, r43470, r43473, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43478, r43471, r43477, MPFR_RNDN);
        mpfr_add(r43479, r43476, r43478, MPFR_RNDN);
        mpfr_mul(r43480, r43471, r43479, MPFR_RNDN);
        mpfr_add(r43481, r43475, r43480, MPFR_RNDN);
        mpfr_div(r43482, r43474, r43481, MPFR_RNDN);
        mpfr_sub(r43483, r43482, r43471, MPFR_RNDN);
        return mpfr_get_d(r43483, MPFR_RNDN);
}

