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

char *name = "Logistic regression 2";

double f_if(float x, float y) {
        float r10897 = 1.0f;
        float r10898 = x;
        float r10899 = exp(r10898);
        float r10900 = r10897 + r10899;
        float r10901 = log(r10900);
        float r10902 = y;
        float r10903 = r10898 * r10902;
        float r10904 = r10901 - r10903;
        return r10904;
}

double f_id(double x, double y) {
        double r10905 = 1.0;
        double r10906 = x;
        double r10907 = exp(r10906);
        double r10908 = r10905 + r10907;
        double r10909 = log(r10908);
        double r10910 = y;
        double r10911 = r10906 * r10910;
        double r10912 = r10909 - r10911;
        return r10912;
}


double f_of(float x, float y) {
        float r10913 = x;
        float r10914 = exp(r10913);
        float r10915 = 3.0f;
        float r10916 = pow(r10914, r10915);
        float r10917 = 1.0f;
        float r10918 = r10916 + r10917;
        float r10919 = log(r10918);
        float r10920 = y;
        float r10921 = r10920 * r10913;
        float r10922 = r10914 * r10914;
        float r10923 = r10922 - r10914;
        float r10924 = r10917 + r10923;
        float r10925 = log(r10924);
        float r10926 = r10921 + r10925;
        float r10927 = r10919 - r10926;
        return r10927;
}

double f_od(double x, double y) {
        double r10928 = x;
        double r10929 = exp(r10928);
        double r10930 = 3.0;
        double r10931 = pow(r10929, r10930);
        double r10932 = 1.0;
        double r10933 = r10931 + r10932;
        double r10934 = log(r10933);
        double r10935 = y;
        double r10936 = r10935 * r10928;
        double r10937 = r10929 * r10929;
        double r10938 = r10937 - r10929;
        double r10939 = r10932 + r10938;
        double r10940 = log(r10939);
        double r10941 = r10936 + r10940;
        double r10942 = r10934 - r10941;
        return r10942;
}

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 r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10943, "1", 10, MPFR_RNDN);
        mpfr_init(r10944);
        mpfr_init(r10945);
        mpfr_init(r10946);
        mpfr_init(r10947);
        mpfr_init(r10948);
        mpfr_init(r10949);
        mpfr_init(r10950);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r10944, x, MPFR_RNDN);
        mpfr_exp(r10945, r10944, MPFR_RNDN);
        mpfr_add(r10946, r10943, r10945, MPFR_RNDN);
        mpfr_log(r10947, r10946, MPFR_RNDN);
        mpfr_set_d(r10948, y, MPFR_RNDN);
        mpfr_mul(r10949, r10944, r10948, MPFR_RNDN);
        mpfr_sub(r10950, r10947, r10949, MPFR_RNDN);
        return mpfr_get_d(r10950, MPFR_RNDN);
}

static mpfr_t r10951, r10952, r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960, r10961, r10962, r10963, r10964, r10965;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10951);
        mpfr_init(r10952);
        mpfr_init_set_str(r10953, "3", 10, MPFR_RNDN);
        mpfr_init(r10954);
        mpfr_init_set_str(r10955, "1", 10, MPFR_RNDN);
        mpfr_init(r10956);
        mpfr_init(r10957);
        mpfr_init(r10958);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
        mpfr_init(r10962);
        mpfr_init(r10963);
        mpfr_init(r10964);
        mpfr_init(r10965);
}

double f_fm(double x, double y) {
        mpfr_set_d(r10951, x, MPFR_RNDN);
        mpfr_exp(r10952, r10951, MPFR_RNDN);
        ;
        mpfr_pow(r10954, r10952, r10953, MPFR_RNDN);
        ;
        mpfr_add(r10956, r10954, r10955, MPFR_RNDN);
        mpfr_log(r10957, r10956, MPFR_RNDN);
        mpfr_set_d(r10958, y, MPFR_RNDN);
        mpfr_mul(r10959, r10958, r10951, MPFR_RNDN);
        mpfr_mul(r10960, r10952, r10952, MPFR_RNDN);
        mpfr_sub(r10961, r10960, r10952, MPFR_RNDN);
        mpfr_add(r10962, r10955, r10961, MPFR_RNDN);
        mpfr_log(r10963, r10962, MPFR_RNDN);
        mpfr_add(r10964, r10959, r10963, MPFR_RNDN);
        mpfr_sub(r10965, r10957, r10964, MPFR_RNDN);
        return mpfr_get_d(r10965, MPFR_RNDN);
}

static mpfr_t r10966, r10967, r10968, r10969, r10970, r10971, r10972, r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init_set_str(r10968, "3", 10, MPFR_RNDN);
        mpfr_init(r10969);
        mpfr_init_set_str(r10970, "1", 10, MPFR_RNDN);
        mpfr_init(r10971);
        mpfr_init(r10972);
        mpfr_init(r10973);
        mpfr_init(r10974);
        mpfr_init(r10975);
        mpfr_init(r10976);
        mpfr_init(r10977);
        mpfr_init(r10978);
        mpfr_init(r10979);
        mpfr_init(r10980);
}

double f_dm(double x, double y) {
        mpfr_set_d(r10966, x, MPFR_RNDN);
        mpfr_exp(r10967, r10966, MPFR_RNDN);
        ;
        mpfr_pow(r10969, r10967, r10968, MPFR_RNDN);
        ;
        mpfr_add(r10971, r10969, r10970, MPFR_RNDN);
        mpfr_log(r10972, r10971, MPFR_RNDN);
        mpfr_set_d(r10973, y, MPFR_RNDN);
        mpfr_mul(r10974, r10973, r10966, MPFR_RNDN);
        mpfr_mul(r10975, r10967, r10967, MPFR_RNDN);
        mpfr_sub(r10976, r10975, r10967, MPFR_RNDN);
        mpfr_add(r10977, r10970, r10976, MPFR_RNDN);
        mpfr_log(r10978, r10977, MPFR_RNDN);
        mpfr_add(r10979, r10974, r10978, MPFR_RNDN);
        mpfr_sub(r10980, r10972, r10979, MPFR_RNDN);
        return mpfr_get_d(r10980, MPFR_RNDN);
}

