\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 r351994 = NdChar;
double r351995 = 1.0;
double r351996 = Ec;
double r351997 = Vef;
double r351998 = r351996 - r351997;
double r351999 = EDonor;
double r352000 = r351998 - r351999;
double r352001 = mu;
double r352002 = r352000 - r352001;
double r352003 = -r352002;
double r352004 = KbT;
double r352005 = r352003 / r352004;
double r352006 = exp(r352005);
double r352007 = r351995 + r352006;
double r352008 = r351994 / r352007;
double r352009 = NaChar;
double r352010 = Ev;
double r352011 = r352010 + r351997;
double r352012 = EAccept;
double r352013 = r352011 + r352012;
double r352014 = -r352001;
double r352015 = r352013 + r352014;
double r352016 = r352015 / r352004;
double r352017 = exp(r352016);
double r352018 = r351995 + r352017;
double r352019 = r352009 / r352018;
double r352020 = r352008 + r352019;
return r352020;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r352021 = NdChar;
double r352022 = 1.0;
double r352023 = Ec;
double r352024 = Vef;
double r352025 = r352023 - r352024;
double r352026 = EDonor;
double r352027 = r352025 - r352026;
double r352028 = mu;
double r352029 = r352027 - r352028;
double r352030 = -r352029;
double r352031 = KbT;
double r352032 = r352030 / r352031;
double r352033 = exp(r352032);
double r352034 = r352022 + r352033;
double r352035 = r352021 / r352034;
double r352036 = NaChar;
double r352037 = Ev;
double r352038 = r352037 + r352024;
double r352039 = EAccept;
double r352040 = r352038 + r352039;
double r352041 = -r352028;
double r352042 = r352040 + r352041;
double r352043 = r352042 / r352031;
double r352044 = exp(r352043);
double r352045 = log1p(r352044);
double r352046 = expm1(r352045);
double r352047 = r352022 + r352046;
double r352048 = r352036 / r352047;
double r352049 = r352035 + r352048;
return r352049;
}



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