\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{\frac{NdChar}{e^{\log \left(\sqrt[3]{e^{\frac{mu + \left(EDonor - \left(Ec - Vef\right)\right)}{KbT}} + 1}\right)} \cdot \sqrt[3]{e^{\frac{mu + \left(EDonor - \left(Ec - Vef\right)\right)}{KbT}} + 1}}}{\sqrt[3]{e^{\frac{mu + \left(EDonor - \left(Ec - Vef\right)\right)}{KbT}} + 1}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}}double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r220116 = NdChar;
double r220117 = 1.0;
double r220118 = Ec;
double r220119 = Vef;
double r220120 = r220118 - r220119;
double r220121 = EDonor;
double r220122 = r220120 - r220121;
double r220123 = mu;
double r220124 = r220122 - r220123;
double r220125 = -r220124;
double r220126 = KbT;
double r220127 = r220125 / r220126;
double r220128 = exp(r220127);
double r220129 = r220117 + r220128;
double r220130 = r220116 / r220129;
double r220131 = NaChar;
double r220132 = Ev;
double r220133 = r220132 + r220119;
double r220134 = EAccept;
double r220135 = r220133 + r220134;
double r220136 = -r220123;
double r220137 = r220135 + r220136;
double r220138 = r220137 / r220126;
double r220139 = exp(r220138);
double r220140 = r220117 + r220139;
double r220141 = r220131 / r220140;
double r220142 = r220130 + r220141;
return r220142;
}
double f(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double r220143 = NdChar;
double r220144 = mu;
double r220145 = EDonor;
double r220146 = Ec;
double r220147 = Vef;
double r220148 = r220146 - r220147;
double r220149 = r220145 - r220148;
double r220150 = r220144 + r220149;
double r220151 = KbT;
double r220152 = r220150 / r220151;
double r220153 = exp(r220152);
double r220154 = 1.0;
double r220155 = r220153 + r220154;
double r220156 = cbrt(r220155);
double r220157 = log(r220156);
double r220158 = exp(r220157);
double r220159 = r220158 * r220156;
double r220160 = r220143 / r220159;
double r220161 = r220160 / r220156;
double r220162 = NaChar;
double r220163 = Ev;
double r220164 = r220163 + r220147;
double r220165 = EAccept;
double r220166 = r220164 + r220165;
double r220167 = r220166 - r220144;
double r220168 = r220167 / r220151;
double r220169 = exp(r220168);
double r220170 = r220154 + r220169;
double r220171 = r220162 / r220170;
double r220172 = r220161 + r220171;
return r220172;
}



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-cube-cbrt0.2
Applied associate-/r*0.3
rmApplied add-exp-log0.3
Final simplification0.3
herbie shell --seed 2019350
(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))))))