#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 r43156 = 2.30753;
        float r43157 = x;
        float r43158 = 0.27061;
        float r43159 = r43157 * r43158;
        float r43160 = r43156 + r43159;
        float r43161 = 1.0;
        float r43162 = 0.99229;
        float r43163 = 0.04481;
        float r43164 = r43157 * r43163;
        float r43165 = r43162 + r43164;
        float r43166 = r43157 * r43165;
        float r43167 = r43161 + r43166;
        float r43168 = r43160 / r43167;
        float r43169 = r43168 - r43157;
        return r43169;
}

double f_id(double x) {
        double r43170 = 2.30753;
        double r43171 = x;
        double r43172 = 0.27061;
        double r43173 = r43171 * r43172;
        double r43174 = r43170 + r43173;
        double r43175 = 1.0;
        double r43176 = 0.99229;
        double r43177 = 0.04481;
        double r43178 = r43171 * r43177;
        double r43179 = r43176 + r43178;
        double r43180 = r43171 * r43179;
        double r43181 = r43175 + r43180;
        double r43182 = r43174 / r43181;
        double r43183 = r43182 - r43171;
        return r43183;
}


double f_of(float x) {
        float r43184 = 2.30753;
        float r43185 = x;
        float r43186 = 0.27061;
        float r43187 = r43185 * r43186;
        float r43188 = r43184 + r43187;
        float r43189 = 1.0;
        float r43190 = 0.99229;
        float r43191 = 0.04481;
        float r43192 = r43185 * r43191;
        float r43193 = r43190 + r43192;
        float r43194 = r43185 * r43193;
        float r43195 = r43189 + r43194;
        float r43196 = r43188 / r43195;
        float r43197 = r43196 - r43185;
        return r43197;
}

double f_od(double x) {
        double r43198 = 2.30753;
        double r43199 = x;
        double r43200 = 0.27061;
        double r43201 = r43199 * r43200;
        double r43202 = r43198 + r43201;
        double r43203 = 1.0;
        double r43204 = 0.99229;
        double r43205 = 0.04481;
        double r43206 = r43199 * r43205;
        double r43207 = r43204 + r43206;
        double r43208 = r43199 * r43207;
        double r43209 = r43203 + r43208;
        double r43210 = r43202 / r43209;
        double r43211 = r43210 - r43199;
        return r43211;
}

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 r43212, r43213, r43214, r43215, r43216, r43217, r43218, r43219, r43220, r43221, r43222, r43223, r43224, r43225;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43212, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43213);
        mpfr_init_set_str(r43214, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43215);
        mpfr_init(r43216);
        mpfr_init_set_str(r43217, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43218, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43219, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43220);
        mpfr_init(r43221);
        mpfr_init(r43222);
        mpfr_init(r43223);
        mpfr_init(r43224);
        mpfr_init(r43225);
}

double f_im(double x) {
        ;
        mpfr_set_d(r43213, x, MPFR_RNDN);
        ;
        mpfr_mul(r43215, r43213, r43214, MPFR_RNDN);
        mpfr_add(r43216, r43212, r43215, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43220, r43213, r43219, MPFR_RNDN);
        mpfr_add(r43221, r43218, r43220, MPFR_RNDN);
        mpfr_mul(r43222, r43213, r43221, MPFR_RNDN);
        mpfr_add(r43223, r43217, r43222, MPFR_RNDN);
        mpfr_div(r43224, r43216, r43223, MPFR_RNDN);
        mpfr_sub(r43225, r43224, r43213, MPFR_RNDN);
        return mpfr_get_d(r43225, MPFR_RNDN);
}

static mpfr_t r43226, r43227, r43228, r43229, r43230, r43231, r43232, r43233, r43234, r43235, r43236, r43237, r43238, r43239;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43226, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43227);
        mpfr_init_set_str(r43228, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43229);
        mpfr_init(r43230);
        mpfr_init_set_str(r43231, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43232, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43233, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43234);
        mpfr_init(r43235);
        mpfr_init(r43236);
        mpfr_init(r43237);
        mpfr_init(r43238);
        mpfr_init(r43239);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r43227, x, MPFR_RNDN);
        ;
        mpfr_mul(r43229, r43227, r43228, MPFR_RNDN);
        mpfr_add(r43230, r43226, r43229, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43234, r43227, r43233, MPFR_RNDN);
        mpfr_add(r43235, r43232, r43234, MPFR_RNDN);
        mpfr_mul(r43236, r43227, r43235, MPFR_RNDN);
        mpfr_add(r43237, r43231, r43236, MPFR_RNDN);
        mpfr_div(r43238, r43230, r43237, MPFR_RNDN);
        mpfr_sub(r43239, r43238, r43227, MPFR_RNDN);
        return mpfr_get_d(r43239, MPFR_RNDN);
}

static mpfr_t r43240, r43241, r43242, r43243, r43244, r43245, r43246, r43247, r43248, r43249, r43250, r43251, r43252, r43253;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43240, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43241);
        mpfr_init_set_str(r43242, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43243);
        mpfr_init(r43244);
        mpfr_init_set_str(r43245, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43246, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43247, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43248);
        mpfr_init(r43249);
        mpfr_init(r43250);
        mpfr_init(r43251);
        mpfr_init(r43252);
        mpfr_init(r43253);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r43241, x, MPFR_RNDN);
        ;
        mpfr_mul(r43243, r43241, r43242, MPFR_RNDN);
        mpfr_add(r43244, r43240, r43243, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43248, r43241, r43247, MPFR_RNDN);
        mpfr_add(r43249, r43246, r43248, MPFR_RNDN);
        mpfr_mul(r43250, r43241, r43249, MPFR_RNDN);
        mpfr_add(r43251, r43245, r43250, MPFR_RNDN);
        mpfr_div(r43252, r43244, r43251, MPFR_RNDN);
        mpfr_sub(r43253, r43252, r43241, MPFR_RNDN);
        return mpfr_get_d(r43253, MPFR_RNDN);
}

