#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 r23636 = NdChar;
        float r23637 = 1;
        float r23638 = Ec;
        float r23639 = Vef;
        float r23640 = r23638 - r23639;
        float r23641 = EDonor;
        float r23642 = r23640 - r23641;
        float r23643 = mu;
        float r23644 = r23642 - r23643;
        float r23645 = -r23644;
        float r23646 = KbT;
        float r23647 = r23645 / r23646;
        float r23648 = exp(r23647);
        float r23649 = r23637 + r23648;
        float r23650 = r23636 / r23649;
        float r23651 = NaChar;
        float r23652 = Ev;
        float r23653 = r23652 + r23639;
        float r23654 = EAccept;
        float r23655 = r23653 + r23654;
        float r23656 = -r23643;
        float r23657 = r23655 + r23656;
        float r23658 = r23657 / r23646;
        float r23659 = exp(r23658);
        float r23660 = r23637 + r23659;
        float r23661 = r23651 / r23660;
        float r23662 = r23650 + r23661;
        return r23662;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r23663 = NdChar;
        double r23664 = 1;
        double r23665 = Ec;
        double r23666 = Vef;
        double r23667 = r23665 - r23666;
        double r23668 = EDonor;
        double r23669 = r23667 - r23668;
        double r23670 = mu;
        double r23671 = r23669 - r23670;
        double r23672 = -r23671;
        double r23673 = KbT;
        double r23674 = r23672 / r23673;
        double r23675 = exp(r23674);
        double r23676 = r23664 + r23675;
        double r23677 = r23663 / r23676;
        double r23678 = NaChar;
        double r23679 = Ev;
        double r23680 = r23679 + r23666;
        double r23681 = EAccept;
        double r23682 = r23680 + r23681;
        double r23683 = -r23670;
        double r23684 = r23682 + r23683;
        double r23685 = r23684 / r23673;
        double r23686 = exp(r23685);
        double r23687 = r23664 + r23686;
        double r23688 = r23678 / r23687;
        double r23689 = r23677 + r23688;
        return r23689;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r23690 = NdChar;
        float r23691 = 1;
        float r23692 = Ec;
        float r23693 = Vef;
        float r23694 = r23692 - r23693;
        float r23695 = EDonor;
        float r23696 = r23694 - r23695;
        float r23697 = mu;
        float r23698 = r23696 - r23697;
        float r23699 = -r23698;
        float r23700 = KbT;
        float r23701 = r23699 / r23700;
        float r23702 = exp(r23701);
        float r23703 = r23691 + r23702;
        float r23704 = r23690 / r23703;
        float r23705 = NaChar;
        float r23706 = Ev;
        float r23707 = r23706 + r23693;
        float r23708 = EAccept;
        float r23709 = r23707 + r23708;
        float r23710 = -r23697;
        float r23711 = r23709 + r23710;
        float r23712 = r23711 / r23700;
        float r23713 = exp(r23712);
        float r23714 = r23691 + r23713;
        float r23715 = r23705 / r23714;
        float r23716 = r23704 + r23715;
        return r23716;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r23717 = NdChar;
        double r23718 = 1;
        double r23719 = Ec;
        double r23720 = Vef;
        double r23721 = r23719 - r23720;
        double r23722 = EDonor;
        double r23723 = r23721 - r23722;
        double r23724 = mu;
        double r23725 = r23723 - r23724;
        double r23726 = -r23725;
        double r23727 = KbT;
        double r23728 = r23726 / r23727;
        double r23729 = exp(r23728);
        double r23730 = r23718 + r23729;
        double r23731 = r23717 / r23730;
        double r23732 = NaChar;
        double r23733 = Ev;
        double r23734 = r23733 + r23720;
        double r23735 = EAccept;
        double r23736 = r23734 + r23735;
        double r23737 = -r23724;
        double r23738 = r23736 + r23737;
        double r23739 = r23738 / r23727;
        double r23740 = exp(r23739);
        double r23741 = r23718 + r23740;
        double r23742 = r23732 / r23741;
        double r23743 = r23731 + r23742;
        return r23743;
}

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 r23744, r23745, r23746, r23747, r23748, r23749, r23750, r23751, r23752, r23753, r23754, r23755, r23756, r23757, r23758, r23759, r23760, r23761, r23762, r23763, r23764, r23765, r23766, r23767, r23768, r23769, r23770;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r23744);
        mpfr_init_set_str(r23745, "1", 10, MPFR_RNDN);
        mpfr_init(r23746);
        mpfr_init(r23747);
        mpfr_init(r23748);
        mpfr_init(r23749);
        mpfr_init(r23750);
        mpfr_init(r23751);
        mpfr_init(r23752);
        mpfr_init(r23753);
        mpfr_init(r23754);
        mpfr_init(r23755);
        mpfr_init(r23756);
        mpfr_init(r23757);
        mpfr_init(r23758);
        mpfr_init(r23759);
        mpfr_init(r23760);
        mpfr_init(r23761);
        mpfr_init(r23762);
        mpfr_init(r23763);
        mpfr_init(r23764);
        mpfr_init(r23765);
        mpfr_init(r23766);
        mpfr_init(r23767);
        mpfr_init(r23768);
        mpfr_init(r23769);
        mpfr_init(r23770);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r23744, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r23746, Ec, MPFR_RNDN);
        mpfr_set_d(r23747, Vef, MPFR_RNDN);
        mpfr_sub(r23748, r23746, r23747, MPFR_RNDN);
        mpfr_set_d(r23749, EDonor, MPFR_RNDN);
        mpfr_sub(r23750, r23748, r23749, MPFR_RNDN);
        mpfr_set_d(r23751, mu, MPFR_RNDN);
        mpfr_sub(r23752, r23750, r23751, MPFR_RNDN);
        mpfr_neg(r23753, r23752, MPFR_RNDN);
        mpfr_set_d(r23754, KbT, MPFR_RNDN);
        mpfr_div(r23755, r23753, r23754, MPFR_RNDN);
        mpfr_exp(r23756, r23755, MPFR_RNDN);
        mpfr_add(r23757, r23745, r23756, MPFR_RNDN);
        mpfr_div(r23758, r23744, r23757, MPFR_RNDN);
        mpfr_set_d(r23759, NaChar, MPFR_RNDN);
        mpfr_set_d(r23760, Ev, MPFR_RNDN);
        mpfr_add(r23761, r23760, r23747, MPFR_RNDN);
        mpfr_set_d(r23762, EAccept, MPFR_RNDN);
        mpfr_add(r23763, r23761, r23762, MPFR_RNDN);
        mpfr_neg(r23764, r23751, MPFR_RNDN);
        mpfr_add(r23765, r23763, r23764, MPFR_RNDN);
        mpfr_div(r23766, r23765, r23754, MPFR_RNDN);
        mpfr_exp(r23767, r23766, MPFR_RNDN);
        mpfr_add(r23768, r23745, r23767, MPFR_RNDN);
        mpfr_div(r23769, r23759, r23768, MPFR_RNDN);
        mpfr_add(r23770, r23758, r23769, MPFR_RNDN);
        return mpfr_get_d(r23770, MPFR_RNDN);
}

