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

char *name = "Bulmash initializePoisson";

double f_if(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r27435 = NdChar;
        float r27436 = 1;
        float r27437 = Ec;
        float r27438 = Vef;
        float r27439 = r27437 - r27438;
        float r27440 = EDonor;
        float r27441 = r27439 - r27440;
        float r27442 = mu;
        float r27443 = r27441 - r27442;
        float r27444 = -r27443;
        float r27445 = KbT;
        float r27446 = r27444 / r27445;
        float r27447 = exp(r27446);
        float r27448 = r27436 + r27447;
        float r27449 = r27435 / r27448;
        float r27450 = NaChar;
        float r27451 = Ev;
        float r27452 = r27451 + r27438;
        float r27453 = EAccept;
        float r27454 = r27452 + r27453;
        float r27455 = -r27442;
        float r27456 = r27454 + r27455;
        float r27457 = r27456 / r27445;
        float r27458 = exp(r27457);
        float r27459 = r27436 + r27458;
        float r27460 = r27450 / r27459;
        float r27461 = r27449 + r27460;
        return r27461;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r27462 = NdChar;
        double r27463 = 1;
        double r27464 = Ec;
        double r27465 = Vef;
        double r27466 = r27464 - r27465;
        double r27467 = EDonor;
        double r27468 = r27466 - r27467;
        double r27469 = mu;
        double r27470 = r27468 - r27469;
        double r27471 = -r27470;
        double r27472 = KbT;
        double r27473 = r27471 / r27472;
        double r27474 = exp(r27473);
        double r27475 = r27463 + r27474;
        double r27476 = r27462 / r27475;
        double r27477 = NaChar;
        double r27478 = Ev;
        double r27479 = r27478 + r27465;
        double r27480 = EAccept;
        double r27481 = r27479 + r27480;
        double r27482 = -r27469;
        double r27483 = r27481 + r27482;
        double r27484 = r27483 / r27472;
        double r27485 = exp(r27484);
        double r27486 = r27463 + r27485;
        double r27487 = r27477 / r27486;
        double r27488 = r27476 + r27487;
        return r27488;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r27489 = NdChar;
        float r27490 = 1;
        float r27491 = EDonor;
        float r27492 = Vef;
        float r27493 = r27491 + r27492;
        float r27494 = mu;
        float r27495 = Ec;
        float r27496 = r27494 - r27495;
        float r27497 = r27493 + r27496;
        float r27498 = KbT;
        float r27499 = r27497 / r27498;
        float r27500 = exp(r27499);
        float r27501 = cbrt(r27500);
        float r27502 = r27501 * r27501;
        float r27503 = r27492 - r27495;
        float r27504 = r27494 + r27491;
        float r27505 = r27503 + r27504;
        float r27506 = r27505 / r27498;
        float r27507 = exp(r27506);
        float r27508 = cbrt(r27507);
        float r27509 = r27502 * r27508;
        float r27510 = r27490 + r27509;
        float r27511 = r27489 / r27510;
        float r27512 = NaChar;
        float r27513 = Ev;
        float r27514 = r27513 + r27492;
        float r27515 = EAccept;
        float r27516 = r27514 + r27515;
        float r27517 = -r27494;
        float r27518 = r27516 + r27517;
        float r27519 = r27518 / r27498;
        float r27520 = exp(r27519);
        float r27521 = r27490 + r27520;
        float r27522 = r27512 / r27521;
        float r27523 = r27511 + r27522;
        return r27523;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r27524 = NdChar;
        double r27525 = 1;
        double r27526 = EDonor;
        double r27527 = Vef;
        double r27528 = r27526 + r27527;
        double r27529 = mu;
        double r27530 = Ec;
        double r27531 = r27529 - r27530;
        double r27532 = r27528 + r27531;
        double r27533 = KbT;
        double r27534 = r27532 / r27533;
        double r27535 = exp(r27534);
        double r27536 = cbrt(r27535);
        double r27537 = r27536 * r27536;
        double r27538 = r27527 - r27530;
        double r27539 = r27529 + r27526;
        double r27540 = r27538 + r27539;
        double r27541 = r27540 / r27533;
        double r27542 = exp(r27541);
        double r27543 = cbrt(r27542);
        double r27544 = r27537 * r27543;
        double r27545 = r27525 + r27544;
        double r27546 = r27524 / r27545;
        double r27547 = NaChar;
        double r27548 = Ev;
        double r27549 = r27548 + r27527;
        double r27550 = EAccept;
        double r27551 = r27549 + r27550;
        double r27552 = -r27529;
        double r27553 = r27551 + r27552;
        double r27554 = r27553 / r27533;
        double r27555 = exp(r27554);
        double r27556 = r27525 + r27555;
        double r27557 = r27547 / r27556;
        double r27558 = r27546 + r27557;
        return r27558;
}

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 r27559, r27560, r27561, r27562, r27563, r27564, r27565, r27566, r27567, r27568, r27569, r27570, r27571, r27572, r27573, r27574, r27575, r27576, r27577, r27578, r27579, r27580, r27581, r27582, r27583, r27584, r27585;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r27559);
        mpfr_init_set_str(r27560, "1", 10, MPFR_RNDN);
        mpfr_init(r27561);
        mpfr_init(r27562);
        mpfr_init(r27563);
        mpfr_init(r27564);
        mpfr_init(r27565);
        mpfr_init(r27566);
        mpfr_init(r27567);
        mpfr_init(r27568);
        mpfr_init(r27569);
        mpfr_init(r27570);
        mpfr_init(r27571);
        mpfr_init(r27572);
        mpfr_init(r27573);
        mpfr_init(r27574);
        mpfr_init(r27575);
        mpfr_init(r27576);
        mpfr_init(r27577);
        mpfr_init(r27578);
        mpfr_init(r27579);
        mpfr_init(r27580);
        mpfr_init(r27581);
        mpfr_init(r27582);
        mpfr_init(r27583);
        mpfr_init(r27584);
        mpfr_init(r27585);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27559, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27561, Ec, MPFR_RNDN);
        mpfr_set_d(r27562, Vef, MPFR_RNDN);
        mpfr_sub(r27563, r27561, r27562, MPFR_RNDN);
        mpfr_set_d(r27564, EDonor, MPFR_RNDN);
        mpfr_sub(r27565, r27563, r27564, MPFR_RNDN);
        mpfr_set_d(r27566, mu, MPFR_RNDN);
        mpfr_sub(r27567, r27565, r27566, MPFR_RNDN);
        mpfr_neg(r27568, r27567, MPFR_RNDN);
        mpfr_set_d(r27569, KbT, MPFR_RNDN);
        mpfr_div(r27570, r27568, r27569, MPFR_RNDN);
        mpfr_exp(r27571, r27570, MPFR_RNDN);
        mpfr_add(r27572, r27560, r27571, MPFR_RNDN);
        mpfr_div(r27573, r27559, r27572, MPFR_RNDN);
        mpfr_set_d(r27574, NaChar, MPFR_RNDN);
        mpfr_set_d(r27575, Ev, MPFR_RNDN);
        mpfr_add(r27576, r27575, r27562, MPFR_RNDN);
        mpfr_set_d(r27577, EAccept, MPFR_RNDN);
        mpfr_add(r27578, r27576, r27577, MPFR_RNDN);
        mpfr_neg(r27579, r27566, MPFR_RNDN);
        mpfr_add(r27580, r27578, r27579, MPFR_RNDN);
        mpfr_div(r27581, r27580, r27569, MPFR_RNDN);
        mpfr_exp(r27582, r27581, MPFR_RNDN);
        mpfr_add(r27583, r27560, r27582, MPFR_RNDN);
        mpfr_div(r27584, r27574, r27583, MPFR_RNDN);
        mpfr_add(r27585, r27573, r27584, MPFR_RNDN);
        return mpfr_get_d(r27585, MPFR_RNDN);
}

