#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 r24947 = 2;
        float r24948 = 1;
        float r24949 = -2;
        float r24950 = x;
        float r24951 = r24949 * r24950;
        float r24952 = exp(r24951);
        float r24953 = r24948 + r24952;
        float r24954 = r24947 / r24953;
        float r24955 = r24954 - r24948;
        return r24955;
}

double f_id(double x, double __attribute__((unused)) y) {
        double r24956 = 2;
        double r24957 = 1;
        double r24958 = -2;
        double r24959 = x;
        double r24960 = r24958 * r24959;
        double r24961 = exp(r24960);
        double r24962 = r24957 + r24961;
        double r24963 = r24956 / r24962;
        double r24964 = r24963 - r24957;
        return r24964;
}


double f_of(float x, float __attribute__((unused)) y) {
        float r24965 = x;
        float r24966 = -2;
        float r24967 = r24965 * r24966;
        float r24968 = exp(r24967);
        float r24969 = 1;
        float r24970 = r24968 + r24969;
        float r24971 = 1.9332077667223637;
        bool r24972 = r24970 <= r24971;
        float r24973 = 2.0000647776950835;
        bool r24974 = r24970 <= r24973;
        float r24975 = !r24974;
        bool r24976 = r24972 || r24975;
        float r24977 = exp(1.0);
        float r24978 = exp(r24968);
        float r24979 = r24968 - r24969;
        float r24980 = pow(r24978, r24979);
        float r24981 = r24977 * r24980;
        float r24982 = 2;
        float r24983 = 3;
        float r24984 = pow(r24968, r24983);
        float r24985 = r24984 + r24969;
        float r24986 = r24982 / r24985;
        float r24987 = pow(r24981, r24986);
        float r24988 = r24987 / r24977;
        float r24989 = log(r24988);
        float r24990 = 2/15;
        float r24991 = 5;
        float r24992 = pow(r24965, r24991);
        float r24993 = r24990 * r24992;
        float r24994 = r24993 + r24965;
        float r24995 = pow(r24965, r24983);
        float r24996 = 1/3;
        float r24997 = r24995 * r24996;
        float r24998 = r24994 - r24997;
        float r24999 = r24976 ? r24989 : r24998;
        return r24999;
}

double f_od(double x, double __attribute__((unused)) y) {
        double r25000 = x;
        double r25001 = -2;
        double r25002 = r25000 * r25001;
        double r25003 = exp(r25002);
        double r25004 = 1;
        double r25005 = r25003 + r25004;
        double r25006 = 1.9332077667223637;
        bool r25007 = r25005 <= r25006;
        double r25008 = 2.0000647776950835;
        bool r25009 = r25005 <= r25008;
        double r25010 = !r25009;
        bool r25011 = r25007 || r25010;
        double r25012 = exp(1.0);
        double r25013 = exp(r25003);
        double r25014 = r25003 - r25004;
        double r25015 = pow(r25013, r25014);
        double r25016 = r25012 * r25015;
        double r25017 = 2;
        double r25018 = 3;
        double r25019 = pow(r25003, r25018);
        double r25020 = r25019 + r25004;
        double r25021 = r25017 / r25020;
        double r25022 = pow(r25016, r25021);
        double r25023 = r25022 / r25012;
        double r25024 = log(r25023);
        double r25025 = 2/15;
        double r25026 = 5;
        double r25027 = pow(r25000, r25026);
        double r25028 = r25025 * r25027;
        double r25029 = r25028 + r25000;
        double r25030 = pow(r25000, r25018);
        double r25031 = 1/3;
        double r25032 = r25030 * r25031;
        double r25033 = r25029 - r25032;
        double r25034 = r25011 ? r25024 : r25033;
        return r25034;
}

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 r25035, r25036, r25037, r25038, r25039, r25040, r25041, r25042, r25043;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25035, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r25036, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25037, "-2", 10, MPFR_RNDN);
        mpfr_init(r25038);
        mpfr_init(r25039);
        mpfr_init(r25040);
        mpfr_init(r25041);
        mpfr_init(r25042);
        mpfr_init(r25043);
}

