#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 r44202 = x;
        float r44203 = y;
        float r44204 = 1.1283791670955126;
        float r44205 = z;
        float r44206 = exp(r44205);
        float r44207 = r44204 * r44206;
        float r44208 = r44202 * r44203;
        float r44209 = r44207 - r44208;
        float r44210 = r44203 / r44209;
        float r44211 = r44202 + r44210;
        return r44211;
}

double f_id(double x, double y, double z) {
        double r44212 = x;
        double r44213 = y;
        double r44214 = 1.1283791670955126;
        double r44215 = z;
        double r44216 = exp(r44215);
        double r44217 = r44214 * r44216;
        double r44218 = r44212 * r44213;
        double r44219 = r44217 - r44218;
        double r44220 = r44213 / r44219;
        double r44221 = r44212 + r44220;
        return r44221;
}


double f_of(float x, float y, float z) {
        float r44222 = x;
        float r44223 = 1;
        float r44224 = 1.1283791670955126;
        float r44225 = y;
        float r44226 = r44224 / r44225;
        float r44227 = z;
        float r44228 = exp(r44227);
        float r44229 = r44226 * r44228;
        float r44230 = r44229 - r44222;
        float r44231 = r44223 / r44230;
        float r44232 = r44222 + r44231;
        return r44232;
}

double f_od(double x, double y, double z) {
        double r44233 = x;
        double r44234 = 1;
        double r44235 = 1.1283791670955126;
        double r44236 = y;
        double r44237 = r44235 / r44236;
        double r44238 = z;
        double r44239 = exp(r44238);
        double r44240 = r44237 * r44239;
        double r44241 = r44240 - r44233;
        double r44242 = r44234 / r44241;
        double r44243 = r44233 + r44242;
        return r44243;
}

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 r44244, r44245, r44246, r44247, r44248, r44249, r44250, r44251, r44252, r44253;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44244);
        mpfr_init(r44245);
        mpfr_init_set_str(r44246, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44247);
        mpfr_init(r44248);
        mpfr_init(r44249);
        mpfr_init(r44250);
        mpfr_init(r44251);
        mpfr_init(r44252);
        mpfr_init(r44253);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44244, x, MPFR_RNDN);
        mpfr_set_d(r44245, y, MPFR_RNDN);
        ;
        mpfr_set_d(r44247, z, MPFR_RNDN);
        mpfr_exp(r44248, r44247, MPFR_RNDN);
        mpfr_mul(r44249, r44246, r44248, MPFR_RNDN);
        mpfr_mul(r44250, r44244, r44245, MPFR_RNDN);
        mpfr_sub(r44251, r44249, r44250, MPFR_RNDN);
        mpfr_div(r44252, r44245, r44251, MPFR_RNDN);
        mpfr_add(r44253, r44244, r44252, MPFR_RNDN);
        return mpfr_get_d(r44253, MPFR_RNDN);
}

static mpfr_t r44254, r44255, r44256, r44257, r44258, r44259, r44260, r44261, r44262, r44263, r44264;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44254);
        mpfr_init_set_str(r44255, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44256, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44257);
        mpfr_init(r44258);
        mpfr_init(r44259);
        mpfr_init(r44260);
        mpfr_init(r44261);
        mpfr_init(r44262);
        mpfr_init(r44263);
        mpfr_init(r44264);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44254, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44257, y, MPFR_RNDN);
        mpfr_div(r44258, r44256, r44257, MPFR_RNDN);
        mpfr_set_d(r44259, z, MPFR_RNDN);
        mpfr_exp(r44260, r44259, MPFR_RNDN);
        mpfr_mul(r44261, r44258, r44260, MPFR_RNDN);
        mpfr_sub(r44262, r44261, r44254, MPFR_RNDN);
        mpfr_div(r44263, r44255, r44262, MPFR_RNDN);
        mpfr_add(r44264, r44254, r44263, MPFR_RNDN);
        return mpfr_get_d(r44264, MPFR_RNDN);
}

static mpfr_t r44265, r44266, r44267, r44268, r44269, r44270, r44271, r44272, r44273, r44274, r44275;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44265);
        mpfr_init_set_str(r44266, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44267, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44268);
        mpfr_init(r44269);
        mpfr_init(r44270);
        mpfr_init(r44271);
        mpfr_init(r44272);
        mpfr_init(r44273);
        mpfr_init(r44274);
        mpfr_init(r44275);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44265, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44268, y, MPFR_RNDN);
        mpfr_div(r44269, r44267, r44268, MPFR_RNDN);
        mpfr_set_d(r44270, z, MPFR_RNDN);
        mpfr_exp(r44271, r44270, MPFR_RNDN);
        mpfr_mul(r44272, r44269, r44271, MPFR_RNDN);
        mpfr_sub(r44273, r44272, r44265, MPFR_RNDN);
        mpfr_div(r44274, r44266, r44273, MPFR_RNDN);
        mpfr_add(r44275, r44265, r44274, MPFR_RNDN);
        return mpfr_get_d(r44275, MPFR_RNDN);
}