static mpfr_t r27586, r27587, r27588, r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596, r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609, r27610, r27611, r27612, r27613, r27614, r27615, r27616, r27617, r27618, r27619, r27620;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r27586);
        mpfr_init_set_str(r27587, "1", 10, MPFR_RNDN);
        mpfr_init(r27588);
        mpfr_init(r27589);
        mpfr_init(r27590);
        mpfr_init(r27591);
        mpfr_init(r27592);
        mpfr_init(r27593);
        mpfr_init(r27594);
        mpfr_init(r27595);
        mpfr_init(r27596);
        mpfr_init(r27597);
        mpfr_init(r27598);
        mpfr_init(r27599);
        mpfr_init(r27600);
        mpfr_init(r27601);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init(r27606);
        mpfr_init(r27607);
        mpfr_init(r27608);
        mpfr_init(r27609);
        mpfr_init(r27610);
        mpfr_init(r27611);
        mpfr_init(r27612);
        mpfr_init(r27613);
        mpfr_init(r27614);
        mpfr_init(r27615);
        mpfr_init(r27616);
        mpfr_init(r27617);
        mpfr_init(r27618);
        mpfr_init(r27619);
        mpfr_init(r27620);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27586, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27588, EDonor, MPFR_RNDN);
        mpfr_set_d(r27589, Vef, MPFR_RNDN);
        mpfr_add(r27590, r27588, r27589, MPFR_RNDN);
        mpfr_set_d(r27591, mu, MPFR_RNDN);
        mpfr_set_d(r27592, Ec, MPFR_RNDN);
        mpfr_sub(r27593, r27591, r27592, MPFR_RNDN);
        mpfr_add(r27594, r27590, r27593, MPFR_RNDN);
        mpfr_set_d(r27595, KbT, MPFR_RNDN);
        mpfr_div(r27596, r27594, r27595, MPFR_RNDN);
        mpfr_exp(r27597, r27596, MPFR_RNDN);
        mpfr_cbrt(r27598, r27597, MPFR_RNDN);
        mpfr_mul(r27599, r27598, r27598, MPFR_RNDN);
        mpfr_sub(r27600, r27589, r27592, MPFR_RNDN);
        mpfr_add(r27601, r27591, r27588, MPFR_RNDN);
        mpfr_add(r27602, r27600, r27601, MPFR_RNDN);
        mpfr_div(r27603, r27602, r27595, MPFR_RNDN);
        mpfr_exp(r27604, r27603, MPFR_RNDN);
        mpfr_cbrt(r27605, r27604, MPFR_RNDN);
        mpfr_mul(r27606, r27599, r27605, MPFR_RNDN);
        mpfr_add(r27607, r27587, r27606, MPFR_RNDN);
        mpfr_div(r27608, r27586, r27607, MPFR_RNDN);
        mpfr_set_d(r27609, NaChar, MPFR_RNDN);
        mpfr_set_d(r27610, Ev, MPFR_RNDN);
        mpfr_add(r27611, r27610, r27589, MPFR_RNDN);
        mpfr_set_d(r27612, EAccept, MPFR_RNDN);
        mpfr_add(r27613, r27611, r27612, MPFR_RNDN);
        mpfr_neg(r27614, r27591, MPFR_RNDN);
        mpfr_add(r27615, r27613, r27614, MPFR_RNDN);
        mpfr_div(r27616, r27615, r27595, MPFR_RNDN);
        mpfr_exp(r27617, r27616, MPFR_RNDN);
        mpfr_add(r27618, r27587, r27617, MPFR_RNDN);
        mpfr_div(r27619, r27609, r27618, MPFR_RNDN);
        mpfr_add(r27620, r27608, r27619, MPFR_RNDN);
        return mpfr_get_d(r27620, MPFR_RNDN);
}