static mpfr_t r23771, r23772, r23773, r23774, r23775, r23776, r23777, r23778, r23779, r23780, r23781, r23782, r23783, r23784, r23785, r23786, r23787, r23788, r23789, r23790, r23791, r23792, r23793, r23794, r23795, r23796, r23797;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23771);
        mpfr_init_set_str(r23772, "1", 10, MPFR_RNDN);
        mpfr_init(r23773);
        mpfr_init(r23774);
        mpfr_init(r23775);
        mpfr_init(r23776);
        mpfr_init(r23777);
        mpfr_init(r23778);
        mpfr_init(r23779);
        mpfr_init(r23780);
        mpfr_init(r23781);
        mpfr_init(r23782);
        mpfr_init(r23783);
        mpfr_init(r23784);
        mpfr_init(r23785);
        mpfr_init(r23786);
        mpfr_init(r23787);
        mpfr_init(r23788);
        mpfr_init(r23789);
        mpfr_init(r23790);
        mpfr_init(r23791);
        mpfr_init(r23792);
        mpfr_init(r23793);
        mpfr_init(r23794);
        mpfr_init(r23795);
        mpfr_init(r23796);
        mpfr_init(r23797);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r23771, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r23773, Ec, MPFR_RNDN);
        mpfr_set_d(r23774, Vef, MPFR_RNDN);
        mpfr_sub(r23775, r23773, r23774, MPFR_RNDN);
        mpfr_set_d(r23776, EDonor, MPFR_RNDN);
        mpfr_sub(r23777, r23775, r23776, MPFR_RNDN);
        mpfr_set_d(r23778, mu, MPFR_RNDN);
        mpfr_sub(r23779, r23777, r23778, MPFR_RNDN);
        mpfr_neg(r23780, r23779, MPFR_RNDN);
        mpfr_set_d(r23781, KbT, MPFR_RNDN);
        mpfr_div(r23782, r23780, r23781, MPFR_RNDN);
        mpfr_exp(r23783, r23782, MPFR_RNDN);
        mpfr_add(r23784, r23772, r23783, MPFR_RNDN);
        mpfr_div(r23785, r23771, r23784, MPFR_RNDN);
        mpfr_set_d(r23786, NaChar, MPFR_RNDN);
        mpfr_set_d(r23787, Ev, MPFR_RNDN);
        mpfr_add(r23788, r23787, r23774, MPFR_RNDN);
        mpfr_set_d(r23789, EAccept, MPFR_RNDN);
        mpfr_add(r23790, r23788, r23789, MPFR_RNDN);
        mpfr_neg(r23791, r23778, MPFR_RNDN);
        mpfr_add(r23792, r23790, r23791, MPFR_RNDN);
        mpfr_div(r23793, r23792, r23781, MPFR_RNDN);
        mpfr_exp(r23794, r23793, MPFR_RNDN);
        mpfr_add(r23795, r23772, r23794, MPFR_RNDN);
        mpfr_div(r23796, r23786, r23795, MPFR_RNDN);
        mpfr_add(r23797, r23785, r23796, MPFR_RNDN);
        return mpfr_get_d(r23797, MPFR_RNDN);
}

