\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{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + \mathsf{expm1}\left(\mathsf{log1p}\left(e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}\right)\right)}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r193801 = NdChar;
double r193802 = 1.0;
double r193803 = Ec;
double r193804 = Vef;
double r193805 = r193803 - r193804;
double r193806 = EDonor;
double r193807 = r193805 - r193806;
double r193808 = mu;
double r193809 = r193807 - r193808;
double r193810 = -r193809;
double r193811 = KbT;
double r193812 = r193810 / r193811;
double r193813 = exp(r193812);
double r193814 = r193802 + r193813;
double r193815 = r193801 / r193814;
double r193816 = NaChar;
double r193817 = Ev;
double r193818 = r193817 + r193804;
double r193819 = EAccept;
double r193820 = r193818 + r193819;
double r193821 = -r193808;
double r193822 = r193820 + r193821;
double r193823 = r193822 / r193811;
double r193824 = exp(r193823);
double r193825 = r193802 + r193824;
double r193826 = r193816 / r193825;
double r193827 = r193815 + r193826;
return r193827;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r193828 = NdChar;
double r193829 = 1.0;
double r193830 = Ec;
double r193831 = Vef;
double r193832 = r193830 - r193831;
double r193833 = EDonor;
double r193834 = r193832 - r193833;
double r193835 = mu;
double r193836 = r193834 - r193835;
double r193837 = -r193836;
double r193838 = KbT;
double r193839 = r193837 / r193838;
double r193840 = exp(r193839);
double r193841 = r193829 + r193840;
double r193842 = r193828 / r193841;
double r193843 = NaChar;
double r193844 = Ev;
double r193845 = r193844 + r193831;
double r193846 = EAccept;
double r193847 = r193845 + r193846;
double r193848 = -r193835;
double r193849 = r193847 + r193848;
double r193850 = r193849 / r193838;
double r193851 = exp(r193850);
double r193852 = log1p(r193851);
double r193853 = expm1(r193852);
double r193854 = r193829 + r193853;
double r193855 = r193843 / r193854;
double r193856 = r193842 + r193855;
return r193856;
}



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
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2020057 +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))))))