#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 r8847 = 2;
        float r8848 = 1;
        float r8849 = -2;
        float r8850 = x;
        float r8851 = r8849 * r8850;
        float r8852 = exp(r8851);
        float r8853 = r8848 + r8852;
        float r8854 = r8847 / r8853;
        float r8855 = r8854 - r8848;
        return r8855;
}

double f_id(double x, double __attribute__((unused)) y) {
        double r8856 = 2;
        double r8857 = 1;
        double r8858 = -2;
        double r8859 = x;
        double r8860 = r8858 * r8859;
        double r8861 = exp(r8860);
        double r8862 = r8857 + r8861;
        double r8863 = r8856 / r8862;
        double r8864 = r8863 - r8857;
        return r8864;
}


double f_of(float x, float __attribute__((unused)) y) {
        float r8865 = 2;
        float r8866 = 1;
        float r8867 = -2;
        float r8868 = x;
        float r8869 = r8867 * r8868;
        float r8870 = exp(r8869);
        float r8871 = r8866 + r8870;
        float r8872 = r8865 / r8871;
        float r8873 = r8872 - r8866;
        float r8874 = -1.2592515247767267e-05;
        bool r8875 = r8873 <= r8874;
        float r8876 = log(r8865);
        float r8877 = log1p(r8870);
        float r8878 = r8876 - r8877;
        float r8879 = exp(r8878);
        float r8880 = r8879 - r8866;
        float r8881 = 4.372124356457306e-08;
        bool r8882 = r8873 <= r8881;
        float r8883 = 2/15;
        float r8884 = 5;
        float r8885 = pow(r8868, r8884);
        float r8886 = r8883 * r8885;
        float r8887 = r8868 + r8886;
        float r8888 = 1/3;
        float r8889 = 3;
        float r8890 = pow(r8868, r8889);
        float r8891 = r8888 * r8890;
        float r8892 = r8887 - r8891;
        float r8893 = r8882 ? r8892 : r8880;
        float r8894 = r8875 ? r8880 : 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.2592515247767267e-05;
        bool r8905 = r8903 <= r8904;
        double r8906 = log(r8895);
        double r8907 = log1p(r8900);
        double r8908 = r8906 - r8907;
        double r8909 = exp(r8908);
        double r8910 = r8909 - r8896;
        double r8911 = 4.372124356457306e-08;
        bool r8912 = r8903 <= r8911;
        double r8913 = 2/15;
        double r8914 = 5;
        double r8915 = pow(r8898, r8914);
        double r8916 = r8913 * r8915;
        double r8917 = r8898 + r8916;
        double r8918 = 1/3;
        double r8919 = 3;
        double r8920 = pow(r8898, r8919);
        double r8921 = r8918 * r8920;
        double r8922 = r8917 - r8921;
        double r8923 = r8912 ? r8922 : r8910;
        double r8924 = r8905 ? r8910 : r8923;
        return r8924;
}

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 r8925, r8926, r8927, r8928, r8929, r8930, r8931, r8932, r8933;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8925, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8926, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8927, "-2", 10, MPFR_RNDN);
        mpfr_init(r8928);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init(r8931);
        mpfr_init(r8932);
        mpfr_init(r8933);
}

double f_im(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8928, x, MPFR_RNDN);
        mpfr_mul(r8929, r8927, r8928, MPFR_RNDN);
        mpfr_exp(r8930, r8929, MPFR_RNDN);
        mpfr_add(r8931, r8926, r8930, MPFR_RNDN);
        mpfr_div(r8932, r8925, r8931, MPFR_RNDN);
        mpfr_sub(r8933, r8932, r8926, MPFR_RNDN);
        return mpfr_get_d(r8933, MPFR_RNDN);
}

static mpfr_t r8934, r8935, r8936, r8937, r8938, r8939, r8940, r8941, r8942, r8943, r8944, r8945, r8946, r8947, r8948, r8949, r8950, r8951, r8952, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8934, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8935, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8936, "-2", 10, MPFR_RNDN);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init(r8941);
        mpfr_init(r8942);
        mpfr_init_set_str(r8943, "-1.2592515247767267e-05", 10, MPFR_RNDN);
        mpfr_init(r8944);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init(r8947);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init_set_str(r8950, "4.372124356457306e-08", 10, MPFR_RNDN);
        mpfr_init(r8951);
        mpfr_init_set_str(r8952, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r8953, "5", 10, MPFR_RNDN);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
        mpfr_init_set_str(r8957, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8958, "3", 10, MPFR_RNDN);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init(r8961);
        mpfr_init(r8962);
        mpfr_init(r8963);
}

