#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 r18009 = 1.0f;
        float r18010 = 0.32759109139442444f;
        float r18011 = x;
        float r18012 = fabs(r18011);
        float r18013 = r18010 * r18012;
        float r18014 = r18009 + r18013;
        float r18015 = r18009 / r18014;
        float r18016 = 0.2548295855522156f;
        float r18017 = -0.2844967246055603f;
        float r18018 = 1.421413779258728f;
        float r18019 = -1.453152060508728f;
        float r18020 = 1.0614054203033447f;
        float r18021 = r18015 * r18020;
        float r18022 = r18019 + r18021;
        float r18023 = r18015 * r18022;
        float r18024 = r18018 + r18023;
        float r18025 = r18015 * r18024;
        float r18026 = r18017 + r18025;
        float r18027 = r18015 * r18026;
        float r18028 = r18016 + r18027;
        float r18029 = r18015 * r18028;
        float r18030 = r18012 * r18012;
        float r18031 = -r18030;
        float r18032 = exp(r18031);
        float r18033 = r18029 * r18032;
        float r18034 = r18009 - r18033;
        return r18034;
}

double f_id(double x) {
        double r18035 = 1.0;
        double r18036 = 0.32759109139442444;
        double r18037 = x;
        double r18038 = fabs(r18037);
        double r18039 = r18036 * r18038;
        double r18040 = r18035 + r18039;
        double r18041 = r18035 / r18040;
        double r18042 = 0.2548295855522156;
        double r18043 = -0.2844967246055603;
        double r18044 = 1.421413779258728;
        double r18045 = -1.453152060508728;
        double r18046 = 1.0614054203033447;
        double r18047 = r18041 * r18046;
        double r18048 = r18045 + r18047;
        double r18049 = r18041 * r18048;
        double r18050 = r18044 + r18049;
        double r18051 = r18041 * r18050;
        double r18052 = r18043 + r18051;
        double r18053 = r18041 * r18052;
        double r18054 = r18042 + r18053;
        double r18055 = r18041 * r18054;
        double r18056 = r18038 * r18038;
        double r18057 = -r18056;
        double r18058 = exp(r18057);
        double r18059 = r18055 * r18058;
        double r18060 = r18035 - r18059;
        return r18060;
}


double f_of(float x) {
        float r18061 = 1.0f;
        float r18062 = 1.0614054203033447f;
        float r18063 = 0.32759109139442444f;
        float r18064 = x;
        float r18065 = fabs(r18064);
        float r18066 = fma(r18063, r18065, r18061);
        float r18067 = r18062 / r18066;
        float r18068 = -1.453152060508728f;
        float r18069 = r18067 + r18068;
        float r18070 = r18061 / r18066;
        float r18071 = r18070 / r18066;
        float r18072 = 1.421413779258728f;
        float r18073 = r18072 / r18066;
        float r18074 = -0.2844967246055603f;
        float r18075 = r18073 + r18074;
        float r18076 = fma(r18069, r18071, r18075);
        float r18077 = log1p(r18076);
        float r18078 = cbrt(r18077);
        float r18079 = r18078 * (r18078 * r18078);
        float r18080 = expm1(r18079);
        float r18081 = 0.2548295855522156f;
        float r18082 = r18081 / r18066;
        float r18083 = fma(r18080, r18071, r18082);
        float r18084 = r18065 * r18065;
        float r18085 = exp(r18084);
        float r18086 = r18083 / r18085;
        float r18087 = r18061 - r18086;
        return r18087;
}

