#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 r11747 = NdChar;
        float r11748 = 1;
        float r11749 = Ec;
        float r11750 = Vef;
        float r11751 = r11749 - r11750;
        float r11752 = EDonor;
        float r11753 = r11751 - r11752;
        float r11754 = mu;
        float r11755 = r11753 - r11754;
        float r11756 = -r11755;
        float r11757 = KbT;
        float r11758 = r11756 / r11757;
        float r11759 = exp(r11758);
        float r11760 = r11748 + r11759;
        float r11761 = r11747 / r11760;
        float r11762 = NaChar;
        float r11763 = Ev;
        float r11764 = r11763 + r11750;
        float r11765 = EAccept;
        float r11766 = r11764 + r11765;
        float r11767 = -r11754;
        float r11768 = r11766 + r11767;
        float r11769 = r11768 / r11757;
        float r11770 = exp(r11769);
        float r11771 = r11748 + r11770;
        float r11772 = r11762 / r11771;
        float r11773 = r11761 + r11772;
        return r11773;
}

double f_id(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11774 = NdChar;
        double r11775 = 1;
        double r11776 = Ec;
        double r11777 = Vef;
        double r11778 = r11776 - r11777;
        double r11779 = EDonor;
        double r11780 = r11778 - r11779;
        double r11781 = mu;
        double r11782 = r11780 - r11781;
        double r11783 = -r11782;
        double r11784 = KbT;
        double r11785 = r11783 / r11784;
        double r11786 = exp(r11785);
        double r11787 = r11775 + r11786;
        double r11788 = r11774 / r11787;
        double r11789 = NaChar;
        double r11790 = Ev;
        double r11791 = r11790 + r11777;
        double r11792 = EAccept;
        double r11793 = r11791 + r11792;
        double r11794 = -r11781;
        double r11795 = r11793 + r11794;
        double r11796 = r11795 / r11784;
        double r11797 = exp(r11796);
        double r11798 = r11775 + r11797;
        double r11799 = r11789 / r11798;
        double r11800 = r11788 + r11799;
        return r11800;
}


double f_of(float NdChar, float Ec, float Vef, float EDonor, float mu, float KbT, float NaChar, float Ev, float EAccept) {
        float r11801 = NdChar;
        float r11802 = 1;
        float r11803 = Ec;
        float r11804 = Vef;
        float r11805 = r11803 - r11804;
        float r11806 = EDonor;
        float r11807 = r11805 - r11806;
        float r11808 = mu;
        float r11809 = r11807 - r11808;
        float r11810 = -r11809;
        float r11811 = KbT;
        float r11812 = r11810 / r11811;
        float r11813 = exp(r11812);
        float r11814 = r11802 + r11813;
        float r11815 = r11801 / r11814;
        float r11816 = NaChar;
        float r11817 = exp(1.0);
        float r11818 = EAccept;
        float r11819 = r11804 + r11818;
        float r11820 = Ev;
        float r11821 = r11808 - r11820;
        float r11822 = r11819 - r11821;
        float r11823 = r11822 / r11811;
        float r11824 = pow(r11817, r11823);
        float r11825 = r11824 + r11802;
        float r11826 = 3;
        float r11827 = pow(r11825, r11826);
        float r11828 = cbrt(r11827);
        float r11829 = r11816 / r11828;
        float r11830 = r11815 + r11829;
        return r11830;
}

double f_od(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        double r11831 = NdChar;
        double r11832 = 1;
        double r11833 = Ec;
        double r11834 = Vef;
        double r11835 = r11833 - r11834;
        double r11836 = EDonor;
        double r11837 = r11835 - r11836;
        double r11838 = mu;
        double r11839 = r11837 - r11838;
        double r11840 = -r11839;
        double r11841 = KbT;
        double r11842 = r11840 / r11841;
        double r11843 = exp(r11842);
        double r11844 = r11832 + r11843;
        double r11845 = r11831 / r11844;
        double r11846 = NaChar;
        double r11847 = exp(1.0);
        double r11848 = EAccept;
        double r11849 = r11834 + r11848;
        double r11850 = Ev;
        double r11851 = r11838 - r11850;
        double r11852 = r11849 - r11851;
        double r11853 = r11852 / r11841;
        double r11854 = pow(r11847, r11853);
        double r11855 = r11854 + r11832;
        double r11856 = 3;
        double r11857 = pow(r11855, r11856);
        double r11858 = cbrt(r11857);
        double r11859 = r11846 / r11858;
        double r11860 = r11845 + r11859;
        return r11860;
}

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 r11861, r11862, r11863, r11864, r11865, r11866, r11867, r11868, r11869, r11870, r11871, r11872, r11873, r11874, r11875, r11876, r11877, r11878, r11879, r11880, r11881, r11882, r11883, r11884, r11885, r11886, r11887;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11861);
        mpfr_init_set_str(r11862, "1", 10, MPFR_RNDN);
        mpfr_init(r11863);
        mpfr_init(r11864);
        mpfr_init(r11865);
        mpfr_init(r11866);
        mpfr_init(r11867);
        mpfr_init(r11868);
        mpfr_init(r11869);
        mpfr_init(r11870);
        mpfr_init(r11871);
        mpfr_init(r11872);
        mpfr_init(r11873);
        mpfr_init(r11874);
        mpfr_init(r11875);
        mpfr_init(r11876);
        mpfr_init(r11877);
        mpfr_init(r11878);
        mpfr_init(r11879);
        mpfr_init(r11880);
        mpfr_init(r11881);
        mpfr_init(r11882);
        mpfr_init(r11883);
        mpfr_init(r11884);
        mpfr_init(r11885);
        mpfr_init(r11886);
        mpfr_init(r11887);
}

