#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 r27110 = 1;
        float r27111 = 0.3275911;
        float r27112 = x;
        float r27113 = fabs(r27112);
        float r27114 = r27111 * r27113;
        float r27115 = r27110 + r27114;
        float r27116 = r27110 / r27115;
        float r27117 = 0.254829592;
        float r27118 = -0.284496736;
        float r27119 = 1.421413741;
        float r27120 = -1.453152027;
        float r27121 = 1.061405429;
        float r27122 = r27116 * r27121;
        float r27123 = r27120 + r27122;
        float r27124 = r27116 * r27123;
        float r27125 = r27119 + r27124;
        float r27126 = r27116 * r27125;
        float r27127 = r27118 + r27126;
        float r27128 = r27116 * r27127;
        float r27129 = r27117 + r27128;
        float r27130 = r27116 * r27129;
        float r27131 = r27113 * r27113;
        float r27132 = -r27131;
        float r27133 = exp(r27132);
        float r27134 = r27130 * r27133;
        float r27135 = r27110 - r27134;
        return r27135;
}

double f_id(double x) {
        double r27136 = 1;
        double r27137 = 0.3275911;
        double r27138 = x;
        double r27139 = fabs(r27138);
        double r27140 = r27137 * r27139;
        double r27141 = r27136 + r27140;
        double r27142 = r27136 / r27141;
        double r27143 = 0.254829592;
        double r27144 = -0.284496736;
        double r27145 = 1.421413741;
        double r27146 = -1.453152027;
        double r27147 = 1.061405429;
        double r27148 = r27142 * r27147;
        double r27149 = r27146 + r27148;
        double r27150 = r27142 * r27149;
        double r27151 = r27145 + r27150;
        double r27152 = r27142 * r27151;
        double r27153 = r27144 + r27152;
        double r27154 = r27142 * r27153;
        double r27155 = r27143 + r27154;
        double r27156 = r27142 * r27155;
        double r27157 = r27139 * r27139;
        double r27158 = -r27157;
        double r27159 = exp(r27158);
        double r27160 = r27156 * r27159;
        double r27161 = r27136 - r27160;
        return r27161;
}


double f_of(float x) {
        float r27162 = 1;
        float r27163 = x;
        float r27164 = fabs(r27163);
        float r27165 = 0.3275911;
        float r27166 = fma(r27164, r27165, r27162);
        float r27167 = r27162 / r27166;
        float r27168 = r27167 * r27167;
        float r27169 = 1.061405429;
        float r27170 = r27169 / r27166;
        float r27171 = -1.453152027;
        float r27172 = r27170 + r27171;
        float r27173 = 1.421413741;
        float r27174 = fma(r27172, r27167, r27173);
        float r27175 = -0.284496736;
        float r27176 = fma(r27174, r27167, r27175);
        float r27177 = 0.254829592;
        float r27178 = r27177 / r27166;
        float r27179 = fma(r27168, r27176, r27178);
        float r27180 = -r27162;
        float r27181 = r27164 * r27164;
        float r27182 = exp(r27181);
        float r27183 = r27180 / r27182;
        float r27184 = fma(r27179, r27183, r27162);
        float r27185 = exp(r27184);
        float r27186 = log(r27185);
        float r27187 = log(r27186);
        float r27188 = exp(r27187);
        return r27188;
}

double f_od(double x) {
        double r27189 = 1;
        double r27190 = x;
        double r27191 = fabs(r27190);
        double r27192 = 0.3275911;
        double r27193 = fma(r27191, r27192, r27189);
        double r27194 = r27189 / r27193;
        double r27195 = r27194 * r27194;
        double r27196 = 1.061405429;
        double r27197 = r27196 / r27193;
        double r27198 = -1.453152027;
        double r27199 = r27197 + r27198;
        double r27200 = 1.421413741;
        double r27201 = fma(r27199, r27194, r27200);
        double r27202 = -0.284496736;
        double r27203 = fma(r27201, r27194, r27202);
        double r27204 = 0.254829592;
        double r27205 = r27204 / r27193;
        double r27206 = fma(r27195, r27203, r27205);
        double r27207 = -r27189;
        double r27208 = r27191 * r27191;
        double r27209 = exp(r27208);
        double r27210 = r27207 / r27209;
        double r27211 = fma(r27206, r27210, r27189);
        double r27212 = exp(r27211);
        double r27213 = log(r27212);
        double r27214 = log(r27213);
        double r27215 = exp(r27214);
        return r27215;
}

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 r27216, r27217, r27218, r27219, r27220, r27221, r27222, r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231, r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240, r27241;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27216, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27217, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27218);
        mpfr_init(r27219);
        mpfr_init(r27220);
        mpfr_init(r27221);
        mpfr_init(r27222);
        mpfr_init_set_str(r27223, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r27224, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r27225, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r27226, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r27227, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27228);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
        mpfr_init(r27232);
        mpfr_init(r27233);
        mpfr_init(r27234);
        mpfr_init(r27235);
        mpfr_init(r27236);
        mpfr_init(r27237);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init(r27240);
        mpfr_init(r27241);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r27218, x, MPFR_RNDN);
        mpfr_abs(r27219, r27218, MPFR_RNDN);
        mpfr_mul(r27220, r27217, r27219, MPFR_RNDN);
        mpfr_add(r27221, r27216, r27220, MPFR_RNDN);
        mpfr_div(r27222, r27216, r27221, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r27228, r27222, r27227, MPFR_RNDN);
        mpfr_add(r27229, r27226, r27228, MPFR_RNDN);
        mpfr_mul(r27230, r27222, r27229, MPFR_RNDN);
        mpfr_add(r27231, r27225, r27230, MPFR_RNDN);
        mpfr_mul(r27232, r27222, r27231, MPFR_RNDN);
        mpfr_add(r27233, r27224, r27232, MPFR_RNDN);
        mpfr_mul(r27234, r27222, r27233, MPFR_RNDN);
        mpfr_add(r27235, r27223, r27234, MPFR_RNDN);
        mpfr_mul(r27236, r27222, r27235, MPFR_RNDN);
        mpfr_mul(r27237, r27219, r27219, MPFR_RNDN);
        mpfr_neg(r27238, r27237, MPFR_RNDN);
        mpfr_exp(r27239, r27238, MPFR_RNDN);
        mpfr_mul(r27240, r27236, r27239, MPFR_RNDN);
        mpfr_sub(r27241, r27216, r27240, MPFR_RNDN);
        return mpfr_get_d(r27241, MPFR_RNDN);
}

