#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 r43610 = 2.30753;
        float r43611 = x;
        float r43612 = 0.27061;
        float r43613 = r43611 * r43612;
        float r43614 = r43610 + r43613;
        float r43615 = 1.0;
        float r43616 = 0.99229;
        float r43617 = 0.04481;
        float r43618 = r43611 * r43617;
        float r43619 = r43616 + r43618;
        float r43620 = r43611 * r43619;
        float r43621 = r43615 + r43620;
        float r43622 = r43614 / r43621;
        float r43623 = r43622 - r43611;
        return r43623;
}

double f_id(double x) {
        double r43624 = 2.30753;
        double r43625 = x;
        double r43626 = 0.27061;
        double r43627 = r43625 * r43626;
        double r43628 = r43624 + r43627;
        double r43629 = 1.0;
        double r43630 = 0.99229;
        double r43631 = 0.04481;
        double r43632 = r43625 * r43631;
        double r43633 = r43630 + r43632;
        double r43634 = r43625 * r43633;
        double r43635 = r43629 + r43634;
        double r43636 = r43628 / r43635;
        double r43637 = r43636 - r43625;
        return r43637;
}


double f_of(float x) {
        float r43638 = 2.30753;
        float r43639 = x;
        float r43640 = 0.27061;
        float r43641 = r43639 * r43640;
        float r43642 = r43638 + r43641;
        float r43643 = 1.0;
        float r43644 = 0.99229;
        float r43645 = 0.04481;
        float r43646 = r43639 * r43645;
        float r43647 = r43644 + r43646;
        float r43648 = r43639 * r43647;
        float r43649 = r43643 + r43648;
        float r43650 = r43642 / r43649;
        float r43651 = r43650 - r43639;
        return r43651;
}

double f_od(double x) {
        double r43652 = 2.30753;
        double r43653 = x;
        double r43654 = 0.27061;
        double r43655 = r43653 * r43654;
        double r43656 = r43652 + r43655;
        double r43657 = 1.0;
        double r43658 = 0.99229;
        double r43659 = 0.04481;
        double r43660 = r43653 * r43659;
        double r43661 = r43658 + r43660;
        double r43662 = r43653 * r43661;
        double r43663 = r43657 + r43662;
        double r43664 = r43656 / r43663;
        double r43665 = r43664 - r43653;
        return r43665;
}

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 r43666, r43667, r43668, r43669, r43670, r43671, r43672, r43673, r43674, r43675, r43676, r43677, r43678, r43679;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43666, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43667);
        mpfr_init_set_str(r43668, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43669);
        mpfr_init(r43670);
        mpfr_init_set_str(r43671, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43672, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43673, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43674);
        mpfr_init(r43675);
        mpfr_init(r43676);
        mpfr_init(r43677);
        mpfr_init(r43678);
        mpfr_init(r43679);
}

double f_im(double x) {
        ;
        mpfr_set_d(r43667, x, MPFR_RNDN);
        ;
        mpfr_mul(r43669, r43667, r43668, MPFR_RNDN);
        mpfr_add(r43670, r43666, r43669, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43674, r43667, r43673, MPFR_RNDN);
        mpfr_add(r43675, r43672, r43674, MPFR_RNDN);
        mpfr_mul(r43676, r43667, r43675, MPFR_RNDN);
        mpfr_add(r43677, r43671, r43676, MPFR_RNDN);
        mpfr_div(r43678, r43670, r43677, MPFR_RNDN);
        mpfr_sub(r43679, r43678, r43667, MPFR_RNDN);
        return mpfr_get_d(r43679, MPFR_RNDN);
}

static mpfr_t r43680, r43681, r43682, r43683, r43684, r43685, r43686, r43687, r43688, r43689, r43690, r43691, r43692, r43693;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43680, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43681);
        mpfr_init_set_str(r43682, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43683);
        mpfr_init(r43684);
        mpfr_init_set_str(r43685, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43686, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43687, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43688);
        mpfr_init(r43689);
        mpfr_init(r43690);
        mpfr_init(r43691);
        mpfr_init(r43692);
        mpfr_init(r43693);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r43681, x, MPFR_RNDN);
        ;
        mpfr_mul(r43683, r43681, r43682, MPFR_RNDN);
        mpfr_add(r43684, r43680, r43683, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43688, r43681, r43687, MPFR_RNDN);
        mpfr_add(r43689, r43686, r43688, MPFR_RNDN);
        mpfr_mul(r43690, r43681, r43689, MPFR_RNDN);
        mpfr_add(r43691, r43685, r43690, MPFR_RNDN);
        mpfr_div(r43692, r43684, r43691, MPFR_RNDN);
        mpfr_sub(r43693, r43692, r43681, MPFR_RNDN);
        return mpfr_get_d(r43693, MPFR_RNDN);
}

static mpfr_t r43694, r43695, r43696, r43697, r43698, r43699, r43700, r43701, r43702, r43703, r43704, r43705, r43706, r43707;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43694, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43695);
        mpfr_init_set_str(r43696, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43697);
        mpfr_init(r43698);
        mpfr_init_set_str(r43699, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43700, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43701, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43702);
        mpfr_init(r43703);
        mpfr_init(r43704);
        mpfr_init(r43705);
        mpfr_init(r43706);
        mpfr_init(r43707);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r43695, x, MPFR_RNDN);
        ;
        mpfr_mul(r43697, r43695, r43696, MPFR_RNDN);
        mpfr_add(r43698, r43694, r43697, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43702, r43695, r43701, MPFR_RNDN);
        mpfr_add(r43703, r43700, r43702, MPFR_RNDN);
        mpfr_mul(r43704, r43695, r43703, MPFR_RNDN);
        mpfr_add(r43705, r43699, r43704, MPFR_RNDN);
        mpfr_div(r43706, r43698, r43705, MPFR_RNDN);
        mpfr_sub(r43707, r43706, r43695, MPFR_RNDN);
        return mpfr_get_d(r43707, MPFR_RNDN);
}