double f_im(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11861, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11863, Ec, MPFR_RNDN);
        mpfr_set_d(r11864, Vef, MPFR_RNDN);
        mpfr_sub(r11865, r11863, r11864, MPFR_RNDN);
        mpfr_set_d(r11866, EDonor, MPFR_RNDN);
        mpfr_sub(r11867, r11865, r11866, MPFR_RNDN);
        mpfr_set_d(r11868, mu, MPFR_RNDN);
        mpfr_sub(r11869, r11867, r11868, MPFR_RNDN);
        mpfr_neg(r11870, r11869, MPFR_RNDN);
        mpfr_set_d(r11871, KbT, MPFR_RNDN);
        mpfr_div(r11872, r11870, r11871, MPFR_RNDN);
        mpfr_exp(r11873, r11872, MPFR_RNDN);
        mpfr_add(r11874, r11862, r11873, MPFR_RNDN);
        mpfr_div(r11875, r11861, r11874, MPFR_RNDN);
        mpfr_set_d(r11876, NaChar, MPFR_RNDN);
        mpfr_set_d(r11877, Ev, MPFR_RNDN);
        mpfr_add(r11878, r11877, r11864, MPFR_RNDN);
        mpfr_set_d(r11879, EAccept, MPFR_RNDN);
        mpfr_add(r11880, r11878, r11879, MPFR_RNDN);
        mpfr_neg(r11881, r11868, MPFR_RNDN);
        mpfr_add(r11882, r11880, r11881, MPFR_RNDN);
        mpfr_div(r11883, r11882, r11871, MPFR_RNDN);
        mpfr_exp(r11884, r11883, MPFR_RNDN);
        mpfr_add(r11885, r11862, r11884, MPFR_RNDN);
        mpfr_div(r11886, r11876, r11885, MPFR_RNDN);
        mpfr_add(r11887, r11875, r11886, MPFR_RNDN);
        return mpfr_get_d(r11887, MPFR_RNDN);
}

static mpfr_t r11888, r11889, r11890, r11891, r11892, r11893, r11894, r11895, r11896, r11897, r11898, r11899, r11900, r11901, r11902, r11903, r11904, r11905, r11906, r11907, r11908, r11909, r11910, r11911, r11912, r11913, r11914, r11915, r11916, r11917;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11888);
        mpfr_init_set_str(r11889, "1", 10, MPFR_RNDN);
        mpfr_init(r11890);
        mpfr_init(r11891);
        mpfr_init(r11892);
        mpfr_init(r11893);
        mpfr_init(r11894);
        mpfr_init(r11895);
        mpfr_init(r11896);
        mpfr_init(r11897);
        mpfr_init(r11898);
        mpfr_init(r11899);
        mpfr_init(r11900);
        mpfr_init(r11901);
        mpfr_init(r11902);
        mpfr_init(r11903);
        mpfr_init(r11904);
        mpfr_init(r11905);
        mpfr_init(r11906);
        mpfr_init(r11907);
        mpfr_init(r11908);
        mpfr_init(r11909);
        mpfr_init(r11910);
        mpfr_init(r11911);
        mpfr_init(r11912);
        mpfr_init_set_str(r11913, "3", 10, MPFR_RNDN);
        mpfr_init(r11914);
        mpfr_init(r11915);
        mpfr_init(r11916);
        mpfr_init(r11917);
}

