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

char *name = "Jmat.Real.erf";

double f_if(float x) {
        float r18553 = 1.0f;
        float r18554 = 0.3275911f;
        float r18555 = x;
        float r18556 = fabs(r18555);
        float r18557 = r18554 * r18556;
        float r18558 = r18553 + r18557;
        float r18559 = r18553 / r18558;
        float r18560 = 0.254829592f;
        float r18561 = -0.284496736f;
        float r18562 = 1.421413741f;
        float r18563 = -1.453152027f;
        float r18564 = 1.061405429f;
        float r18565 = r18559 * r18564;
        float r18566 = r18563 + r18565;
        float r18567 = r18559 * r18566;
        float r18568 = r18562 + r18567;
        float r18569 = r18559 * r18568;
        float r18570 = r18561 + r18569;
        float r18571 = r18559 * r18570;
        float r18572 = r18560 + r18571;
        float r18573 = r18559 * r18572;
        float r18574 = r18556 * r18556;
        float r18575 = -r18574;
        float r18576 = exp(r18575);
        float r18577 = r18573 * r18576;
        float r18578 = r18553 - r18577;
        return r18578;
}

double f_id(double x) {
        double r18579 = 1.0;
        double r18580 = 0.3275911;
        double r18581 = x;
        double r18582 = fabs(r18581);
        double r18583 = r18580 * r18582;
        double r18584 = r18579 + r18583;
        double r18585 = r18579 / r18584;
        double r18586 = 0.254829592;
        double r18587 = -0.284496736;
        double r18588 = 1.421413741;
        double r18589 = -1.453152027;
        double r18590 = 1.061405429;
        double r18591 = r18585 * r18590;
        double r18592 = r18589 + r18591;
        double r18593 = r18585 * r18592;
        double r18594 = r18588 + r18593;
        double r18595 = r18585 * r18594;
        double r18596 = r18587 + r18595;
        double r18597 = r18585 * r18596;
        double r18598 = r18586 + r18597;
        double r18599 = r18585 * r18598;
        double r18600 = r18582 * r18582;
        double r18601 = -r18600;
        double r18602 = exp(r18601);
        double r18603 = r18599 * r18602;
        double r18604 = r18579 - r18603;
        return r18604;
}


double f_of(float x) {
        float r18605 = 1.0f;
        float r18606 = 1.061405429f;
        float r18607 = 0.3275911f;
        float r18608 = x;
        float r18609 = fabs(r18608);
        float r18610 = fma(r18607, r18609, r18605);
        float r18611 = r18606 / r18610;
        float r18612 = r18611 * (r18611 * r18611);
        float r18613 = cbrt(r18612);
        float r18614 = -1.453152027f;
        float r18615 = r18613 + r18614;
        float r18616 = r18605 / r18610;
        float r18617 = r18616 / r18610;
        float r18618 = 1.421413741f;
        float r18619 = r18618 / r18610;
        float r18620 = -0.284496736f;
        float r18621 = r18619 + r18620;
        float r18622 = fma(r18615, r18617, r18621);
        float r18623 = 0.254829592f;
        float r18624 = cbrt(r18623);
        float r18625 = cbrt(r18616);
        float r18626 = r18624 * r18625;
        float r18627 = r18626 * (r18626 * r18626);
        float r18628 = fma(r18622, r18617, r18627);
        float r18629 = r18609 * r18609;
        float r18630 = exp(r18629);
        float r18631 = r18628 / r18630;
        float r18632 = r18605 - r18631;
        return r18632;
}

