#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 r11323 = 1;
        float r11324 = 0.3275911;
        float r11325 = x;
        float r11326 = fabs(r11325);
        float r11327 = r11324 * r11326;
        float r11328 = r11323 + r11327;
        float r11329 = r11323 / r11328;
        float r11330 = 0.254829592;
        float r11331 = -0.284496736;
        float r11332 = 1.421413741;
        float r11333 = -1.453152027;
        float r11334 = 1.061405429;
        float r11335 = r11329 * r11334;
        float r11336 = r11333 + r11335;
        float r11337 = r11329 * r11336;
        float r11338 = r11332 + r11337;
        float r11339 = r11329 * r11338;
        float r11340 = r11331 + r11339;
        float r11341 = r11329 * r11340;
        float r11342 = r11330 + r11341;
        float r11343 = r11329 * r11342;
        float r11344 = r11326 * r11326;
        float r11345 = -r11344;
        float r11346 = exp(r11345);
        float r11347 = r11343 * r11346;
        float r11348 = r11323 - r11347;
        return r11348;
}

double f_id(double x) {
        double r11349 = 1;
        double r11350 = 0.3275911;
        double r11351 = x;
        double r11352 = fabs(r11351);
        double r11353 = r11350 * r11352;
        double r11354 = r11349 + r11353;
        double r11355 = r11349 / r11354;
        double r11356 = 0.254829592;
        double r11357 = -0.284496736;
        double r11358 = 1.421413741;
        double r11359 = -1.453152027;
        double r11360 = 1.061405429;
        double r11361 = r11355 * r11360;
        double r11362 = r11359 + r11361;
        double r11363 = r11355 * r11362;
        double r11364 = r11358 + r11363;
        double r11365 = r11355 * r11364;
        double r11366 = r11357 + r11365;
        double r11367 = r11355 * r11366;
        double r11368 = r11356 + r11367;
        double r11369 = r11355 * r11368;
        double r11370 = r11352 * r11352;
        double r11371 = -r11370;
        double r11372 = exp(r11371);
        double r11373 = r11369 * r11372;
        double r11374 = r11349 - r11373;
        return r11374;
}


double f_of(float x) {
        float r11375 = 1;
        float r11376 = -r11375;
        float r11377 = x;
        float r11378 = fabs(r11377);
        float r11379 = r11378 * r11378;
        float r11380 = exp(r11379);
        float r11381 = r11376 / r11380;
        float r11382 = 0.3275911;
        float r11383 = fma(r11382, r11378, r11375);
        float r11384 = r11375 / r11383;
        float r11385 = r11384 * r11384;
        float r11386 = 1.061405429;
        float r11387 = r11386 / r11383;
        float r11388 = -1.453152027;
        float r11389 = r11387 + r11388;
        float r11390 = 1.421413741;
        float r11391 = fma(r11384, r11389, r11390);
        float r11392 = -0.284496736;
        float r11393 = fma(r11384, r11391, r11392);
        float r11394 = 0.254829592;
        float r11395 = r11394 / r11383;
        float r11396 = exp(r11395);
        float r11397 = log(r11396);
        float r11398 = fma(r11385, r11393, r11397);
        float r11399 = fma(r11381, r11398, r11375);
        return r11399;
}

