#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 r27447 = 1;
        float r27448 = 0.3275911;
        float r27449 = x;
        float r27450 = fabs(r27449);
        float r27451 = r27448 * r27450;
        float r27452 = r27447 + r27451;
        float r27453 = r27447 / r27452;
        float r27454 = 0.254829592;
        float r27455 = -0.284496736;
        float r27456 = 1.421413741;
        float r27457 = -1.453152027;
        float r27458 = 1.061405429;
        float r27459 = r27453 * r27458;
        float r27460 = r27457 + r27459;
        float r27461 = r27453 * r27460;
        float r27462 = r27456 + r27461;
        float r27463 = r27453 * r27462;
        float r27464 = r27455 + r27463;
        float r27465 = r27453 * r27464;
        float r27466 = r27454 + r27465;
        float r27467 = r27453 * r27466;
        float r27468 = r27450 * r27450;
        float r27469 = -r27468;
        float r27470 = exp(r27469);
        float r27471 = r27467 * r27470;
        float r27472 = r27447 - r27471;
        return r27472;
}

double f_id(double x) {
        double r27473 = 1;
        double r27474 = 0.3275911;
        double r27475 = x;
        double r27476 = fabs(r27475);
        double r27477 = r27474 * r27476;
        double r27478 = r27473 + r27477;
        double r27479 = r27473 / r27478;
        double r27480 = 0.254829592;
        double r27481 = -0.284496736;
        double r27482 = 1.421413741;
        double r27483 = -1.453152027;
        double r27484 = 1.061405429;
        double r27485 = r27479 * r27484;
        double r27486 = r27483 + r27485;
        double r27487 = r27479 * r27486;
        double r27488 = r27482 + r27487;
        double r27489 = r27479 * r27488;
        double r27490 = r27481 + r27489;
        double r27491 = r27479 * r27490;
        double r27492 = r27480 + r27491;
        double r27493 = r27479 * r27492;
        double r27494 = r27476 * r27476;
        double r27495 = -r27494;
        double r27496 = exp(r27495);
        double r27497 = r27493 * r27496;
        double r27498 = r27473 - r27497;
        return r27498;
}


double f_of(float x) {
        float r27499 = 1;
        float r27500 = 0.3275911;
        float r27501 = x;
        float r27502 = fabs(r27501);
        float r27503 = fma(r27500, r27502, r27499);
        float r27504 = r27499 / r27503;
        float r27505 = r27504 / r27503;
        float r27506 = -r27499;
        float r27507 = r27502 * r27502;
        float r27508 = exp(r27507);
        float r27509 = r27506 / r27508;
        float r27510 = r27505 * r27509;
        float r27511 = -1.453152027;
        float r27512 = 1.061405429;
        float r27513 = r27512 / r27503;
        float r27514 = r27511 + r27513;
        float r27515 = 1.421413741;
        float r27516 = fma(r27514, r27504, r27515);
        float r27517 = -0.284496736;
        float r27518 = fma(r27516, r27504, r27517);
        float r27519 = 0.254829592;
        float r27520 = r27519 / r27503;
        float r27521 = fma(r27520, r27509, r27499);
        float r27522 = fma(r27510, r27518, r27521);
        return r27522;
}

double f_od(double x) {
        double r27523 = 1;
        double r27524 = 0.3275911;
        double r27525 = x;
        double r27526 = fabs(r27525);
        double r27527 = fma(r27524, r27526, r27523);
        double r27528 = r27523 / r27527;
        double r27529 = r27528 / r27527;
        double r27530 = -r27523;
        double r27531 = r27526 * r27526;
        double r27532 = exp(r27531);
        double r27533 = r27530 / r27532;
        double r27534 = r27529 * r27533;
        double r27535 = -1.453152027;
        double r27536 = 1.061405429;
        double r27537 = r27536 / r27527;
        double r27538 = r27535 + r27537;
        double r27539 = 1.421413741;
        double r27540 = fma(r27538, r27528, r27539);
        double r27541 = -0.284496736;
        double r27542 = fma(r27540, r27528, r27541);
        double r27543 = 0.254829592;
        double r27544 = r27543 / r27527;
        double r27545 = fma(r27544, r27533, r27523);
        double r27546 = fma(r27534, r27542, r27545);
        return r27546;
}

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 r27547, r27548, r27549, r27550, r27551, r27552, r27553, r27554, r27555, r27556, r27557, r27558, r27559, r27560, r27561, r27562, r27563, r27564, r27565, r27566, r27567, r27568, r27569, r27570, r27571, r27572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27547, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27548, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27549);
        mpfr_init(r27550);
        mpfr_init(r27551);
        mpfr_init(r27552);
        mpfr_init(r27553);
        mpfr_init_set_str(r27554, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r27555, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r27556, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r27557, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r27558, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27559);
        mpfr_init(r27560);
        mpfr_init(r27561);
        mpfr_init(r27562);
        mpfr_init(r27563);
        mpfr_init(r27564);
        mpfr_init(r27565);
        mpfr_init(r27566);
        mpfr_init(r27567);
        mpfr_init(r27568);
        mpfr_init(r27569);
        mpfr_init(r27570);
        mpfr_init(r27571);
        mpfr_init(r27572);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r27549, x, MPFR_RNDN);
        mpfr_abs(r27550, r27549, MPFR_RNDN);
        mpfr_mul(r27551, r27548, r27550, MPFR_RNDN);
        mpfr_add(r27552, r27547, r27551, MPFR_RNDN);
        mpfr_div(r27553, r27547, r27552, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r27559, r27553, r27558, MPFR_RNDN);
        mpfr_add(r27560, r27557, r27559, MPFR_RNDN);
        mpfr_mul(r27561, r27553, r27560, MPFR_RNDN);
        mpfr_add(r27562, r27556, r27561, MPFR_RNDN);
        mpfr_mul(r27563, r27553, r27562, MPFR_RNDN);
        mpfr_add(r27564, r27555, r27563, MPFR_RNDN);
        mpfr_mul(r27565, r27553, r27564, MPFR_RNDN);
        mpfr_add(r27566, r27554, r27565, MPFR_RNDN);
        mpfr_mul(r27567, r27553, r27566, MPFR_RNDN);
        mpfr_mul(r27568, r27550, r27550, MPFR_RNDN);
        mpfr_neg(r27569, r27568, MPFR_RNDN);
        mpfr_exp(r27570, r27569, MPFR_RNDN);
        mpfr_mul(r27571, r27567, r27570, MPFR_RNDN);
        mpfr_sub(r27572, r27547, r27571, MPFR_RNDN);
        return mpfr_get_d(r27572, MPFR_RNDN);
}