double f_od(double x) {
        double r18633 = 1.0;
        double r18634 = 1.061405429;
        double r18635 = 0.3275911;
        double r18636 = x;
        double r18637 = fabs(r18636);
        double r18638 = fma(r18635, r18637, r18633);
        double r18639 = r18634 / r18638;
        double r18640 = r18639 * (r18639 * r18639);
        double r18641 = cbrt(r18640);
        double r18642 = -1.453152027;
        double r18643 = r18641 + r18642;
        double r18644 = r18633 / r18638;
        double r18645 = r18644 / r18638;
        double r18646 = 1.421413741;
        double r18647 = r18646 / r18638;
        double r18648 = -0.284496736;
        double r18649 = r18647 + r18648;
        double r18650 = fma(r18643, r18645, r18649);
        double r18651 = 0.254829592;
        double r18652 = cbrt(r18651);
        double r18653 = cbrt(r18644);
        double r18654 = r18652 * r18653;
        double r18655 = r18654 * (r18654 * r18654);
        double r18656 = fma(r18650, r18645, r18655);
        double r18657 = r18637 * r18637;
        double r18658 = exp(r18657);
        double r18659 = r18656 / r18658;
        double r18660 = r18633 - r18659;
        return r18660;
}

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 r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673, r18674, r18675, r18676, r18677, r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18661, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18662, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18663);
        mpfr_init(r18664);
        mpfr_init(r18665);
        mpfr_init(r18666);
        mpfr_init(r18667);
        mpfr_init_set_str(r18668, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r18669, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r18670, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r18671, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r18672, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r18673);
        mpfr_init(r18674);
        mpfr_init(r18675);
        mpfr_init(r18676);
        mpfr_init(r18677);
        mpfr_init(r18678);
        mpfr_init(r18679);
        mpfr_init(r18680);
        mpfr_init(r18681);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init(r18686);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r18663, x, MPFR_RNDN);
        mpfr_abs(r18664, r18663, MPFR_RNDN);
        mpfr_mul(r18665, r18662, r18664, MPFR_RNDN);
        mpfr_add(r18666, r18661, r18665, MPFR_RNDN);
        mpfr_div(r18667, r18661, r18666, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r18673, r18667, r18672, MPFR_RNDN);
        mpfr_add(r18674, r18671, r18673, MPFR_RNDN);
        mpfr_mul(r18675, r18667, r18674, MPFR_RNDN);
        mpfr_add(r18676, r18670, r18675, MPFR_RNDN);
        mpfr_mul(r18677, r18667, r18676, MPFR_RNDN);
        mpfr_add(r18678, r18669, r18677, MPFR_RNDN);
        mpfr_mul(r18679, r18667, r18678, MPFR_RNDN);
        mpfr_add(r18680, r18668, r18679, MPFR_RNDN);
        mpfr_mul(r18681, r18667, r18680, MPFR_RNDN);
        mpfr_mul(r18682, r18664, r18664, MPFR_RNDN);
        mpfr_neg(r18683, r18682, MPFR_RNDN);
        mpfr_exp(r18684, r18683, MPFR_RNDN);
        mpfr_mul(r18685, r18681, r18684, MPFR_RNDN);
        mpfr_sub(r18686, r18661, r18685, MPFR_RNDN);
        return mpfr_get_d(r18686, MPFR_RNDN);
}

static mpfr_t r18687, r18688, r18689, r18690, r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699, r18700, r18701, r18702, r18703, r18704, r18705, r18706, r18707, r18708, r18709, r18710, r18711, r18712, r18713, r18714;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18687, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18688, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18689, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18690);
        mpfr_init(r18691);
        mpfr_init(r18692);
        mpfr_init(r18693);
        mpfr_init(r18694);
        mpfr_init(r18695);
        mpfr_init_set_str(r18696, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18697);
        mpfr_init(r18698);
        mpfr_init(r18699);
        mpfr_init_set_str(r18700, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18701);
        mpfr_init_set_str(r18702, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18703);
        mpfr_init(r18704);
        mpfr_init_set_str(r18705, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18706);
        mpfr_init(r18707);
        mpfr_init(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
        mpfr_init(r18712);
        mpfr_init(r18713);
        mpfr_init(r18714);
}

