#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 r11011 = NdChar;
        float r11012 = 1.0f;
        float r11013 = Ec;
        float r11014 = Vef;
        float r11015 = r11013 - r11014;
        float r11016 = EDonor;
        float r11017 = r11015 - r11016;
        float r11018 = mu;
        float r11019 = r11017 - r11018;
        float r11020 = -r11019;
        float r11021 = KbT;
        float r11022 = r11020 / r11021;
        float r11023 = exp(r11022);
        float r11024 = r11012 + r11023;
        float r11025 = r11011 / r11024;
        float r11026 = NaChar;
        float r11027 = Ev;
        float r11028 = r11027 + r11014;
        float r11029 = EAccept;
        float r11030 = r11028 + r11029;
        float r11031 = -r11018;
        float r11032 = r11030 + r11031;
        float r11033 = r11032 / r11021;
        float r11034 = exp(r11033);
        float r11035 = r11012 + r11034;
        float r11036 = r11026 / r11035;
        float r11037 = r11025 + r11036;
        return r11037;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11038 = NdChar;
        double r11039 = 1.0;
        double r11040 = Ec;
        double r11041 = Vef;
        double r11042 = r11040 - r11041;
        double r11043 = EDonor;
        double r11044 = r11042 - r11043;
        double r11045 = mu;
        double r11046 = r11044 - r11045;
        double r11047 = -r11046;
        double r11048 = KbT;
        double r11049 = r11047 / r11048;
        double r11050 = exp(r11049);
        double r11051 = r11039 + r11050;
        double r11052 = r11038 / r11051;
        double r11053 = NaChar;
        double r11054 = Ev;
        double r11055 = r11054 + r11041;
        double r11056 = EAccept;
        double r11057 = r11055 + r11056;
        double r11058 = -r11045;
        double r11059 = r11057 + r11058;
        double r11060 = r11059 / r11048;
        double r11061 = exp(r11060);
        double r11062 = r11039 + r11061;
        double r11063 = r11053 / r11062;
        double r11064 = r11052 + r11063;
        return r11064;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r11065 = NdChar;
        float r11066 = Ec;
        float r11067 = Vef;
        float r11068 = r11066 - r11067;
        float r11069 = EDonor;
        float r11070 = r11068 - r11069;
        float r11071 = mu;
        float r11072 = r11070 - r11071;
        float r11073 = KbT;
        float r11074 = r11072 / r11073;
        float r11075 = -r11074;
        float r11076 = cbrt(r11075);
        float r11077 = r11076 * r11076;
        float r11078 = r11077 * r11076;
        float r11079 = exp(r11078);
        float r11080 = 1.0f;
        float r11081 = r11079 + r11080;
        float r11082 = r11065 / r11081;
        float r11083 = NaChar;
        float r11084 = -r11071;
        float r11085 = Ev;
        float r11086 = r11067 + r11085;
        float r11087 = EAccept;
        float r11088 = r11086 + r11087;
        float r11089 = r11084 + r11088;
        float r11090 = r11089 / r11073;
        float r11091 = exp(r11090);
        float r11092 = r11080 + r11091;
        float r11093 = r11083 / r11092;
        float r11094 = r11082 + r11093;
        return r11094;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11095 = NdChar;
        double r11096 = Ec;
        double r11097 = Vef;
        double r11098 = r11096 - r11097;
        double r11099 = EDonor;
        double r11100 = r11098 - r11099;
        double r11101 = mu;
        double r11102 = r11100 - r11101;
        double r11103 = KbT;
        double r11104 = r11102 / r11103;
        double r11105 = -r11104;
        double r11106 = cbrt(r11105);
        double r11107 = r11106 * r11106;
        double r11108 = r11107 * r11106;
        double r11109 = exp(r11108);
        double r11110 = 1.0;
        double r11111 = r11109 + r11110;
        double r11112 = r11095 / r11111;
        double r11113 = NaChar;
        double r11114 = -r11101;
        double r11115 = Ev;
        double r11116 = r11097 + r11115;
        double r11117 = EAccept;
        double r11118 = r11116 + r11117;
        double r11119 = r11114 + r11118;
        double r11120 = r11119 / r11103;
        double r11121 = exp(r11120);
        double r11122 = r11110 + r11121;
        double r11123 = r11113 / r11122;
        double r11124 = r11112 + r11123;
        return r11124;
}

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 r11125, r11126, r11127, r11128, r11129, r11130, r11131, r11132, r11133, r11134, r11135, r11136, r11137, r11138, r11139, r11140, r11141, r11142, r11143, r11144, r11145, r11146, r11147, r11148, r11149, r11150, r11151;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11125);
        mpfr_init_set_str(r11126, "1", 10, MPFR_RNDN);
        mpfr_init(r11127);
        mpfr_init(r11128);
        mpfr_init(r11129);
        mpfr_init(r11130);
        mpfr_init(r11131);
        mpfr_init(r11132);
        mpfr_init(r11133);
        mpfr_init(r11134);
        mpfr_init(r11135);
        mpfr_init(r11136);
        mpfr_init(r11137);
        mpfr_init(r11138);
        mpfr_init(r11139);
        mpfr_init(r11140);
        mpfr_init(r11141);
        mpfr_init(r11142);
        mpfr_init(r11143);
        mpfr_init(r11144);
        mpfr_init(r11145);
        mpfr_init(r11146);
        mpfr_init(r11147);
        mpfr_init(r11148);
        mpfr_init(r11149);
        mpfr_init(r11150);
        mpfr_init(r11151);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11125, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11127, Ec, MPFR_RNDN);
        mpfr_set_d(r11128, Vef, MPFR_RNDN);
        mpfr_sub(r11129, r11127, r11128, MPFR_RNDN);
        mpfr_set_d(r11130, EDonor, MPFR_RNDN);
        mpfr_sub(r11131, r11129, r11130, MPFR_RNDN);
        mpfr_set_d(r11132, mu, MPFR_RNDN);
        mpfr_sub(r11133, r11131, r11132, MPFR_RNDN);
        mpfr_neg(r11134, r11133, MPFR_RNDN);
        mpfr_set_d(r11135, KbT, MPFR_RNDN);
        mpfr_div(r11136, r11134, r11135, MPFR_RNDN);
        mpfr_exp(r11137, r11136, MPFR_RNDN);
        mpfr_add(r11138, r11126, r11137, MPFR_RNDN);
        mpfr_div(r11139, r11125, r11138, MPFR_RNDN);
        mpfr_set_d(r11140, NaChar, MPFR_RNDN);
        mpfr_set_d(r11141, Ev, MPFR_RNDN);
        mpfr_add(r11142, r11141, r11128, MPFR_RNDN);
        mpfr_set_d(r11143, EAccept, MPFR_RNDN);
        mpfr_add(r11144, r11142, r11143, MPFR_RNDN);
        mpfr_neg(r11145, r11132, MPFR_RNDN);
        mpfr_add(r11146, r11144, r11145, MPFR_RNDN);
        mpfr_div(r11147, r11146, r11135, MPFR_RNDN);
        mpfr_exp(r11148, r11147, MPFR_RNDN);
        mpfr_add(r11149, r11126, r11148, MPFR_RNDN);
        mpfr_div(r11150, r11140, r11149, MPFR_RNDN);
        mpfr_add(r11151, r11139, r11150, MPFR_RNDN);
        return mpfr_get_d(r11151, MPFR_RNDN);
}