static mpfr_t r27573, r27574, r27575, r27576, r27577, r27578, r27579, r27580, r27581, r27582, r27583, r27584, r27585, r27586, r27587, r27588, r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27573, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27574, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27575);
        mpfr_init(r27576);
        mpfr_init(r27577);
        mpfr_init(r27578);
        mpfr_init(r27579);
        mpfr_init(r27580);
        mpfr_init(r27581);
        mpfr_init(r27582);
        mpfr_init(r27583);
        mpfr_init(r27584);
        mpfr_init_set_str(r27585, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r27586, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27587);
        mpfr_init(r27588);
        mpfr_init_set_str(r27589, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r27590);
        mpfr_init_set_str(r27591, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r27592);
        mpfr_init_set_str(r27593, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r27594);
        mpfr_init(r27595);
        mpfr_init(r27596);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r27575, x, MPFR_RNDN);
        mpfr_abs(r27576, r27575, MPFR_RNDN);
        mpfr_fma(r27577, r27574, r27576, r27573, MPFR_RNDN);
        mpfr_div(r27578, r27573, r27577, MPFR_RNDN);
        mpfr_div(r27579, r27578, r27577, MPFR_RNDN);
        mpfr_neg(r27580, r27573, MPFR_RNDN);
        mpfr_mul(r27581, r27576, r27576, MPFR_RNDN);
        mpfr_exp(r27582, r27581, MPFR_RNDN);
        mpfr_div(r27583, r27580, r27582, MPFR_RNDN);
        mpfr_mul(r27584, r27579, r27583, MPFR_RNDN);
        ;
        ;
        mpfr_div(r27587, r27586, r27577, MPFR_RNDN);
        mpfr_add(r27588, r27585, r27587, MPFR_RNDN);
        ;
        mpfr_fma(r27590, r27588, r27578, r27589, MPFR_RNDN);
        ;
        mpfr_fma(r27592, r27590, r27578, r27591, MPFR_RNDN);
        ;
        mpfr_div(r27594, r27593, r27577, MPFR_RNDN);
        mpfr_fma(r27595, r27594, r27583, r27573, MPFR_RNDN);
        mpfr_fma(r27596, r27584, r27592, r27595, MPFR_RNDN);
        return mpfr_get_d(r27596, MPFR_RNDN);
}

static mpfr_t r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609, r27610, r27611, r27612, r27613, r27614, r27615, r27616, r27617, r27618, r27619, r27620;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27597, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27598, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27599);
        mpfr_init(r27600);
        mpfr_init(r27601);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init(r27606);
        mpfr_init(r27607);
        mpfr_init(r27608);
        mpfr_init_set_str(r27609, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r27610, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27611);
        mpfr_init(r27612);
        mpfr_init_set_str(r27613, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r27614);
        mpfr_init_set_str(r27615, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r27616);
        mpfr_init_set_str(r27617, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r27618);
        mpfr_init(r27619);
        mpfr_init(r27620);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r27599, x, MPFR_RNDN);
        mpfr_abs(r27600, r27599, MPFR_RNDN);
        mpfr_fma(r27601, r27598, r27600, r27597, MPFR_RNDN);
        mpfr_div(r27602, r27597, r27601, MPFR_RNDN);
        mpfr_div(r27603, r27602, r27601, MPFR_RNDN);
        mpfr_neg(r27604, r27597, MPFR_RNDN);
        mpfr_mul(r27605, r27600, r27600, MPFR_RNDN);
        mpfr_exp(r27606, r27605, MPFR_RNDN);
        mpfr_div(r27607, r27604, r27606, MPFR_RNDN);
        mpfr_mul(r27608, r27603, r27607, MPFR_RNDN);
        ;
        ;
        mpfr_div(r27611, r27610, r27601, MPFR_RNDN);
        mpfr_add(r27612, r27609, r27611, MPFR_RNDN);
        ;
        mpfr_fma(r27614, r27612, r27602, r27613, MPFR_RNDN);
        ;
        mpfr_fma(r27616, r27614, r27602, r27615, MPFR_RNDN);
        ;
        mpfr_div(r27618, r27617, r27601, MPFR_RNDN);
        mpfr_fma(r27619, r27618, r27607, r27597, MPFR_RNDN);
        mpfr_fma(r27620, r27608, r27616, r27619, MPFR_RNDN);
        return mpfr_get_d(r27620, MPFR_RNDN);
}