double f_od(double x) {
        double r18088 = 1.0;
        double r18089 = 1.0614054203033447;
        double r18090 = 0.32759109139442444;
        double r18091 = x;
        double r18092 = fabs(r18091);
        double r18093 = fma(r18090, r18092, r18088);
        double r18094 = r18089 / r18093;
        double r18095 = -1.453152060508728;
        double r18096 = r18094 + r18095;
        double r18097 = r18088 / r18093;
        double r18098 = r18097 / r18093;
        double r18099 = 1.421413779258728;
        double r18100 = r18099 / r18093;
        double r18101 = -0.2844967246055603;
        double r18102 = r18100 + r18101;
        double r18103 = fma(r18096, r18098, r18102);
        double r18104 = log1p(r18103);
        double r18105 = cbrt(r18104);
        double r18106 = r18105 * (r18105 * r18105);
        double r18107 = expm1(r18106);
        double r18108 = 0.2548295855522156;
        double r18109 = r18108 / r18093;
        double r18110 = fma(r18107, r18098, r18109);
        double r18111 = r18092 * r18092;
        double r18112 = exp(r18111);
        double r18113 = r18110 / r18112;
        double r18114 = r18088 - r18113;
        return r18114;
}

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 r18115, r18116, r18117, r18118, r18119, r18120, r18121, r18122, r18123, r18124, r18125, r18126, r18127, r18128, r18129, r18130, r18131, r18132, r18133, r18134, r18135, r18136, r18137, r18138, r18139, r18140;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18115, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18116, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18117);
        mpfr_init(r18118);
        mpfr_init(r18119);
        mpfr_init(r18120);
        mpfr_init(r18121);
        mpfr_init_set_str(r18122, "0.254829592", 10, MPFR_RNDN);
        mpfr_init_set_str(r18123, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init_set_str(r18124, "1.421413741", 10, MPFR_RNDN);
        mpfr_init_set_str(r18125, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init_set_str(r18126, "1.061405429", 10, MPFR_RNDN);
        mpfr_init(r18127);
        mpfr_init(r18128);
        mpfr_init(r18129);
        mpfr_init(r18130);
        mpfr_init(r18131);
        mpfr_init(r18132);
        mpfr_init(r18133);
        mpfr_init(r18134);
        mpfr_init(r18135);
        mpfr_init(r18136);
        mpfr_init(r18137);
        mpfr_init(r18138);
        mpfr_init(r18139);
        mpfr_init(r18140);
}

double f_im(double x) {
        ;
        ;
        mpfr_set_d(r18117, x, MPFR_RNDN);
        mpfr_abs(r18118, r18117, MPFR_RNDN);
        mpfr_mul(r18119, r18116, r18118, MPFR_RNDN);
        mpfr_add(r18120, r18115, r18119, MPFR_RNDN);
        mpfr_div(r18121, r18115, r18120, MPFR_RNDN);
        ;
        ;
        ;
        ;
        ;
        mpfr_mul(r18127, r18121, r18126, MPFR_RNDN);
        mpfr_add(r18128, r18125, r18127, MPFR_RNDN);
        mpfr_mul(r18129, r18121, r18128, MPFR_RNDN);
        mpfr_add(r18130, r18124, r18129, MPFR_RNDN);
        mpfr_mul(r18131, r18121, r18130, MPFR_RNDN);
        mpfr_add(r18132, r18123, r18131, MPFR_RNDN);
        mpfr_mul(r18133, r18121, r18132, MPFR_RNDN);
        mpfr_add(r18134, r18122, r18133, MPFR_RNDN);
        mpfr_mul(r18135, r18121, r18134, MPFR_RNDN);
        mpfr_mul(r18136, r18118, r18118, MPFR_RNDN);
        mpfr_neg(r18137, r18136, MPFR_RNDN);
        mpfr_exp(r18138, r18137, MPFR_RNDN);
        mpfr_mul(r18139, r18135, r18138, MPFR_RNDN);
        mpfr_sub(r18140, r18115, r18139, MPFR_RNDN);
        return mpfr_get_d(r18140, MPFR_RNDN);
}

static mpfr_t r18141, r18142, r18143, r18144, r18145, r18146, r18147, r18148, r18149, r18150, r18151, r18152, r18153, r18154, r18155, r18156, r18157, r18158, r18159, r18160, r18161, r18162, r18163, r18164, r18165, r18166, r18167;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18141, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18142, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18143, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18144);
        mpfr_init(r18145);
        mpfr_init(r18146);
        mpfr_init(r18147);
        mpfr_init_set_str(r18148, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18149);
        mpfr_init(r18150);
        mpfr_init(r18151);
        mpfr_init_set_str(r18152, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18153);
        mpfr_init_set_str(r18154, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18155);
        mpfr_init(r18156);
        mpfr_init(r18157);
        mpfr_init(r18158);
        mpfr_init(r18159);
        mpfr_init(r18160);
        mpfr_init_set_str(r18161, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18162);
        mpfr_init(r18163);
        mpfr_init(r18164);
        mpfr_init(r18165);
        mpfr_init(r18166);
        mpfr_init(r18167);
}

