#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 r389701 = 1;
        float r389702 = x;
        float r389703 = exp(r389702);
        float r389704 = r389701 + r389703;
        float r389705 = log(r389704);
        float r389706 = y;
        float r389707 = r389702 * r389706;
        float r389708 = r389705 - r389707;
        return r389708;
}

double f_id(double x, double y) {
        double r389709 = 1;
        double r389710 = x;
        double r389711 = exp(r389710);
        double r389712 = r389709 + r389711;
        double r389713 = log(r389712);
        double r389714 = y;
        double r389715 = r389710 * r389714;
        double r389716 = r389713 - r389715;
        return r389716;
}


double f_of(float x, float y) {
        float r389717 = 1;
        float r389718 = x;
        float r389719 = exp(r389718);
        float r389720 = 3;
        float r389721 = pow(r389719, r389720);
        float r389722 = r389717 + r389721;
        float r389723 = log(r389722);
        float r389724 = r389717 - r389719;
        float r389725 = r389718 + r389718;
        float r389726 = exp(r389725);
        float r389727 = r389724 + r389726;
        float r389728 = log(r389727);
        float r389729 = y;
        float r389730 = r389729 * r389718;
        float r389731 = r389728 + r389730;
        float r389732 = r389723 - r389731;
        return r389732;
}

double f_od(double x, double y) {
        double r389733 = 1;
        double r389734 = x;
        double r389735 = exp(r389734);
        double r389736 = 3;
        double r389737 = pow(r389735, r389736);
        double r389738 = r389733 + r389737;
        double r389739 = log(r389738);
        double r389740 = r389733 - r389735;
        double r389741 = r389734 + r389734;
        double r389742 = exp(r389741);
        double r389743 = r389740 + r389742;
        double r389744 = log(r389743);
        double r389745 = y;
        double r389746 = r389745 * r389734;
        double r389747 = r389744 + r389746;
        double r389748 = r389739 - r389747;
        return r389748;
}

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 r389749, r389750, r389751, r389752, r389753, r389754, r389755, r389756;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r389749, "1", 10, MPFR_RNDN);
        mpfr_init(r389750);
        mpfr_init(r389751);
        mpfr_init(r389752);
        mpfr_init(r389753);
        mpfr_init(r389754);
        mpfr_init(r389755);
        mpfr_init(r389756);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r389750, x, MPFR_RNDN);
        mpfr_exp(r389751, r389750, MPFR_RNDN);
        mpfr_add(r389752, r389749, r389751, MPFR_RNDN);
        mpfr_log(r389753, r389752, MPFR_RNDN);
        mpfr_set_d(r389754, y, MPFR_RNDN);
        mpfr_mul(r389755, r389750, r389754, MPFR_RNDN);
        mpfr_sub(r389756, r389753, r389755, MPFR_RNDN);
        return mpfr_get_d(r389756, MPFR_RNDN);
}

static mpfr_t r389757, r389758, r389759, r389760, r389761, r389762, r389763, r389764, r389765, r389766, r389767, r389768, r389769, r389770, r389771, r389772;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r389757, "1", 10, MPFR_RNDN);
        mpfr_init(r389758);
        mpfr_init(r389759);
        mpfr_init_set_str(r389760, "3", 10, MPFR_RNDN);
        mpfr_init(r389761);
        mpfr_init(r389762);
        mpfr_init(r389763);
        mpfr_init(r389764);
        mpfr_init(r389765);
        mpfr_init(r389766);
        mpfr_init(r389767);
        mpfr_init(r389768);
        mpfr_init(r389769);
        mpfr_init(r389770);
        mpfr_init(r389771);
        mpfr_init(r389772);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r389758, x, MPFR_RNDN);
        mpfr_exp(r389759, r389758, MPFR_RNDN);
        ;
        mpfr_pow(r389761, r389759, r389760, MPFR_RNDN);
        mpfr_add(r389762, r389757, r389761, MPFR_RNDN);
        mpfr_log(r389763, r389762, MPFR_RNDN);
        mpfr_sub(r389764, r389757, r389759, MPFR_RNDN);
        mpfr_add(r389765, r389758, r389758, MPFR_RNDN);
        mpfr_exp(r389766, r389765, MPFR_RNDN);
        mpfr_add(r389767, r389764, r389766, MPFR_RNDN);
        mpfr_log(r389768, r389767, MPFR_RNDN);
        mpfr_set_d(r389769, y, MPFR_RNDN);
        mpfr_mul(r389770, r389769, r389758, MPFR_RNDN);
        mpfr_add(r389771, r389768, r389770, MPFR_RNDN);
        mpfr_sub(r389772, r389763, r389771, MPFR_RNDN);
        return mpfr_get_d(r389772, MPFR_RNDN);
}

static mpfr_t r389773, r389774, r389775, r389776, r389777, r389778, r389779, r389780, r389781, r389782, r389783, r389784, r389785, r389786, r389787, r389788;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r389773, "1", 10, MPFR_RNDN);
        mpfr_init(r389774);
        mpfr_init(r389775);
        mpfr_init_set_str(r389776, "3", 10, MPFR_RNDN);
        mpfr_init(r389777);
        mpfr_init(r389778);
        mpfr_init(r389779);
        mpfr_init(r389780);
        mpfr_init(r389781);
        mpfr_init(r389782);
        mpfr_init(r389783);
        mpfr_init(r389784);
        mpfr_init(r389785);
        mpfr_init(r389786);
        mpfr_init(r389787);
        mpfr_init(r389788);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r389774, x, MPFR_RNDN);
        mpfr_exp(r389775, r389774, MPFR_RNDN);
        ;
        mpfr_pow(r389777, r389775, r389776, MPFR_RNDN);
        mpfr_add(r389778, r389773, r389777, MPFR_RNDN);
        mpfr_log(r389779, r389778, MPFR_RNDN);
        mpfr_sub(r389780, r389773, r389775, MPFR_RNDN);
        mpfr_add(r389781, r389774, r389774, MPFR_RNDN);
        mpfr_exp(r389782, r389781, MPFR_RNDN);
        mpfr_add(r389783, r389780, r389782, MPFR_RNDN);
        mpfr_log(r389784, r389783, MPFR_RNDN);
        mpfr_set_d(r389785, y, MPFR_RNDN);
        mpfr_mul(r389786, r389785, r389774, MPFR_RNDN);
        mpfr_add(r389787, r389784, r389786, MPFR_RNDN);
        mpfr_sub(r389788, r389779, r389787, MPFR_RNDN);
        return mpfr_get_d(r389788, MPFR_RNDN);
}

