#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 r39875 = 1.0f;
        float r39876 = x;
        float r39877 = 9.0f;
        float r39878 = r39876 * r39877;
        float r39879 = r39875 / r39878;
        float r39880 = r39875 - r39879;
        float r39881 = y;
        float r39882 = 3.0f;
        float r39883 = sqrt(r39876);
        float r39884 = r39882 * r39883;
        float r39885 = r39881 / r39884;
        float r39886 = r39880 - r39885;
        return r39886;
}

double f_id(double x, double y) {
        double r39887 = 1.0;
        double r39888 = x;
        double r39889 = 9.0;
        double r39890 = r39888 * r39889;
        double r39891 = r39887 / r39890;
        double r39892 = r39887 - r39891;
        double r39893 = y;
        double r39894 = 3.0;
        double r39895 = sqrt(r39888);
        double r39896 = r39894 * r39895;
        double r39897 = r39893 / r39896;
        double r39898 = r39892 - r39897;
        return r39898;
}


double f_of(float x, float y) {
        float r39899 = 1.0f;
        float r39900 = 0.1111111111111111f;
        float r39901 = x;
        float r39902 = r39900 / r39901;
        float r39903 = r39899 - r39902;
        float r39904 = y;
        float r39905 = 3.0f;
        float r39906 = r39904 / r39905;
        float r39907 = sqrt(r39901);
        float r39908 = r39906 / r39907;
        float r39909 = r39903 - r39908;
        return r39909;
}

double f_od(double x, double y) {
        double r39910 = 1.0;
        double r39911 = 0.1111111111111111;
        double r39912 = x;
        double r39913 = r39911 / r39912;
        double r39914 = r39910 - r39913;
        double r39915 = y;
        double r39916 = 3.0;
        double r39917 = r39915 / r39916;
        double r39918 = sqrt(r39912);
        double r39919 = r39917 / r39918;
        double r39920 = r39914 - r39919;
        return r39920;
}

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 r39921, r39922, r39923, r39924, r39925, r39926, r39927, r39928, r39929, r39930, r39931, r39932;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r39921, "1.0", 10, MPFR_RNDN);
        mpfr_init(r39922);
        mpfr_init_set_str(r39923, "9.0", 10, MPFR_RNDN);
        mpfr_init(r39924);
        mpfr_init(r39925);
        mpfr_init(r39926);
        mpfr_init(r39927);
        mpfr_init_set_str(r39928, "3.0", 10, MPFR_RNDN);
        mpfr_init(r39929);
        mpfr_init(r39930);
        mpfr_init(r39931);
        mpfr_init(r39932);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r39922, x, MPFR_RNDN);
        ;
        mpfr_mul(r39924, r39922, r39923, MPFR_RNDN);
        mpfr_div(r39925, r39921, r39924, MPFR_RNDN);
        mpfr_sub(r39926, r39921, r39925, MPFR_RNDN);
        mpfr_set_d(r39927, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r39929, r39922, MPFR_RNDN);
        mpfr_mul(r39930, r39928, r39929, MPFR_RNDN);
        mpfr_div(r39931, r39927, r39930, MPFR_RNDN);
        mpfr_sub(r39932, r39926, r39931, MPFR_RNDN);
        return mpfr_get_d(r39932, MPFR_RNDN);
}

static mpfr_t r39933, r39934, r39935, r39936, r39937, r39938, r39939, r39940, r39941, r39942, r39943;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r39933, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r39934, "0.1111111111111111", 10, MPFR_RNDN);
        mpfr_init(r39935);
        mpfr_init(r39936);
        mpfr_init(r39937);
        mpfr_init(r39938);
        mpfr_init_set_str(r39939, "3.0", 10, MPFR_RNDN);
        mpfr_init(r39940);
        mpfr_init(r39941);
        mpfr_init(r39942);
        mpfr_init(r39943);
}

double f_fm(double x, double y) {
        ;
        ;
        mpfr_set_d(r39935, x, MPFR_RNDN);
        mpfr_div(r39936, r39934, r39935, MPFR_RNDN);
        mpfr_sub(r39937, r39933, r39936, MPFR_RNDN);
        mpfr_set_d(r39938, y, MPFR_RNDN);
        ;
        mpfr_div(r39940, r39938, r39939, MPFR_RNDN);
        mpfr_sqrt(r39941, r39935, MPFR_RNDN);
        mpfr_div(r39942, r39940, r39941, MPFR_RNDN);
        mpfr_sub(r39943, r39937, r39942, MPFR_RNDN);
        return mpfr_get_d(r39943, MPFR_RNDN);
}

static mpfr_t r39944, r39945, r39946, r39947, r39948, r39949, r39950, r39951, r39952, r39953, r39954;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r39944, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r39945, "0.1111111111111111", 10, MPFR_RNDN);
        mpfr_init(r39946);
        mpfr_init(r39947);
        mpfr_init(r39948);
        mpfr_init(r39949);
        mpfr_init_set_str(r39950, "3.0", 10, MPFR_RNDN);
        mpfr_init(r39951);
        mpfr_init(r39952);
        mpfr_init(r39953);
        mpfr_init(r39954);
}

double f_dm(double x, double y) {
        ;
        ;
        mpfr_set_d(r39946, x, MPFR_RNDN);
        mpfr_div(r39947, r39945, r39946, MPFR_RNDN);
        mpfr_sub(r39948, r39944, r39947, MPFR_RNDN);
        mpfr_set_d(r39949, y, MPFR_RNDN);
        ;
        mpfr_div(r39951, r39949, r39950, MPFR_RNDN);
        mpfr_sqrt(r39952, r39946, MPFR_RNDN);
        mpfr_div(r39953, r39951, r39952, MPFR_RNDN);
        mpfr_sub(r39954, r39948, r39953, MPFR_RNDN);
        return mpfr_get_d(r39954, MPFR_RNDN);
}

