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

double f_if(float x, float y) {
        float r43072 = 1.0;
        float r43073 = x;
        float r43074 = 9.0;
        float r43075 = r43073 * r43074;
        float r43076 = r43072 / r43075;
        float r43077 = r43072 - r43076;
        float r43078 = y;
        float r43079 = 3.0;
        float r43080 = sqrt(r43073);
        float r43081 = r43079 * r43080;
        float r43082 = r43078 / r43081;
        float r43083 = r43077 - r43082;
        return r43083;
}

double f_id(double x, double y) {
        double r43084 = 1.0;
        double r43085 = x;
        double r43086 = 9.0;
        double r43087 = r43085 * r43086;
        double r43088 = r43084 / r43087;
        double r43089 = r43084 - r43088;
        double r43090 = y;
        double r43091 = 3.0;
        double r43092 = sqrt(r43085);
        double r43093 = r43091 * r43092;
        double r43094 = r43090 / r43093;
        double r43095 = r43089 - r43094;
        return r43095;
}


double f_of(float x, float y) {
        float r43096 = 1.0;
        float r43097 = x;
        float r43098 = 9.0;
        float r43099 = r43097 * r43098;
        float r43100 = r43096 / r43099;
        float r43101 = r43096 - r43100;
        float r43102 = y;
        float r43103 = 3.0;
        float r43104 = r43102 / r43103;
        float r43105 = sqrt(r43097);
        float r43106 = r43104 / r43105;
        float r43107 = r43101 - r43106;
        return r43107;
}

double f_od(double x, double y) {
        double r43108 = 1.0;
        double r43109 = x;
        double r43110 = 9.0;
        double r43111 = r43109 * r43110;
        double r43112 = r43108 / r43111;
        double r43113 = r43108 - r43112;
        double r43114 = y;
        double r43115 = 3.0;
        double r43116 = r43114 / r43115;
        double r43117 = sqrt(r43109);
        double r43118 = r43116 / r43117;
        double r43119 = r43113 - r43118;
        return r43119;
}

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 r43120, r43121, r43122, r43123, r43124, r43125, r43126, r43127, r43128, r43129, r43130, r43131;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43120, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43121);
        mpfr_init_set_str(r43122, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43123);
        mpfr_init(r43124);
        mpfr_init(r43125);
        mpfr_init(r43126);
        mpfr_init_set_str(r43127, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43128);
        mpfr_init(r43129);
        mpfr_init(r43130);
        mpfr_init(r43131);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43121, x, MPFR_RNDN);
        ;
        mpfr_mul(r43123, r43121, r43122, MPFR_RNDN);
        mpfr_div(r43124, r43120, r43123, MPFR_RNDN);
        mpfr_sub(r43125, r43120, r43124, MPFR_RNDN);
        mpfr_set_d(r43126, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43128, r43121, MPFR_RNDN);
        mpfr_mul(r43129, r43127, r43128, MPFR_RNDN);
        mpfr_div(r43130, r43126, r43129, MPFR_RNDN);
        mpfr_sub(r43131, r43125, r43130, MPFR_RNDN);
        return mpfr_get_d(r43131, MPFR_RNDN);
}

static mpfr_t r43132, r43133, r43134, r43135, r43136, r43137, r43138, r43139, r43140, r43141, r43142, r43143;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43132, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43133);
        mpfr_init_set_str(r43134, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43135);
        mpfr_init(r43136);
        mpfr_init(r43137);
        mpfr_init(r43138);
        mpfr_init_set_str(r43139, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43140);
        mpfr_init(r43141);
        mpfr_init(r43142);
        mpfr_init(r43143);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r43133, x, MPFR_RNDN);
        ;
        mpfr_mul(r43135, r43133, r43134, MPFR_RNDN);
        mpfr_div(r43136, r43132, r43135, MPFR_RNDN);
        mpfr_sub(r43137, r43132, r43136, MPFR_RNDN);
        mpfr_set_d(r43138, y, MPFR_RNDN);
        ;
        mpfr_div(r43140, r43138, r43139, MPFR_RNDN);
        mpfr_sqrt(r43141, r43133, MPFR_RNDN);
        mpfr_div(r43142, r43140, r43141, MPFR_RNDN);
        mpfr_sub(r43143, r43137, r43142, MPFR_RNDN);
        return mpfr_get_d(r43143, MPFR_RNDN);
}

static mpfr_t r43144, r43145, r43146, r43147, r43148, r43149, r43150, r43151, r43152, r43153, r43154, r43155;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43144, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43145);
        mpfr_init_set_str(r43146, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43147);
        mpfr_init(r43148);
        mpfr_init(r43149);
        mpfr_init(r43150);
        mpfr_init_set_str(r43151, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43152);
        mpfr_init(r43153);
        mpfr_init(r43154);
        mpfr_init(r43155);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r43145, x, MPFR_RNDN);
        ;
        mpfr_mul(r43147, r43145, r43146, MPFR_RNDN);
        mpfr_div(r43148, r43144, r43147, MPFR_RNDN);
        mpfr_sub(r43149, r43144, r43148, MPFR_RNDN);
        mpfr_set_d(r43150, y, MPFR_RNDN);
        ;
        mpfr_div(r43152, r43150, r43151, MPFR_RNDN);
        mpfr_sqrt(r43153, r43145, MPFR_RNDN);
        mpfr_div(r43154, r43152, r43153, MPFR_RNDN);
        mpfr_sub(r43155, r43149, r43154, MPFR_RNDN);
        return mpfr_get_d(r43155, MPFR_RNDN);
}