static mpfr_t r23798, r23799, r23800, r23801, r23802, r23803, r23804, r23805, r23806, r23807, r23808, r23809, r23810, r23811, r23812, r23813, r23814, r23815, r23816, r23817, r23818, r23819, r23820, r23821, r23822, r23823, r23824;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23798);
        mpfr_init_set_str(r23799, "1", 10, MPFR_RNDN);
        mpfr_init(r23800);
        mpfr_init(r23801);
        mpfr_init(r23802);
        mpfr_init(r23803);
        mpfr_init(r23804);
        mpfr_init(r23805);
        mpfr_init(r23806);
        mpfr_init(r23807);
        mpfr_init(r23808);
        mpfr_init(r23809);
        mpfr_init(r23810);
        mpfr_init(r23811);
        mpfr_init(r23812);
        mpfr_init(r23813);
        mpfr_init(r23814);
        mpfr_init(r23815);
        mpfr_init(r23816);
        mpfr_init(r23817);
        mpfr_init(r23818);
        mpfr_init(r23819);
        mpfr_init(r23820);
        mpfr_init(r23821);
        mpfr_init(r23822);
        mpfr_init(r23823);
        mpfr_init(r23824);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r23798, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r23800, Ec, MPFR_RNDN);
        mpfr_set_d(r23801, Vef, MPFR_RNDN);
        mpfr_sub(r23802, r23800, r23801, MPFR_RNDN);
        mpfr_set_d(r23803, EDonor, MPFR_RNDN);
        mpfr_sub(r23804, r23802, r23803, MPFR_RNDN);
        mpfr_set_d(r23805, mu, MPFR_RNDN);
        mpfr_sub(r23806, r23804, r23805, MPFR_RNDN);
        mpfr_neg(r23807, r23806, MPFR_RNDN);
        mpfr_set_d(r23808, KbT, MPFR_RNDN);
        mpfr_div(r23809, r23807, r23808, MPFR_RNDN);
        mpfr_exp(r23810, r23809, MPFR_RNDN);
        mpfr_add(r23811, r23799, r23810, MPFR_RNDN);
        mpfr_div(r23812, r23798, r23811, MPFR_RNDN);
        mpfr_set_d(r23813, NaChar, MPFR_RNDN);
        mpfr_set_d(r23814, Ev, MPFR_RNDN);
        mpfr_add(r23815, r23814, r23801, MPFR_RNDN);
        mpfr_set_d(r23816, EAccept, MPFR_RNDN);
        mpfr_add(r23817, r23815, r23816, MPFR_RNDN);
        mpfr_neg(r23818, r23805, MPFR_RNDN);
        mpfr_add(r23819, r23817, r23818, MPFR_RNDN);
        mpfr_div(r23820, r23819, r23808, MPFR_RNDN);
        mpfr_exp(r23821, r23820, MPFR_RNDN);
        mpfr_add(r23822, r23799, r23821, MPFR_RNDN);
        mpfr_div(r23823, r23813, r23822, MPFR_RNDN);
        mpfr_add(r23824, r23812, r23823, MPFR_RNDN);
        return mpfr_get_d(r23824, MPFR_RNDN);
}

