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

char *name = "Logistic function from Lakshay Garg";

double f_if(float x, float __attribute__((unused)) y) {
        float r389574 = 2;
        float r389575 = 1;
        float r389576 = -2;
        float r389577 = x;
        float r389578 = r389576 * r389577;
        float r389579 = exp(r389578);
        float r389580 = r389575 + r389579;
        float r389581 = r389574 / r389580;
        float r389582 = r389581 - r389575;
        return r389582;
}

double f_id(double x, double __attribute__((unused)) y) {
        double r389583 = 2;
        double r389584 = 1;
        double r389585 = -2;
        double r389586 = x;
        double r389587 = r389585 * r389586;
        double r389588 = exp(r389587);
        double r389589 = r389584 + r389588;
        double r389590 = r389583 / r389589;
        double r389591 = r389590 - r389584;
        return r389591;
}


double f_of(float x, float __attribute__((unused)) y) {
        float r389592 = x;
        float r389593 = -0.006624720756341694;
        bool r389594 = r389592 <= r389593;
        float r389595 = 2;
        float r389596 = 1;
        float r389597 = -2;
        float r389598 = r389597 * r389592;
        float r389599 = exp(r389598);
        float r389600 = r389596 + r389599;
        float r389601 = r389595 / r389600;
        float r389602 = r389601 - r389596;
        float r389603 = 0.007170758193253034;
        bool r389604 = r389592 <= r389603;
        float r389605 = 2/15;
        float r389606 = 5;
        float r389607 = pow(r389592, r389606);
        float r389608 = r389605 * r389607;
        float r389609 = r389608 + r389592;
        float r389610 = 1/3;
        float r389611 = 3;
        float r389612 = pow(r389592, r389611);
        float r389613 = r389610 * r389612;
        float r389614 = r389609 - r389613;
        float r389615 = r389604 ? r389614 : r389602;
        float r389616 = r389594 ? r389602 : r389615;
        return r389616;
}

double f_od(double x, double __attribute__((unused)) y) {
        double r389617 = x;
        double r389618 = -0.006624720756341694;
        bool r389619 = r389617 <= r389618;
        double r389620 = 2;
        double r389621 = 1;
        double r389622 = -2;
        double r389623 = r389622 * r389617;
        double r389624 = exp(r389623);
        double r389625 = r389621 + r389624;
        double r389626 = r389620 / r389625;
        double r389627 = r389626 - r389621;
        double r389628 = 0.007170758193253034;
        bool r389629 = r389617 <= r389628;
        double r389630 = 2/15;
        double r389631 = 5;
        double r389632 = pow(r389617, r389631);
        double r389633 = r389630 * r389632;
        double r389634 = r389633 + r389617;
        double r389635 = 1/3;
        double r389636 = 3;
        double r389637 = pow(r389617, r389636);
        double r389638 = r389635 * r389637;
        double r389639 = r389634 - r389638;
        double r389640 = r389629 ? r389639 : r389627;
        double r389641 = r389619 ? r389627 : r389640;
        return r389641;
}

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 r389642, r389643, r389644, r389645, r389646, r389647, r389648, r389649, r389650;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r389642, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r389643, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r389644, "-2", 10, MPFR_RNDN);
        mpfr_init(r389645);
        mpfr_init(r389646);
        mpfr_init(r389647);
        mpfr_init(r389648);
        mpfr_init(r389649);
        mpfr_init(r389650);
}

double f_im(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r389645, x, MPFR_RNDN);
        mpfr_mul(r389646, r389644, r389645, MPFR_RNDN);
        mpfr_exp(r389647, r389646, MPFR_RNDN);
        mpfr_add(r389648, r389643, r389647, MPFR_RNDN);
        mpfr_div(r389649, r389642, r389648, MPFR_RNDN);
        mpfr_sub(r389650, r389649, r389643, MPFR_RNDN);
        return mpfr_get_d(r389650, MPFR_RNDN);
}

static mpfr_t r389651, r389652, r389653, r389654, r389655, r389656, r389657, r389658, r389659, r389660, r389661, r389662, r389663, r389664, r389665, r389666, r389667, r389668, r389669, r389670, r389671, r389672, r389673, r389674, r389675;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r389651);
        mpfr_init_set_str(r389652, "-0.006624720756341694", 10, MPFR_RNDN);
        mpfr_init(r389653);
        mpfr_init_set_str(r389654, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r389655, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r389656, "-2", 10, MPFR_RNDN);
        mpfr_init(r389657);
        mpfr_init(r389658);
        mpfr_init(r389659);
        mpfr_init(r389660);
        mpfr_init(r389661);
        mpfr_init_set_str(r389662, "0.007170758193253034", 10, MPFR_RNDN);
        mpfr_init(r389663);
        mpfr_init_set_str(r389664, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r389665, "5", 10, MPFR_RNDN);
        mpfr_init(r389666);
        mpfr_init(r389667);
        mpfr_init(r389668);
        mpfr_init_set_str(r389669, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r389670, "3", 10, MPFR_RNDN);
        mpfr_init(r389671);
        mpfr_init(r389672);
        mpfr_init(r389673);
        mpfr_init(r389674);
        mpfr_init(r389675);
}

