#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 r44090 = 0.70711;
        float r44091 = 2.30753;
        float r44092 = x;
        float r44093 = 0.27061;
        float r44094 = r44092 * r44093;
        float r44095 = r44091 + r44094;
        float r44096 = 1.0;
        float r44097 = 0.99229;
        float r44098 = 0.04481;
        float r44099 = r44092 * r44098;
        float r44100 = r44097 + r44099;
        float r44101 = r44092 * r44100;
        float r44102 = r44096 + r44101;
        float r44103 = r44095 / r44102;
        float r44104 = r44103 - r44092;
        float r44105 = r44090 * r44104;
        return r44105;
}

double f_id(double x) {
        double r44106 = 0.70711;
        double r44107 = 2.30753;
        double r44108 = x;
        double r44109 = 0.27061;
        double r44110 = r44108 * r44109;
        double r44111 = r44107 + r44110;
        double r44112 = 1.0;
        double r44113 = 0.99229;
        double r44114 = 0.04481;
        double r44115 = r44108 * r44114;
        double r44116 = r44113 + r44115;
        double r44117 = r44108 * r44116;
        double r44118 = r44112 + r44117;
        double r44119 = r44111 / r44118;
        double r44120 = r44119 - r44108;
        double r44121 = r44106 * r44120;
        return r44121;
}


double f_of(float x) {
        float r44122 = 0.70711;
        float r44123 = 2.30753;
        float r44124 = x;
        float r44125 = 0.27061;
        float r44126 = r44124 * r44125;
        float r44127 = r44123 + r44126;
        float r44128 = 1.0;
        float r44129 = 0.99229;
        float r44130 = 0.04481;
        float r44131 = r44124 * r44130;
        float r44132 = r44129 + r44131;
        float r44133 = r44124 * r44132;
        float r44134 = r44128 + r44133;
        float r44135 = r44127 / r44134;
        float r44136 = r44135 - r44124;
        float r44137 = r44122 * r44136;
        return r44137;
}

double f_od(double x) {
        double r44138 = 0.70711;
        double r44139 = 2.30753;
        double r44140 = x;
        double r44141 = 0.27061;
        double r44142 = r44140 * r44141;
        double r44143 = r44139 + r44142;
        double r44144 = 1.0;
        double r44145 = 0.99229;
        double r44146 = 0.04481;
        double r44147 = r44140 * r44146;
        double r44148 = r44145 + r44147;
        double r44149 = r44140 * r44148;
        double r44150 = r44144 + r44149;
        double r44151 = r44143 / r44150;
        double r44152 = r44151 - r44140;
        double r44153 = r44138 * r44152;
        return r44153;
}

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 r44154, r44155, r44156, r44157, r44158, r44159, r44160, r44161, r44162, r44163, r44164, r44165, r44166, r44167, r44168, r44169;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44154, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44155, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44156);
        mpfr_init_set_str(r44157, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44158);
        mpfr_init(r44159);
        mpfr_init_set_str(r44160, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44161, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44162, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44163);
        mpfr_init(r44164);
        mpfr_init(r44165);
        mpfr_init(r44166);
        mpfr_init(r44167);
        mpfr_init(r44168);
        mpfr_init(r44169);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r44156, x, MPFR_RNDN);
        ;
        mpfr_mul(r44158, r44156, r44157, MPFR_RNDN);
        mpfr_add(r44159, r44155, r44158, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44163, r44156, r44162, MPFR_RNDN);
        mpfr_add(r44164, r44161, r44163, MPFR_RNDN);
        mpfr_mul(r44165, r44156, r44164, MPFR_RNDN);
        mpfr_add(r44166, r44160, r44165, MPFR_RNDN);
        mpfr_div(r44167, r44159, r44166, MPFR_RNDN);
        mpfr_sub(r44168, r44167, r44156, MPFR_RNDN);
        mpfr_mul(r44169, r44154, r44168, MPFR_RNDN);
        return mpfr_get_d(r44169, MPFR_RNDN);
}

static mpfr_t r44170, r44171, r44172, r44173, r44174, r44175, r44176, r44177, r44178, r44179, r44180, r44181, r44182, r44183, r44184, r44185;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44170, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44171, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44172);
        mpfr_init_set_str(r44173, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44174);
        mpfr_init(r44175);
        mpfr_init_set_str(r44176, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44177, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44178, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44179);
        mpfr_init(r44180);
        mpfr_init(r44181);
        mpfr_init(r44182);
        mpfr_init(r44183);
        mpfr_init(r44184);
        mpfr_init(r44185);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r44172, x, MPFR_RNDN);
        ;
        mpfr_mul(r44174, r44172, r44173, MPFR_RNDN);
        mpfr_add(r44175, r44171, r44174, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44179, r44172, r44178, MPFR_RNDN);
        mpfr_add(r44180, r44177, r44179, MPFR_RNDN);
        mpfr_mul(r44181, r44172, r44180, MPFR_RNDN);
        mpfr_add(r44182, r44176, r44181, MPFR_RNDN);
        mpfr_div(r44183, r44175, r44182, MPFR_RNDN);
        mpfr_sub(r44184, r44183, r44172, MPFR_RNDN);
        mpfr_mul(r44185, r44170, r44184, MPFR_RNDN);
        return mpfr_get_d(r44185, MPFR_RNDN);
}

static mpfr_t r44186, r44187, r44188, r44189, r44190, r44191, r44192, r44193, r44194, r44195, r44196, r44197, r44198, r44199, r44200, r44201;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44186, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44187, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44188);
        mpfr_init_set_str(r44189, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44190);
        mpfr_init(r44191);
        mpfr_init_set_str(r44192, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44193, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44194, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44195);
        mpfr_init(r44196);
        mpfr_init(r44197);
        mpfr_init(r44198);
        mpfr_init(r44199);
        mpfr_init(r44200);
        mpfr_init(r44201);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r44188, x, MPFR_RNDN);
        ;
        mpfr_mul(r44190, r44188, r44189, MPFR_RNDN);
        mpfr_add(r44191, r44187, r44190, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44195, r44188, r44194, MPFR_RNDN);
        mpfr_add(r44196, r44193, r44195, MPFR_RNDN);
        mpfr_mul(r44197, r44188, r44196, MPFR_RNDN);
        mpfr_add(r44198, r44192, r44197, MPFR_RNDN);
        mpfr_div(r44199, r44191, r44198, MPFR_RNDN);
        mpfr_sub(r44200, r44199, r44188, MPFR_RNDN);
        mpfr_mul(r44201, r44186, r44200, MPFR_RNDN);
        return mpfr_get_d(r44201, MPFR_RNDN);
}