double f_im(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r25038, x, MPFR_RNDN);
        mpfr_mul(r25039, r25037, r25038, MPFR_RNDN);
        mpfr_exp(r25040, r25039, MPFR_RNDN);
        mpfr_add(r25041, r25036, r25040, MPFR_RNDN);
        mpfr_div(r25042, r25035, r25041, MPFR_RNDN);
        mpfr_sub(r25043, r25042, r25036, MPFR_RNDN);
        return mpfr_get_d(r25043, MPFR_RNDN);
}

static mpfr_t r25044, r25045, r25046, r25047, r25048, r25049, r25050, r25051, r25052, r25053, r25054, r25055, r25056, r25057, r25058, r25059, r25060, r25061, r25062, r25063, r25064, r25065, r25066, r25067, r25068, r25069, r25070, r25071, r25072, r25073, r25074, r25075, r25076, r25077, r25078;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25044);
        mpfr_init_set_str(r25045, "-2", 10, MPFR_RNDN);
        mpfr_init(r25046);
        mpfr_init(r25047);
        mpfr_init_set_str(r25048, "1", 10, MPFR_RNDN);
        mpfr_init(r25049);
        mpfr_init_set_str(r25050, "1.9332077667223637", 10, MPFR_RNDN);
        mpfr_init(r25051);
        mpfr_init_set_str(r25052, "2.0000647776950835", 10, MPFR_RNDN);
        mpfr_init(r25053);
        mpfr_init(r25054);
        mpfr_init(r25055);
        mpfr_init(r25056);
        mpfr_init(r25057);
        mpfr_init(r25058);
        mpfr_init(r25059);
        mpfr_init(r25060);
        mpfr_init_set_str(r25061, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r25062, "3", 10, MPFR_RNDN);
        mpfr_init(r25063);
        mpfr_init(r25064);
        mpfr_init(r25065);
        mpfr_init(r25066);
        mpfr_init(r25067);
        mpfr_init(r25068);
        mpfr_init_set_str(r25069, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r25070, "5", 10, MPFR_RNDN);
        mpfr_init(r25071);
        mpfr_init(r25072);
        mpfr_init(r25073);
        mpfr_init(r25074);
        mpfr_init_set_str(r25075, "1/3", 10, MPFR_RNDN);
        mpfr_init(r25076);
        mpfr_init(r25077);
        mpfr_init(r25078);
}

double f_fm(double x, double __attribute__((unused)) y) {
        mpfr_set_d(r25044, x, MPFR_RNDN);
        ;
        mpfr_mul(r25046, r25044, r25045, MPFR_RNDN);
        mpfr_exp(r25047, r25046, MPFR_RNDN);
        ;
        mpfr_add(r25049, r25047, r25048, MPFR_RNDN);
        ;
        mpfr_set_si(r25051, mpfr_cmp(r25049, r25050) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r25053, mpfr_cmp(r25049, r25052) <= 0, MPFR_RNDN);
        mpfr_set_si(r25054, !mpfr_get_si(r25053, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25055, mpfr_get_si(r25051, MPFR_RNDN) || mpfr_get_si(r25054, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25056, 1, MPFR_RNDN), mpfr_const_exp(r25056, r25056, MPFR_RNDN);
        mpfr_exp(r25057, r25047, MPFR_RNDN);
        mpfr_sub(r25058, r25047, r25048, MPFR_RNDN);
        mpfr_pow(r25059, r25057, r25058, MPFR_RNDN);
        mpfr_mul(r25060, r25056, r25059, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25063, r25047, r25062, MPFR_RNDN);
        mpfr_add(r25064, r25063, r25048, MPFR_RNDN);
        mpfr_div(r25065, r25061, r25064, MPFR_RNDN);
        mpfr_pow(r25066, r25060, r25065, MPFR_RNDN);
        mpfr_div(r25067, r25066, r25056, MPFR_RNDN);
        mpfr_log(r25068, r25067, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25071, r25044, r25070, MPFR_RNDN);
        mpfr_mul(r25072, r25069, r25071, MPFR_RNDN);
        mpfr_add(r25073, r25072, r25044, MPFR_RNDN);
        mpfr_pow(r25074, r25044, r25062, MPFR_RNDN);
        ;
        mpfr_mul(r25076, r25074, r25075, MPFR_RNDN);
        mpfr_sub(r25077, r25073, r25076, MPFR_RNDN);
        if (mpfr_get_si(r25055, MPFR_RNDN)) { mpfr_set(r25078, r25068, MPFR_RNDN); } else { mpfr_set(r25078, r25077, MPFR_RNDN); };
        return mpfr_get_d(r25078, MPFR_RNDN);
}

static mpfr_t r25079, r25080, r25081, r25082, r25083, r25084, r25085, r25086, r25087, r25088, r25089, r25090, r25091, r25092, r25093, r25094, r25095, r25096, r25097, r25098, r25099, r25100, r25101, r25102, r25103, r25104, r25105, r25106, r25107, r25108, r25109, r25110, r25111, r25112, r25113;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25079);
        mpfr_init_set_str(r25080, "-2", 10, MPFR_RNDN);
        mpfr_init(r25081);
        mpfr_init(r25082);
        mpfr_init_set_str(r25083, "1", 10, MPFR_RNDN);
        mpfr_init(r25084);
        mpfr_init_set_str(r25085, "1.9332077667223637", 10, MPFR_RNDN);
        mpfr_init(r25086);
        mpfr_init_set_str(r25087, "2.0000647776950835", 10, MPFR_RNDN);
        mpfr_init(r25088);
        mpfr_init(r25089);
        mpfr_init(r25090);
        mpfr_init(r25091);
        mpfr_init(r25092);
        mpfr_init(r25093);
        mpfr_init(r25094);
        mpfr_init(r25095);
        mpfr_init_set_str(r25096, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r25097, "3", 10, MPFR_RNDN);
        mpfr_init(r25098);
        mpfr_init(r25099);
        mpfr_init(r25100);
        mpfr_init(r25101);
        mpfr_init(r25102);
        mpfr_init(r25103);
        mpfr_init_set_str(r25104, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r25105, "5", 10, MPFR_RNDN);
        mpfr_init(r25106);
        mpfr_init(r25107);
        mpfr_init(r25108);
        mpfr_init(r25109);
        mpfr_init_set_str(r25110, "1/3", 10, MPFR_RNDN);
        mpfr_init(r25111);
        mpfr_init(r25112);
        mpfr_init(r25113);
}