double f_fm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11888, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11890, Ec, MPFR_RNDN);
        mpfr_set_d(r11891, Vef, MPFR_RNDN);
        mpfr_sub(r11892, r11890, r11891, MPFR_RNDN);
        mpfr_set_d(r11893, EDonor, MPFR_RNDN);
        mpfr_sub(r11894, r11892, r11893, MPFR_RNDN);
        mpfr_set_d(r11895, mu, MPFR_RNDN);
        mpfr_sub(r11896, r11894, r11895, MPFR_RNDN);
        mpfr_neg(r11897, r11896, MPFR_RNDN);
        mpfr_set_d(r11898, KbT, MPFR_RNDN);
        mpfr_div(r11899, r11897, r11898, MPFR_RNDN);
        mpfr_exp(r11900, r11899, MPFR_RNDN);
        mpfr_add(r11901, r11889, r11900, MPFR_RNDN);
        mpfr_div(r11902, r11888, r11901, MPFR_RNDN);
        mpfr_set_d(r11903, NaChar, MPFR_RNDN);
        mpfr_set_si(r11904, 1, MPFR_RNDN), mpfr_const_exp(r11904, r11904, MPFR_RNDN);
        mpfr_set_d(r11905, EAccept, MPFR_RNDN);
        mpfr_add(r11906, r11891, r11905, MPFR_RNDN);
        mpfr_set_d(r11907, Ev, MPFR_RNDN);
        mpfr_sub(r11908, r11895, r11907, MPFR_RNDN);
        mpfr_sub(r11909, r11906, r11908, MPFR_RNDN);
        mpfr_div(r11910, r11909, r11898, MPFR_RNDN);
        mpfr_pow(r11911, r11904, r11910, MPFR_RNDN);
        mpfr_add(r11912, r11911, r11889, MPFR_RNDN);
        ;
        mpfr_pow(r11914, r11912, r11913, MPFR_RNDN);
        mpfr_cbrt(r11915, r11914, MPFR_RNDN);
        mpfr_div(r11916, r11903, r11915, MPFR_RNDN);
        mpfr_add(r11917, r11902, r11916, MPFR_RNDN);
        return mpfr_get_d(r11917, MPFR_RNDN);
}

static mpfr_t r11918, r11919, r11920, r11921, r11922, r11923, r11924, r11925, r11926, r11927, r11928, r11929, r11930, r11931, r11932, r11933, r11934, r11935, r11936, r11937, r11938, r11939, r11940, r11941, r11942, r11943, r11944, r11945, r11946, r11947;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11918);
        mpfr_init_set_str(r11919, "1", 10, MPFR_RNDN);
        mpfr_init(r11920);
        mpfr_init(r11921);
        mpfr_init(r11922);
        mpfr_init(r11923);
        mpfr_init(r11924);
        mpfr_init(r11925);
        mpfr_init(r11926);
        mpfr_init(r11927);
        mpfr_init(r11928);
        mpfr_init(r11929);
        mpfr_init(r11930);
        mpfr_init(r11931);
        mpfr_init(r11932);
        mpfr_init(r11933);
        mpfr_init(r11934);
        mpfr_init(r11935);
        mpfr_init(r11936);
        mpfr_init(r11937);
        mpfr_init(r11938);
        mpfr_init(r11939);
        mpfr_init(r11940);
        mpfr_init(r11941);
        mpfr_init(r11942);
        mpfr_init_set_str(r11943, "3", 10, MPFR_RNDN);
        mpfr_init(r11944);
        mpfr_init(r11945);
        mpfr_init(r11946);
        mpfr_init(r11947);
}

double f_dm(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
        mpfr_set_d(r11918, NdChar, MPFR_RNDN);
        ;
        mpfr_set_d(r11920, Ec, MPFR_RNDN);
        mpfr_set_d(r11921, Vef, MPFR_RNDN);
        mpfr_sub(r11922, r11920, r11921, MPFR_RNDN);
        mpfr_set_d(r11923, EDonor, MPFR_RNDN);
        mpfr_sub(r11924, r11922, r11923, MPFR_RNDN);
        mpfr_set_d(r11925, mu, MPFR_RNDN);
        mpfr_sub(r11926, r11924, r11925, MPFR_RNDN);
        mpfr_neg(r11927, r11926, MPFR_RNDN);
        mpfr_set_d(r11928, KbT, MPFR_RNDN);
        mpfr_div(r11929, r11927, r11928, MPFR_RNDN);
        mpfr_exp(r11930, r11929, MPFR_RNDN);
        mpfr_add(r11931, r11919, r11930, MPFR_RNDN);
        mpfr_div(r11932, r11918, r11931, MPFR_RNDN);
        mpfr_set_d(r11933, NaChar, MPFR_RNDN);
        mpfr_set_si(r11934, 1, MPFR_RNDN), mpfr_const_exp(r11934, r11934, MPFR_RNDN);
        mpfr_set_d(r11935, EAccept, MPFR_RNDN);
        mpfr_add(r11936, r11921, r11935, MPFR_RNDN);
        mpfr_set_d(r11937, Ev, MPFR_RNDN);
        mpfr_sub(r11938, r11925, r11937, MPFR_RNDN);
        mpfr_sub(r11939, r11936, r11938, MPFR_RNDN);
        mpfr_div(r11940, r11939, r11928, MPFR_RNDN);
        mpfr_pow(r11941, r11934, r11940, MPFR_RNDN);
        mpfr_add(r11942, r11941, r11919, MPFR_RNDN);
        ;
        mpfr_pow(r11944, r11942, r11943, MPFR_RNDN);
        mpfr_cbrt(r11945, r11944, MPFR_RNDN);
        mpfr_div(r11946, r11933, r11945, MPFR_RNDN);
        mpfr_add(r11947, r11932, r11946, MPFR_RNDN);
        return mpfr_get_d(r11947, MPFR_RNDN);
}

