#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 r43413 = 1.0;
        float r43414 = x;
        float r43415 = 9.0;
        float r43416 = r43414 * r43415;
        float r43417 = r43413 / r43416;
        float r43418 = r43413 - r43417;
        float r43419 = y;
        float r43420 = 3.0;
        float r43421 = sqrt(r43414);
        float r43422 = r43420 * r43421;
        float r43423 = r43419 / r43422;
        float r43424 = r43418 - r43423;
        return r43424;
}

double f_id(double x, double y) {
        double r43425 = 1.0;
        double r43426 = x;
        double r43427 = 9.0;
        double r43428 = r43426 * r43427;
        double r43429 = r43425 / r43428;
        double r43430 = r43425 - r43429;
        double r43431 = y;
        double r43432 = 3.0;
        double r43433 = sqrt(r43426);
        double r43434 = r43432 * r43433;
        double r43435 = r43431 / r43434;
        double r43436 = r43430 - r43435;
        return r43436;
}


double f_of(float x, float y) {
        float r43437 = 1.0;
        float r43438 = x;
        float r43439 = 9.0;
        float r43440 = r43438 * r43439;
        float r43441 = r43437 / r43440;
        float r43442 = r43437 - r43441;
        float r43443 = y;
        float r43444 = 3.0;
        float r43445 = r43443 / r43444;
        float r43446 = sqrt(r43438);
        float r43447 = r43445 / r43446;
        float r43448 = r43442 - r43447;
        return r43448;
}

double f_od(double x, double y) {
        double r43449 = 1.0;
        double r43450 = x;
        double r43451 = 9.0;
        double r43452 = r43450 * r43451;
        double r43453 = r43449 / r43452;
        double r43454 = r43449 - r43453;
        double r43455 = y;
        double r43456 = 3.0;
        double r43457 = r43455 / r43456;
        double r43458 = sqrt(r43450);
        double r43459 = r43457 / r43458;
        double r43460 = r43454 - r43459;
        return r43460;
}

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 r43461, r43462, r43463, r43464, r43465, r43466, r43467, r43468, r43469, r43470, r43471, r43472;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43461, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43462);
        mpfr_init_set_str(r43463, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43464);
        mpfr_init(r43465);
        mpfr_init(r43466);
        mpfr_init(r43467);
        mpfr_init_set_str(r43468, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43469);
        mpfr_init(r43470);
        mpfr_init(r43471);
        mpfr_init(r43472);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43462, x, MPFR_RNDN);
        ;
        mpfr_mul(r43464, r43462, r43463, MPFR_RNDN);
        mpfr_div(r43465, r43461, r43464, MPFR_RNDN);
        mpfr_sub(r43466, r43461, r43465, MPFR_RNDN);
        mpfr_set_d(r43467, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43469, r43462, MPFR_RNDN);
        mpfr_mul(r43470, r43468, r43469, MPFR_RNDN);
        mpfr_div(r43471, r43467, r43470, MPFR_RNDN);
        mpfr_sub(r43472, r43466, r43471, MPFR_RNDN);
        return mpfr_get_d(r43472, MPFR_RNDN);
}

static mpfr_t r43473, r43474, r43475, r43476, r43477, r43478, r43479, r43480, r43481, r43482, r43483, r43484;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43473, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43474);
        mpfr_init_set_str(r43475, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43476);
        mpfr_init(r43477);
        mpfr_init(r43478);
        mpfr_init(r43479);
        mpfr_init_set_str(r43480, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43481);
        mpfr_init(r43482);
        mpfr_init(r43483);
        mpfr_init(r43484);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r43474, x, MPFR_RNDN);
        ;
        mpfr_mul(r43476, r43474, r43475, MPFR_RNDN);
        mpfr_div(r43477, r43473, r43476, MPFR_RNDN);
        mpfr_sub(r43478, r43473, r43477, MPFR_RNDN);
        mpfr_set_d(r43479, y, MPFR_RNDN);
        ;
        mpfr_div(r43481, r43479, r43480, MPFR_RNDN);
        mpfr_sqrt(r43482, r43474, MPFR_RNDN);
        mpfr_div(r43483, r43481, r43482, MPFR_RNDN);
        mpfr_sub(r43484, r43478, r43483, MPFR_RNDN);
        return mpfr_get_d(r43484, MPFR_RNDN);
}

static mpfr_t r43485, r43486, r43487, r43488, r43489, r43490, r43491, r43492, r43493, r43494, r43495, r43496;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43485, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43486);
        mpfr_init_set_str(r43487, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43488);
        mpfr_init(r43489);
        mpfr_init(r43490);
        mpfr_init(r43491);
        mpfr_init_set_str(r43492, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43493);
        mpfr_init(r43494);
        mpfr_init(r43495);
        mpfr_init(r43496);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r43486, x, MPFR_RNDN);
        ;
        mpfr_mul(r43488, r43486, r43487, MPFR_RNDN);
        mpfr_div(r43489, r43485, r43488, MPFR_RNDN);
        mpfr_sub(r43490, r43485, r43489, MPFR_RNDN);
        mpfr_set_d(r43491, y, MPFR_RNDN);
        ;
        mpfr_div(r43493, r43491, r43492, MPFR_RNDN);
        mpfr_sqrt(r43494, r43486, MPFR_RNDN);
        mpfr_div(r43495, r43493, r43494, MPFR_RNDN);
        mpfr_sub(r43496, r43490, r43495, MPFR_RNDN);
        return mpfr_get_d(r43496, MPFR_RNDN);
}