double f_dm(double x, double __attribute__((unused)) y) {
        mpfr_set_d(r25079, x, MPFR_RNDN);
        ;
        mpfr_mul(r25081, r25079, r25080, MPFR_RNDN);
        mpfr_exp(r25082, r25081, MPFR_RNDN);
        ;
        mpfr_add(r25084, r25082, r25083, MPFR_RNDN);
        ;
        mpfr_set_si(r25086, mpfr_cmp(r25084, r25085) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r25088, mpfr_cmp(r25084, r25087) <= 0, MPFR_RNDN);
        mpfr_set_si(r25089, !mpfr_get_si(r25088, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25090, mpfr_get_si(r25086, MPFR_RNDN) || mpfr_get_si(r25089, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25091, 1, MPFR_RNDN), mpfr_const_exp(r25091, r25091, MPFR_RNDN);
        mpfr_exp(r25092, r25082, MPFR_RNDN);
        mpfr_sub(r25093, r25082, r25083, MPFR_RNDN);
        mpfr_pow(r25094, r25092, r25093, MPFR_RNDN);
        mpfr_mul(r25095, r25091, r25094, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25098, r25082, r25097, MPFR_RNDN);
        mpfr_add(r25099, r25098, r25083, MPFR_RNDN);
        mpfr_div(r25100, r25096, r25099, MPFR_RNDN);
        mpfr_pow(r25101, r25095, r25100, MPFR_RNDN);
        mpfr_div(r25102, r25101, r25091, MPFR_RNDN);
        mpfr_log(r25103, r25102, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25106, r25079, r25105, MPFR_RNDN);
        mpfr_mul(r25107, r25104, r25106, MPFR_RNDN);
        mpfr_add(r25108, r25107, r25079, MPFR_RNDN);
        mpfr_pow(r25109, r25079, r25097, MPFR_RNDN);
        ;
        mpfr_mul(r25111, r25109, r25110, MPFR_RNDN);
        mpfr_sub(r25112, r25108, r25111, MPFR_RNDN);
        if (mpfr_get_si(r25090, MPFR_RNDN)) { mpfr_set(r25113, r25103, MPFR_RNDN); } else { mpfr_set(r25113, r25112, MPFR_RNDN); };
        return mpfr_get_d(r25113, MPFR_RNDN);
}