static mpfr_t r11152, r11153, r11154, r11155, r11156, r11157, r11158, r11159, r11160, r11161, r11162, r11163, r11164, r11165, r11166, r11167, r11168, r11169, r11170, r11171, r11172, r11173, r11174, r11175, r11176, r11177, r11178, r11179, r11180, r11181;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11152);
        mpfr_init(r11153);
        mpfr_init(r11154);
        mpfr_init(r11155);
        mpfr_init(r11156);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init(r11159);
        mpfr_init(r11160);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
        mpfr_init(r11166);
        mpfr_init_set_str(r11167, "1", 10, MPFR_RNDN);
        mpfr_init(r11168);
        mpfr_init(r11169);
        mpfr_init(r11170);
        mpfr_init(r11171);
        mpfr_init(r11172);
        mpfr_init(r11173);
        mpfr_init(r11174);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
        mpfr_init(r11178);
        mpfr_init(r11179);
        mpfr_init(r11180);
        mpfr_init(r11181);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11152, NdChar, MPFR_RNDN);
        mpfr_set_d(r11153, Ec, MPFR_RNDN);
        mpfr_set_d(r11154, Vef, MPFR_RNDN);
        mpfr_sub(r11155, r11153, r11154, MPFR_RNDN);
        mpfr_set_d(r11156, EDonor, MPFR_RNDN);
        mpfr_sub(r11157, r11155, r11156, MPFR_RNDN);
        mpfr_set_d(r11158, mu, MPFR_RNDN);
        mpfr_sub(r11159, r11157, r11158, MPFR_RNDN);
        mpfr_set_d(r11160, KbT, MPFR_RNDN);
        mpfr_div(r11161, r11159, r11160, MPFR_RNDN);
        mpfr_neg(r11162, r11161, MPFR_RNDN);
        mpfr_cbrt(r11163, r11162, MPFR_RNDN);
        mpfr_mul(r11164, r11163, r11163, MPFR_RNDN);
        mpfr_mul(r11165, r11164, r11163, MPFR_RNDN);
        mpfr_exp(r11166, r11165, MPFR_RNDN);
        ;
        mpfr_add(r11168, r11166, r11167, MPFR_RNDN);
        mpfr_div(r11169, r11152, r11168, MPFR_RNDN);
        mpfr_set_d(r11170, NaChar, MPFR_RNDN);
        mpfr_neg(r11171, r11158, MPFR_RNDN);
        mpfr_set_d(r11172, Ev, MPFR_RNDN);
        mpfr_add(r11173, r11154, r11172, MPFR_RNDN);
        mpfr_set_d(r11174, EAccept, MPFR_RNDN);
        mpfr_add(r11175, r11173, r11174, MPFR_RNDN);
        mpfr_add(r11176, r11171, r11175, MPFR_RNDN);
        mpfr_div(r11177, r11176, r11160, MPFR_RNDN);
        mpfr_exp(r11178, r11177, MPFR_RNDN);
        mpfr_add(r11179, r11167, r11178, MPFR_RNDN);
        mpfr_div(r11180, r11170, r11179, MPFR_RNDN);
        mpfr_add(r11181, r11169, r11180, MPFR_RNDN);
        return mpfr_get_d(r11181, MPFR_RNDN);
}

