\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}{1 + (e^{\log_* (1 + e^{\sqrt[3]{\frac{\left(\left(Ev + Vef\right) - mu\right) + EAccept}{KbT} \cdot \left(\frac{\left(\left(Ev + Vef\right) - mu\right) + EAccept}{KbT} \cdot \frac{\left(\left(Ev + Vef\right) - mu\right) + EAccept}{KbT}\right)}})} - 1)^*} + \frac{NdChar}{1 + e^{-\frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT}}}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r77447168 = NdChar;
double r77447169 = 1.0;
double r77447170 = Ec;
double r77447171 = Vef;
double r77447172 = r77447170 - r77447171;
double r77447173 = EDonor;
double r77447174 = r77447172 - r77447173;
double r77447175 = mu;
double r77447176 = r77447174 - r77447175;
double r77447177 = -r77447176;
double r77447178 = KbT;
double r77447179 = r77447177 / r77447178;
double r77447180 = exp(r77447179);
double r77447181 = r77447169 + r77447180;
double r77447182 = r77447168 / r77447181;
double r77447183 = NaChar;
double r77447184 = Ev;
double r77447185 = r77447184 + r77447171;
double r77447186 = EAccept;
double r77447187 = r77447185 + r77447186;
double r77447188 = -r77447175;
double r77447189 = r77447187 + r77447188;
double r77447190 = r77447189 / r77447178;
double r77447191 = exp(r77447190);
double r77447192 = r77447169 + r77447191;
double r77447193 = r77447183 / r77447192;
double r77447194 = r77447182 + r77447193;
return r77447194;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r77447195 = NaChar;
double r77447196 = 1.0;
double r77447197 = Ev;
double r77447198 = Vef;
double r77447199 = r77447197 + r77447198;
double r77447200 = mu;
double r77447201 = r77447199 - r77447200;
double r77447202 = EAccept;
double r77447203 = r77447201 + r77447202;
double r77447204 = KbT;
double r77447205 = r77447203 / r77447204;
double r77447206 = r77447205 * r77447205;
double r77447207 = r77447205 * r77447206;
double r77447208 = cbrt(r77447207);
double r77447209 = exp(r77447208);
double r77447210 = log1p(r77447209);
double r77447211 = expm1(r77447210);
double r77447212 = r77447196 + r77447211;
double r77447213 = r77447195 / r77447212;
double r77447214 = NdChar;
double r77447215 = Ec;
double r77447216 = EDonor;
double r77447217 = r77447200 + r77447198;
double r77447218 = r77447216 + r77447217;
double r77447219 = r77447215 - r77447218;
double r77447220 = r77447219 / r77447204;
double r77447221 = -r77447220;
double r77447222 = exp(r77447221);
double r77447223 = r77447196 + r77447222;
double r77447224 = r77447214 / r77447223;
double r77447225 = r77447213 + r77447224;
return r77447225;
}



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