#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 r27112 = NdChar;
        float r27113 = 1;
        float r27114 = Ec;
        float r27115 = Vef;
        float r27116 = r27114 - r27115;
        float r27117 = EDonor;
        float r27118 = r27116 - r27117;
        float r27119 = mu;
        float r27120 = r27118 - r27119;
        float r27121 = -r27120;
        float r27122 = KbT;
        float r27123 = r27121 / r27122;
        float r27124 = exp(r27123);
        float r27125 = r27113 + r27124;
        float r27126 = r27112 / r27125;
        float r27127 = NaChar;
        float r27128 = Ev;
        float r27129 = r27128 + r27115;
        float r27130 = EAccept;
        float r27131 = r27129 + r27130;
        float r27132 = -r27119;
        float r27133 = r27131 + r27132;
        float r27134 = r27133 / r27122;
        float r27135 = exp(r27134);
        float r27136 = r27113 + r27135;
        float r27137 = r27127 / r27136;
        float r27138 = r27126 + r27137;
        return r27138;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r27139 = NdChar;
        double r27140 = 1;
        double r27141 = Ec;
        double r27142 = Vef;
        double r27143 = r27141 - r27142;
        double r27144 = EDonor;
        double r27145 = r27143 - r27144;
        double r27146 = mu;
        double r27147 = r27145 - r27146;
        double r27148 = -r27147;
        double r27149 = KbT;
        double r27150 = r27148 / r27149;
        double r27151 = exp(r27150);
        double r27152 = r27140 + r27151;
        double r27153 = r27139 / r27152;
        double r27154 = NaChar;
        double r27155 = Ev;
        double r27156 = r27155 + r27142;
        double r27157 = EAccept;
        double r27158 = r27156 + r27157;
        double r27159 = -r27146;
        double r27160 = r27158 + r27159;
        double r27161 = r27160 / r27149;
        double r27162 = exp(r27161);
        double r27163 = r27140 + r27162;
        double r27164 = r27154 / r27163;
        double r27165 = r27153 + r27164;
        return r27165;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r27166 = NdChar;
        float r27167 = 1;
        float r27168 = EDonor;
        float r27169 = Vef;
        float r27170 = r27168 + r27169;
        float r27171 = mu;
        float r27172 = Ec;
        float r27173 = r27171 - r27172;
        float r27174 = r27170 + r27173;
        float r27175 = KbT;
        float r27176 = r27174 / r27175;
        float r27177 = exp(r27176);
        float r27178 = cbrt(r27177);
        float r27179 = r27178 * r27178;
        float r27180 = r27169 - r27172;
        float r27181 = r27171 + r27168;
        float r27182 = r27180 + r27181;
        float r27183 = r27182 / r27175;
        float r27184 = exp(r27183);
        float r27185 = cbrt(r27184);
        float r27186 = r27179 * r27185;
        float r27187 = r27167 + r27186;
        float r27188 = r27166 / r27187;
        float r27189 = NaChar;
        float r27190 = Ev;
        float r27191 = r27190 + r27169;
        float r27192 = EAccept;
        float r27193 = r27191 + r27192;
        float r27194 = -r27171;
        float r27195 = r27193 + r27194;
        float r27196 = r27195 / r27175;
        float r27197 = exp(r27196);
        float r27198 = r27167 + r27197;
        float r27199 = r27189 / r27198;
        float r27200 = r27188 + r27199;
        return r27200;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r27201 = NdChar;
        double r27202 = 1;
        double r27203 = EDonor;
        double r27204 = Vef;
        double r27205 = r27203 + r27204;
        double r27206 = mu;
        double r27207 = Ec;
        double r27208 = r27206 - r27207;
        double r27209 = r27205 + r27208;
        double r27210 = KbT;
        double r27211 = r27209 / r27210;
        double r27212 = exp(r27211);
        double r27213 = cbrt(r27212);
        double r27214 = r27213 * r27213;
        double r27215 = r27204 - r27207;
        double r27216 = r27206 + r27203;
        double r27217 = r27215 + r27216;
        double r27218 = r27217 / r27210;
        double r27219 = exp(r27218);
        double r27220 = cbrt(r27219);
        double r27221 = r27214 * r27220;
        double r27222 = r27202 + r27221;
        double r27223 = r27201 / r27222;
        double r27224 = NaChar;
        double r27225 = Ev;
        double r27226 = r27225 + r27204;
        double r27227 = EAccept;
        double r27228 = r27226 + r27227;
        double r27229 = -r27206;
        double r27230 = r27228 + r27229;
        double r27231 = r27230 / r27210;
        double r27232 = exp(r27231);
        double r27233 = r27202 + r27232;
        double r27234 = r27224 / r27233;
        double r27235 = r27223 + r27234;
        return r27235;
}

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 r27236, r27237, r27238, r27239, r27240, r27241, r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249, r27250, r27251, r27252, r27253, r27254, r27255, r27256, r27257, r27258, r27259, r27260, r27261, r27262;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r27236);
        mpfr_init_set_str(r27237, "1", 10, MPFR_RNDN);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init(r27240);
        mpfr_init(r27241);
        mpfr_init(r27242);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init(r27245);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init(r27249);
        mpfr_init(r27250);
        mpfr_init(r27251);
        mpfr_init(r27252);
        mpfr_init(r27253);
        mpfr_init(r27254);
        mpfr_init(r27255);
        mpfr_init(r27256);
        mpfr_init(r27257);
        mpfr_init(r27258);
        mpfr_init(r27259);
        mpfr_init(r27260);
        mpfr_init(r27261);
        mpfr_init(r27262);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27236, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27238, Ec, MPFR_RNDN);
        mpfr_set_d(r27239, Vef, MPFR_RNDN);
        mpfr_sub(r27240, r27238, r27239, MPFR_RNDN);
        mpfr_set_d(r27241, EDonor, MPFR_RNDN);
        mpfr_sub(r27242, r27240, r27241, MPFR_RNDN);
        mpfr_set_d(r27243, mu, MPFR_RNDN);
        mpfr_sub(r27244, r27242, r27243, MPFR_RNDN);
        mpfr_neg(r27245, r27244, MPFR_RNDN);
        mpfr_set_d(r27246, KbT, MPFR_RNDN);
        mpfr_div(r27247, r27245, r27246, MPFR_RNDN);
        mpfr_exp(r27248, r27247, MPFR_RNDN);
        mpfr_add(r27249, r27237, r27248, MPFR_RNDN);
        mpfr_div(r27250, r27236, r27249, MPFR_RNDN);
        mpfr_set_d(r27251, NaChar, MPFR_RNDN);
        mpfr_set_d(r27252, Ev, MPFR_RNDN);
        mpfr_add(r27253, r27252, r27239, MPFR_RNDN);
        mpfr_set_d(r27254, EAccept, MPFR_RNDN);
        mpfr_add(r27255, r27253, r27254, MPFR_RNDN);
        mpfr_neg(r27256, r27243, MPFR_RNDN);
        mpfr_add(r27257, r27255, r27256, MPFR_RNDN);
        mpfr_div(r27258, r27257, r27246, MPFR_RNDN);
        mpfr_exp(r27259, r27258, MPFR_RNDN);
        mpfr_add(r27260, r27237, r27259, MPFR_RNDN);
        mpfr_div(r27261, r27251, r27260, MPFR_RNDN);
        mpfr_add(r27262, r27250, r27261, MPFR_RNDN);
        return mpfr_get_d(r27262, MPFR_RNDN);
}

