#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, B";

double f_if(float x) {
        float r44252 = 0.70711;
        float r44253 = 2.30753;
        float r44254 = x;
        float r44255 = 0.27061;
        float r44256 = r44254 * r44255;
        float r44257 = r44253 + r44256;
        float r44258 = 1.0;
        float r44259 = 0.99229;
        float r44260 = 0.04481;
        float r44261 = r44254 * r44260;
        float r44262 = r44259 + r44261;
        float r44263 = r44254 * r44262;
        float r44264 = r44258 + r44263;
        float r44265 = r44257 / r44264;
        float r44266 = r44265 - r44254;
        float r44267 = r44252 * r44266;
        return r44267;
}

double f_id(double x) {
        double r44268 = 0.70711;
        double r44269 = 2.30753;
        double r44270 = x;
        double r44271 = 0.27061;
        double r44272 = r44270 * r44271;
        double r44273 = r44269 + r44272;
        double r44274 = 1.0;
        double r44275 = 0.99229;
        double r44276 = 0.04481;
        double r44277 = r44270 * r44276;
        double r44278 = r44275 + r44277;
        double r44279 = r44270 * r44278;
        double r44280 = r44274 + r44279;
        double r44281 = r44273 / r44280;
        double r44282 = r44281 - r44270;
        double r44283 = r44268 * r44282;
        return r44283;
}


double f_of(float x) {
        float r44284 = 0.70711;
        float r44285 = 2.30753;
        float r44286 = x;
        float r44287 = 0.27061;
        float r44288 = r44286 * r44287;
        float r44289 = r44285 + r44288;
        float r44290 = 1.0;
        float r44291 = 0.99229;
        float r44292 = 0.04481;
        float r44293 = r44286 * r44292;
        float r44294 = r44291 + r44293;
        float r44295 = r44286 * r44294;
        float r44296 = r44290 + r44295;
        float r44297 = r44289 / r44296;
        float r44298 = r44297 - r44286;
        float r44299 = r44284 * r44298;
        return r44299;
}

double f_od(double x) {
        double r44300 = 0.70711;
        double r44301 = 2.30753;
        double r44302 = x;
        double r44303 = 0.27061;
        double r44304 = r44302 * r44303;
        double r44305 = r44301 + r44304;
        double r44306 = 1.0;
        double r44307 = 0.99229;
        double r44308 = 0.04481;
        double r44309 = r44302 * r44308;
        double r44310 = r44307 + r44309;
        double r44311 = r44302 * r44310;
        double r44312 = r44306 + r44311;
        double r44313 = r44305 / r44312;
        double r44314 = r44313 - r44302;
        double r44315 = r44300 * r44314;
        return r44315;
}

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 r44316, r44317, r44318, r44319, r44320, r44321, r44322, r44323, r44324, r44325, r44326, r44327, r44328, r44329, r44330, r44331;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44316, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44317, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44318);
        mpfr_init_set_str(r44319, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44320);
        mpfr_init(r44321);
        mpfr_init_set_str(r44322, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44323, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44324, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44325);
        mpfr_init(r44326);
        mpfr_init(r44327);
        mpfr_init(r44328);
        mpfr_init(r44329);
        mpfr_init(r44330);
        mpfr_init(r44331);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r44318, x, MPFR_RNDN);
        ;
        mpfr_mul(r44320, r44318, r44319, MPFR_RNDN);
        mpfr_add(r44321, r44317, r44320, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44325, r44318, r44324, MPFR_RNDN);
        mpfr_add(r44326, r44323, r44325, MPFR_RNDN);
        mpfr_mul(r44327, r44318, r44326, MPFR_RNDN);
        mpfr_add(r44328, r44322, r44327, MPFR_RNDN);
        mpfr_div(r44329, r44321, r44328, MPFR_RNDN);
        mpfr_sub(r44330, r44329, r44318, MPFR_RNDN);
        mpfr_mul(r44331, r44316, r44330, MPFR_RNDN);
        return mpfr_get_d(r44331, MPFR_RNDN);
}

static mpfr_t r44332, r44333, r44334, r44335, r44336, r44337, r44338, r44339, r44340, r44341, r44342, r44343, r44344, r44345, r44346, r44347;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44332, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44333, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44334);
        mpfr_init_set_str(r44335, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44336);
        mpfr_init(r44337);
        mpfr_init_set_str(r44338, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44339, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44340, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44341);
        mpfr_init(r44342);
        mpfr_init(r44343);
        mpfr_init(r44344);
        mpfr_init(r44345);
        mpfr_init(r44346);
        mpfr_init(r44347);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r44334, x, MPFR_RNDN);
        ;
        mpfr_mul(r44336, r44334, r44335, MPFR_RNDN);
        mpfr_add(r44337, r44333, r44336, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44341, r44334, r44340, MPFR_RNDN);
        mpfr_add(r44342, r44339, r44341, MPFR_RNDN);
        mpfr_mul(r44343, r44334, r44342, MPFR_RNDN);
        mpfr_add(r44344, r44338, r44343, MPFR_RNDN);
        mpfr_div(r44345, r44337, r44344, MPFR_RNDN);
        mpfr_sub(r44346, r44345, r44334, MPFR_RNDN);
        mpfr_mul(r44347, r44332, r44346, MPFR_RNDN);
        return mpfr_get_d(r44347, MPFR_RNDN);
}

static mpfr_t r44348, r44349, r44350, r44351, r44352, r44353, r44354, r44355, r44356, r44357, r44358, r44359, r44360, r44361, r44362, r44363;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44348, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44349, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44350);
        mpfr_init_set_str(r44351, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44352);
        mpfr_init(r44353);
        mpfr_init_set_str(r44354, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44355, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44356, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44357);
        mpfr_init(r44358);
        mpfr_init(r44359);
        mpfr_init(r44360);
        mpfr_init(r44361);
        mpfr_init(r44362);
        mpfr_init(r44363);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r44350, x, MPFR_RNDN);
        ;
        mpfr_mul(r44352, r44350, r44351, MPFR_RNDN);
        mpfr_add(r44353, r44349, r44352, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44357, r44350, r44356, MPFR_RNDN);
        mpfr_add(r44358, r44355, r44357, MPFR_RNDN);
        mpfr_mul(r44359, r44350, r44358, MPFR_RNDN);
        mpfr_add(r44360, r44354, r44359, MPFR_RNDN);
        mpfr_div(r44361, r44353, r44360, MPFR_RNDN);
        mpfr_sub(r44362, r44361, r44350, MPFR_RNDN);
        mpfr_mul(r44363, r44348, r44362, MPFR_RNDN);
        return mpfr_get_d(r44363, MPFR_RNDN);
}