static mpfr_t r11182, r11183, r11184, r11185, r11186, r11187, r11188, r11189, r11190, r11191, r11192, r11193, r11194, r11195, r11196, r11197, r11198, r11199, r11200, r11201, r11202, r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11182);
        mpfr_init(r11183);
        mpfr_init(r11184);
        mpfr_init(r11185);
        mpfr_init(r11186);
        mpfr_init(r11187);
        mpfr_init(r11188);
        mpfr_init(r11189);
        mpfr_init(r11190);
        mpfr_init(r11191);
        mpfr_init(r11192);
        mpfr_init(r11193);
        mpfr_init(r11194);
        mpfr_init(r11195);
        mpfr_init(r11196);
        mpfr_init_set_str(r11197, "1", 10, MPFR_RNDN);
        mpfr_init(r11198);
        mpfr_init(r11199);
        mpfr_init(r11200);
        mpfr_init(r11201);
        mpfr_init(r11202);
        mpfr_init(r11203);
        mpfr_init(r11204);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11182, NdChar, MPFR_RNDN);
        mpfr_set_d(r11183, Ec, MPFR_RNDN);
        mpfr_set_d(r11184, Vef, MPFR_RNDN);
        mpfr_sub(r11185, r11183, r11184, MPFR_RNDN);
        mpfr_set_d(r11186, EDonor, MPFR_RNDN);
        mpfr_sub(r11187, r11185, r11186, MPFR_RNDN);
        mpfr_set_d(r11188, mu, MPFR_RNDN);
        mpfr_sub(r11189, r11187, r11188, MPFR_RNDN);
        mpfr_set_d(r11190, KbT, MPFR_RNDN);
        mpfr_div(r11191, r11189, r11190, MPFR_RNDN);
        mpfr_neg(r11192, r11191, MPFR_RNDN);
        mpfr_cbrt(r11193, r11192, MPFR_RNDN);
        mpfr_mul(r11194, r11193, r11193, MPFR_RNDN);
        mpfr_mul(r11195, r11194, r11193, MPFR_RNDN);
        mpfr_exp(r11196, r11195, MPFR_RNDN);
        ;
        mpfr_add(r11198, r11196, r11197, MPFR_RNDN);
        mpfr_div(r11199, r11182, r11198, MPFR_RNDN);
        mpfr_set_d(r11200, NaChar, MPFR_RNDN);
        mpfr_neg(r11201, r11188, MPFR_RNDN);
        mpfr_set_d(r11202, Ev, MPFR_RNDN);
        mpfr_add(r11203, r11184, r11202, MPFR_RNDN);
        mpfr_set_d(r11204, EAccept, MPFR_RNDN);
        mpfr_add(r11205, r11203, r11204, MPFR_RNDN);
        mpfr_add(r11206, r11201, r11205, MPFR_RNDN);
        mpfr_div(r11207, r11206, r11190, MPFR_RNDN);
        mpfr_exp(r11208, r11207, MPFR_RNDN);
        mpfr_add(r11209, r11197, r11208, MPFR_RNDN);
        mpfr_div(r11210, r11200, r11209, MPFR_RNDN);
        mpfr_add(r11211, r11199, r11210, MPFR_RNDN);
        return mpfr_get_d(r11211, MPFR_RNDN);
}

