\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{NaChar}{\sqrt{\mathsf{expm1}\left(\mathsf{log1p}\left(e^{\frac{1}{\frac{KbT}{\left(Vef - mu\right) + \left(Ev + EAccept\right)}}}\right)\right)} \cdot \sqrt{e^{\frac{\left(Vef - mu\right) + \left(Ev + EAccept\right)}{KbT}}} + 1} + \frac{NdChar}{1 + e^{\frac{mu - \left(\left(Ec - Vef\right) - EDonor\right)}{KbT}}}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r4558074 = NdChar;
double r4558075 = 1.0;
double r4558076 = Ec;
double r4558077 = Vef;
double r4558078 = r4558076 - r4558077;
double r4558079 = EDonor;
double r4558080 = r4558078 - r4558079;
double r4558081 = mu;
double r4558082 = r4558080 - r4558081;
double r4558083 = -r4558082;
double r4558084 = KbT;
double r4558085 = r4558083 / r4558084;
double r4558086 = exp(r4558085);
double r4558087 = r4558075 + r4558086;
double r4558088 = r4558074 / r4558087;
double r4558089 = NaChar;
double r4558090 = Ev;
double r4558091 = r4558090 + r4558077;
double r4558092 = EAccept;
double r4558093 = r4558091 + r4558092;
double r4558094 = -r4558081;
double r4558095 = r4558093 + r4558094;
double r4558096 = r4558095 / r4558084;
double r4558097 = exp(r4558096);
double r4558098 = r4558075 + r4558097;
double r4558099 = r4558089 / r4558098;
double r4558100 = r4558088 + r4558099;
return r4558100;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r4558101 = NaChar;
double r4558102 = 1.0;
double r4558103 = KbT;
double r4558104 = Vef;
double r4558105 = mu;
double r4558106 = r4558104 - r4558105;
double r4558107 = Ev;
double r4558108 = EAccept;
double r4558109 = r4558107 + r4558108;
double r4558110 = r4558106 + r4558109;
double r4558111 = r4558103 / r4558110;
double r4558112 = r4558102 / r4558111;
double r4558113 = exp(r4558112);
double r4558114 = log1p(r4558113);
double r4558115 = expm1(r4558114);
double r4558116 = sqrt(r4558115);
double r4558117 = r4558110 / r4558103;
double r4558118 = exp(r4558117);
double r4558119 = sqrt(r4558118);
double r4558120 = r4558116 * r4558119;
double r4558121 = r4558120 + r4558102;
double r4558122 = r4558101 / r4558121;
double r4558123 = NdChar;
double r4558124 = Ec;
double r4558125 = r4558124 - r4558104;
double r4558126 = EDonor;
double r4558127 = r4558125 - r4558126;
double r4558128 = r4558105 - r4558127;
double r4558129 = r4558128 / r4558103;
double r4558130 = exp(r4558129);
double r4558131 = r4558102 + r4558130;
double r4558132 = r4558123 / r4558131;
double r4558133 = r4558122 + r4558132;
return r4558133;
}



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 add-sqr-sqrt0.0
rmApplied clear-num0.0
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2019152 +o rules:numerics
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:name "Bulmash initializePoisson"
(+ (/ NdChar (+ 1 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))