#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 r22369 = 2;
        float r22370 = 1;
        float r22371 = -2;
        float r22372 = x;
        float r22373 = r22371 * r22372;
        float r22374 = exp(r22373);
        float r22375 = r22370 + r22374;
        float r22376 = r22369 / r22375;
        float r22377 = r22376 - r22370;
        return r22377;
}

double f_id(double x, double __attribute__((unused)) y) {
        double r22378 = 2;
        double r22379 = 1;
        double r22380 = -2;
        double r22381 = x;
        double r22382 = r22380 * r22381;
        double r22383 = exp(r22382);
        double r22384 = r22379 + r22383;
        double r22385 = r22378 / r22384;
        double r22386 = r22385 - r22379;
        return r22386;
}


double f_of(float x, float __attribute__((unused)) y) {
        float r22387 = 2;
        float r22388 = 1;
        float r22389 = -2;
        float r22390 = x;
        float r22391 = r22389 * r22390;
        float r22392 = exp(r22391);
        float r22393 = r22388 + r22392;
        float r22394 = r22387 / r22393;
        float r22395 = r22394 - r22388;
        float r22396 = -0.0010361760913228334;
        bool r22397 = r22395 <= r22396;
        float r22398 = 3;
        float r22399 = pow(r22394, r22398);
        float r22400 = pow(r22388, r22398);
        float r22401 = r22399 - r22400;
        float r22402 = r22394 + r22388;
        float r22403 = r22394 * r22394;
        float r22404 = r22402 + r22403;
        float r22405 = r22401 / r22404;
        float r22406 = 0.0039062543158841865;
        bool r22407 = r22395 <= r22406;
        float r22408 = 2/15;
        float r22409 = 5;
        float r22410 = pow(r22390, r22409);
        float r22411 = r22408 * r22410;
        float r22412 = r22411 + r22390;
        float r22413 = 1/3;
        float r22414 = pow(r22390, r22398);
        float r22415 = r22413 * r22414;
        float r22416 = r22412 - r22415;
        float r22417 = r22407 ? r22416 : r22405;
        float r22418 = r22397 ? r22405 : r22417;
        return r22418;
}

double f_od(double x, double __attribute__((unused)) y) {
        double r22419 = 2;
        double r22420 = 1;
        double r22421 = -2;
        double r22422 = x;
        double r22423 = r22421 * r22422;
        double r22424 = exp(r22423);
        double r22425 = r22420 + r22424;
        double r22426 = r22419 / r22425;
        double r22427 = r22426 - r22420;
        double r22428 = -0.0010361760913228334;
        bool r22429 = r22427 <= r22428;
        double r22430 = 3;
        double r22431 = pow(r22426, r22430);
        double r22432 = pow(r22420, r22430);
        double r22433 = r22431 - r22432;
        double r22434 = r22426 + r22420;
        double r22435 = r22426 * r22426;
        double r22436 = r22434 + r22435;
        double r22437 = r22433 / r22436;
        double r22438 = 0.0039062543158841865;
        bool r22439 = r22427 <= r22438;
        double r22440 = 2/15;
        double r22441 = 5;
        double r22442 = pow(r22422, r22441);
        double r22443 = r22440 * r22442;
        double r22444 = r22443 + r22422;
        double r22445 = 1/3;
        double r22446 = pow(r22422, r22430);
        double r22447 = r22445 * r22446;
        double r22448 = r22444 - r22447;
        double r22449 = r22439 ? r22448 : r22437;
        double r22450 = r22429 ? r22437 : r22449;
        return r22450;
}

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 r22451, r22452, r22453, r22454, r22455, r22456, r22457, r22458, r22459;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22451, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r22452, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22453, "-2", 10, MPFR_RNDN);
        mpfr_init(r22454);
        mpfr_init(r22455);
        mpfr_init(r22456);
        mpfr_init(r22457);
        mpfr_init(r22458);
        mpfr_init(r22459);
}

