#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B";

double f_if(float x, float y) {
        float r41415 = 3.0f;
        float r41416 = x;
        float r41417 = sqrt(r41416);
        float r41418 = r41415 * r41417;
        float r41419 = y;
        float r41420 = 1.0f;
        float r41421 = 9.0f;
        float r41422 = r41416 * r41421;
        float r41423 = r41420 / r41422;
        float r41424 = r41419 + r41423;
        float r41425 = r41424 - r41420;
        float r41426 = r41418 * r41425;
        return r41426;
}

double f_id(double x, double y) {
        double r41427 = 3.0;
        double r41428 = x;
        double r41429 = sqrt(r41428);
        double r41430 = r41427 * r41429;
        double r41431 = y;
        double r41432 = 1.0;
        double r41433 = 9.0;
        double r41434 = r41428 * r41433;
        double r41435 = r41432 / r41434;
        double r41436 = r41431 + r41435;
        double r41437 = r41436 - r41432;
        double r41438 = r41430 * r41437;
        return r41438;
}


double f_of(float x, float y) {
        float r41439 = 3.0f;
        float r41440 = x;
        float r41441 = sqrt(r41440);
        float r41442 = y;
        float r41443 = 0.1111111111111111f;
        float r41444 = r41443 / r41440;
        float r41445 = r41442 + r41444;
        float r41446 = 1.0f;
        float r41447 = r41445 - r41446;
        float r41448 = r41441 * r41447;
        float r41449 = r41439 * r41448;
        return r41449;
}

double f_od(double x, double y) {
        double r41450 = 3.0;
        double r41451 = x;
        double r41452 = sqrt(r41451);
        double r41453 = y;
        double r41454 = 0.1111111111111111;
        double r41455 = r41454 / r41451;
        double r41456 = r41453 + r41455;
        double r41457 = 1.0;
        double r41458 = r41456 - r41457;
        double r41459 = r41452 * r41458;
        double r41460 = r41450 * r41459;
        return r41460;
}

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 r41461, r41462, r41463, r41464, r41465, r41466, r41467, r41468, r41469, r41470, r41471, r41472;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41461, "3.0", 10, MPFR_RNDN);
        mpfr_init(r41462);
        mpfr_init(r41463);
        mpfr_init(r41464);
        mpfr_init(r41465);
        mpfr_init_set_str(r41466, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r41467, "9.0", 10, MPFR_RNDN);
        mpfr_init(r41468);
        mpfr_init(r41469);
        mpfr_init(r41470);
        mpfr_init(r41471);
        mpfr_init(r41472);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r41462, x, MPFR_RNDN);
        mpfr_sqrt(r41463, r41462, MPFR_RNDN);
        mpfr_mul(r41464, r41461, r41463, MPFR_RNDN);
        mpfr_set_d(r41465, y, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r41468, r41462, r41467, MPFR_RNDN);
        mpfr_div(r41469, r41466, r41468, MPFR_RNDN);
        mpfr_add(r41470, r41465, r41469, MPFR_RNDN);
        mpfr_sub(r41471, r41470, r41466, MPFR_RNDN);
        mpfr_mul(r41472, r41464, r41471, MPFR_RNDN);
        return mpfr_get_d(r41472, MPFR_RNDN);
}

static mpfr_t r41473, r41474, r41475, r41476, r41477, r41478, r41479, r41480, r41481, r41482, r41483;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41473, "3.0", 10, MPFR_RNDN);
        mpfr_init(r41474);
        mpfr_init(r41475);
        mpfr_init(r41476);
        mpfr_init_set_str(r41477, "0.1111111111111111", 10, MPFR_RNDN);
        mpfr_init(r41478);
        mpfr_init(r41479);
        mpfr_init_set_str(r41480, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41481);
        mpfr_init(r41482);
        mpfr_init(r41483);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r41474, x, MPFR_RNDN);
        mpfr_sqrt(r41475, r41474, MPFR_RNDN);
        mpfr_set_d(r41476, y, MPFR_RNDN);
        ;
        mpfr_div(r41478, r41477, r41474, MPFR_RNDN);
        mpfr_add(r41479, r41476, r41478, MPFR_RNDN);
        ;
        mpfr_sub(r41481, r41479, r41480, MPFR_RNDN);
        mpfr_mul(r41482, r41475, r41481, MPFR_RNDN);
        mpfr_mul(r41483, r41473, r41482, MPFR_RNDN);
        return mpfr_get_d(r41483, MPFR_RNDN);
}

static mpfr_t r41484, r41485, r41486, r41487, r41488, r41489, r41490, r41491, r41492, r41493, r41494;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41484, "3.0", 10, MPFR_RNDN);
        mpfr_init(r41485);
        mpfr_init(r41486);
        mpfr_init(r41487);
        mpfr_init_set_str(r41488, "0.1111111111111111", 10, MPFR_RNDN);
        mpfr_init(r41489);
        mpfr_init(r41490);
        mpfr_init_set_str(r41491, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41492);
        mpfr_init(r41493);
        mpfr_init(r41494);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r41485, x, MPFR_RNDN);
        mpfr_sqrt(r41486, r41485, MPFR_RNDN);
        mpfr_set_d(r41487, y, MPFR_RNDN);
        ;
        mpfr_div(r41489, r41488, r41485, MPFR_RNDN);
        mpfr_add(r41490, r41487, r41489, MPFR_RNDN);
        ;
        mpfr_sub(r41492, r41490, r41491, MPFR_RNDN);
        mpfr_mul(r41493, r41486, r41492, MPFR_RNDN);
        mpfr_mul(r41494, r41484, r41493, MPFR_RNDN);
        return mpfr_get_d(r41494, MPFR_RNDN);
}

