#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 r11043 = NdChar;
        float r11044 = 1.0f;
        float r11045 = Ec;
        float r11046 = Vef;
        float r11047 = r11045 - r11046;
        float r11048 = EDonor;
        float r11049 = r11047 - r11048;
        float r11050 = mu;
        float r11051 = r11049 - r11050;
        float r11052 = -r11051;
        float r11053 = KbT;
        float r11054 = r11052 / r11053;
        float r11055 = exp(r11054);
        float r11056 = r11044 + r11055;
        float r11057 = r11043 / r11056;
        float r11058 = NaChar;
        float r11059 = Ev;
        float r11060 = r11059 + r11046;
        float r11061 = EAccept;
        float r11062 = r11060 + r11061;
        float r11063 = -r11050;
        float r11064 = r11062 + r11063;
        float r11065 = r11064 / r11053;
        float r11066 = exp(r11065);
        float r11067 = r11044 + r11066;
        float r11068 = r11058 / r11067;
        float r11069 = r11057 + r11068;
        return r11069;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11070 = NdChar;
        double r11071 = 1.0;
        double r11072 = Ec;
        double r11073 = Vef;
        double r11074 = r11072 - r11073;
        double r11075 = EDonor;
        double r11076 = r11074 - r11075;
        double r11077 = mu;
        double r11078 = r11076 - r11077;
        double r11079 = -r11078;
        double r11080 = KbT;
        double r11081 = r11079 / r11080;
        double r11082 = exp(r11081);
        double r11083 = r11071 + r11082;
        double r11084 = r11070 / r11083;
        double r11085 = NaChar;
        double r11086 = Ev;
        double r11087 = r11086 + r11073;
        double r11088 = EAccept;
        double r11089 = r11087 + r11088;
        double r11090 = -r11077;
        double r11091 = r11089 + r11090;
        double r11092 = r11091 / r11080;
        double r11093 = exp(r11092);
        double r11094 = r11071 + r11093;
        double r11095 = r11085 / r11094;
        double r11096 = r11084 + r11095;
        return r11096;
}


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

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11127 = NdChar;
        double r11128 = Ec;
        double r11129 = Vef;
        double r11130 = r11128 - r11129;
        double r11131 = EDonor;
        double r11132 = r11130 - r11131;
        double r11133 = mu;
        double r11134 = r11132 - r11133;
        double r11135 = KbT;
        double r11136 = r11134 / r11135;
        double r11137 = -r11136;
        double r11138 = exp(r11137);
        double r11139 = 1.0;
        double r11140 = r11138 + r11139;
        double r11141 = cbrt(r11140);
        double r11142 = r11141 * r11141;
        double r11143 = r11127 / r11142;
        double r11144 = r11143 / r11141;
        double r11145 = NaChar;
        double r11146 = -r11133;
        double r11147 = Ev;
        double r11148 = r11129 + r11147;
        double r11149 = EAccept;
        double r11150 = r11148 + r11149;
        double r11151 = r11146 + r11150;
        double r11152 = r11151 / r11135;
        double r11153 = exp(r11152);
        double r11154 = r11139 + r11153;
        double r11155 = r11145 / r11154;
        double r11156 = r11144 + r11155;
        return r11156;
}

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 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, r11182, r11183;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11157);
        mpfr_init_set_str(r11158, "1", 10, MPFR_RNDN);
        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(r11167);
        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);
        mpfr_init(r11182);
        mpfr_init(r11183);
}

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

static mpfr_t 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, r11212, r11213;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        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_set_str(r11196, "1", 10, MPFR_RNDN);
        mpfr_init(r11197);
        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);
        mpfr_init(r11212);
        mpfr_init(r11213);
}

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

static mpfr_t r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221, r11222, r11223, r11224, r11225, r11226, r11227, r11228, r11229, r11230, r11231, r11232, r11233, r11234, r11235, r11236, r11237, r11238, r11239, r11240, r11241, r11242, r11243;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11214);
        mpfr_init(r11215);
        mpfr_init(r11216);
        mpfr_init(r11217);
        mpfr_init(r11218);
        mpfr_init(r11219);
        mpfr_init(r11220);
        mpfr_init(r11221);
        mpfr_init(r11222);
        mpfr_init(r11223);
        mpfr_init(r11224);
        mpfr_init(r11225);
        mpfr_init_set_str(r11226, "1", 10, MPFR_RNDN);
        mpfr_init(r11227);
        mpfr_init(r11228);
        mpfr_init(r11229);
        mpfr_init(r11230);
        mpfr_init(r11231);
        mpfr_init(r11232);
        mpfr_init(r11233);
        mpfr_init(r11234);
        mpfr_init(r11235);
        mpfr_init(r11236);
        mpfr_init(r11237);
        mpfr_init(r11238);
        mpfr_init(r11239);
        mpfr_init(r11240);
        mpfr_init(r11241);
        mpfr_init(r11242);
        mpfr_init(r11243);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11214, NdChar, MPFR_RNDN);
        mpfr_set_d(r11215, Ec, MPFR_RNDN);
        mpfr_set_d(r11216, Vef, MPFR_RNDN);
        mpfr_sub(r11217, r11215, r11216, MPFR_RNDN);
        mpfr_set_d(r11218, EDonor, MPFR_RNDN);
        mpfr_sub(r11219, r11217, r11218, MPFR_RNDN);
        mpfr_set_d(r11220, mu, MPFR_RNDN);
        mpfr_sub(r11221, r11219, r11220, MPFR_RNDN);
        mpfr_set_d(r11222, KbT, MPFR_RNDN);
        mpfr_div(r11223, r11221, r11222, MPFR_RNDN);
        mpfr_neg(r11224, r11223, MPFR_RNDN);
        mpfr_exp(r11225, r11224, MPFR_RNDN);
        ;
        mpfr_add(r11227, r11225, r11226, MPFR_RNDN);
        mpfr_cbrt(r11228, r11227, MPFR_RNDN);
        mpfr_mul(r11229, r11228, r11228, MPFR_RNDN);
        mpfr_div(r11230, r11214, r11229, MPFR_RNDN);
        mpfr_div(r11231, r11230, r11228, MPFR_RNDN);
        mpfr_set_d(r11232, NaChar, MPFR_RNDN);
        mpfr_neg(r11233, r11220, MPFR_RNDN);
        mpfr_set_d(r11234, Ev, MPFR_RNDN);
        mpfr_add(r11235, r11216, r11234, MPFR_RNDN);
        mpfr_set_d(r11236, EAccept, MPFR_RNDN);
        mpfr_add(r11237, r11235, r11236, MPFR_RNDN);
        mpfr_add(r11238, r11233, r11237, MPFR_RNDN);
        mpfr_div(r11239, r11238, r11222, MPFR_RNDN);
        mpfr_exp(r11240, r11239, MPFR_RNDN);
        mpfr_add(r11241, r11226, r11240, MPFR_RNDN);
        mpfr_div(r11242, r11232, r11241, MPFR_RNDN);
        mpfr_add(r11243, r11231, r11242, MPFR_RNDN);
        return mpfr_get_d(r11243, MPFR_RNDN);
}