double f_im(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r22454, x, MPFR_RNDN);
        mpfr_mul(r22455, r22453, r22454, MPFR_RNDN);
        mpfr_exp(r22456, r22455, MPFR_RNDN);
        mpfr_add(r22457, r22452, r22456, MPFR_RNDN);
        mpfr_div(r22458, r22451, r22457, MPFR_RNDN);
        mpfr_sub(r22459, r22458, r22452, MPFR_RNDN);
        return mpfr_get_d(r22459, MPFR_RNDN);
}

static mpfr_t r22460, r22461, r22462, r22463, r22464, r22465, r22466, r22467, r22468, r22469, r22470, r22471, r22472, r22473, r22474, r22475, r22476, r22477, r22478, r22479, r22480, r22481, r22482, r22483, r22484, r22485, r22486, r22487, r22488, r22489, r22490, r22491;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22460, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r22461, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22462, "-2", 10, MPFR_RNDN);
        mpfr_init(r22463);
        mpfr_init(r22464);
        mpfr_init(r22465);
        mpfr_init(r22466);
        mpfr_init(r22467);
        mpfr_init(r22468);
        mpfr_init_set_str(r22469, "-0.0010361760913228334", 10, MPFR_RNDN);
        mpfr_init(r22470);
        mpfr_init_set_str(r22471, "3", 10, MPFR_RNDN);
        mpfr_init(r22472);
        mpfr_init(r22473);
        mpfr_init(r22474);
        mpfr_init(r22475);
        mpfr_init(r22476);
        mpfr_init(r22477);
        mpfr_init(r22478);
        mpfr_init_set_str(r22479, "0.0039062543158841865", 10, MPFR_RNDN);
        mpfr_init(r22480);
        mpfr_init_set_str(r22481, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r22482, "5", 10, MPFR_RNDN);
        mpfr_init(r22483);
        mpfr_init(r22484);
        mpfr_init(r22485);
        mpfr_init_set_str(r22486, "1/3", 10, MPFR_RNDN);
        mpfr_init(r22487);
        mpfr_init(r22488);
        mpfr_init(r22489);
        mpfr_init(r22490);
        mpfr_init(r22491);
}

double f_fm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r22463, x, MPFR_RNDN);
        mpfr_mul(r22464, r22462, r22463, MPFR_RNDN);
        mpfr_exp(r22465, r22464, MPFR_RNDN);
        mpfr_add(r22466, r22461, r22465, MPFR_RNDN);
        mpfr_div(r22467, r22460, r22466, MPFR_RNDN);
        mpfr_sub(r22468, r22467, r22461, MPFR_RNDN);
        ;
        mpfr_set_si(r22470, mpfr_cmp(r22468, r22469) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r22472, r22467, r22471, MPFR_RNDN);
        mpfr_pow(r22473, r22461, r22471, MPFR_RNDN);
        mpfr_sub(r22474, r22472, r22473, MPFR_RNDN);
        mpfr_add(r22475, r22467, r22461, MPFR_RNDN);
        mpfr_mul(r22476, r22467, r22467, MPFR_RNDN);
        mpfr_add(r22477, r22475, r22476, MPFR_RNDN);
        mpfr_div(r22478, r22474, r22477, MPFR_RNDN);
        ;
        mpfr_set_si(r22480, mpfr_cmp(r22468, r22479) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r22483, r22463, r22482, MPFR_RNDN);
        mpfr_mul(r22484, r22481, r22483, MPFR_RNDN);
        mpfr_add(r22485, r22484, r22463, MPFR_RNDN);
        ;
        mpfr_pow(r22487, r22463, r22471, MPFR_RNDN);
        mpfr_mul(r22488, r22486, r22487, MPFR_RNDN);
        mpfr_sub(r22489, r22485, r22488, MPFR_RNDN);
        if (mpfr_get_si(r22480, MPFR_RNDN)) { mpfr_set(r22490, r22489, MPFR_RNDN); } else { mpfr_set(r22490, r22478, MPFR_RNDN); };
        if (mpfr_get_si(r22470, MPFR_RNDN)) { mpfr_set(r22491, r22478, MPFR_RNDN); } else { mpfr_set(r22491, r22490, MPFR_RNDN); };
        return mpfr_get_d(r22491, MPFR_RNDN);
}

