#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Jmat.Real.erfi, branch x less than or equal to 0.5";

double f_if(float x) {
        float r28020 = 1.0f;
        float r28021 = atan2(1.0, 0.0);
        float r28022 = sqrt(r28021);
        float r28023 = r28020 / r28022;
        float r28024 = 2.0f;
        float r28025 = x;
        float r28026 = fabs(r28025);
        float r28027 = r28024 * r28026;
        float r28028 = 3.0f;
        float r28029 = r28024 / r28028;
        float r28030 = r28026 * r28026;
        float r28031 = r28030 * r28026;
        float r28032 = r28029 * r28031;
        float r28033 = r28027 + r28032;
        float r28034 = 5.0f;
        float r28035 = r28020 / r28034;
        float r28036 = r28031 * r28026;
        float r28037 = r28036 * r28026;
        float r28038 = r28035 * r28037;
        float r28039 = r28033 + r28038;
        float r28040 = 21.0f;
        float r28041 = r28020 / r28040;
        float r28042 = r28037 * r28026;
        float r28043 = r28042 * r28026;
        float r28044 = r28041 * r28043;
        float r28045 = r28039 + r28044;
        float r28046 = r28023 * r28045;
        float r28047 = fabs(r28046);
        return r28047;
}

double f_id(double x) {
        double r28048 = 1.0;
        double r28049 = atan2(1.0, 0.0);
        double r28050 = sqrt(r28049);
        double r28051 = r28048 / r28050;
        double r28052 = 2.0;
        double r28053 = x;
        double r28054 = fabs(r28053);
        double r28055 = r28052 * r28054;
        double r28056 = 3.0;
        double r28057 = r28052 / r28056;
        double r28058 = r28054 * r28054;
        double r28059 = r28058 * r28054;
        double r28060 = r28057 * r28059;
        double r28061 = r28055 + r28060;
        double r28062 = 5.0;
        double r28063 = r28048 / r28062;
        double r28064 = r28059 * r28054;
        double r28065 = r28064 * r28054;
        double r28066 = r28063 * r28065;
        double r28067 = r28061 + r28066;
        double r28068 = 21.0;
        double r28069 = r28048 / r28068;
        double r28070 = r28065 * r28054;
        double r28071 = r28070 * r28054;
        double r28072 = r28069 * r28071;
        double r28073 = r28067 + r28072;
        double r28074 = r28051 * r28073;
        double r28075 = fabs(r28074);
        return r28075;
}


double f_of(float x) {
        float r28076 = 1.0f;
        float r28077 = atan2(1.0, 0.0);
        float r28078 = r28076 / r28077;
        float r28079 = sqrt(r28078);
        float r28080 = 0.6666666666666666f;
        float r28081 = x;
        float r28082 = fabs(r28081);
        float r28083 = 3.0f;
        float r28084 = pow(r28082, r28083);
        float r28085 = r28080 * r28084;
        float r28086 = 0.047619047619047616f;
        float r28087 = 7.0f;
        float r28088 = pow(r28082, r28087);
        float r28089 = r28086 * r28088;
        float r28090 = 0.2f;
        float r28091 = 5.0f;
        float r28092 = pow(r28082, r28091);
        float r28093 = r28090 * r28092;
        float r28094 = 2.0f;
        float r28095 = r28094 * r28082;
        float r28096 = r28093 + r28095;
        float r28097 = r28089 + r28096;
        float r28098 = r28085 + r28097;
        float r28099 = r28079 * r28098;
        float r28100 = fabs(r28099);
        return r28100;
}

