#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 r8839 = 2;
        float r8840 = 1;
        float r8841 = -2;
        float r8842 = x;
        float r8843 = r8841 * r8842;
        float r8844 = exp(r8843);
        float r8845 = r8840 + r8844;
        float r8846 = r8839 / r8845;
        float r8847 = r8846 - r8840;
        return r8847;
}

double f_id(double x, double __attribute__((unused)) y) {
        double r8848 = 2;
        double r8849 = 1;
        double r8850 = -2;
        double r8851 = x;
        double r8852 = r8850 * r8851;
        double r8853 = exp(r8852);
        double r8854 = r8849 + r8853;
        double r8855 = r8848 / r8854;
        double r8856 = r8855 - r8849;
        return r8856;
}


double f_of(float x, float __attribute__((unused)) y) {
        float r8857 = 2;
        float r8858 = 1;
        float r8859 = -2;
        float r8860 = x;
        float r8861 = r8859 * r8860;
        float r8862 = exp(r8861);
        float r8863 = r8858 + r8862;
        float r8864 = r8857 / r8863;
        float r8865 = r8864 - r8858;
        float r8866 = -1.6888443106222433e-07;
        bool r8867 = r8865 <= r8866;
        float r8868 = r8864 * r8864;
        float r8869 = exp(r8868);
        float r8870 = log(r8869);
        float r8871 = r8870 - r8858;
        float r8872 = r8864 + r8858;
        float r8873 = r8871 / r8872;
        float r8874 = 0.0032654260743848235;
        bool r8875 = r8865 <= r8874;
        float r8876 = 2/15;
        float r8877 = 5;
        float r8878 = pow(r8860, r8877);
        float r8879 = r8876 * r8878;
        float r8880 = r8860 + r8879;
        float r8881 = 1/3;
        float r8882 = 3;
        float r8883 = pow(r8860, r8882);
        float r8884 = r8881 * r8883;
        float r8885 = r8880 - r8884;
        float r8886 = r8857 * r8857;
        float r8887 = r8863 * r8863;
        float r8888 = r8886 / r8887;
        float r8889 = r8888 - r8858;
        float r8890 = exp(r8889);
        float r8891 = log(r8890);
        float r8892 = r8891 / r8872;
        float r8893 = r8875 ? r8885 : r8892;
        float r8894 = r8867 ? r8873 : r8893;
        return r8894;
}

double f_od(double x, double __attribute__((unused)) y) {
        double r8895 = 2;
        double r8896 = 1;
        double r8897 = -2;
        double r8898 = x;
        double r8899 = r8897 * r8898;
        double r8900 = exp(r8899);
        double r8901 = r8896 + r8900;
        double r8902 = r8895 / r8901;
        double r8903 = r8902 - r8896;
        double r8904 = -1.6888443106222433e-07;
        bool r8905 = r8903 <= r8904;
        double r8906 = r8902 * r8902;
        double r8907 = exp(r8906);
        double r8908 = log(r8907);
        double r8909 = r8908 - r8896;
        double r8910 = r8902 + r8896;
        double r8911 = r8909 / r8910;
        double r8912 = 0.0032654260743848235;
        bool r8913 = r8903 <= r8912;
        double r8914 = 2/15;
        double r8915 = 5;
        double r8916 = pow(r8898, r8915);
        double r8917 = r8914 * r8916;
        double r8918 = r8898 + r8917;
        double r8919 = 1/3;
        double r8920 = 3;
        double r8921 = pow(r8898, r8920);
        double r8922 = r8919 * r8921;
        double r8923 = r8918 - r8922;
        double r8924 = r8895 * r8895;
        double r8925 = r8901 * r8901;
        double r8926 = r8924 / r8925;
        double r8927 = r8926 - r8896;
        double r8928 = exp(r8927);
        double r8929 = log(r8928);
        double r8930 = r8929 / r8910;
        double r8931 = r8913 ? r8923 : r8930;
        double r8932 = r8905 ? r8911 : r8931;
        return r8932;
}

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 r8933, r8934, r8935, r8936, r8937, r8938, r8939, r8940, r8941;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8933, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8934, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8935, "-2", 10, MPFR_RNDN);
        mpfr_init(r8936);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init(r8941);
}

