\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}\frac{1}{\frac{e^{\frac{\left(mu + EDonor\right) - \left(Ec - Vef\right)}{KbT}} + 1}{NdChar}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r234862 = NdChar;
double r234863 = 1.0;
double r234864 = Ec;
double r234865 = Vef;
double r234866 = r234864 - r234865;
double r234867 = EDonor;
double r234868 = r234866 - r234867;
double r234869 = mu;
double r234870 = r234868 - r234869;
double r234871 = -r234870;
double r234872 = KbT;
double r234873 = r234871 / r234872;
double r234874 = exp(r234873);
double r234875 = r234863 + r234874;
double r234876 = r234862 / r234875;
double r234877 = NaChar;
double r234878 = Ev;
double r234879 = r234878 + r234865;
double r234880 = EAccept;
double r234881 = r234879 + r234880;
double r234882 = -r234869;
double r234883 = r234881 + r234882;
double r234884 = r234883 / r234872;
double r234885 = exp(r234884);
double r234886 = r234863 + r234885;
double r234887 = r234877 / r234886;
double r234888 = r234876 + r234887;
return r234888;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r234889 = 1.0;
double r234890 = mu;
double r234891 = EDonor;
double r234892 = r234890 + r234891;
double r234893 = Ec;
double r234894 = Vef;
double r234895 = r234893 - r234894;
double r234896 = r234892 - r234895;
double r234897 = KbT;
double r234898 = r234896 / r234897;
double r234899 = exp(r234898);
double r234900 = 1.0;
double r234901 = r234899 + r234900;
double r234902 = NdChar;
double r234903 = r234901 / r234902;
double r234904 = r234889 / r234903;
double r234905 = NaChar;
double r234906 = Ev;
double r234907 = r234906 + r234894;
double r234908 = EAccept;
double r234909 = r234907 + r234908;
double r234910 = r234909 - r234890;
double r234911 = r234910 / r234897;
double r234912 = exp(r234911);
double r234913 = r234900 + r234912;
double r234914 = r234905 / r234913;
double r234915 = r234904 + r234914;
return r234915;
}



Bits error versus NdChar



Bits error versus Ec



Bits error versus Vef



Bits error versus EDonor



Bits error versus mu



Bits error versus KbT



Bits error versus NaChar



Bits error versus Ev



Bits error versus EAccept
Results
Initial program 0.0
Simplified0.0
rmApplied clear-num0.1
Final simplification0.1
herbie shell --seed 2019323 +o rules:numerics
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:name "Bulmash initializePoisson"
:precision binary64
(+ (/ NdChar (+ 1 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))