#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 r43526 = 1.0;
        float r43527 = x;
        float r43528 = 9.0;
        float r43529 = r43527 * r43528;
        float r43530 = r43526 / r43529;
        float r43531 = r43526 - r43530;
        float r43532 = y;
        float r43533 = 3.0;
        float r43534 = sqrt(r43527);
        float r43535 = r43533 * r43534;
        float r43536 = r43532 / r43535;
        float r43537 = r43531 - r43536;
        return r43537;
}

double f_id(double x, double y) {
        double r43538 = 1.0;
        double r43539 = x;
        double r43540 = 9.0;
        double r43541 = r43539 * r43540;
        double r43542 = r43538 / r43541;
        double r43543 = r43538 - r43542;
        double r43544 = y;
        double r43545 = 3.0;
        double r43546 = sqrt(r43539);
        double r43547 = r43545 * r43546;
        double r43548 = r43544 / r43547;
        double r43549 = r43543 - r43548;
        return r43549;
}


double f_of(float x, float y) {
        float r43550 = 1.0;
        float r43551 = x;
        float r43552 = 9.0;
        float r43553 = r43551 * r43552;
        float r43554 = r43550 / r43553;
        float r43555 = r43550 - r43554;
        float r43556 = y;
        float r43557 = 3.0;
        float r43558 = r43556 / r43557;
        float r43559 = sqrt(r43551);
        float r43560 = r43558 / r43559;
        float r43561 = r43555 - r43560;
        return r43561;
}

double f_od(double x, double y) {
        double r43562 = 1.0;
        double r43563 = x;
        double r43564 = 9.0;
        double r43565 = r43563 * r43564;
        double r43566 = r43562 / r43565;
        double r43567 = r43562 - r43566;
        double r43568 = y;
        double r43569 = 3.0;
        double r43570 = r43568 / r43569;
        double r43571 = sqrt(r43563);
        double r43572 = r43570 / r43571;
        double r43573 = r43567 - r43572;
        return r43573;
}

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 r43574, r43575, r43576, r43577, r43578, r43579, r43580, r43581, r43582, r43583, r43584, r43585;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43574, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43575);
        mpfr_init_set_str(r43576, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43577);
        mpfr_init(r43578);
        mpfr_init(r43579);
        mpfr_init(r43580);
        mpfr_init_set_str(r43581, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43582);
        mpfr_init(r43583);
        mpfr_init(r43584);
        mpfr_init(r43585);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43575, x, MPFR_RNDN);
        ;
        mpfr_mul(r43577, r43575, r43576, MPFR_RNDN);
        mpfr_div(r43578, r43574, r43577, MPFR_RNDN);
        mpfr_sub(r43579, r43574, r43578, MPFR_RNDN);
        mpfr_set_d(r43580, y, MPFR_RNDN);
        ;
        mpfr_sqrt(r43582, r43575, MPFR_RNDN);
        mpfr_mul(r43583, r43581, r43582, MPFR_RNDN);
        mpfr_div(r43584, r43580, r43583, MPFR_RNDN);
        mpfr_sub(r43585, r43579, r43584, MPFR_RNDN);
        return mpfr_get_d(r43585, MPFR_RNDN);
}

static mpfr_t r43586, r43587, r43588, r43589, r43590, r43591, r43592, r43593, r43594, r43595, r43596, r43597;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43586, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43587);
        mpfr_init_set_str(r43588, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43589);
        mpfr_init(r43590);
        mpfr_init(r43591);
        mpfr_init(r43592);
        mpfr_init_set_str(r43593, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43594);
        mpfr_init(r43595);
        mpfr_init(r43596);
        mpfr_init(r43597);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r43587, x, MPFR_RNDN);
        ;
        mpfr_mul(r43589, r43587, r43588, MPFR_RNDN);
        mpfr_div(r43590, r43586, r43589, MPFR_RNDN);
        mpfr_sub(r43591, r43586, r43590, MPFR_RNDN);
        mpfr_set_d(r43592, y, MPFR_RNDN);
        ;
        mpfr_div(r43594, r43592, r43593, MPFR_RNDN);
        mpfr_sqrt(r43595, r43587, MPFR_RNDN);
        mpfr_div(r43596, r43594, r43595, MPFR_RNDN);
        mpfr_sub(r43597, r43591, r43596, MPFR_RNDN);
        return mpfr_get_d(r43597, MPFR_RNDN);
}

static mpfr_t r43598, r43599, r43600, r43601, r43602, r43603, r43604, r43605, r43606, r43607, r43608, r43609;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r43598, "1.0", 10, MPFR_RNDN);
        mpfr_init(r43599);
        mpfr_init_set_str(r43600, "9.0", 10, MPFR_RNDN);
        mpfr_init(r43601);
        mpfr_init(r43602);
        mpfr_init(r43603);
        mpfr_init(r43604);
        mpfr_init_set_str(r43605, "3.0", 10, MPFR_RNDN);
        mpfr_init(r43606);
        mpfr_init(r43607);
        mpfr_init(r43608);
        mpfr_init(r43609);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r43599, x, MPFR_RNDN);
        ;
        mpfr_mul(r43601, r43599, r43600, MPFR_RNDN);
        mpfr_div(r43602, r43598, r43601, MPFR_RNDN);
        mpfr_sub(r43603, r43598, r43602, MPFR_RNDN);
        mpfr_set_d(r43604, y, MPFR_RNDN);
        ;
        mpfr_div(r43606, r43604, r43605, MPFR_RNDN);
        mpfr_sqrt(r43607, r43599, MPFR_RNDN);
        mpfr_div(r43608, r43606, r43607, MPFR_RNDN);
        mpfr_sub(r43609, r43603, r43608, MPFR_RNDN);
        return mpfr_get_d(r43609, MPFR_RNDN);
}

