#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 r11169 = NdChar;
        float r11170 = 1.0f;
        float r11171 = Ec;
        float r11172 = Vef;
        float r11173 = r11171 - r11172;
        float r11174 = EDonor;
        float r11175 = r11173 - r11174;
        float r11176 = mu;
        float r11177 = r11175 - r11176;
        float r11178 = -r11177;
        float r11179 = KbT;
        float r11180 = r11178 / r11179;
        float r11181 = exp(r11180);
        float r11182 = r11170 + r11181;
        float r11183 = r11169 / r11182;
        float r11184 = NaChar;
        float r11185 = Ev;
        float r11186 = r11185 + r11172;
        float r11187 = EAccept;
        float r11188 = r11186 + r11187;
        float r11189 = -r11176;
        float r11190 = r11188 + r11189;
        float r11191 = r11190 / r11179;
        float r11192 = exp(r11191);
        float r11193 = r11170 + r11192;
        float r11194 = r11184 / r11193;
        float r11195 = r11183 + r11194;
        return r11195;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11196 = NdChar;
        double r11197 = 1.0;
        double r11198 = Ec;
        double r11199 = Vef;
        double r11200 = r11198 - r11199;
        double r11201 = EDonor;
        double r11202 = r11200 - r11201;
        double r11203 = mu;
        double r11204 = r11202 - r11203;
        double r11205 = -r11204;
        double r11206 = KbT;
        double r11207 = r11205 / r11206;
        double r11208 = exp(r11207);
        double r11209 = r11197 + r11208;
        double r11210 = r11196 / r11209;
        double r11211 = NaChar;
        double r11212 = Ev;
        double r11213 = r11212 + r11199;
        double r11214 = EAccept;
        double r11215 = r11213 + r11214;
        double r11216 = -r11203;
        double r11217 = r11215 + r11216;
        double r11218 = r11217 / r11206;
        double r11219 = exp(r11218);
        double r11220 = r11197 + r11219;
        double r11221 = r11211 / r11220;
        double r11222 = r11210 + r11221;
        return r11222;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r11223 = NaChar;
        float r11224 = 1.0f;
        float r11225 = mu;
        float r11226 = -r11225;
        float r11227 = Ev;
        float r11228 = Vef;
        float r11229 = r11227 + r11228;
        float r11230 = EAccept;
        float r11231 = r11229 + r11230;
        float r11232 = r11226 + r11231;
        float r11233 = KbT;
        float r11234 = r11232 / r11233;
        float r11235 = exp(r11234);
        float r11236 = r11224 + r11235;
        float r11237 = r11223 / r11236;
        float r11238 = NdChar;
        float r11239 = Ec;
        float r11240 = r11239 - r11228;
        float r11241 = EDonor;
        float r11242 = r11240 - r11241;
        float r11243 = r11242 - r11225;
        float r11244 = r11243 / r11233;
        float r11245 = -r11244;
        float r11246 = exp(r11245);
        float r11247 = r11246 + r11224;
        float r11248 = r11238 / r11247;
        float r11249 = r11237 + r11248;
        return r11249;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11250 = NaChar;
        double r11251 = 1.0;
        double r11252 = mu;
        double r11253 = -r11252;
        double r11254 = Ev;
        double r11255 = Vef;
        double r11256 = r11254 + r11255;
        double r11257 = EAccept;
        double r11258 = r11256 + r11257;
        double r11259 = r11253 + r11258;
        double r11260 = KbT;
        double r11261 = r11259 / r11260;
        double r11262 = exp(r11261);
        double r11263 = r11251 + r11262;
        double r11264 = r11250 / r11263;
        double r11265 = NdChar;
        double r11266 = Ec;
        double r11267 = r11266 - r11255;
        double r11268 = EDonor;
        double r11269 = r11267 - r11268;
        double r11270 = r11269 - r11252;
        double r11271 = r11270 / r11260;
        double r11272 = -r11271;
        double r11273 = exp(r11272);
        double r11274 = r11273 + r11251;
        double r11275 = r11265 / r11274;
        double r11276 = r11264 + r11275;
        return r11276;
}

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 r11277, r11278, r11279, r11280, r11281, r11282, r11283, r11284, r11285, r11286, r11287, r11288, r11289, r11290, r11291, r11292, r11293, r11294, r11295, r11296, r11297, r11298, r11299, r11300, r11301, r11302, r11303;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11277);
        mpfr_init_set_str(r11278, "1", 10, MPFR_RNDN);
        mpfr_init(r11279);
        mpfr_init(r11280);
        mpfr_init(r11281);
        mpfr_init(r11282);
        mpfr_init(r11283);
        mpfr_init(r11284);
        mpfr_init(r11285);
        mpfr_init(r11286);
        mpfr_init(r11287);
        mpfr_init(r11288);
        mpfr_init(r11289);
        mpfr_init(r11290);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
        mpfr_init(r11295);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init(r11299);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11277, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11279, Ec, MPFR_RNDN);
        mpfr_set_d(r11280, Vef, MPFR_RNDN);
        mpfr_sub(r11281, r11279, r11280, MPFR_RNDN);
        mpfr_set_d(r11282, EDonor, MPFR_RNDN);
        mpfr_sub(r11283, r11281, r11282, MPFR_RNDN);
        mpfr_set_d(r11284, mu, MPFR_RNDN);
        mpfr_sub(r11285, r11283, r11284, MPFR_RNDN);
        mpfr_neg(r11286, r11285, MPFR_RNDN);
        mpfr_set_d(r11287, KbT, MPFR_RNDN);
        mpfr_div(r11288, r11286, r11287, MPFR_RNDN);
        mpfr_exp(r11289, r11288, MPFR_RNDN);
        mpfr_add(r11290, r11278, r11289, MPFR_RNDN);
        mpfr_div(r11291, r11277, r11290, MPFR_RNDN);
        mpfr_set_d(r11292, NaChar, MPFR_RNDN);
        mpfr_set_d(r11293, Ev, MPFR_RNDN);
        mpfr_add(r11294, r11293, r11280, MPFR_RNDN);
        mpfr_set_d(r11295, EAccept, MPFR_RNDN);
        mpfr_add(r11296, r11294, r11295, MPFR_RNDN);
        mpfr_neg(r11297, r11284, MPFR_RNDN);
        mpfr_add(r11298, r11296, r11297, MPFR_RNDN);
        mpfr_div(r11299, r11298, r11287, MPFR_RNDN);
        mpfr_exp(r11300, r11299, MPFR_RNDN);
        mpfr_add(r11301, r11278, r11300, MPFR_RNDN);
        mpfr_div(r11302, r11292, r11301, MPFR_RNDN);
        mpfr_add(r11303, r11291, r11302, MPFR_RNDN);
        return mpfr_get_d(r11303, MPFR_RNDN);
}