double f_od(double x) {
        double r28101 = 1.0;
        double r28102 = atan2(1.0, 0.0);
        double r28103 = r28101 / r28102;
        double r28104 = sqrt(r28103);
        double r28105 = 0.6666666666666666;
        double r28106 = x;
        double r28107 = fabs(r28106);
        double r28108 = 3.0;
        double r28109 = pow(r28107, r28108);
        double r28110 = r28105 * r28109;
        double r28111 = 0.047619047619047616;
        double r28112 = 7.0;
        double r28113 = pow(r28107, r28112);
        double r28114 = r28111 * r28113;
        double r28115 = 0.2;
        double r28116 = 5.0;
        double r28117 = pow(r28107, r28116);
        double r28118 = r28115 * r28117;
        double r28119 = 2.0;
        double r28120 = r28119 * r28107;
        double r28121 = r28118 + r28120;
        double r28122 = r28114 + r28121;
        double r28123 = r28110 + r28122;
        double r28124 = r28104 * r28123;
        double r28125 = fabs(r28124);
        return r28125;
}

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 r28126, r28127, r28128, r28129, r28130, r28131, r28132, r28133, r28134, r28135, r28136, r28137, r28138, r28139, r28140, r28141, r28142, r28143, r28144, r28145, r28146, r28147, r28148, r28149, r28150, r28151, r28152, r28153;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r28126, "1", 10, MPFR_RNDN);
        mpfr_init(r28127);
        mpfr_init(r28128);
        mpfr_init(r28129);
        mpfr_init_set_str(r28130, "2", 10, MPFR_RNDN);
        mpfr_init(r28131);
        mpfr_init(r28132);
        mpfr_init(r28133);
        mpfr_init_set_str(r28134, "3", 10, MPFR_RNDN);
        mpfr_init(r28135);
        mpfr_init(r28136);
        mpfr_init(r28137);
        mpfr_init(r28138);
        mpfr_init(r28139);
        mpfr_init_set_str(r28140, "5", 10, MPFR_RNDN);
        mpfr_init(r28141);
        mpfr_init(r28142);
        mpfr_init(r28143);
        mpfr_init(r28144);
        mpfr_init(r28145);
        mpfr_init_set_str(r28146, "21", 10, MPFR_RNDN);
        mpfr_init(r28147);
        mpfr_init(r28148);
        mpfr_init(r28149);
        mpfr_init(r28150);
        mpfr_init(r28151);
        mpfr_init(r28152);
        mpfr_init(r28153);
}

double f_im(double x) {
        ;
        mpfr_const_pi(r28127, MPFR_RNDN);
        mpfr_sqrt(r28128, r28127, MPFR_RNDN);
        mpfr_div(r28129, r28126, r28128, MPFR_RNDN);
        ;
        mpfr_set_d(r28131, x, MPFR_RNDN);
        mpfr_abs(r28132, r28131, MPFR_RNDN);
        mpfr_mul(r28133, r28130, r28132, MPFR_RNDN);
        ;
        mpfr_div(r28135, r28130, r28134, MPFR_RNDN);
        mpfr_mul(r28136, r28132, r28132, MPFR_RNDN);
        mpfr_mul(r28137, r28136, r28132, MPFR_RNDN);
        mpfr_mul(r28138, r28135, r28137, MPFR_RNDN);
        mpfr_add(r28139, r28133, r28138, MPFR_RNDN);
        ;
        mpfr_div(r28141, r28126, r28140, MPFR_RNDN);
        mpfr_mul(r28142, r28137, r28132, MPFR_RNDN);
        mpfr_mul(r28143, r28142, r28132, MPFR_RNDN);
        mpfr_mul(r28144, r28141, r28143, MPFR_RNDN);
        mpfr_add(r28145, r28139, r28144, MPFR_RNDN);
        ;
        mpfr_div(r28147, r28126, r28146, MPFR_RNDN);
        mpfr_mul(r28148, r28143, r28132, MPFR_RNDN);
        mpfr_mul(r28149, r28148, r28132, MPFR_RNDN);
        mpfr_mul(r28150, r28147, r28149, MPFR_RNDN);
        mpfr_add(r28151, r28145, r28150, MPFR_RNDN);
        mpfr_mul(r28152, r28129, r28151, MPFR_RNDN);
        mpfr_abs(r28153, r28152, MPFR_RNDN);
        return mpfr_get_d(r28153, MPFR_RNDN);
}

static mpfr_t r28154, r28155, r28156, r28157, r28158, r28159, r28160, r28161, r28162, r28163, r28164, r28165, r28166, r28167, r28168, r28169, r28170, r28171, r28172, r28173, r28174, r28175, r28176, r28177, r28178;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r28154, "1", 10, MPFR_RNDN);
        mpfr_init(r28155);
        mpfr_init(r28156);
        mpfr_init(r28157);
        mpfr_init_set_str(r28158, "2/3", 10, MPFR_RNDN);
        mpfr_init(r28159);
        mpfr_init(r28160);
        mpfr_init_set_str(r28161, "3", 10, MPFR_RNDN);
        mpfr_init(r28162);
        mpfr_init(r28163);
        mpfr_init_set_str(r28164, "1/21", 10, MPFR_RNDN);
        mpfr_init_set_str(r28165, "7", 10, MPFR_RNDN);
        mpfr_init(r28166);
        mpfr_init(r28167);
        mpfr_init_set_str(r28168, "1/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28169, "5", 10, MPFR_RNDN);
        mpfr_init(r28170);
        mpfr_init(r28171);
        mpfr_init_set_str(r28172, "2", 10, MPFR_RNDN);
        mpfr_init(r28173);
        mpfr_init(r28174);
        mpfr_init(r28175);
        mpfr_init(r28176);
        mpfr_init(r28177);
        mpfr_init(r28178);
}