double f_fm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8937, x, MPFR_RNDN);
        mpfr_mul(r8938, r8936, r8937, MPFR_RNDN);
        mpfr_exp(r8939, r8938, MPFR_RNDN);
        mpfr_add(r8940, r8935, r8939, MPFR_RNDN);
        mpfr_div(r8941, r8934, r8940, MPFR_RNDN);
        mpfr_sub(r8942, r8941, r8935, MPFR_RNDN);
        ;
        mpfr_set_si(r8944, mpfr_cmp(r8942, r8943) <= 0, MPFR_RNDN);
        mpfr_log(r8945, r8934, MPFR_RNDN);
        mpfr_log1p(r8946, r8939, MPFR_RNDN);
        mpfr_sub(r8947, r8945, r8946, MPFR_RNDN);
        mpfr_exp(r8948, r8947, MPFR_RNDN);
        mpfr_sub(r8949, r8948, r8935, MPFR_RNDN);
        ;
        mpfr_set_si(r8951, mpfr_cmp(r8942, r8950) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8954, r8937, r8953, MPFR_RNDN);
        mpfr_mul(r8955, r8952, r8954, MPFR_RNDN);
        mpfr_add(r8956, r8937, r8955, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8959, r8937, r8958, MPFR_RNDN);
        mpfr_mul(r8960, r8957, r8959, MPFR_RNDN);
        mpfr_sub(r8961, r8956, r8960, MPFR_RNDN);
        if (mpfr_get_si(r8951, MPFR_RNDN)) { mpfr_set(r8962, r8961, MPFR_RNDN); } else { mpfr_set(r8962, r8949, MPFR_RNDN); };
        if (mpfr_get_si(r8944, MPFR_RNDN)) { mpfr_set(r8963, r8949, MPFR_RNDN); } else { mpfr_set(r8963, r8962, MPFR_RNDN); };
        return mpfr_get_d(r8963, MPFR_RNDN);
}

static mpfr_t r8964, r8965, r8966, r8967, r8968, r8969, r8970, r8971, r8972, r8973, r8974, r8975, r8976, r8977, r8978, r8979, r8980, r8981, r8982, r8983, r8984, r8985, r8986, r8987, r8988, r8989, r8990, r8991, r8992, r8993;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8964, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8965, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8966, "-2", 10, MPFR_RNDN);
        mpfr_init(r8967);
        mpfr_init(r8968);
        mpfr_init(r8969);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init_set_str(r8973, "-1.2592515247767267e-05", 10, MPFR_RNDN);
        mpfr_init(r8974);
        mpfr_init(r8975);
        mpfr_init(r8976);
        mpfr_init(r8977);
        mpfr_init(r8978);
        mpfr_init(r8979);
        mpfr_init_set_str(r8980, "4.372124356457306e-08", 10, MPFR_RNDN);
        mpfr_init(r8981);
        mpfr_init_set_str(r8982, "2/15", 10, MPFR_RNDN);
        mpfr_init_set_str(r8983, "5", 10, MPFR_RNDN);
        mpfr_init(r8984);
        mpfr_init(r8985);
        mpfr_init(r8986);
        mpfr_init_set_str(r8987, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8988, "3", 10, MPFR_RNDN);
        mpfr_init(r8989);
        mpfr_init(r8990);
        mpfr_init(r8991);
        mpfr_init(r8992);
        mpfr_init(r8993);
}

double f_dm(double x, double __attribute__((unused)) y) {
        ;
        ;
        ;
        mpfr_set_d(r8967, x, MPFR_RNDN);
        mpfr_mul(r8968, r8966, r8967, MPFR_RNDN);
        mpfr_exp(r8969, r8968, MPFR_RNDN);
        mpfr_add(r8970, r8965, r8969, MPFR_RNDN);
        mpfr_div(r8971, r8964, r8970, MPFR_RNDN);
        mpfr_sub(r8972, r8971, r8965, MPFR_RNDN);
        ;
        mpfr_set_si(r8974, mpfr_cmp(r8972, r8973) <= 0, MPFR_RNDN);
        mpfr_log(r8975, r8964, MPFR_RNDN);
        mpfr_log1p(r8976, r8969, MPFR_RNDN);
        mpfr_sub(r8977, r8975, r8976, MPFR_RNDN);
        mpfr_exp(r8978, r8977, MPFR_RNDN);
        mpfr_sub(r8979, r8978, r8965, MPFR_RNDN);
        ;
        mpfr_set_si(r8981, mpfr_cmp(r8972, r8980) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8984, r8967, r8983, MPFR_RNDN);
        mpfr_mul(r8985, r8982, r8984, MPFR_RNDN);
        mpfr_add(r8986, r8967, r8985, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8989, r8967, r8988, MPFR_RNDN);
        mpfr_mul(r8990, r8987, r8989, MPFR_RNDN);
        mpfr_sub(r8991, r8986, r8990, MPFR_RNDN);
        if (mpfr_get_si(r8981, MPFR_RNDN)) { mpfr_set(r8992, r8991, MPFR_RNDN); } else { mpfr_set(r8992, r8979, MPFR_RNDN); };
        if (mpfr_get_si(r8974, MPFR_RNDN)) { mpfr_set(r8993, r8979, MPFR_RNDN); } else { mpfr_set(r8993, r8992, MPFR_RNDN); };
        return mpfr_get_d(r8993, MPFR_RNDN);
}

