#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 r44596 = 0.70711;
        float r44597 = 2.30753;
        float r44598 = x;
        float r44599 = 0.27061;
        float r44600 = r44598 * r44599;
        float r44601 = r44597 + r44600;
        float r44602 = 1.0;
        float r44603 = 0.99229;
        float r44604 = 0.04481;
        float r44605 = r44598 * r44604;
        float r44606 = r44603 + r44605;
        float r44607 = r44598 * r44606;
        float r44608 = r44602 + r44607;
        float r44609 = r44601 / r44608;
        float r44610 = r44609 - r44598;
        float r44611 = r44596 * r44610;
        return r44611;
}

double f_id(double x) {
        double r44612 = 0.70711;
        double r44613 = 2.30753;
        double r44614 = x;
        double r44615 = 0.27061;
        double r44616 = r44614 * r44615;
        double r44617 = r44613 + r44616;
        double r44618 = 1.0;
        double r44619 = 0.99229;
        double r44620 = 0.04481;
        double r44621 = r44614 * r44620;
        double r44622 = r44619 + r44621;
        double r44623 = r44614 * r44622;
        double r44624 = r44618 + r44623;
        double r44625 = r44617 / r44624;
        double r44626 = r44625 - r44614;
        double r44627 = r44612 * r44626;
        return r44627;
}


double f_of(float x) {
        float r44628 = 0.70711;
        float r44629 = 2.30753;
        float r44630 = x;
        float r44631 = 0.27061;
        float r44632 = r44630 * r44631;
        float r44633 = r44629 + r44632;
        float r44634 = 1.0;
        float r44635 = 0.99229;
        float r44636 = 0.04481;
        float r44637 = r44630 * r44636;
        float r44638 = r44635 + r44637;
        float r44639 = r44630 * r44638;
        float r44640 = r44634 + r44639;
        float r44641 = r44633 / r44640;
        float r44642 = r44641 - r44630;
        float r44643 = r44628 * r44642;
        return r44643;
}

double f_od(double x) {
        double r44644 = 0.70711;
        double r44645 = 2.30753;
        double r44646 = x;
        double r44647 = 0.27061;
        double r44648 = r44646 * r44647;
        double r44649 = r44645 + r44648;
        double r44650 = 1.0;
        double r44651 = 0.99229;
        double r44652 = 0.04481;
        double r44653 = r44646 * r44652;
        double r44654 = r44651 + r44653;
        double r44655 = r44646 * r44654;
        double r44656 = r44650 + r44655;
        double r44657 = r44649 / r44656;
        double r44658 = r44657 - r44646;
        double r44659 = r44644 * r44658;
        return r44659;
}

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 r44660, r44661, r44662, r44663, r44664, r44665, r44666, r44667, r44668, r44669, r44670, r44671, r44672, r44673, r44674, r44675;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44660, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44661, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44662);
        mpfr_init_set_str(r44663, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44664);
        mpfr_init(r44665);
        mpfr_init_set_str(r44666, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44667, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44668, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44669);
        mpfr_init(r44670);
        mpfr_init(r44671);
        mpfr_init(r44672);
        mpfr_init(r44673);
        mpfr_init(r44674);
        mpfr_init(r44675);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r44662, x, MPFR_RNDN);
        ;
        mpfr_mul(r44664, r44662, r44663, MPFR_RNDN);
        mpfr_add(r44665, r44661, r44664, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44669, r44662, r44668, MPFR_RNDN);
        mpfr_add(r44670, r44667, r44669, MPFR_RNDN);
        mpfr_mul(r44671, r44662, r44670, MPFR_RNDN);
        mpfr_add(r44672, r44666, r44671, MPFR_RNDN);
        mpfr_div(r44673, r44665, r44672, MPFR_RNDN);
        mpfr_sub(r44674, r44673, r44662, MPFR_RNDN);
        mpfr_mul(r44675, r44660, r44674, MPFR_RNDN);
        return mpfr_get_d(r44675, MPFR_RNDN);
}

static mpfr_t r44676, r44677, r44678, r44679, r44680, r44681, r44682, r44683, r44684, r44685, r44686, r44687, r44688, r44689, r44690, r44691;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44676, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44677, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44678);
        mpfr_init_set_str(r44679, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44680);
        mpfr_init(r44681);
        mpfr_init_set_str(r44682, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44683, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44684, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44685);
        mpfr_init(r44686);
        mpfr_init(r44687);
        mpfr_init(r44688);
        mpfr_init(r44689);
        mpfr_init(r44690);
        mpfr_init(r44691);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r44678, x, MPFR_RNDN);
        ;
        mpfr_mul(r44680, r44678, r44679, MPFR_RNDN);
        mpfr_add(r44681, r44677, r44680, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44685, r44678, r44684, MPFR_RNDN);
        mpfr_add(r44686, r44683, r44685, MPFR_RNDN);
        mpfr_mul(r44687, r44678, r44686, MPFR_RNDN);
        mpfr_add(r44688, r44682, r44687, MPFR_RNDN);
        mpfr_div(r44689, r44681, r44688, MPFR_RNDN);
        mpfr_sub(r44690, r44689, r44678, MPFR_RNDN);
        mpfr_mul(r44691, r44676, r44690, MPFR_RNDN);
        return mpfr_get_d(r44691, MPFR_RNDN);
}

static mpfr_t r44692, r44693, r44694, r44695, r44696, r44697, r44698, r44699, r44700, r44701, r44702, r44703, r44704, r44705, r44706, r44707;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r44692, "0.70711", 10, MPFR_RNDN);
        mpfr_init_set_str(r44693, "2.30753", 10, MPFR_RNDN);
        mpfr_init(r44694);
        mpfr_init_set_str(r44695, "0.27061", 10, MPFR_RNDN);
        mpfr_init(r44696);
        mpfr_init(r44697);
        mpfr_init_set_str(r44698, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r44699, "0.99229", 10, MPFR_RNDN);
        mpfr_init_set_str(r44700, "0.04481", 10, MPFR_RNDN);
        mpfr_init(r44701);
        mpfr_init(r44702);
        mpfr_init(r44703);
        mpfr_init(r44704);
        mpfr_init(r44705);
        mpfr_init(r44706);
        mpfr_init(r44707);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r44694, x, MPFR_RNDN);
        ;
        mpfr_mul(r44696, r44694, r44695, MPFR_RNDN);
        mpfr_add(r44697, r44693, r44696, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r44701, r44694, r44700, MPFR_RNDN);
        mpfr_add(r44702, r44699, r44701, MPFR_RNDN);
        mpfr_mul(r44703, r44694, r44702, MPFR_RNDN);
        mpfr_add(r44704, r44698, r44703, MPFR_RNDN);
        mpfr_div(r44705, r44697, r44704, MPFR_RNDN);
        mpfr_sub(r44706, r44705, r44694, MPFR_RNDN);
        mpfr_mul(r44707, r44692, r44706, MPFR_RNDN);
        return mpfr_get_d(r44707, MPFR_RNDN);
}

