#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 r18369 = 1.0f;
        float r18370 = 0.3275911f;
        float r18371 = x;
        float r18372 = fabs(r18371);
        float r18373 = r18370 * r18372;
        float r18374 = r18369 + r18373;
        float r18375 = r18369 / r18374;
        float r18376 = 0.254829592f;
        float r18377 = -0.284496736f;
        float r18378 = 1.421413741f;
        float r18379 = -1.453152027f;
        float r18380 = 1.061405429f;
        float r18381 = r18375 * r18380;
        float r18382 = r18379 + r18381;
        float r18383 = r18375 * r18382;
        float r18384 = r18378 + r18383;
        float r18385 = r18375 * r18384;
        float r18386 = r18377 + r18385;
        float r18387 = r18375 * r18386;
        float r18388 = r18376 + r18387;
        float r18389 = r18375 * r18388;
        float r18390 = r18372 * r18372;
        float r18391 = -r18390;
        float r18392 = exp(r18391);
        float r18393 = r18389 * r18392;
        float r18394 = r18369 - r18393;
        return r18394;
}

double f_id(double x) {
        double r18395 = 1.0;
        double r18396 = 0.3275911;
        double r18397 = x;
        double r18398 = fabs(r18397);
        double r18399 = r18396 * r18398;
        double r18400 = r18395 + r18399;
        double r18401 = r18395 / r18400;
        double r18402 = 0.254829592;
        double r18403 = -0.284496736;
        double r18404 = 1.421413741;
        double r18405 = -1.453152027;
        double r18406 = 1.061405429;
        double r18407 = r18401 * r18406;
        double r18408 = r18405 + r18407;
        double r18409 = r18401 * r18408;
        double r18410 = r18404 + r18409;
        double r18411 = r18401 * r18410;
        double r18412 = r18403 + r18411;
        double r18413 = r18401 * r18412;
        double r18414 = r18402 + r18413;
        double r18415 = r18401 * r18414;
        double r18416 = r18398 * r18398;
        double r18417 = -r18416;
        double r18418 = exp(r18417);
        double r18419 = r18415 * r18418;
        double r18420 = r18395 - r18419;
        return r18420;
}


double f_of(float x) {
        float r18421 = 1.0f;
        float r18422 = 1.061405429f;
        float r18423 = 0.3275911f;
        float r18424 = x;
        float r18425 = fabs(r18424);
        float r18426 = fma(r18423, r18425, r18421);
        float r18427 = r18422 / r18426;
        float r18428 = -1.453152027f;
        float r18429 = r18427 + r18428;
        float r18430 = r18421 / r18426;
        float r18431 = r18430 / r18426;
        float r18432 = 1.421413741f;
        float r18433 = r18432 / r18426;
        float r18434 = -0.284496736f;
        float r18435 = r18433 + r18434;
        float r18436 = fma(r18429, r18431, r18435);
        float r18437 = r18430 * (r18430 * r18430);
        float r18438 = cbrt(r18437);
        float r18439 = r18438 / r18426;
        float r18440 = 0.254829592f;
        float r18441 = r18440 / r18426;
        float r18442 = fma(r18436, r18439, r18441);
        float r18443 = r18425 * r18425;
        float r18444 = exp(r18443);
        float r18445 = r18442 / r18444;
        float r18446 = r18421 - r18445;
        return r18446;
}