static mpfr_t r27263, r27264, r27265, r27266, r27267, r27268, r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r27263);
        mpfr_init_set_str(r27264, "1", 10, MPFR_RNDN);
        mpfr_init(r27265);
        mpfr_init(r27266);
        mpfr_init(r27267);
        mpfr_init(r27268);
        mpfr_init(r27269);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init(r27275);
        mpfr_init(r27276);
        mpfr_init(r27277);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init(r27280);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
        mpfr_init(r27284);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init(r27295);
        mpfr_init(r27296);
        mpfr_init(r27297);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27263, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27265, EDonor, MPFR_RNDN);
        mpfr_set_d(r27266, Vef, MPFR_RNDN);
        mpfr_add(r27267, r27265, r27266, MPFR_RNDN);
        mpfr_set_d(r27268, mu, MPFR_RNDN);
        mpfr_set_d(r27269, Ec, MPFR_RNDN);
        mpfr_sub(r27270, r27268, r27269, MPFR_RNDN);
        mpfr_add(r27271, r27267, r27270, MPFR_RNDN);
        mpfr_set_d(r27272, KbT, MPFR_RNDN);
        mpfr_div(r27273, r27271, r27272, MPFR_RNDN);
        mpfr_exp(r27274, r27273, MPFR_RNDN);
        mpfr_cbrt(r27275, r27274, MPFR_RNDN);
        mpfr_mul(r27276, r27275, r27275, MPFR_RNDN);
        mpfr_sub(r27277, r27266, r27269, MPFR_RNDN);
        mpfr_add(r27278, r27268, r27265, MPFR_RNDN);
        mpfr_add(r27279, r27277, r27278, MPFR_RNDN);
        mpfr_div(r27280, r27279, r27272, MPFR_RNDN);
        mpfr_exp(r27281, r27280, MPFR_RNDN);
        mpfr_cbrt(r27282, r27281, MPFR_RNDN);
        mpfr_mul(r27283, r27276, r27282, MPFR_RNDN);
        mpfr_add(r27284, r27264, r27283, MPFR_RNDN);
        mpfr_div(r27285, r27263, r27284, MPFR_RNDN);
        mpfr_set_d(r27286, NaChar, MPFR_RNDN);
        mpfr_set_d(r27287, Ev, MPFR_RNDN);
        mpfr_add(r27288, r27287, r27266, MPFR_RNDN);
        mpfr_set_d(r27289, EAccept, MPFR_RNDN);
        mpfr_add(r27290, r27288, r27289, MPFR_RNDN);
        mpfr_neg(r27291, r27268, MPFR_RNDN);
        mpfr_add(r27292, r27290, r27291, MPFR_RNDN);
        mpfr_div(r27293, r27292, r27272, MPFR_RNDN);
        mpfr_exp(r27294, r27293, MPFR_RNDN);
        mpfr_add(r27295, r27264, r27294, MPFR_RNDN);
        mpfr_div(r27296, r27286, r27295, MPFR_RNDN);
        mpfr_add(r27297, r27285, r27296, MPFR_RNDN);
        return mpfr_get_d(r27297, MPFR_RNDN);
}