double f_fm(double x) {
        ;
        mpfr_const_pi(r28155, MPFR_RNDN);
        mpfr_div(r28156, r28154, r28155, MPFR_RNDN);
        mpfr_sqrt(r28157, r28156, MPFR_RNDN);
        ;
        mpfr_set_d(r28159, x, MPFR_RNDN);
        mpfr_abs(r28160, r28159, MPFR_RNDN);
        ;
        mpfr_pow(r28162, r28160, r28161, MPFR_RNDN);
        mpfr_mul(r28163, r28158, r28162, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28166, r28160, r28165, MPFR_RNDN);
        mpfr_mul(r28167, r28164, r28166, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28170, r28160, r28169, MPFR_RNDN);
        mpfr_mul(r28171, r28168, r28170, MPFR_RNDN);
        ;
        mpfr_mul(r28173, r28172, r28160, MPFR_RNDN);
        mpfr_add(r28174, r28171, r28173, MPFR_RNDN);
        mpfr_add(r28175, r28167, r28174, MPFR_RNDN);
        mpfr_add(r28176, r28163, r28175, MPFR_RNDN);
        mpfr_mul(r28177, r28157, r28176, MPFR_RNDN);
        mpfr_abs(r28178, r28177, MPFR_RNDN);
        return mpfr_get_d(r28178, MPFR_RNDN);
}

static mpfr_t r28179, r28180, r28181, r28182, r28183, r28184, r28185, r28186, r28187, r28188, r28189, r28190, r28191, r28192, r28193, r28194, r28195, r28196, r28197, r28198, r28199, r28200, r28201, r28202, r28203;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r28179, "1", 10, MPFR_RNDN);
        mpfr_init(r28180);
        mpfr_init(r28181);
        mpfr_init(r28182);
        mpfr_init_set_str(r28183, "2/3", 10, MPFR_RNDN);
        mpfr_init(r28184);
        mpfr_init(r28185);
        mpfr_init_set_str(r28186, "3", 10, MPFR_RNDN);
        mpfr_init(r28187);
        mpfr_init(r28188);
        mpfr_init_set_str(r28189, "1/21", 10, MPFR_RNDN);
        mpfr_init_set_str(r28190, "7", 10, MPFR_RNDN);
        mpfr_init(r28191);
        mpfr_init(r28192);
        mpfr_init_set_str(r28193, "1/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28194, "5", 10, MPFR_RNDN);
        mpfr_init(r28195);
        mpfr_init(r28196);
        mpfr_init_set_str(r28197, "2", 10, MPFR_RNDN);
        mpfr_init(r28198);
        mpfr_init(r28199);
        mpfr_init(r28200);
        mpfr_init(r28201);
        mpfr_init(r28202);
        mpfr_init(r28203);
}

double f_dm(double x) {
        ;
        mpfr_const_pi(r28180, MPFR_RNDN);
        mpfr_div(r28181, r28179, r28180, MPFR_RNDN);
        mpfr_sqrt(r28182, r28181, MPFR_RNDN);
        ;
        mpfr_set_d(r28184, x, MPFR_RNDN);
        mpfr_abs(r28185, r28184, MPFR_RNDN);
        ;
        mpfr_pow(r28187, r28185, r28186, MPFR_RNDN);
        mpfr_mul(r28188, r28183, r28187, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28191, r28185, r28190, MPFR_RNDN);
        mpfr_mul(r28192, r28189, r28191, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28195, r28185, r28194, MPFR_RNDN);
        mpfr_mul(r28196, r28193, r28195, MPFR_RNDN);
        ;
        mpfr_mul(r28198, r28197, r28185, MPFR_RNDN);
        mpfr_add(r28199, r28196, r28198, MPFR_RNDN);
        mpfr_add(r28200, r28192, r28199, MPFR_RNDN);
        mpfr_add(r28201, r28188, r28200, MPFR_RNDN);
        mpfr_mul(r28202, r28182, r28201, MPFR_RNDN);
        mpfr_abs(r28203, r28202, MPFR_RNDN);
        return mpfr_get_d(r28203, MPFR_RNDN);
}