static mpfr_t r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249, r27250, r27251, r27252, r27253, r27254, r27255, r27256, r27257, r27258, r27259, r27260, r27261, r27262, r27263, r27264, r27265, r27266, r27267, r27268;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27242, "1", 10, MPFR_RNDN);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init_set_str(r27245, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init_set_str(r27249, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27250);
        mpfr_init_set_str(r27251, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r27252);
        mpfr_init_set_str(r27253, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r27254);
        mpfr_init_set_str(r27255, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r27256);
        mpfr_init_set_str(r27257, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r27258);
        mpfr_init(r27259);
        mpfr_init(r27260);
        mpfr_init(r27261);
        mpfr_init(r27262);
        mpfr_init(r27263);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
        mpfr_init(r27267);
        mpfr_init(r27268);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r27243, x, MPFR_RNDN);
        mpfr_abs(r27244, r27243, MPFR_RNDN);
        ;
        mpfr_fma(r27246, r27244, r27245, r27242, MPFR_RNDN);
        mpfr_div(r27247, r27242, r27246, MPFR_RNDN);
        mpfr_mul(r27248, r27247, r27247, MPFR_RNDN);
        ;
        mpfr_div(r27250, r27249, r27246, MPFR_RNDN);
        ;
        mpfr_add(r27252, r27250, r27251, MPFR_RNDN);
        ;
        mpfr_fma(r27254, r27252, r27247, r27253, MPFR_RNDN);
        ;
        mpfr_fma(r27256, r27254, r27247, r27255, MPFR_RNDN);
        ;
        mpfr_div(r27258, r27257, r27246, MPFR_RNDN);
        mpfr_fma(r27259, r27248, r27256, r27258, MPFR_RNDN);
        mpfr_neg(r27260, r27242, MPFR_RNDN);
        mpfr_mul(r27261, r27244, r27244, MPFR_RNDN);
        mpfr_exp(r27262, r27261, MPFR_RNDN);
        mpfr_div(r27263, r27260, r27262, MPFR_RNDN);
        mpfr_fma(r27264, r27259, r27263, r27242, MPFR_RNDN);
        mpfr_exp(r27265, r27264, MPFR_RNDN);
        mpfr_log(r27266, r27265, MPFR_RNDN);
        mpfr_log(r27267, r27266, MPFR_RNDN);
        mpfr_exp(r27268, r27267, MPFR_RNDN);
        return mpfr_get_d(r27268, MPFR_RNDN);
}

static mpfr_t r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27269, "1", 10, MPFR_RNDN);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init_set_str(r27272, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init(r27275);
        mpfr_init_set_str(r27276, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r27277);
        mpfr_init_set_str(r27278, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r27279);
        mpfr_init_set_str(r27280, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r27281);
        mpfr_init_set_str(r27282, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r27283);
        mpfr_init_set_str(r27284, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init(r27295);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r27270, x, MPFR_RNDN);
        mpfr_abs(r27271, r27270, MPFR_RNDN);
        ;
        mpfr_fma(r27273, r27271, r27272, r27269, MPFR_RNDN);
        mpfr_div(r27274, r27269, r27273, MPFR_RNDN);
        mpfr_mul(r27275, r27274, r27274, MPFR_RNDN);
        ;
        mpfr_div(r27277, r27276, r27273, MPFR_RNDN);
        ;
        mpfr_add(r27279, r27277, r27278, MPFR_RNDN);
        ;
        mpfr_fma(r27281, r27279, r27274, r27280, MPFR_RNDN);
        ;
        mpfr_fma(r27283, r27281, r27274, r27282, MPFR_RNDN);
        ;
        mpfr_div(r27285, r27284, r27273, MPFR_RNDN);
        mpfr_fma(r27286, r27275, r27283, r27285, MPFR_RNDN);
        mpfr_neg(r27287, r27269, MPFR_RNDN);
        mpfr_mul(r27288, r27271, r27271, MPFR_RNDN);
        mpfr_exp(r27289, r27288, MPFR_RNDN);
        mpfr_div(r27290, r27287, r27289, MPFR_RNDN);
        mpfr_fma(r27291, r27286, r27290, r27269, MPFR_RNDN);
        mpfr_exp(r27292, r27291, MPFR_RNDN);
        mpfr_log(r27293, r27292, MPFR_RNDN);
        mpfr_log(r27294, r27293, MPFR_RNDN);
        mpfr_exp(r27295, r27294, MPFR_RNDN);
        return mpfr_get_d(r27295, MPFR_RNDN);
}