static mpfr_t r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317, r11318, r11319, r11320, r11321, r11322, r11323, r11324, r11325, r11326, r11327, r11328, r11329, r11330;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11304);
        mpfr_init_set_str(r11305, "1", 10, MPFR_RNDN);
        mpfr_init(r11306);
        mpfr_init(r11307);
        mpfr_init(r11308);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init(r11312);
        mpfr_init(r11313);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init(r11316);
        mpfr_init(r11317);
        mpfr_init(r11318);
        mpfr_init(r11319);
        mpfr_init(r11320);
        mpfr_init(r11321);
        mpfr_init(r11322);
        mpfr_init(r11323);
        mpfr_init(r11324);
        mpfr_init(r11325);
        mpfr_init(r11326);
        mpfr_init(r11327);
        mpfr_init(r11328);
        mpfr_init(r11329);
        mpfr_init(r11330);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11304, NaChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11306, mu, MPFR_RNDN);
        mpfr_neg(r11307, r11306, MPFR_RNDN);
        mpfr_set_d(r11308, Ev, MPFR_RNDN);
        mpfr_set_d(r11309, Vef, MPFR_RNDN);
        mpfr_add(r11310, r11308, r11309, MPFR_RNDN);
        mpfr_set_d(r11311, EAccept, MPFR_RNDN);
        mpfr_add(r11312, r11310, r11311, MPFR_RNDN);
        mpfr_add(r11313, r11307, r11312, MPFR_RNDN);
        mpfr_set_d(r11314, KbT, MPFR_RNDN);
        mpfr_div(r11315, r11313, r11314, MPFR_RNDN);
        mpfr_exp(r11316, r11315, MPFR_RNDN);
        mpfr_add(r11317, r11305, r11316, MPFR_RNDN);
        mpfr_div(r11318, r11304, r11317, MPFR_RNDN);
        mpfr_set_d(r11319, NdChar, MPFR_RNDN);
        mpfr_set_d(r11320, Ec, MPFR_RNDN);
        mpfr_sub(r11321, r11320, r11309, MPFR_RNDN);
        mpfr_set_d(r11322, EDonor, MPFR_RNDN);
        mpfr_sub(r11323, r11321, r11322, MPFR_RNDN);
        mpfr_sub(r11324, r11323, r11306, MPFR_RNDN);
        mpfr_div(r11325, r11324, r11314, MPFR_RNDN);
        mpfr_neg(r11326, r11325, MPFR_RNDN);
        mpfr_exp(r11327, r11326, MPFR_RNDN);
        mpfr_add(r11328, r11327, r11305, MPFR_RNDN);
        mpfr_div(r11329, r11319, r11328, MPFR_RNDN);
        mpfr_add(r11330, r11318, r11329, MPFR_RNDN);
        return mpfr_get_d(r11330, MPFR_RNDN);
}

