#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 r18512 = 1.0f;
        float r18513 = atan2(1.0, 0.0);
        float r18514 = sqrt(r18513);
        float r18515 = r18512 / r18514;
        float r18516 = 2.0f;
        float r18517 = x;
        float r18518 = fabs(r18517);
        float r18519 = r18516 * r18518;
        float r18520 = 3.0f;
        float r18521 = r18516 / r18520;
        float r18522 = r18518 * r18518;
        float r18523 = r18522 * r18518;
        float r18524 = r18521 * r18523;
        float r18525 = r18519 + r18524;
        float r18526 = 5.0f;
        float r18527 = r18512 / r18526;
        float r18528 = r18523 * r18518;
        float r18529 = r18528 * r18518;
        float r18530 = r18527 * r18529;
        float r18531 = r18525 + r18530;
        float r18532 = 21.0f;
        float r18533 = r18512 / r18532;
        float r18534 = r18529 * r18518;
        float r18535 = r18534 * r18518;
        float r18536 = r18533 * r18535;
        float r18537 = r18531 + r18536;
        float r18538 = r18515 * r18537;
        float r18539 = fabs(r18538);
        return r18539;
}

double f_id(double x) {
        double r18540 = 1.0;
        double r18541 = atan2(1.0, 0.0);
        double r18542 = sqrt(r18541);
        double r18543 = r18540 / r18542;
        double r18544 = 2.0;
        double r18545 = x;
        double r18546 = fabs(r18545);
        double r18547 = r18544 * r18546;
        double r18548 = 3.0;
        double r18549 = r18544 / r18548;
        double r18550 = r18546 * r18546;
        double r18551 = r18550 * r18546;
        double r18552 = r18549 * r18551;
        double r18553 = r18547 + r18552;
        double r18554 = 5.0;
        double r18555 = r18540 / r18554;
        double r18556 = r18551 * r18546;
        double r18557 = r18556 * r18546;
        double r18558 = r18555 * r18557;
        double r18559 = r18553 + r18558;
        double r18560 = 21.0;
        double r18561 = r18540 / r18560;
        double r18562 = r18557 * r18546;
        double r18563 = r18562 * r18546;
        double r18564 = r18561 * r18563;
        double r18565 = r18559 + r18564;
        double r18566 = r18543 * r18565;
        double r18567 = fabs(r18566);
        return r18567;
}


double f_of(float x) {
        float r18568 = 2.0f;
        float r18569 = x;
        float r18570 = fabs(r18569);
        float r18571 = r18568 * r18570;
        float r18572 = 3.0f;
        float r18573 = r18568 / r18572;
        float r18574 = r18570 * r18573;
        float r18575 = r18570 * r18570;
        float r18576 = r18574 * r18575;
        float r18577 = r18571 + r18576;
        float r18578 = r18570 * (r18570 * r18570);
        float r18579 = r18578 * r18578;
        float r18580 = 21.0f;
        float r18581 = r18580 / r18570;
        float r18582 = r18579 / r18581;
        float r18583 = r18578 * r18575;
        float r18584 = 5.0f;
        float r18585 = r18583 / r18584;
        float r18586 = r18582 + r18585;
        float r18587 = r18577 + r18586;
        float r18588 = 1.0f;
        float r18589 = atan2(1.0, 0.0);
        float r18590 = sqrt(r18589);
        float r18591 = r18588 / r18590;
        float r18592 = r18587 * r18591;
        float r18593 = fabs(r18592);
        return r18593;
}