double f_fm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18690, x, MPFR_RNDN);
        mpfr_abs(r18691, r18690, MPFR_RNDN);
        mpfr_fma(r18692, r18689, r18691, r18687, MPFR_RNDN);
        mpfr_div(r18693, r18688, r18692, MPFR_RNDN);
        mpfr_mul(r18694, r18693, r18693, MPFR_RNDN); mpfr_mul(r18694, r18694, r18693, MPFR_RNDN);
        mpfr_cbrt(r18695, r18694, MPFR_RNDN);
        ;
        mpfr_add(r18697, r18695, r18696, MPFR_RNDN);
        mpfr_div(r18698, r18687, r18692, MPFR_RNDN);
        mpfr_div(r18699, r18698, r18692, MPFR_RNDN);
        ;
        mpfr_div(r18701, r18700, r18692, MPFR_RNDN);
        ;
        mpfr_add(r18703, r18701, r18702, MPFR_RNDN);
        mpfr_fma(r18704, r18697, r18699, r18703, MPFR_RNDN);
        ;
        mpfr_cbrt(r18706, r18705, MPFR_RNDN);
        mpfr_cbrt(r18707, r18698, MPFR_RNDN);
        mpfr_mul(r18708, r18706, r18707, MPFR_RNDN);
        mpfr_mul(r18709, r18708, r18708, MPFR_RNDN); mpfr_mul(r18709, r18709, r18708, MPFR_RNDN);
        mpfr_fma(r18710, r18704, r18699, r18709, MPFR_RNDN);
        mpfr_mul(r18711, r18691, r18691, MPFR_RNDN);
        mpfr_exp(r18712, r18711, MPFR_RNDN);
        mpfr_div(r18713, r18710, r18712, MPFR_RNDN);
        mpfr_sub(r18714, r18687, r18713, MPFR_RNDN);
        return mpfr_get_d(r18714, MPFR_RNDN);
}

static mpfr_t r18715, r18716, r18717, r18718, r18719, r18720, r18721, r18722, r18723, r18724, r18725, r18726, r18727, r18728, r18729, r18730, r18731, r18732, r18733, r18734, r18735, r18736, r18737, r18738, r18739, r18740, r18741, r18742;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18715, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18716, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18717, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18718);
        mpfr_init(r18719);
        mpfr_init(r18720);
        mpfr_init(r18721);
        mpfr_init(r18722);
        mpfr_init(r18723);
        mpfr_init_set_str(r18724, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18725);
        mpfr_init(r18726);
        mpfr_init(r18727);
        mpfr_init_set_str(r18728, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18729);
        mpfr_init_set_str(r18730, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18731);
        mpfr_init(r18732);
        mpfr_init_set_str(r18733, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18734);
        mpfr_init(r18735);
        mpfr_init(r18736);
        mpfr_init(r18737);
        mpfr_init(r18738);
        mpfr_init(r18739);
        mpfr_init(r18740);
        mpfr_init(r18741);
        mpfr_init(r18742);
}

double f_dm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18718, x, MPFR_RNDN);
        mpfr_abs(r18719, r18718, MPFR_RNDN);
        mpfr_fma(r18720, r18717, r18719, r18715, MPFR_RNDN);
        mpfr_div(r18721, r18716, r18720, MPFR_RNDN);
        mpfr_mul(r18722, r18721, r18721, MPFR_RNDN); mpfr_mul(r18722, r18722, r18721, MPFR_RNDN);
        mpfr_cbrt(r18723, r18722, MPFR_RNDN);
        ;
        mpfr_add(r18725, r18723, r18724, MPFR_RNDN);
        mpfr_div(r18726, r18715, r18720, MPFR_RNDN);
        mpfr_div(r18727, r18726, r18720, MPFR_RNDN);
        ;
        mpfr_div(r18729, r18728, r18720, MPFR_RNDN);
        ;
        mpfr_add(r18731, r18729, r18730, MPFR_RNDN);
        mpfr_fma(r18732, r18725, r18727, r18731, MPFR_RNDN);
        ;
        mpfr_cbrt(r18734, r18733, MPFR_RNDN);
        mpfr_cbrt(r18735, r18726, MPFR_RNDN);
        mpfr_mul(r18736, r18734, r18735, MPFR_RNDN);
        mpfr_mul(r18737, r18736, r18736, MPFR_RNDN); mpfr_mul(r18737, r18737, r18736, MPFR_RNDN);
        mpfr_fma(r18738, r18732, r18727, r18737, MPFR_RNDN);
        mpfr_mul(r18739, r18719, r18719, MPFR_RNDN);
        mpfr_exp(r18740, r18739, MPFR_RNDN);
        mpfr_div(r18741, r18738, r18740, MPFR_RNDN);
        mpfr_sub(r18742, r18715, r18741, MPFR_RNDN);
        return mpfr_get_d(r18742, MPFR_RNDN);
}

