#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 r43551 = 1.0f;
        float r43552 = x;
        float r43553 = exp(r43552);
        float r43554 = r43551 + r43553;
        float r43555 = log(r43554);
        float r43556 = y;
        float r43557 = r43552 * r43556;
        float r43558 = r43555 - r43557;
        return r43558;
}

double f_id(double x, double y) {
        double r43559 = 1.0;
        double r43560 = x;
        double r43561 = exp(r43560);
        double r43562 = r43559 + r43561;
        double r43563 = log(r43562);
        double r43564 = y;
        double r43565 = r43560 * r43564;
        double r43566 = r43563 - r43565;
        return r43566;
}


double f_of(float x, float y) {
        float r43567 = x;
        float r43568 = exp(r43567);
        float r43569 = r43568 * (r43568 * r43568);
        float r43570 = 1.0f;
        float r43571 = r43569 + r43570;
        float r43572 = log(r43571);
        float r43573 = r43568 * r43568;
        float r43574 = r43568 - r43570;
        float r43575 = r43573 - r43574;
        float r43576 = log(r43575);
        float r43577 = r43572 - r43576;
        float r43578 = y;
        float r43579 = r43567 * r43578;
        float r43580 = r43577 - r43579;
        return r43580;
}

double f_od(double x, double y) {
        double r43581 = x;
        double r43582 = exp(r43581);
        double r43583 = r43582 * (r43582 * r43582);
        double r43584 = 1.0;
        double r43585 = r43583 + r43584;
        double r43586 = log(r43585);
        double r43587 = r43582 * r43582;
        double r43588 = r43582 - r43584;
        double r43589 = r43587 - r43588;
        double r43590 = log(r43589);
        double r43591 = r43586 - r43590;
        double r43592 = y;
        double r43593 = r43581 * r43592;
        double r43594 = r43591 - r43593;
        return r43594;
}

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 r43595, r43596, r43597, r43598, r43599, r43600, r43601, r43602;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r43595, "1", 10, MPFR_RNDN);
        mpfr_init(r43596);
        mpfr_init(r43597);
        mpfr_init(r43598);
        mpfr_init(r43599);
        mpfr_init(r43600);
        mpfr_init(r43601);
        mpfr_init(r43602);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r43596, x, MPFR_RNDN);
        mpfr_exp(r43597, r43596, MPFR_RNDN);
        mpfr_add(r43598, r43595, r43597, MPFR_RNDN);
        mpfr_log(r43599, r43598, MPFR_RNDN);
        mpfr_set_d(r43600, y, MPFR_RNDN);
        mpfr_mul(r43601, r43596, r43600, MPFR_RNDN);
        mpfr_sub(r43602, r43599, r43601, MPFR_RNDN);
        return mpfr_get_d(r43602, MPFR_RNDN);
}

static mpfr_t r43603, r43604, r43605, r43606, r43607, r43608, r43609, r43610, r43611, r43612, r43613, r43614, r43615, r43616;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43603);
        mpfr_init(r43604);
        mpfr_init(r43605);
        mpfr_init_set_str(r43606, "1", 10, MPFR_RNDN);
        mpfr_init(r43607);
        mpfr_init(r43608);
        mpfr_init(r43609);
        mpfr_init(r43610);
        mpfr_init(r43611);
        mpfr_init(r43612);
        mpfr_init(r43613);
        mpfr_init(r43614);
        mpfr_init(r43615);
        mpfr_init(r43616);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43603, x, MPFR_RNDN);
        mpfr_exp(r43604, r43603, MPFR_RNDN);
        mpfr_mul(r43605, r43604, r43604, MPFR_RNDN); mpfr_mul(r43605, r43605, r43604, MPFR_RNDN);
        ;
        mpfr_add(r43607, r43605, r43606, MPFR_RNDN);
        mpfr_log(r43608, r43607, MPFR_RNDN);
        mpfr_sqr(r43609, r43604, MPFR_RNDN);
        mpfr_sub(r43610, r43604, r43606, MPFR_RNDN);
        mpfr_sub(r43611, r43609, r43610, MPFR_RNDN);
        mpfr_log(r43612, r43611, MPFR_RNDN);
        mpfr_sub(r43613, r43608, r43612, MPFR_RNDN);
        mpfr_set_d(r43614, y, MPFR_RNDN);
        mpfr_mul(r43615, r43603, r43614, MPFR_RNDN);
        mpfr_sub(r43616, r43613, r43615, MPFR_RNDN);
        return mpfr_get_d(r43616, MPFR_RNDN);
}

static mpfr_t r43617, r43618, r43619, r43620, r43621, r43622, r43623, r43624, r43625, r43626, r43627, r43628, r43629, r43630;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r43617);
        mpfr_init(r43618);
        mpfr_init(r43619);
        mpfr_init_set_str(r43620, "1", 10, MPFR_RNDN);
        mpfr_init(r43621);
        mpfr_init(r43622);
        mpfr_init(r43623);
        mpfr_init(r43624);
        mpfr_init(r43625);
        mpfr_init(r43626);
        mpfr_init(r43627);
        mpfr_init(r43628);
        mpfr_init(r43629);
        mpfr_init(r43630);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43617, x, MPFR_RNDN);
        mpfr_exp(r43618, r43617, MPFR_RNDN);
        mpfr_mul(r43619, r43618, r43618, MPFR_RNDN); mpfr_mul(r43619, r43619, r43618, MPFR_RNDN);
        ;
        mpfr_add(r43621, r43619, r43620, MPFR_RNDN);
        mpfr_log(r43622, r43621, MPFR_RNDN);
        mpfr_sqr(r43623, r43618, MPFR_RNDN);
        mpfr_sub(r43624, r43618, r43620, MPFR_RNDN);
        mpfr_sub(r43625, r43623, r43624, MPFR_RNDN);
        mpfr_log(r43626, r43625, MPFR_RNDN);
        mpfr_sub(r43627, r43622, r43626, MPFR_RNDN);
        mpfr_set_d(r43628, y, MPFR_RNDN);
        mpfr_mul(r43629, r43617, r43628, MPFR_RNDN);
        mpfr_sub(r43630, r43627, r43629, MPFR_RNDN);
        return mpfr_get_d(r43630, MPFR_RNDN);
}