double f_od(double x) {
        double r18594 = 2.0;
        double r18595 = x;
        double r18596 = fabs(r18595);
        double r18597 = r18594 * r18596;
        double r18598 = 3.0;
        double r18599 = r18594 / r18598;
        double r18600 = r18596 * r18599;
        double r18601 = r18596 * r18596;
        double r18602 = r18600 * r18601;
        double r18603 = r18597 + r18602;
        double r18604 = r18596 * (r18596 * r18596);
        double r18605 = r18604 * r18604;
        double r18606 = 21.0;
        double r18607 = r18606 / r18596;
        double r18608 = r18605 / r18607;
        double r18609 = r18604 * r18601;
        double r18610 = 5.0;
        double r18611 = r18609 / r18610;
        double r18612 = r18608 + r18611;
        double r18613 = r18603 + r18612;
        double r18614 = 1.0;
        double r18615 = atan2(1.0, 0.0);
        double r18616 = sqrt(r18615);
        double r18617 = r18614 / r18616;
        double r18618 = r18613 * r18617;
        double r18619 = fabs(r18618);
        return r18619;
}

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 r18620, r18621, r18622, r18623, r18624, r18625, r18626, r18627, r18628, r18629, r18630, r18631, r18632, r18633, r18634, r18635, r18636, r18637, r18638, r18639, r18640, r18641, r18642, r18643, r18644, r18645, r18646, r18647;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18620, "1", 10, MPFR_RNDN);
        mpfr_init(r18621);
        mpfr_init(r18622);
        mpfr_init(r18623);
        mpfr_init_set_str(r18624, "2", 10, MPFR_RNDN);
        mpfr_init(r18625);
        mpfr_init(r18626);
        mpfr_init(r18627);
        mpfr_init_set_str(r18628, "3", 10, MPFR_RNDN);
        mpfr_init(r18629);
        mpfr_init(r18630);
        mpfr_init(r18631);
        mpfr_init(r18632);
        mpfr_init(r18633);
        mpfr_init_set_str(r18634, "5", 10, MPFR_RNDN);
        mpfr_init(r18635);
        mpfr_init(r18636);
        mpfr_init(r18637);
        mpfr_init(r18638);
        mpfr_init(r18639);
        mpfr_init_set_str(r18640, "21", 10, MPFR_RNDN);
        mpfr_init(r18641);
        mpfr_init(r18642);
        mpfr_init(r18643);
        mpfr_init(r18644);
        mpfr_init(r18645);
        mpfr_init(r18646);
        mpfr_init(r18647);
}

double f_im(double x) {
        ;
        mpfr_const_pi(r18621, MPFR_RNDN);
        mpfr_sqrt(r18622, r18621, MPFR_RNDN);
        mpfr_div(r18623, r18620, r18622, MPFR_RNDN);
        ;
        mpfr_set_d(r18625, x, MPFR_RNDN);
        mpfr_abs(r18626, r18625, MPFR_RNDN);
        mpfr_mul(r18627, r18624, r18626, MPFR_RNDN);
        ;
        mpfr_div(r18629, r18624, r18628, MPFR_RNDN);
        mpfr_mul(r18630, r18626, r18626, MPFR_RNDN);
        mpfr_mul(r18631, r18630, r18626, MPFR_RNDN);
        mpfr_mul(r18632, r18629, r18631, MPFR_RNDN);
        mpfr_add(r18633, r18627, r18632, MPFR_RNDN);
        ;
        mpfr_div(r18635, r18620, r18634, MPFR_RNDN);
        mpfr_mul(r18636, r18631, r18626, MPFR_RNDN);
        mpfr_mul(r18637, r18636, r18626, MPFR_RNDN);
        mpfr_mul(r18638, r18635, r18637, MPFR_RNDN);
        mpfr_add(r18639, r18633, r18638, MPFR_RNDN);
        ;
        mpfr_div(r18641, r18620, r18640, MPFR_RNDN);
        mpfr_mul(r18642, r18637, r18626, MPFR_RNDN);
        mpfr_mul(r18643, r18642, r18626, MPFR_RNDN);
        mpfr_mul(r18644, r18641, r18643, MPFR_RNDN);
        mpfr_add(r18645, r18639, r18644, MPFR_RNDN);
        mpfr_mul(r18646, r18623, r18645, MPFR_RNDN);
        mpfr_abs(r18647, r18646, MPFR_RNDN);
        return mpfr_get_d(r18647, MPFR_RNDN);
}