double f_od(double x) {
        double r11400 = 1;
        double r11401 = -r11400;
        double r11402 = x;
        double r11403 = fabs(r11402);
        double r11404 = r11403 * r11403;
        double r11405 = exp(r11404);
        double r11406 = r11401 / r11405;
        double r11407 = 0.3275911;
        double r11408 = fma(r11407, r11403, r11400);
        double r11409 = r11400 / r11408;
        double r11410 = r11409 * r11409;
        double r11411 = 1.061405429;
        double r11412 = r11411 / r11408;
        double r11413 = -1.453152027;
        double r11414 = r11412 + r11413;
        double r11415 = 1.421413741;
        double r11416 = fma(r11409, r11414, r11415);
        double r11417 = -0.284496736;
        double r11418 = fma(r11409, r11416, r11417);
        double r11419 = 0.254829592;
        double r11420 = r11419 / r11408;
        double r11421 = exp(r11420);
        double r11422 = log(r11421);
        double r11423 = fma(r11410, r11418, r11422);
        double r11424 = fma(r11406, r11423, r11400);
        return r11424;
}

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 r11425, r11426, r11427, r11428, r11429, r11430, r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438, r11439, r11440, r11441, r11442, r11443, r11444, r11445, r11446, r11447, r11448, r11449, r11450;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11425, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11426, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r11427);
        mpfr_init(r11428);
        mpfr_init(r11429);
        mpfr_init(r11430);
        mpfr_init(r11431);
        mpfr_init_set_str(r11432, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r11433, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r11434, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r11435, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r11436, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r11437);
        mpfr_init(r11438);
        mpfr_init(r11439);
        mpfr_init(r11440);
        mpfr_init(r11441);
        mpfr_init(r11442);
        mpfr_init(r11443);
        mpfr_init(r11444);
        mpfr_init(r11445);
        mpfr_init(r11446);
        mpfr_init(r11447);
        mpfr_init(r11448);
        mpfr_init(r11449);
        mpfr_init(r11450);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r11427, x, MPFR_RNDN);
        mpfr_abs(r11428, r11427, MPFR_RNDN);
        mpfr_mul(r11429, r11426, r11428, MPFR_RNDN);
        mpfr_add(r11430, r11425, r11429, MPFR_RNDN);
        mpfr_div(r11431, r11425, r11430, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r11437, r11431, r11436, MPFR_RNDN);
        mpfr_add(r11438, r11435, r11437, MPFR_RNDN);
        mpfr_mul(r11439, r11431, r11438, MPFR_RNDN);
        mpfr_add(r11440, r11434, r11439, MPFR_RNDN);
        mpfr_mul(r11441, r11431, r11440, MPFR_RNDN);
        mpfr_add(r11442, r11433, r11441, MPFR_RNDN);
        mpfr_mul(r11443, r11431, r11442, MPFR_RNDN);
        mpfr_add(r11444, r11432, r11443, MPFR_RNDN);
        mpfr_mul(r11445, r11431, r11444, MPFR_RNDN);
        mpfr_mul(r11446, r11428, r11428, MPFR_RNDN);
        mpfr_neg(r11447, r11446, MPFR_RNDN);
        mpfr_exp(r11448, r11447, MPFR_RNDN);
        mpfr_mul(r11449, r11445, r11448, MPFR_RNDN);
        mpfr_sub(r11450, r11425, r11449, MPFR_RNDN);
        return mpfr_get_d(r11450, MPFR_RNDN);
}

static mpfr_t r11451, r11452, r11453, r11454, r11455, r11456, r11457, r11458, r11459, r11460, r11461, r11462, r11463, r11464, r11465, r11466, r11467, r11468, r11469, r11470, r11471, r11472, r11473, r11474, r11475;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11451, "1", 10, MPFR_RNDN);
        mpfr_init(r11452);
        mpfr_init(r11453);
        mpfr_init(r11454);
        mpfr_init(r11455);
        mpfr_init(r11456);
        mpfr_init(r11457);
        mpfr_init_set_str(r11458, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r11459);
        mpfr_init(r11460);
        mpfr_init(r11461);
        mpfr_init_set_str(r11462, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r11463);
        mpfr_init_set_str(r11464, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r11465);
        mpfr_init_set_str(r11466, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r11467);
        mpfr_init_set_str(r11468, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r11469);
        mpfr_init_set_str(r11470, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r11471);
        mpfr_init(r11472);
        mpfr_init(r11473);
        mpfr_init(r11474);
        mpfr_init(r11475);
}

