\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 r268021 = NdChar;
double r268022 = 1.0;
double r268023 = Ec;
double r268024 = Vef;
double r268025 = r268023 - r268024;
double r268026 = EDonor;
double r268027 = r268025 - r268026;
double r268028 = mu;
double r268029 = r268027 - r268028;
double r268030 = -r268029;
double r268031 = KbT;
double r268032 = r268030 / r268031;
double r268033 = exp(r268032);
double r268034 = r268022 + r268033;
double r268035 = r268021 / r268034;
double r268036 = NaChar;
double r268037 = Ev;
double r268038 = r268037 + r268024;
double r268039 = EAccept;
double r268040 = r268038 + r268039;
double r268041 = -r268028;
double r268042 = r268040 + r268041;
double r268043 = r268042 / r268031;
double r268044 = exp(r268043);
double r268045 = r268022 + r268044;
double r268046 = r268036 / r268045;
double r268047 = r268035 + r268046;
return r268047;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r268048 = NdChar;
double r268049 = 1.0;
double r268050 = Ec;
double r268051 = Vef;
double r268052 = r268050 - r268051;
double r268053 = EDonor;
double r268054 = r268052 - r268053;
double r268055 = mu;
double r268056 = r268054 - r268055;
double r268057 = -r268056;
double r268058 = KbT;
double r268059 = r268057 / r268058;
double r268060 = exp(r268059);
double r268061 = r268049 + r268060;
double r268062 = r268048 / r268061;
double r268063 = NaChar;
double r268064 = Ev;
double r268065 = r268064 + r268051;
double r268066 = EAccept;
double r268067 = r268065 + r268066;
double r268068 = -r268055;
double r268069 = r268067 + r268068;
double r268070 = r268069 / r268058;
double r268071 = exp(r268070);
double r268072 = log1p(r268071);
double r268073 = expm1(r268072);
double r268074 = r268049 + r268073;
double r268075 = r268063 / r268074;
double r268076 = r268062 + r268075;
return r268076;
}



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 2020024 +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))))))