double f_od(double x) {
        double r18447 = 1.0;
        double r18448 = 1.061405429;
        double r18449 = 0.3275911;
        double r18450 = x;
        double r18451 = fabs(r18450);
        double r18452 = fma(r18449, r18451, r18447);
        double r18453 = r18448 / r18452;
        double r18454 = -1.453152027;
        double r18455 = r18453 + r18454;
        double r18456 = r18447 / r18452;
        double r18457 = r18456 / r18452;
        double r18458 = 1.421413741;
        double r18459 = r18458 / r18452;
        double r18460 = -0.284496736;
        double r18461 = r18459 + r18460;
        double r18462 = fma(r18455, r18457, r18461);
        double r18463 = r18456 * (r18456 * r18456);
        double r18464 = cbrt(r18463);
        double r18465 = r18464 / r18452;
        double r18466 = 0.254829592;
        double r18467 = r18466 / r18452;
        double r18468 = fma(r18462, r18465, r18467);
        double r18469 = r18451 * r18451;
        double r18470 = exp(r18469);
        double r18471 = r18468 / r18470;
        double r18472 = r18447 - r18471;
        return r18472;
}

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 r18473, r18474, r18475, r18476, r18477, r18478, r18479, r18480, r18481, r18482, r18483, r18484, r18485, r18486, r18487, r18488, r18489, r18490, r18491, r18492, r18493, r18494, r18495, r18496, r18497, r18498;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18473, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18474, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18475);
        mpfr_init(r18476);
        mpfr_init(r18477);
        mpfr_init(r18478);
        mpfr_init(r18479);
        mpfr_init_set_str(r18480, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r18481, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r18482, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r18483, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r18484, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r18485);
        mpfr_init(r18486);
        mpfr_init(r18487);
        mpfr_init(r18488);
        mpfr_init(r18489);
        mpfr_init(r18490);
        mpfr_init(r18491);
        mpfr_init(r18492);
        mpfr_init(r18493);
        mpfr_init(r18494);
        mpfr_init(r18495);
        mpfr_init(r18496);
        mpfr_init(r18497);
        mpfr_init(r18498);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r18475, x, MPFR_RNDN);
        mpfr_abs(r18476, r18475, MPFR_RNDN);
        mpfr_mul(r18477, r18474, r18476, MPFR_RNDN);
        mpfr_add(r18478, r18473, r18477, MPFR_RNDN);
        mpfr_div(r18479, r18473, r18478, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r18485, r18479, r18484, MPFR_RNDN);
        mpfr_add(r18486, r18483, r18485, MPFR_RNDN);
        mpfr_mul(r18487, r18479, r18486, MPFR_RNDN);
        mpfr_add(r18488, r18482, r18487, MPFR_RNDN);
        mpfr_mul(r18489, r18479, r18488, MPFR_RNDN);
        mpfr_add(r18490, r18481, r18489, MPFR_RNDN);
        mpfr_mul(r18491, r18479, r18490, MPFR_RNDN);
        mpfr_add(r18492, r18480, r18491, MPFR_RNDN);
        mpfr_mul(r18493, r18479, r18492, MPFR_RNDN);
        mpfr_mul(r18494, r18476, r18476, MPFR_RNDN);
        mpfr_neg(r18495, r18494, MPFR_RNDN);
        mpfr_exp(r18496, r18495, MPFR_RNDN);
        mpfr_mul(r18497, r18493, r18496, MPFR_RNDN);
        mpfr_sub(r18498, r18473, r18497, MPFR_RNDN);
        return mpfr_get_d(r18498, MPFR_RNDN);
}

static mpfr_t r18499, r18500, r18501, r18502, r18503, r18504, r18505, r18506, r18507, r18508, r18509, r18510, r18511, r18512, r18513, r18514, r18515, r18516, r18517, r18518, r18519, r18520, r18521, r18522, r18523, r18524;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18499, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18500, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18501, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18502);
        mpfr_init(r18503);
        mpfr_init(r18504);
        mpfr_init(r18505);
        mpfr_init_set_str(r18506, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18507);
        mpfr_init(r18508);
        mpfr_init(r18509);
        mpfr_init_set_str(r18510, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18511);
        mpfr_init_set_str(r18512, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18513);
        mpfr_init(r18514);
        mpfr_init(r18515);
        mpfr_init(r18516);
        mpfr_init(r18517);
        mpfr_init_set_str(r18518, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18519);
        mpfr_init(r18520);
        mpfr_init(r18521);
        mpfr_init(r18522);
        mpfr_init(r18523);
        mpfr_init(r18524);
}