double f_fm(double x) {
        ;
        mpfr_neg(r11452, r11451, MPFR_RNDN);
        mpfr_set_d(r11453, x, MPFR_RNDN);
        mpfr_abs(r11454, r11453, MPFR_RNDN);
        mpfr_mul(r11455, r11454, r11454, MPFR_RNDN);
        mpfr_exp(r11456, r11455, MPFR_RNDN);
        mpfr_div(r11457, r11452, r11456, MPFR_RNDN);
        ;
        mpfr_fma(r11459, r11458, r11454, r11451, MPFR_RNDN);
        mpfr_div(r11460, r11451, r11459, MPFR_RNDN);
        mpfr_mul(r11461, r11460, r11460, MPFR_RNDN);
        ;
        mpfr_div(r11463, r11462, r11459, MPFR_RNDN);
        ;
        mpfr_add(r11465, r11463, r11464, MPFR_RNDN);
        ;
        mpfr_fma(r11467, r11460, r11465, r11466, MPFR_RNDN);
        ;
        mpfr_fma(r11469, r11460, r11467, r11468, MPFR_RNDN);
        ;
        mpfr_div(r11471, r11470, r11459, MPFR_RNDN);
        mpfr_exp(r11472, r11471, MPFR_RNDN);
        mpfr_log(r11473, r11472, MPFR_RNDN);
        mpfr_fma(r11474, r11461, r11469, r11473, MPFR_RNDN);
        mpfr_fma(r11475, r11457, r11474, r11451, MPFR_RNDN);
        return mpfr_get_d(r11475, MPFR_RNDN);
}

static mpfr_t r11476, r11477, r11478, r11479, r11480, r11481, r11482, r11483, r11484, r11485, r11486, r11487, r11488, r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496, r11497, r11498, r11499, r11500;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11476, "1", 10, MPFR_RNDN);
        mpfr_init(r11477);
        mpfr_init(r11478);
        mpfr_init(r11479);
        mpfr_init(r11480);
        mpfr_init(r11481);
        mpfr_init(r11482);
        mpfr_init_set_str(r11483, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r11484);
        mpfr_init(r11485);
        mpfr_init(r11486);
        mpfr_init_set_str(r11487, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r11488);
        mpfr_init_set_str(r11489, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r11490);
        mpfr_init_set_str(r11491, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r11492);
        mpfr_init_set_str(r11493, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r11494);
        mpfr_init_set_str(r11495, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
        mpfr_init(r11499);
        mpfr_init(r11500);
}

double f_dm(double x) {
        ;
        mpfr_neg(r11477, r11476, MPFR_RNDN);
        mpfr_set_d(r11478, x, MPFR_RNDN);
        mpfr_abs(r11479, r11478, MPFR_RNDN);
        mpfr_mul(r11480, r11479, r11479, MPFR_RNDN);
        mpfr_exp(r11481, r11480, MPFR_RNDN);
        mpfr_div(r11482, r11477, r11481, MPFR_RNDN);
        ;
        mpfr_fma(r11484, r11483, r11479, r11476, MPFR_RNDN);
        mpfr_div(r11485, r11476, r11484, MPFR_RNDN);
        mpfr_mul(r11486, r11485, r11485, MPFR_RNDN);
        ;
        mpfr_div(r11488, r11487, r11484, MPFR_RNDN);
        ;
        mpfr_add(r11490, r11488, r11489, MPFR_RNDN);
        ;
        mpfr_fma(r11492, r11485, r11490, r11491, MPFR_RNDN);
        ;
        mpfr_fma(r11494, r11485, r11492, r11493, MPFR_RNDN);
        ;
        mpfr_div(r11496, r11495, r11484, MPFR_RNDN);
        mpfr_exp(r11497, r11496, MPFR_RNDN);
        mpfr_log(r11498, r11497, MPFR_RNDN);
        mpfr_fma(r11499, r11486, r11494, r11498, MPFR_RNDN);
        mpfr_fma(r11500, r11482, r11499, r11476, MPFR_RNDN);
        return mpfr_get_d(r11500, MPFR_RNDN);
}

