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

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

double f_if(float x, float y, float z) {
        float r44708 = x;
        float r44709 = y;
        float r44710 = 1.1283791670955126;
        float r44711 = z;
        float r44712 = exp(r44711);
        float r44713 = r44710 * r44712;
        float r44714 = r44708 * r44709;
        float r44715 = r44713 - r44714;
        float r44716 = r44709 / r44715;
        float r44717 = r44708 + r44716;
        return r44717;
}

double f_id(double x, double y, double z) {
        double r44718 = x;
        double r44719 = y;
        double r44720 = 1.1283791670955126;
        double r44721 = z;
        double r44722 = exp(r44721);
        double r44723 = r44720 * r44722;
        double r44724 = r44718 * r44719;
        double r44725 = r44723 - r44724;
        double r44726 = r44719 / r44725;
        double r44727 = r44718 + r44726;
        return r44727;
}


double f_of(float x, float y, float z) {
        float r44728 = x;
        float r44729 = 1;
        float r44730 = 1.1283791670955126;
        float r44731 = y;
        float r44732 = r44730 / r44731;
        float r44733 = z;
        float r44734 = exp(r44733);
        float r44735 = r44732 * r44734;
        float r44736 = r44735 - r44728;
        float r44737 = r44729 / r44736;
        float r44738 = r44728 + r44737;
        return r44738;
}

double f_od(double x, double y, double z) {
        double r44739 = x;
        double r44740 = 1;
        double r44741 = 1.1283791670955126;
        double r44742 = y;
        double r44743 = r44741 / r44742;
        double r44744 = z;
        double r44745 = exp(r44744);
        double r44746 = r44743 * r44745;
        double r44747 = r44746 - r44739;
        double r44748 = r44740 / r44747;
        double r44749 = r44739 + r44748;
        return r44749;
}

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 r44750, r44751, r44752, r44753, r44754, r44755, r44756, r44757, r44758, r44759;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44750);
        mpfr_init(r44751);
        mpfr_init_set_str(r44752, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44753);
        mpfr_init(r44754);
        mpfr_init(r44755);
        mpfr_init(r44756);
        mpfr_init(r44757);
        mpfr_init(r44758);
        mpfr_init(r44759);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44750, x, MPFR_RNDN);
        mpfr_set_d(r44751, y, MPFR_RNDN);
        ;
        mpfr_set_d(r44753, z, MPFR_RNDN);
        mpfr_exp(r44754, r44753, MPFR_RNDN);
        mpfr_mul(r44755, r44752, r44754, MPFR_RNDN);
        mpfr_mul(r44756, r44750, r44751, MPFR_RNDN);
        mpfr_sub(r44757, r44755, r44756, MPFR_RNDN);
        mpfr_div(r44758, r44751, r44757, MPFR_RNDN);
        mpfr_add(r44759, r44750, r44758, MPFR_RNDN);
        return mpfr_get_d(r44759, MPFR_RNDN);
}

static mpfr_t r44760, r44761, r44762, r44763, r44764, r44765, r44766, r44767, r44768, r44769, r44770;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44760);
        mpfr_init_set_str(r44761, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44762, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44763);
        mpfr_init(r44764);
        mpfr_init(r44765);
        mpfr_init(r44766);
        mpfr_init(r44767);
        mpfr_init(r44768);
        mpfr_init(r44769);
        mpfr_init(r44770);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44760, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44763, y, MPFR_RNDN);
        mpfr_div(r44764, r44762, r44763, MPFR_RNDN);
        mpfr_set_d(r44765, z, MPFR_RNDN);
        mpfr_exp(r44766, r44765, MPFR_RNDN);
        mpfr_mul(r44767, r44764, r44766, MPFR_RNDN);
        mpfr_sub(r44768, r44767, r44760, MPFR_RNDN);
        mpfr_div(r44769, r44761, r44768, MPFR_RNDN);
        mpfr_add(r44770, r44760, r44769, MPFR_RNDN);
        return mpfr_get_d(r44770, MPFR_RNDN);
}

static mpfr_t r44771, r44772, r44773, r44774, r44775, r44776, r44777, r44778, r44779, r44780, r44781;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44771);
        mpfr_init_set_str(r44772, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44773, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44774);
        mpfr_init(r44775);
        mpfr_init(r44776);
        mpfr_init(r44777);
        mpfr_init(r44778);
        mpfr_init(r44779);
        mpfr_init(r44780);
        mpfr_init(r44781);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44771, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44774, y, MPFR_RNDN);
        mpfr_div(r44775, r44773, r44774, MPFR_RNDN);
        mpfr_set_d(r44776, z, MPFR_RNDN);
        mpfr_exp(r44777, r44776, MPFR_RNDN);
        mpfr_mul(r44778, r44775, r44777, MPFR_RNDN);
        mpfr_sub(r44779, r44778, r44771, MPFR_RNDN);
        mpfr_div(r44780, r44772, r44779, MPFR_RNDN);
        mpfr_add(r44781, r44771, r44780, MPFR_RNDN);
        return mpfr_get_d(r44781, MPFR_RNDN);
}