static mpfr_t r11331, r11332, r11333, r11334, r11335, r11336, r11337, r11338, r11339, r11340, r11341, r11342, r11343, r11344, r11345, r11346, r11347, r11348, r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11331);
        mpfr_init_set_str(r11332, "1", 10, MPFR_RNDN);
        mpfr_init(r11333);
        mpfr_init(r11334);
        mpfr_init(r11335);
        mpfr_init(r11336);
        mpfr_init(r11337);
        mpfr_init(r11338);
        mpfr_init(r11339);
        mpfr_init(r11340);
        mpfr_init(r11341);
        mpfr_init(r11342);
        mpfr_init(r11343);
        mpfr_init(r11344);
        mpfr_init(r11345);
        mpfr_init(r11346);
        mpfr_init(r11347);
        mpfr_init(r11348);
        mpfr_init(r11349);
        mpfr_init(r11350);
        mpfr_init(r11351);
        mpfr_init(r11352);
        mpfr_init(r11353);
        mpfr_init(r11354);
        mpfr_init(r11355);
        mpfr_init(r11356);
        mpfr_init(r11357);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11331, NaChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11333, mu, MPFR_RNDN);
        mpfr_neg(r11334, r11333, MPFR_RNDN);
        mpfr_set_d(r11335, Ev, MPFR_RNDN);
        mpfr_set_d(r11336, Vef, MPFR_RNDN);
        mpfr_add(r11337, r11335, r11336, MPFR_RNDN);
        mpfr_set_d(r11338, EAccept, MPFR_RNDN);
        mpfr_add(r11339, r11337, r11338, MPFR_RNDN);
        mpfr_add(r11340, r11334, r11339, MPFR_RNDN);
        mpfr_set_d(r11341, KbT, MPFR_RNDN);
        mpfr_div(r11342, r11340, r11341, MPFR_RNDN);
        mpfr_exp(r11343, r11342, MPFR_RNDN);
        mpfr_add(r11344, r11332, r11343, MPFR_RNDN);
        mpfr_div(r11345, r11331, r11344, MPFR_RNDN);
        mpfr_set_d(r11346, NdChar, MPFR_RNDN);
        mpfr_set_d(r11347, Ec, MPFR_RNDN);
        mpfr_sub(r11348, r11347, r11336, MPFR_RNDN);
        mpfr_set_d(r11349, EDonor, MPFR_RNDN);
        mpfr_sub(r11350, r11348, r11349, MPFR_RNDN);
        mpfr_sub(r11351, r11350, r11333, MPFR_RNDN);
        mpfr_div(r11352, r11351, r11341, MPFR_RNDN);
        mpfr_neg(r11353, r11352, MPFR_RNDN);
        mpfr_exp(r11354, r11353, MPFR_RNDN);
        mpfr_add(r11355, r11354, r11332, MPFR_RNDN);
        mpfr_div(r11356, r11346, r11355, MPFR_RNDN);
        mpfr_add(r11357, r11345, r11356, MPFR_RNDN);
        return mpfr_get_d(r11357, MPFR_RNDN);
}