double f_im(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8936, x, MPFR_RNDN);
        mpfr_mul(r8937, r8935, r8936, MPFR_RNDN);
        mpfr_exp(r8938, r8937, MPFR_RNDN);
        mpfr_add(r8939, r8934, r8938, MPFR_RNDN);
        mpfr_div(r8940, r8933, r8939, MPFR_RNDN);
        mpfr_sub(r8941, r8940, r8934, MPFR_RNDN);
        return mpfr_get_d(r8941, MPFR_RNDN);
}

static mpfr_t r8942, r8943, r8944, r8945, r8946, r8947, r8948, r8949, r8950, r8951, r8952, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963, r8964, r8965, r8966, r8967, r8968, r8969, r8970, r8971, r8972, r8973, r8974, r8975, r8976, r8977, r8978, r8979;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8942, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8943, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8944, "-2", 10, MPFR_RNDN);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init(r8947);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init_set_str(r8951, "-1.6888443106222433e-07", 10, MPFR_RNDN);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
        mpfr_init(r8957);
        mpfr_init(r8958);
        mpfr_init_set_str(r8959, "0.0032654260743848235", 10, MPFR_RNDN);
        mpfr_init(r8960);
        mpfr_init_set_str(r8961, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r8962, "5", 10, MPFR_RNDN);
        mpfr_init(r8963);
        mpfr_init(r8964);
        mpfr_init(r8965);
        mpfr_init_set_str(r8966, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8967, "3", 10, MPFR_RNDN);
        mpfr_init(r8968);
        mpfr_init(r8969);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init(r8973);
        mpfr_init(r8974);
        mpfr_init(r8975);
        mpfr_init(r8976);
        mpfr_init(r8977);
        mpfr_init(r8978);
        mpfr_init(r8979);
}

double f_fm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8945, x, MPFR_RNDN);
        mpfr_mul(r8946, r8944, r8945, MPFR_RNDN);
        mpfr_exp(r8947, r8946, MPFR_RNDN);
        mpfr_add(r8948, r8943, r8947, MPFR_RNDN);
        mpfr_div(r8949, r8942, r8948, MPFR_RNDN);
        mpfr_sub(r8950, r8949, r8943, MPFR_RNDN);
        ;
        mpfr_set_si(r8952, mpfr_cmp(r8950, r8951) <= 0, MPFR_RNDN);
        mpfr_mul(r8953, r8949, r8949, MPFR_RNDN);
        mpfr_exp(r8954, r8953, MPFR_RNDN);
        mpfr_log(r8955, r8954, MPFR_RNDN);
        mpfr_sub(r8956, r8955, r8943, MPFR_RNDN);
        mpfr_add(r8957, r8949, r8943, MPFR_RNDN);
        mpfr_div(r8958, r8956, r8957, MPFR_RNDN);
        ;
        mpfr_set_si(r8960, mpfr_cmp(r8950, r8959) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8963, r8945, r8962, MPFR_RNDN);
        mpfr_mul(r8964, r8961, r8963, MPFR_RNDN);
        mpfr_add(r8965, r8945, r8964, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8968, r8945, r8967, MPFR_RNDN);
        mpfr_mul(r8969, r8966, r8968, MPFR_RNDN);
        mpfr_sub(r8970, r8965, r8969, MPFR_RNDN);
        mpfr_mul(r8971, r8942, r8942, MPFR_RNDN);
        mpfr_mul(r8972, r8948, r8948, MPFR_RNDN);
        mpfr_div(r8973, r8971, r8972, MPFR_RNDN);
        mpfr_sub(r8974, r8973, r8943, MPFR_RNDN);
        mpfr_exp(r8975, r8974, MPFR_RNDN);
        mpfr_log(r8976, r8975, MPFR_RNDN);
        mpfr_div(r8977, r8976, r8957, MPFR_RNDN);
        if (mpfr_get_si(r8960, MPFR_RNDN)) { mpfr_set(r8978, r8970, MPFR_RNDN); } else { mpfr_set(r8978, r8977, MPFR_RNDN); };
        if (mpfr_get_si(r8952, MPFR_RNDN)) { mpfr_set(r8979, r8958, MPFR_RNDN); } else { mpfr_set(r8979, r8978, MPFR_RNDN); };
        return mpfr_get_d(r8979, MPFR_RNDN);
}