double f_fm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18502, x, MPFR_RNDN);
        mpfr_abs(r18503, r18502, MPFR_RNDN);
        mpfr_fma(r18504, r18501, r18503, r18499, MPFR_RNDN);
        mpfr_div(r18505, r18500, r18504, MPFR_RNDN);
        ;
        mpfr_add(r18507, r18505, r18506, MPFR_RNDN);
        mpfr_div(r18508, r18499, r18504, MPFR_RNDN);
        mpfr_div(r18509, r18508, r18504, MPFR_RNDN);
        ;
        mpfr_div(r18511, r18510, r18504, MPFR_RNDN);
        ;
        mpfr_add(r18513, r18511, r18512, MPFR_RNDN);
        mpfr_fma(r18514, r18507, r18509, r18513, MPFR_RNDN);
        mpfr_mul(r18515, r18508, r18508, MPFR_RNDN); mpfr_mul(r18515, r18515, r18508, MPFR_RNDN);
        mpfr_cbrt(r18516, r18515, MPFR_RNDN);
        mpfr_div(r18517, r18516, r18504, MPFR_RNDN);
        ;
        mpfr_div(r18519, r18518, r18504, MPFR_RNDN);
        mpfr_fma(r18520, r18514, r18517, r18519, MPFR_RNDN);
        mpfr_mul(r18521, r18503, r18503, MPFR_RNDN);
        mpfr_exp(r18522, r18521, MPFR_RNDN);
        mpfr_div(r18523, r18520, r18522, MPFR_RNDN);
        mpfr_sub(r18524, r18499, r18523, MPFR_RNDN);
        return mpfr_get_d(r18524, MPFR_RNDN);
}

static mpfr_t r18525, r18526, r18527, r18528, r18529, r18530, r18531, r18532, r18533, r18534, r18535, r18536, r18537, r18538, r18539, r18540, r18541, r18542, r18543, r18544, r18545, r18546, r18547, r18548, r18549, r18550;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18525, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18526, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18527, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18528);
        mpfr_init(r18529);
        mpfr_init(r18530);
        mpfr_init(r18531);
        mpfr_init_set_str(r18532, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18533);
        mpfr_init(r18534);
        mpfr_init(r18535);
        mpfr_init_set_str(r18536, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18537);
        mpfr_init_set_str(r18538, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18539);
        mpfr_init(r18540);
        mpfr_init(r18541);
        mpfr_init(r18542);
        mpfr_init(r18543);
        mpfr_init_set_str(r18544, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18545);
        mpfr_init(r18546);
        mpfr_init(r18547);
        mpfr_init(r18548);
        mpfr_init(r18549);
        mpfr_init(r18550);
}

double f_dm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18528, x, MPFR_RNDN);
        mpfr_abs(r18529, r18528, MPFR_RNDN);
        mpfr_fma(r18530, r18527, r18529, r18525, MPFR_RNDN);
        mpfr_div(r18531, r18526, r18530, MPFR_RNDN);
        ;
        mpfr_add(r18533, r18531, r18532, MPFR_RNDN);
        mpfr_div(r18534, r18525, r18530, MPFR_RNDN);
        mpfr_div(r18535, r18534, r18530, MPFR_RNDN);
        ;
        mpfr_div(r18537, r18536, r18530, MPFR_RNDN);
        ;
        mpfr_add(r18539, r18537, r18538, MPFR_RNDN);
        mpfr_fma(r18540, r18533, r18535, r18539, MPFR_RNDN);
        mpfr_mul(r18541, r18534, r18534, MPFR_RNDN); mpfr_mul(r18541, r18541, r18534, MPFR_RNDN);
        mpfr_cbrt(r18542, r18541, MPFR_RNDN);
        mpfr_div(r18543, r18542, r18530, MPFR_RNDN);
        ;
        mpfr_div(r18545, r18544, r18530, MPFR_RNDN);
        mpfr_fma(r18546, r18540, r18543, r18545, MPFR_RNDN);
        mpfr_mul(r18547, r18529, r18529, MPFR_RNDN);
        mpfr_exp(r18548, r18547, MPFR_RNDN);
        mpfr_div(r18549, r18546, r18548, MPFR_RNDN);
        mpfr_sub(r18550, r18525, r18549, MPFR_RNDN);
        return mpfr_get_d(r18550, MPFR_RNDN);
}