static mpfr_t r22492, r22493, r22494, r22495, r22496, r22497, r22498, r22499, r22500, r22501, r22502, r22503, r22504, r22505, r22506, r22507, r22508, r22509, r22510, r22511, r22512, r22513, r22514, r22515, r22516, r22517, r22518, r22519, r22520, r22521, r22522, r22523;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22492, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r22493, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22494, "-2", 10, MPFR_RNDN);
        mpfr_init(r22495);
        mpfr_init(r22496);
        mpfr_init(r22497);
        mpfr_init(r22498);
        mpfr_init(r22499);
        mpfr_init(r22500);
        mpfr_init_set_str(r22501, "-0.0010361760913228334", 10, MPFR_RNDN);
        mpfr_init(r22502);
        mpfr_init_set_str(r22503, "3", 10, MPFR_RNDN);
        mpfr_init(r22504);
        mpfr_init(r22505);
        mpfr_init(r22506);
        mpfr_init(r22507);
        mpfr_init(r22508);
        mpfr_init(r22509);
        mpfr_init(r22510);
        mpfr_init_set_str(r22511, "0.0039062543158841865", 10, MPFR_RNDN);
        mpfr_init(r22512);
        mpfr_init_set_str(r22513, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r22514, "5", 10, MPFR_RNDN);
        mpfr_init(r22515);
        mpfr_init(r22516);
        mpfr_init(r22517);
        mpfr_init_set_str(r22518, "1/3", 10, MPFR_RNDN);
        mpfr_init(r22519);
        mpfr_init(r22520);
        mpfr_init(r22521);
        mpfr_init(r22522);
        mpfr_init(r22523);
}

double f_dm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r22495, x, MPFR_RNDN);
        mpfr_mul(r22496, r22494, r22495, MPFR_RNDN);
        mpfr_exp(r22497, r22496, MPFR_RNDN);
        mpfr_add(r22498, r22493, r22497, MPFR_RNDN);
        mpfr_div(r22499, r22492, r22498, MPFR_RNDN);
        mpfr_sub(r22500, r22499, r22493, MPFR_RNDN);
        ;
        mpfr_set_si(r22502, mpfr_cmp(r22500, r22501) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r22504, r22499, r22503, MPFR_RNDN);
        mpfr_pow(r22505, r22493, r22503, MPFR_RNDN);
        mpfr_sub(r22506, r22504, r22505, MPFR_RNDN);
        mpfr_add(r22507, r22499, r22493, MPFR_RNDN);
        mpfr_mul(r22508, r22499, r22499, MPFR_RNDN);
        mpfr_add(r22509, r22507, r22508, MPFR_RNDN);
        mpfr_div(r22510, r22506, r22509, MPFR_RNDN);
        ;
        mpfr_set_si(r22512, mpfr_cmp(r22500, r22511) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r22515, r22495, r22514, MPFR_RNDN);
        mpfr_mul(r22516, r22513, r22515, MPFR_RNDN);
        mpfr_add(r22517, r22516, r22495, MPFR_RNDN);
        ;
        mpfr_pow(r22519, r22495, r22503, MPFR_RNDN);
        mpfr_mul(r22520, r22518, r22519, MPFR_RNDN);
        mpfr_sub(r22521, r22517, r22520, MPFR_RNDN);
        if (mpfr_get_si(r22512, MPFR_RNDN)) { mpfr_set(r22522, r22521, MPFR_RNDN); } else { mpfr_set(r22522, r22510, MPFR_RNDN); };
        if (mpfr_get_si(r22502, MPFR_RNDN)) { mpfr_set(r22523, r22510, MPFR_RNDN); } else { mpfr_set(r22523, r22522, MPFR_RNDN); };
        return mpfr_get_d(r22523, MPFR_RNDN);
}