static mpfr_t r8980, r8981, r8982, r8983, r8984, r8985, r8986, r8987, r8988, r8989, r8990, r8991, r8992, r8993, r8994, r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006, r9007, r9008, r9009, r9010, r9011, r9012, r9013, r9014, r9015, r9016, r9017;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8980, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8981, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8982, "-2", 10, MPFR_RNDN);
        mpfr_init(r8983);
        mpfr_init(r8984);
        mpfr_init(r8985);
        mpfr_init(r8986);
        mpfr_init(r8987);
        mpfr_init(r8988);
        mpfr_init_set_str(r8989, "-1.6888443106222433e-07", 10, MPFR_RNDN);
        mpfr_init(r8990);
        mpfr_init(r8991);
        mpfr_init(r8992);
        mpfr_init(r8993);
        mpfr_init(r8994);
        mpfr_init(r8995);
        mpfr_init(r8996);
        mpfr_init_set_str(r8997, "0.0032654260743848235", 10, MPFR_RNDN);
        mpfr_init(r8998);
        mpfr_init_set_str(r8999, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r9000, "5", 10, MPFR_RNDN);
        mpfr_init(r9001);
        mpfr_init(r9002);
        mpfr_init(r9003);
        mpfr_init_set_str(r9004, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9005, "3", 10, MPFR_RNDN);
        mpfr_init(r9006);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init(r9012);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init(r9015);
        mpfr_init(r9016);
        mpfr_init(r9017);
}

double f_dm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8983, x, MPFR_RNDN);
        mpfr_mul(r8984, r8982, r8983, MPFR_RNDN);
        mpfr_exp(r8985, r8984, MPFR_RNDN);
        mpfr_add(r8986, r8981, r8985, MPFR_RNDN);
        mpfr_div(r8987, r8980, r8986, MPFR_RNDN);
        mpfr_sub(r8988, r8987, r8981, MPFR_RNDN);
        ;
        mpfr_set_si(r8990, mpfr_cmp(r8988, r8989) <= 0, MPFR_RNDN);
        mpfr_mul(r8991, r8987, r8987, MPFR_RNDN);
        mpfr_exp(r8992, r8991, MPFR_RNDN);
        mpfr_log(r8993, r8992, MPFR_RNDN);
        mpfr_sub(r8994, r8993, r8981, MPFR_RNDN);
        mpfr_add(r8995, r8987, r8981, MPFR_RNDN);
        mpfr_div(r8996, r8994, r8995, MPFR_RNDN);
        ;
        mpfr_set_si(r8998, mpfr_cmp(r8988, r8997) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9001, r8983, r9000, MPFR_RNDN);
        mpfr_mul(r9002, r8999, r9001, MPFR_RNDN);
        mpfr_add(r9003, r8983, r9002, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9006, r8983, r9005, MPFR_RNDN);
        mpfr_mul(r9007, r9004, r9006, MPFR_RNDN);
        mpfr_sub(r9008, r9003, r9007, MPFR_RNDN);
        mpfr_mul(r9009, r8980, r8980, MPFR_RNDN);
        mpfr_mul(r9010, r8986, r8986, MPFR_RNDN);
        mpfr_div(r9011, r9009, r9010, MPFR_RNDN);
        mpfr_sub(r9012, r9011, r8981, MPFR_RNDN);
        mpfr_exp(r9013, r9012, MPFR_RNDN);
        mpfr_log(r9014, r9013, MPFR_RNDN);
        mpfr_div(r9015, r9014, r8995, MPFR_RNDN);
        if (mpfr_get_si(r8998, MPFR_RNDN)) { mpfr_set(r9016, r9008, MPFR_RNDN); } else { mpfr_set(r9016, r9015, MPFR_RNDN); };
        if (mpfr_get_si(r8990, MPFR_RNDN)) { mpfr_set(r9017, r8996, MPFR_RNDN); } else { mpfr_set(r9017, r9016, MPFR_RNDN); };
        return mpfr_get_d(r9017, MPFR_RNDN);
}

