#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 r43814 = 2.30753;
        float r43815 = x;
        float r43816 = 0.27061;
        float r43817 = r43815 * r43816;
        float r43818 = r43814 + r43817;
        float r43819 = 1.0;
        float r43820 = 0.99229;
        float r43821 = 0.04481;
        float r43822 = r43815 * r43821;
        float r43823 = r43820 + r43822;
        float r43824 = r43815 * r43823;
        float r43825 = r43819 + r43824;
        float r43826 = r43818 / r43825;
        float r43827 = r43826 - r43815;
        return r43827;
}

double f_id(double x) {
        double r43828 = 2.30753;
        double r43829 = x;
        double r43830 = 0.27061;
        double r43831 = r43829 * r43830;
        double r43832 = r43828 + r43831;
        double r43833 = 1.0;
        double r43834 = 0.99229;
        double r43835 = 0.04481;
        double r43836 = r43829 * r43835;
        double r43837 = r43834 + r43836;
        double r43838 = r43829 * r43837;
        double r43839 = r43833 + r43838;
        double r43840 = r43832 / r43839;
        double r43841 = r43840 - r43829;
        return r43841;
}


double f_of(float x) {
        float r43842 = 2.30753;
        float r43843 = x;
        float r43844 = 0.27061;
        float r43845 = r43843 * r43844;
        float r43846 = r43842 + r43845;
        float r43847 = 1.0;
        float r43848 = 0.99229;
        float r43849 = 0.04481;
        float r43850 = r43843 * r43849;
        float r43851 = r43848 + r43850;
        float r43852 = r43843 * r43851;
        float r43853 = r43847 + r43852;
        float r43854 = r43846 / r43853;
        float r43855 = r43854 - r43843;
        return r43855;
}

double f_od(double x) {
        double r43856 = 2.30753;
        double r43857 = x;
        double r43858 = 0.27061;
        double r43859 = r43857 * r43858;
        double r43860 = r43856 + r43859;
        double r43861 = 1.0;
        double r43862 = 0.99229;
        double r43863 = 0.04481;
        double r43864 = r43857 * r43863;
        double r43865 = r43862 + r43864;
        double r43866 = r43857 * r43865;
        double r43867 = r43861 + r43866;
        double r43868 = r43860 / r43867;
        double r43869 = r43868 - r43857;
        return r43869;
}

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 r43870, r43871, r43872, r43873, r43874, r43875, r43876, r43877, r43878, r43879, r43880, r43881, r43882, r43883;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43870, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43871);
        mpfr_init_set_str(r43872, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43873);
        mpfr_init(r43874);
        mpfr_init_set_str(r43875, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43876, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43877, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43878);
        mpfr_init(r43879);
        mpfr_init(r43880);
        mpfr_init(r43881);
        mpfr_init(r43882);
        mpfr_init(r43883);
}

double f_im(double x) {
        ;
        mpfr_set_d(r43871, x, MPFR_RNDN);
        ;
        mpfr_mul(r43873, r43871, r43872, MPFR_RNDN);
        mpfr_add(r43874, r43870, r43873, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43878, r43871, r43877, MPFR_RNDN);
        mpfr_add(r43879, r43876, r43878, MPFR_RNDN);
        mpfr_mul(r43880, r43871, r43879, MPFR_RNDN);
        mpfr_add(r43881, r43875, r43880, MPFR_RNDN);
        mpfr_div(r43882, r43874, r43881, MPFR_RNDN);
        mpfr_sub(r43883, r43882, r43871, MPFR_RNDN);
        return mpfr_get_d(r43883, MPFR_RNDN);
}

static mpfr_t r43884, r43885, r43886, r43887, r43888, r43889, r43890, r43891, r43892, r43893, r43894, r43895, r43896, r43897;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43884, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43885);
        mpfr_init_set_str(r43886, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43887);
        mpfr_init(r43888);
        mpfr_init_set_str(r43889, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43890, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43891, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43892);
        mpfr_init(r43893);
        mpfr_init(r43894);
        mpfr_init(r43895);
        mpfr_init(r43896);
        mpfr_init(r43897);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r43885, x, MPFR_RNDN);
        ;
        mpfr_mul(r43887, r43885, r43886, MPFR_RNDN);
        mpfr_add(r43888, r43884, r43887, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43892, r43885, r43891, MPFR_RNDN);
        mpfr_add(r43893, r43890, r43892, MPFR_RNDN);
        mpfr_mul(r43894, r43885, r43893, MPFR_RNDN);
        mpfr_add(r43895, r43889, r43894, MPFR_RNDN);
        mpfr_div(r43896, r43888, r43895, MPFR_RNDN);
        mpfr_sub(r43897, r43896, r43885, MPFR_RNDN);
        return mpfr_get_d(r43897, MPFR_RNDN);
}

static mpfr_t r43898, r43899, r43900, r43901, r43902, r43903, r43904, r43905, r43906, r43907, r43908, r43909, r43910, r43911;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43898, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r43899);
        mpfr_init_set_str(r43900, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r43901);
        mpfr_init(r43902);
        mpfr_init_set_str(r43903, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r43904, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r43905, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r43906);
        mpfr_init(r43907);
        mpfr_init(r43908);
        mpfr_init(r43909);
        mpfr_init(r43910);
        mpfr_init(r43911);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r43899, x, MPFR_RNDN);
        ;
        mpfr_mul(r43901, r43899, r43900, MPFR_RNDN);
        mpfr_add(r43902, r43898, r43901, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r43906, r43899, r43905, MPFR_RNDN);
        mpfr_add(r43907, r43904, r43906, MPFR_RNDN);
        mpfr_mul(r43908, r43899, r43907, MPFR_RNDN);
        mpfr_add(r43909, r43903, r43908, MPFR_RNDN);
        mpfr_div(r43910, r43902, r43909, MPFR_RNDN);
        mpfr_sub(r43911, r43910, r43899, MPFR_RNDN);
        return mpfr_get_d(r43911, MPFR_RNDN);
}