static mpfr_t r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r27298);
        mpfr_init_set_str(r27299, "1", 10, MPFR_RNDN);
        mpfr_init(r27300);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init(r27313);
        mpfr_init(r27314);
        mpfr_init(r27315);
        mpfr_init(r27316);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init(r27321);
        mpfr_init(r27322);
        mpfr_init(r27323);
        mpfr_init(r27324);
        mpfr_init(r27325);
        mpfr_init(r27326);
        mpfr_init(r27327);
        mpfr_init(r27328);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r27298, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r27300, EDonor, MPFR_RNDN);
        mpfr_set_d(r27301, Vef, MPFR_RNDN);
        mpfr_add(r27302, r27300, r27301, MPFR_RNDN);
        mpfr_set_d(r27303, mu, MPFR_RNDN);
        mpfr_set_d(r27304, Ec, MPFR_RNDN);
        mpfr_sub(r27305, r27303, r27304, MPFR_RNDN);
        mpfr_add(r27306, r27302, r27305, MPFR_RNDN);
        mpfr_set_d(r27307, KbT, MPFR_RNDN);
        mpfr_div(r27308, r27306, r27307, MPFR_RNDN);
        mpfr_exp(r27309, r27308, MPFR_RNDN);
        mpfr_cbrt(r27310, r27309, MPFR_RNDN);
        mpfr_mul(r27311, r27310, r27310, MPFR_RNDN);
        mpfr_sub(r27312, r27301, r27304, MPFR_RNDN);
        mpfr_add(r27313, r27303, r27300, MPFR_RNDN);
        mpfr_add(r27314, r27312, r27313, MPFR_RNDN);
        mpfr_div(r27315, r27314, r27307, MPFR_RNDN);
        mpfr_exp(r27316, r27315, MPFR_RNDN);
        mpfr_cbrt(r27317, r27316, MPFR_RNDN);
        mpfr_mul(r27318, r27311, r27317, MPFR_RNDN);
        mpfr_add(r27319, r27299, r27318, MPFR_RNDN);
        mpfr_div(r27320, r27298, r27319, MPFR_RNDN);
        mpfr_set_d(r27321, NaChar, MPFR_RNDN);
        mpfr_set_d(r27322, Ev, MPFR_RNDN);
        mpfr_add(r27323, r27322, r27301, MPFR_RNDN);
        mpfr_set_d(r27324, EAccept, MPFR_RNDN);
        mpfr_add(r27325, r27323, r27324, MPFR_RNDN);
        mpfr_neg(r27326, r27303, MPFR_RNDN);
        mpfr_add(r27327, r27325, r27326, MPFR_RNDN);
        mpfr_div(r27328, r27327, r27307, MPFR_RNDN);
        mpfr_exp(r27329, r27328, MPFR_RNDN);
        mpfr_add(r27330, r27299, r27329, MPFR_RNDN);
        mpfr_div(r27331, r27321, r27330, MPFR_RNDN);
        mpfr_add(r27332, r27320, r27331, MPFR_RNDN);
        return mpfr_get_d(r27332, MPFR_RNDN);
}