double f_fm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18144, x, MPFR_RNDN);
        mpfr_abs(r18145, r18144, MPFR_RNDN);
        mpfr_fma(r18146, r18143, r18145, r18141, MPFR_RNDN);
        mpfr_div(r18147, r18142, r18146, MPFR_RNDN);
        ;
        mpfr_add(r18149, r18147, r18148, MPFR_RNDN);
        mpfr_div(r18150, r18141, r18146, MPFR_RNDN);
        mpfr_div(r18151, r18150, r18146, MPFR_RNDN);
        ;
        mpfr_div(r18153, r18152, r18146, MPFR_RNDN);
        ;
        mpfr_add(r18155, r18153, r18154, MPFR_RNDN);
        mpfr_fma(r18156, r18149, r18151, r18155, MPFR_RNDN);
        mpfr_log1p(r18157, r18156, MPFR_RNDN);
        mpfr_cbrt(r18158, r18157, MPFR_RNDN);
        mpfr_mul(r18159, r18158, r18158, MPFR_RNDN); mpfr_mul(r18159, r18159, r18158, MPFR_RNDN);
        mpfr_expm1(r18160, r18159, MPFR_RNDN);
        ;
        mpfr_div(r18162, r18161, r18146, MPFR_RNDN);
        mpfr_fma(r18163, r18160, r18151, r18162, MPFR_RNDN);
        mpfr_mul(r18164, r18145, r18145, MPFR_RNDN);
        mpfr_exp(r18165, r18164, MPFR_RNDN);
        mpfr_div(r18166, r18163, r18165, MPFR_RNDN);
        mpfr_sub(r18167, r18141, r18166, MPFR_RNDN);
        return mpfr_get_d(r18167, MPFR_RNDN);
}

static mpfr_t r18168, r18169, r18170, r18171, r18172, r18173, r18174, r18175, r18176, r18177, r18178, r18179, r18180, r18181, r18182, r18183, r18184, r18185, r18186, r18187, r18188, r18189, r18190, r18191, r18192, r18193, r18194;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18168, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18169, "1.061405429", 10, MPFR_RNDN);
        mpfr_init_set_str(r18170, "0.3275911", 10, MPFR_RNDN);
        mpfr_init(r18171);
        mpfr_init(r18172);
        mpfr_init(r18173);
        mpfr_init(r18174);
        mpfr_init_set_str(r18175, "-1.453152027", 10, MPFR_RNDN);
        mpfr_init(r18176);
        mpfr_init(r18177);
        mpfr_init(r18178);
        mpfr_init_set_str(r18179, "1.421413741", 10, MPFR_RNDN);
        mpfr_init(r18180);
        mpfr_init_set_str(r18181, "-0.284496736", 10, MPFR_RNDN);
        mpfr_init(r18182);
        mpfr_init(r18183);
        mpfr_init(r18184);
        mpfr_init(r18185);
        mpfr_init(r18186);
        mpfr_init(r18187);
        mpfr_init_set_str(r18188, "0.254829592", 10, MPFR_RNDN);
        mpfr_init(r18189);
        mpfr_init(r18190);
        mpfr_init(r18191);
        mpfr_init(r18192);
        mpfr_init(r18193);
        mpfr_init(r18194);
}

double f_dm(double x) {
        ;
        ;
        ;
        mpfr_set_d(r18171, x, MPFR_RNDN);
        mpfr_abs(r18172, r18171, MPFR_RNDN);
        mpfr_fma(r18173, r18170, r18172, r18168, MPFR_RNDN);
        mpfr_div(r18174, r18169, r18173, MPFR_RNDN);
        ;
        mpfr_add(r18176, r18174, r18175, MPFR_RNDN);
        mpfr_div(r18177, r18168, r18173, MPFR_RNDN);
        mpfr_div(r18178, r18177, r18173, MPFR_RNDN);
        ;
        mpfr_div(r18180, r18179, r18173, MPFR_RNDN);
        ;
        mpfr_add(r18182, r18180, r18181, MPFR_RNDN);
        mpfr_fma(r18183, r18176, r18178, r18182, MPFR_RNDN);
        mpfr_log1p(r18184, r18183, MPFR_RNDN);
        mpfr_cbrt(r18185, r18184, MPFR_RNDN);
        mpfr_mul(r18186, r18185, r18185, MPFR_RNDN); mpfr_mul(r18186, r18186, r18185, MPFR_RNDN);
        mpfr_expm1(r18187, r18186, MPFR_RNDN);
        ;
        mpfr_div(r18189, r18188, r18173, MPFR_RNDN);
        mpfr_fma(r18190, r18187, r18178, r18189, MPFR_RNDN);
        mpfr_mul(r18191, r18172, r18172, MPFR_RNDN);
        mpfr_exp(r18192, r18191, MPFR_RNDN);
        mpfr_div(r18193, r18190, r18192, MPFR_RNDN);
        mpfr_sub(r18194, r18168, r18193, MPFR_RNDN);
        return mpfr_get_d(r18194, MPFR_RNDN);
}

