#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 r27404 = 1;
        float r27405 = x;
        float r27406 = exp(r27405);
        float r27407 = r27404 + r27406;
        float r27408 = log(r27407);
        float r27409 = y;
        float r27410 = r27405 * r27409;
        float r27411 = r27408 - r27410;
        return r27411;
}

double f_id(double x, double y) {
        double r27412 = 1;
        double r27413 = x;
        double r27414 = exp(r27413);
        double r27415 = r27412 + r27414;
        double r27416 = log(r27415);
        double r27417 = y;
        double r27418 = r27413 * r27417;
        double r27419 = r27416 - r27418;
        return r27419;
}


double f_of(float x, float y) {
        float r27420 = x;
        float r27421 = exp(r27420);
        float r27422 = log1p(r27421);
        float r27423 = y;
        float r27424 = r27423 * r27420;
        float r27425 = r27422 - r27424;
        return r27425;
}

double f_od(double x, double y) {
        double r27426 = x;
        double r27427 = exp(r27426);
        double r27428 = log1p(r27427);
        double r27429 = y;
        double r27430 = r27429 * r27426;
        double r27431 = r27428 - r27430;
        return r27431;
}

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 r27432, r27433, r27434, r27435, r27436, r27437, r27438, r27439;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r27432, "1", 10, MPFR_RNDN);
        mpfr_init(r27433);
        mpfr_init(r27434);
        mpfr_init(r27435);
        mpfr_init(r27436);
        mpfr_init(r27437);
        mpfr_init(r27438);
        mpfr_init(r27439);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r27433, x, MPFR_RNDN);
        mpfr_exp(r27434, r27433, MPFR_RNDN);
        mpfr_add(r27435, r27432, r27434, MPFR_RNDN);
        mpfr_log(r27436, r27435, MPFR_RNDN);
        mpfr_set_d(r27437, y, MPFR_RNDN);
        mpfr_mul(r27438, r27433, r27437, MPFR_RNDN);
        mpfr_sub(r27439, r27436, r27438, MPFR_RNDN);
        return mpfr_get_d(r27439, MPFR_RNDN);
}

static mpfr_t r27440, r27441, r27442, r27443, r27444, r27445;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init(r27440);
        mpfr_init(r27441);
        mpfr_init(r27442);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
}

double f_fm(double x, double y) {
        mpfr_set_d(r27440, x, MPFR_RNDN);
        mpfr_exp(r27441, r27440, MPFR_RNDN);
        mpfr_log1p(r27442, r27441, MPFR_RNDN);
        mpfr_set_d(r27443, y, MPFR_RNDN);
        mpfr_mul(r27444, r27443, r27440, MPFR_RNDN);
        mpfr_sub(r27445, r27442, r27444, MPFR_RNDN);
        return mpfr_get_d(r27445, MPFR_RNDN);
}

static mpfr_t r27446, r27447, r27448, r27449, r27450, r27451;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init(r27446);
        mpfr_init(r27447);
        mpfr_init(r27448);
        mpfr_init(r27449);
        mpfr_init(r27450);
        mpfr_init(r27451);
}

double f_dm(double x, double y) {
        mpfr_set_d(r27446, x, MPFR_RNDN);
        mpfr_exp(r27447, r27446, MPFR_RNDN);
        mpfr_log1p(r27448, r27447, MPFR_RNDN);
        mpfr_set_d(r27449, y, MPFR_RNDN);
        mpfr_mul(r27450, r27449, r27446, MPFR_RNDN);
        mpfr_sub(r27451, r27448, r27450, MPFR_RNDN);
        return mpfr_get_d(r27451, MPFR_RNDN);
}