double f_fm(double x, double __attribute__((unused)) y) {
        mpfr_set_d(r389651, x, MPFR_RNDN);
        ;
        mpfr_set_si(r389653, mpfr_cmp(r389651, r389652) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r389657, r389656, r389651, MPFR_RNDN);
        mpfr_exp(r389658, r389657, MPFR_RNDN);
        mpfr_add(r389659, r389655, r389658, MPFR_RNDN);
        mpfr_div(r389660, r389654, r389659, MPFR_RNDN);
        mpfr_sub(r389661, r389660, r389655, MPFR_RNDN);
        ;
        mpfr_set_si(r389663, mpfr_cmp(r389651, r389662) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r389666, r389651, r389665, MPFR_RNDN);
        mpfr_mul(r389667, r389664, r389666, MPFR_RNDN);
        mpfr_add(r389668, r389667, r389651, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r389671, r389651, r389670, MPFR_RNDN);
        mpfr_mul(r389672, r389669, r389671, MPFR_RNDN);
        mpfr_sub(r389673, r389668, r389672, MPFR_RNDN);
        if (mpfr_get_si(r389663, MPFR_RNDN)) { mpfr_set(r389674, r389673, MPFR_RNDN); } else { mpfr_set(r389674, r389661, MPFR_RNDN); };
        if (mpfr_get_si(r389653, MPFR_RNDN)) { mpfr_set(r389675, r389661, MPFR_RNDN); } else { mpfr_set(r389675, r389674, MPFR_RNDN); };
        return mpfr_get_d(r389675, MPFR_RNDN);
}

static mpfr_t r389676, r389677, r389678, r389679, r389680, r389681, r389682, r389683, r389684, r389685, r389686, r389687, r389688, r389689, r389690, r389691, r389692, r389693, r389694, r389695, r389696, r389697, r389698, r389699, r389700;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r389676);
        mpfr_init_set_str(r389677, "-0.006624720756341694", 10, MPFR_RNDN);
        mpfr_init(r389678);
        mpfr_init_set_str(r389679, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r389680, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r389681, "-2", 10, MPFR_RNDN);
        mpfr_init(r389682);
        mpfr_init(r389683);
        mpfr_init(r389684);
        mpfr_init(r389685);
        mpfr_init(r389686);
        mpfr_init_set_str(r389687, "0.007170758193253034", 10, MPFR_RNDN);
        mpfr_init(r389688);
        mpfr_init_set_str(r389689, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r389690, "5", 10, MPFR_RNDN);
        mpfr_init(r389691);
        mpfr_init(r389692);
        mpfr_init(r389693);
        mpfr_init_set_str(r389694, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r389695, "3", 10, MPFR_RNDN);
        mpfr_init(r389696);
        mpfr_init(r389697);
        mpfr_init(r389698);
        mpfr_init(r389699);
        mpfr_init(r389700);
}

double f_dm(double x, double __attribute__((unused)) y) {
        mpfr_set_d(r389676, x, MPFR_RNDN);
        ;
        mpfr_set_si(r389678, mpfr_cmp(r389676, r389677) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_mul(r389682, r389681, r389676, MPFR_RNDN);
        mpfr_exp(r389683, r389682, MPFR_RNDN);
        mpfr_add(r389684, r389680, r389683, MPFR_RNDN);
        mpfr_div(r389685, r389679, r389684, MPFR_RNDN);
        mpfr_sub(r389686, r389685, r389680, MPFR_RNDN);
        ;
        mpfr_set_si(r389688, mpfr_cmp(r389676, r389687) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r389691, r389676, r389690, MPFR_RNDN);
        mpfr_mul(r389692, r389689, r389691, MPFR_RNDN);
        mpfr_add(r389693, r389692, r389676, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r389696, r389676, r389695, MPFR_RNDN);
        mpfr_mul(r389697, r389694, r389696, MPFR_RNDN);
        mpfr_sub(r389698, r389693, r389697, MPFR_RNDN);
        if (mpfr_get_si(r389688, MPFR_RNDN)) { mpfr_set(r389699, r389698, MPFR_RNDN); } else { mpfr_set(r389699, r389686, MPFR_RNDN); };
        if (mpfr_get_si(r389678, MPFR_RNDN)) { mpfr_set(r389700, r389686, MPFR_RNDN); } else { mpfr_set(r389700, r389699, MPFR_RNDN); };
        return mpfr_get_d(r389700, MPFR_RNDN);
}