static mpfr_t r18648, r18649, r18650, r18651, r18652, r18653, r18654, r18655, r18656, r18657, r18658, r18659, r18660, r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18648, "2", 10, MPFR_RNDN);
        mpfr_init(r18649);
        mpfr_init(r18650);
        mpfr_init(r18651);
        mpfr_init_set_str(r18652, "3", 10, MPFR_RNDN);
        mpfr_init(r18653);
        mpfr_init(r18654);
        mpfr_init(r18655);
        mpfr_init(r18656);
        mpfr_init(r18657);
        mpfr_init(r18658);
        mpfr_init(r18659);
        mpfr_init_set_str(r18660, "21", 10, MPFR_RNDN);
        mpfr_init(r18661);
        mpfr_init(r18662);
        mpfr_init(r18663);
        mpfr_init_set_str(r18664, "5", 10, MPFR_RNDN);
        mpfr_init(r18665);
        mpfr_init(r18666);
        mpfr_init(r18667);
        mpfr_init_set_str(r18668, "1", 10, MPFR_RNDN);
        mpfr_init(r18669);
        mpfr_init(r18670);
        mpfr_init(r18671);
        mpfr_init(r18672);
        mpfr_init(r18673);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18649, x, MPFR_RNDN);
        mpfr_abs(r18650, r18649, MPFR_RNDN);
        mpfr_mul(r18651, r18648, r18650, MPFR_RNDN);
        ;
        mpfr_div(r18653, r18648, r18652, MPFR_RNDN);
        mpfr_mul(r18654, r18650, r18653, MPFR_RNDN);
        mpfr_sqr(r18655, r18650, MPFR_RNDN);
        mpfr_mul(r18656, r18654, r18655, MPFR_RNDN);
        mpfr_add(r18657, r18651, r18656, MPFR_RNDN);
        mpfr_mul(r18658, r18650, r18650, MPFR_RNDN); mpfr_mul(r18658, r18658, r18650, MPFR_RNDN);
        mpfr_sqr(r18659, r18658, MPFR_RNDN);
        ;
        mpfr_div(r18661, r18660, r18650, MPFR_RNDN);
        mpfr_div(r18662, r18659, r18661, MPFR_RNDN);
        mpfr_mul(r18663, r18658, r18655, MPFR_RNDN);
        ;
        mpfr_div(r18665, r18663, r18664, MPFR_RNDN);
        mpfr_add(r18666, r18662, r18665, MPFR_RNDN);
        mpfr_add(r18667, r18657, r18666, MPFR_RNDN);
        ;
        mpfr_const_pi(r18669, MPFR_RNDN);
        mpfr_sqrt(r18670, r18669, MPFR_RNDN);
        mpfr_div(r18671, r18668, r18670, MPFR_RNDN);
        mpfr_mul(r18672, r18667, r18671, MPFR_RNDN);
        mpfr_abs(r18673, r18672, MPFR_RNDN);
        return mpfr_get_d(r18673, MPFR_RNDN);
}

static mpfr_t r18674, r18675, r18676, r18677, r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686, r18687, r18688, r18689, r18690, r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18674, "2", 10, MPFR_RNDN);
        mpfr_init(r18675);
        mpfr_init(r18676);
        mpfr_init(r18677);
        mpfr_init_set_str(r18678, "3", 10, MPFR_RNDN);
        mpfr_init(r18679);
        mpfr_init(r18680);
        mpfr_init(r18681);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init_set_str(r18686, "21", 10, MPFR_RNDN);
        mpfr_init(r18687);
        mpfr_init(r18688);
        mpfr_init(r18689);
        mpfr_init_set_str(r18690, "5", 10, MPFR_RNDN);
        mpfr_init(r18691);
        mpfr_init(r18692);
        mpfr_init(r18693);
        mpfr_init_set_str(r18694, "1", 10, MPFR_RNDN);
        mpfr_init(r18695);
        mpfr_init(r18696);
        mpfr_init(r18697);
        mpfr_init(r18698);
        mpfr_init(r18699);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18675, x, MPFR_RNDN);
        mpfr_abs(r18676, r18675, MPFR_RNDN);
        mpfr_mul(r18677, r18674, r18676, MPFR_RNDN);
        ;
        mpfr_div(r18679, r18674, r18678, MPFR_RNDN);
        mpfr_mul(r18680, r18676, r18679, MPFR_RNDN);
        mpfr_sqr(r18681, r18676, MPFR_RNDN);
        mpfr_mul(r18682, r18680, r18681, MPFR_RNDN);
        mpfr_add(r18683, r18677, r18682, MPFR_RNDN);
        mpfr_mul(r18684, r18676, r18676, MPFR_RNDN); mpfr_mul(r18684, r18684, r18676, MPFR_RNDN);
        mpfr_sqr(r18685, r18684, MPFR_RNDN);
        ;
        mpfr_div(r18687, r18686, r18676, MPFR_RNDN);
        mpfr_div(r18688, r18685, r18687, MPFR_RNDN);
        mpfr_mul(r18689, r18684, r18681, MPFR_RNDN);
        ;
        mpfr_div(r18691, r18689, r18690, MPFR_RNDN);
        mpfr_add(r18692, r18688, r18691, MPFR_RNDN);
        mpfr_add(r18693, r18683, r18692, MPFR_RNDN);
        ;
        mpfr_const_pi(r18695, MPFR_RNDN);
        mpfr_sqrt(r18696, r18695, MPFR_RNDN);
        mpfr_div(r18697, r18694, r18696, MPFR_RNDN);
        mpfr_mul(r18698, r18693, r18697, MPFR_RNDN);
        mpfr_abs(r18699, r18698, MPFR_RNDN);
        return mpfr_get_d(r18699, MPFR_RNDN);
}

