\frac{NdChar}{1.0 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1.0 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}NaChar \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{e^{\frac{\left(EAccept - mu\right) + \left(Vef + Ev\right)}{KbT}} + 1.0}\right)\right) + \frac{NdChar}{1.0 + e^{\frac{mu + \left(Vef + \left(EDonor - Ec\right)\right)}{KbT}}}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r5489746 = NdChar;
double r5489747 = 1.0;
double r5489748 = Ec;
double r5489749 = Vef;
double r5489750 = r5489748 - r5489749;
double r5489751 = EDonor;
double r5489752 = r5489750 - r5489751;
double r5489753 = mu;
double r5489754 = r5489752 - r5489753;
double r5489755 = -r5489754;
double r5489756 = KbT;
double r5489757 = r5489755 / r5489756;
double r5489758 = exp(r5489757);
double r5489759 = r5489747 + r5489758;
double r5489760 = r5489746 / r5489759;
double r5489761 = NaChar;
double r5489762 = Ev;
double r5489763 = r5489762 + r5489749;
double r5489764 = EAccept;
double r5489765 = r5489763 + r5489764;
double r5489766 = -r5489753;
double r5489767 = r5489765 + r5489766;
double r5489768 = r5489767 / r5489756;
double r5489769 = exp(r5489768);
double r5489770 = r5489747 + r5489769;
double r5489771 = r5489761 / r5489770;
double r5489772 = r5489760 + r5489771;
return r5489772;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r5489773 = NaChar;
double r5489774 = 1.0;
double r5489775 = EAccept;
double r5489776 = mu;
double r5489777 = r5489775 - r5489776;
double r5489778 = Vef;
double r5489779 = Ev;
double r5489780 = r5489778 + r5489779;
double r5489781 = r5489777 + r5489780;
double r5489782 = KbT;
double r5489783 = r5489781 / r5489782;
double r5489784 = exp(r5489783);
double r5489785 = 1.0;
double r5489786 = r5489784 + r5489785;
double r5489787 = r5489774 / r5489786;
double r5489788 = log1p(r5489787);
double r5489789 = expm1(r5489788);
double r5489790 = r5489773 * r5489789;
double r5489791 = NdChar;
double r5489792 = EDonor;
double r5489793 = Ec;
double r5489794 = r5489792 - r5489793;
double r5489795 = r5489778 + r5489794;
double r5489796 = r5489776 + r5489795;
double r5489797 = r5489796 / r5489782;
double r5489798 = exp(r5489797);
double r5489799 = r5489785 + r5489798;
double r5489800 = r5489791 / r5489799;
double r5489801 = r5489790 + r5489800;
return r5489801;
}



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 div-inv0.0
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2019165 +o rules:numerics
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:name "Bulmash initializePoisson"
(+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))