static mpfr_t r27621, r27622, r27623, r27624, r27625, r27626, r27627, r27628, r27629, r27630, r27631, r27632, r27633, r27634, r27635, r27636, r27637, r27638, r27639, r27640, r27641, r27642, r27643, r27644, r27645, r27646, r27647, r27648, r27649, r27650, r27651, r27652, r27653, r27654, r27655;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r27621);
        mpfr_init_set_str(r27622, "1", 10, MPFR_RNDN);
        mpfr_init(r27623);
        mpfr_init(r27624);
        mpfr_init(r27625);
        mpfr_init(r27626);
        mpfr_init(r27627);
        mpfr_init(r27628);
        mpfr_init(r27629);
        mpfr_init(r27630);
        mpfr_init(r27631);
        mpfr_init(r27632);
        mpfr_init(r27633);
        mpfr_init(r27634);
        mpfr_init(r27635);
        mpfr_init(r27636);
        mpfr_init(r27637);
        mpfr_init(r27638);
        mpfr_init(r27639);
        mpfr_init(r27640);
        mpfr_init(r27641);
        mpfr_init(r27642);
        mpfr_init(r27643);
        mpfr_init(r27644);
        mpfr_init(r27645);
        mpfr_init(r27646);
        mpfr_init(r27647);
        mpfr_init(r27648);
        mpfr_init(r27649);
        mpfr_init(r27650);
        mpfr_init(r27651);
        mpfr_init(r27652);
        mpfr_init(r27653);
        mpfr_init(r27654);
        mpfr_init(r27655);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27621, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27623, EDonor, MPFR_RNDN);
        mpfr_set_d(r27624, Vef, MPFR_RNDN);
        mpfr_add(r27625, r27623, r27624, MPFR_RNDN);
        mpfr_set_d(r27626, mu, MPFR_RNDN);
        mpfr_set_d(r27627, Ec, MPFR_RNDN);
        mpfr_sub(r27628, r27626, r27627, MPFR_RNDN);
        mpfr_add(r27629, r27625, r27628, MPFR_RNDN);
        mpfr_set_d(r27630, KbT, MPFR_RNDN);
        mpfr_div(r27631, r27629, r27630, MPFR_RNDN);
        mpfr_exp(r27632, r27631, MPFR_RNDN);
        mpfr_cbrt(r27633, r27632, MPFR_RNDN);
        mpfr_mul(r27634, r27633, r27633, MPFR_RNDN);
        mpfr_sub(r27635, r27624, r27627, MPFR_RNDN);
        mpfr_add(r27636, r27626, r27623, MPFR_RNDN);
        mpfr_add(r27637, r27635, r27636, MPFR_RNDN);
        mpfr_div(r27638, r27637, r27630, MPFR_RNDN);
        mpfr_exp(r27639, r27638, MPFR_RNDN);
        mpfr_cbrt(r27640, r27639, MPFR_RNDN);
        mpfr_mul(r27641, r27634, r27640, MPFR_RNDN);
        mpfr_add(r27642, r27622, r27641, MPFR_RNDN);
        mpfr_div(r27643, r27621, r27642, MPFR_RNDN);
        mpfr_set_d(r27644, NaChar, MPFR_RNDN);
        mpfr_set_d(r27645, Ev, MPFR_RNDN);
        mpfr_add(r27646, r27645, r27624, MPFR_RNDN);
        mpfr_set_d(r27647, EAccept, MPFR_RNDN);
        mpfr_add(r27648, r27646, r27647, MPFR_RNDN);
        mpfr_neg(r27649, r27626, MPFR_RNDN);
        mpfr_add(r27650, r27648, r27649, MPFR_RNDN);
        mpfr_div(r27651, r27650, r27630, MPFR_RNDN);
        mpfr_exp(r27652, r27651, MPFR_RNDN);
        mpfr_add(r27653, r27622, r27652, MPFR_RNDN);
        mpfr_div(r27654, r27644, r27653, MPFR_RNDN);
        mpfr_add(r27655, r27643, r27654, MPFR_RNDN);
        return mpfr_get_d(r27655, MPFR_RNDN);
}

