
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\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}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 27 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\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}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* (exp (- (log1p (exp (/ (+ EDonor (- (+ mu Vef) Ec)) KbT))))) NdChar) (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (exp(-log1p(exp(((EDonor + ((mu + Vef) - Ec)) / KbT)))) * NdChar) + (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (Math.exp(-Math.log1p(Math.exp(((EDonor + ((mu + Vef) - Ec)) / KbT)))) * NdChar) + (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (math.exp(-math.log1p(math.exp(((EDonor + ((mu + Vef) - Ec)) / KbT)))) * NdChar) + (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(exp(Float64(-log1p(exp(Float64(Float64(EDonor + Float64(Float64(mu + Vef) - Ec)) / KbT))))) * NdChar) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT))))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(N[Exp[(-N[Log[1 + N[Exp[N[(N[(EDonor + N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision])], $MachinePrecision] * NdChar), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
e^{-\mathsf{log1p}\left(e^{\frac{EDonor + \left(\left(mu + Vef\right) - Ec\right)}{KbT}}\right)} \cdot NdChar + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
(t_2
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_3
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_4 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= NdChar -6.2e-124)
(+
t_2
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NdChar 3.9e-191)
(+
t_0
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
(if (<= NdChar 1.3e-116)
t_3
(if (<= NdChar 9.6e-42)
(+ t_0 (/ NdChar (- 2.0 (/ Ec KbT))))
(if (<= NdChar 0.00062)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= NdChar 4e+32)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_4)
(if (<= NdChar 4e+69)
t_3
(if (<= NdChar 1.95e+131)
(+ t_1 t_4)
(if (<= NdChar 1.32e+147)
t_3
(+ t_2 (/ NaChar 2.0)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp((Ec / -KbT)));
double t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_3 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double t_4 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if (NdChar <= -6.2e-124) {
tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.9e-191) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.3e-116) {
tmp = t_3;
} else if (NdChar <= 9.6e-42) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 0.00062) {
tmp = t_1 + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (NdChar <= 4e+32) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_4;
} else if (NdChar <= 4e+69) {
tmp = t_3;
} else if (NdChar <= 1.95e+131) {
tmp = t_1 + t_4;
} else if (NdChar <= 1.32e+147) {
tmp = t_3;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp((ec / -kbt)))
t_2 = ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
t_3 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
t_4 = nachar / (1.0d0 + exp((eaccept / kbt)))
if (ndchar <= (-6.2d-124)) then
tmp = t_2 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 3.9d-191) then
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else if (ndchar <= 1.3d-116) then
tmp = t_3
else if (ndchar <= 9.6d-42) then
tmp = t_0 + (ndchar / (2.0d0 - (ec / kbt)))
else if (ndchar <= 0.00062d0) then
tmp = t_1 + (nachar / (1.0d0 + exp((vef / kbt))))
else if (ndchar <= 4d+32) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_4
else if (ndchar <= 4d+69) then
tmp = t_3
else if (ndchar <= 1.95d+131) then
tmp = t_1 + t_4
else if (ndchar <= 1.32d+147) then
tmp = t_3
else
tmp = t_2 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((Ec / -KbT)));
double t_2 = NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_3 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_4 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if (NdChar <= -6.2e-124) {
tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.9e-191) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.3e-116) {
tmp = t_3;
} else if (NdChar <= 9.6e-42) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 0.00062) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (NdChar <= 4e+32) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_4;
} else if (NdChar <= 4e+69) {
tmp = t_3;
} else if (NdChar <= 1.95e+131) {
tmp = t_1 + t_4;
} else if (NdChar <= 1.32e+147) {
tmp = t_3;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp((Ec / -KbT))) t_2 = NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_3 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_4 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if NdChar <= -6.2e-124: tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 3.9e-191: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) elif NdChar <= 1.3e-116: tmp = t_3 elif NdChar <= 9.6e-42: tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))) elif NdChar <= 0.00062: tmp = t_1 + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif NdChar <= 4e+32: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_4 elif NdChar <= 4e+69: tmp = t_3 elif NdChar <= 1.95e+131: tmp = t_1 + t_4 elif NdChar <= 1.32e+147: tmp = t_3 else: tmp = t_2 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) t_2 = Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_3 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_4 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (NdChar <= -6.2e-124) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 3.9e-191) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); elseif (NdChar <= 1.3e-116) tmp = t_3; elseif (NdChar <= 9.6e-42) tmp = Float64(t_0 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); elseif (NdChar <= 0.00062) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (NdChar <= 4e+32) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_4); elseif (NdChar <= 4e+69) tmp = t_3; elseif (NdChar <= 1.95e+131) tmp = Float64(t_1 + t_4); elseif (NdChar <= 1.32e+147) tmp = t_3; else tmp = Float64(t_2 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp((Ec / -KbT))); t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_3 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); t_4 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if (NdChar <= -6.2e-124) tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 3.9e-191) tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); elseif (NdChar <= 1.3e-116) tmp = t_3; elseif (NdChar <= 9.6e-42) tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))); elseif (NdChar <= 0.00062) tmp = t_1 + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (NdChar <= 4e+32) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_4; elseif (NdChar <= 4e+69) tmp = t_3; elseif (NdChar <= 1.95e+131) tmp = t_1 + t_4; elseif (NdChar <= 1.32e+147) tmp = t_3; else tmp = t_2 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6.2e-124], N[(t$95$2 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.9e-191], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.3e-116], t$95$3, If[LessEqual[NdChar, 9.6e-42], N[(t$95$0 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 0.00062], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4e+32], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$4), $MachinePrecision], If[LessEqual[NdChar, 4e+69], t$95$3, If[LessEqual[NdChar, 1.95e+131], N[(t$95$1 + t$95$4), $MachinePrecision], If[LessEqual[NdChar, 1.32e+147], t$95$3, N[(t$95$2 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
t_2 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_4 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;NdChar \leq -6.2 \cdot 10^{-124}:\\
\;\;\;\;t\_2 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 3.9 \cdot 10^{-191}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.3 \cdot 10^{-116}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NdChar \leq 9.6 \cdot 10^{-42}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 0.00062:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 4 \cdot 10^{+32}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t\_4\\
\mathbf{elif}\;NdChar \leq 4 \cdot 10^{+69}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NdChar \leq 1.95 \cdot 10^{+131}:\\
\;\;\;\;t\_1 + t\_4\\
\mathbf{elif}\;NdChar \leq 1.32 \cdot 10^{+147}:\\
\;\;\;\;t\_3\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -6.1999999999999996e-124Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 72.5%
if -6.1999999999999996e-124 < NdChar < 3.8999999999999999e-191Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.5%
if 3.8999999999999999e-191 < NdChar < 1.3e-116 or 4.00000000000000021e32 < NdChar < 4.0000000000000003e69 or 1.95e131 < NdChar < 1.32000000000000006e147Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 87.3%
Taylor expanded in Ev around inf 68.2%
if 1.3e-116 < NdChar < 9.60000000000000011e-42Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 70.1%
mul-1-neg70.1%
distribute-neg-frac270.1%
Simplified70.1%
Taylor expanded in Ec around 0 75.4%
mul-1-neg75.4%
unsub-neg75.4%
Simplified75.4%
if 9.60000000000000011e-42 < NdChar < 6.2e-4Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 86.2%
mul-1-neg86.2%
distribute-neg-frac286.2%
Simplified86.2%
Taylor expanded in Vef around inf 72.1%
if 6.2e-4 < NdChar < 4.00000000000000021e32Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.4%
Taylor expanded in EAccept around inf 74.2%
if 4.0000000000000003e69 < NdChar < 1.95e131Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.3%
mul-1-neg78.3%
distribute-neg-frac278.3%
Simplified78.3%
Taylor expanded in EAccept around inf 58.7%
if 1.32000000000000006e147 < NdChar Initial program 99.7%
Simplified99.7%
clear-num99.6%
associate-/r/99.7%
add-exp-log99.7%
rec-exp99.7%
log1p-expm1-u99.7%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.7%
log1p-undefine99.7%
*-un-lft-identity99.7%
pow-exp99.7%
add-exp-log99.8%
pow-exp99.7%
*-un-lft-identity99.7%
associate--l+99.7%
Applied egg-rr99.7%
Taylor expanded in KbT around inf 83.2%
Final simplification75.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= NdChar -2.6e-124)
(+
t_1
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NdChar 5.8e-192)
(+
t_0
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
(if (<= NdChar 1.56e-116)
t_2
(if (<= NdChar 1.75e-29)
(+ t_0 (/ NdChar (- 2.0 (/ Ec KbT))))
(if (<= NdChar 1.45e+131)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= NdChar 9.5e+146) t_2 (+ t_1 (/ NaChar 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_2 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (NdChar <= -2.6e-124) {
tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 5.8e-192) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.56e-116) {
tmp = t_2;
} else if (NdChar <= 1.75e-29) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 1.45e+131) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (NdChar <= 9.5e+146) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
t_2 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
if (ndchar <= (-2.6d-124)) then
tmp = t_1 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 5.8d-192) then
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else if (ndchar <= 1.56d-116) then
tmp = t_2
else if (ndchar <= 1.75d-29) then
tmp = t_0 + (ndchar / (2.0d0 - (ec / kbt)))
else if (ndchar <= 1.45d+131) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (ndchar <= 9.5d+146) then
tmp = t_2
else
tmp = t_1 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_2 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (NdChar <= -2.6e-124) {
tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 5.8e-192) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.56e-116) {
tmp = t_2;
} else if (NdChar <= 1.75e-29) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 1.45e+131) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (NdChar <= 9.5e+146) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_2 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if NdChar <= -2.6e-124: tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 5.8e-192: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) elif NdChar <= 1.56e-116: tmp = t_2 elif NdChar <= 1.75e-29: tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))) elif NdChar <= 1.45e+131: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif NdChar <= 9.5e+146: tmp = t_2 else: tmp = t_1 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (NdChar <= -2.6e-124) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 5.8e-192) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); elseif (NdChar <= 1.56e-116) tmp = t_2; elseif (NdChar <= 1.75e-29) tmp = Float64(t_0 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); elseif (NdChar <= 1.45e+131) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (NdChar <= 9.5e+146) tmp = t_2; else tmp = Float64(t_1 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_2 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (NdChar <= -2.6e-124) tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 5.8e-192) tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); elseif (NdChar <= 1.56e-116) tmp = t_2; elseif (NdChar <= 1.75e-29) tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))); elseif (NdChar <= 1.45e+131) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (NdChar <= 9.5e+146) tmp = t_2; else tmp = t_1 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.6e-124], N[(t$95$1 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.8e-192], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.56e-116], t$95$2, If[LessEqual[NdChar, 1.75e-29], N[(t$95$0 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.45e+131], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.5e+146], t$95$2, N[(t$95$1 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;NdChar \leq -2.6 \cdot 10^{-124}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{-192}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.56 \cdot 10^{-116}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 1.75 \cdot 10^{-29}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.45 \cdot 10^{+131}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+146}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -2.6e-124Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 72.5%
if -2.6e-124 < NdChar < 5.80000000000000033e-192Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.5%
if 5.80000000000000033e-192 < NdChar < 1.55999999999999997e-116 or 1.45000000000000005e131 < NdChar < 9.49999999999999926e146Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.4%
Taylor expanded in Ev around inf 68.5%
if 1.55999999999999997e-116 < NdChar < 1.7499999999999999e-29Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 73.1%
mul-1-neg73.1%
distribute-neg-frac273.1%
Simplified73.1%
Taylor expanded in Ec around 0 68.2%
mul-1-neg68.2%
unsub-neg68.2%
Simplified68.2%
if 1.7499999999999999e-29 < NdChar < 1.45000000000000005e131Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 71.9%
mul-1-neg71.9%
distribute-neg-frac271.9%
Simplified71.9%
Taylor expanded in EAccept around inf 59.5%
if 9.49999999999999926e146 < NdChar Initial program 99.7%
Simplified99.7%
clear-num99.6%
associate-/r/99.7%
add-exp-log99.7%
rec-exp99.7%
log1p-expm1-u99.7%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.7%
log1p-undefine99.7%
*-un-lft-identity99.7%
pow-exp99.7%
add-exp-log99.8%
pow-exp99.7%
*-un-lft-identity99.7%
associate--l+99.7%
Applied egg-rr99.7%
Taylor expanded in KbT around inf 83.2%
Final simplification73.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (- 2.0 (/ Ec KbT)))))
(t_2
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
(if (<= NdChar -1.22e-126)
(+
t_2
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NdChar 4.6e-192)
(+
t_0
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
(if (<= NdChar 1.65e-116)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= NdChar 3.3e-32)
t_1
(if (<= NdChar 0.00028)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 2.7e+32)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= NdChar 4.8e+144) t_1 (+ t_2 (/ NaChar 2.0)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT)));
double t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double tmp;
if (NdChar <= -1.22e-126) {
tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 4.6e-192) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.65e-116) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (NdChar <= 3.3e-32) {
tmp = t_1;
} else if (NdChar <= 0.00028) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 2.7e+32) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (NdChar <= 4.8e+144) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (2.0d0 - (ec / kbt)))
t_2 = ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
if (ndchar <= (-1.22d-126)) then
tmp = t_2 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 4.6d-192) then
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else if (ndchar <= 1.65d-116) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ndchar <= 3.3d-32) then
tmp = t_1
else if (ndchar <= 0.00028d0) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 2.7d+32) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (ndchar <= 4.8d+144) then
tmp = t_1
else
tmp = t_2 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT)));
double t_2 = NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double tmp;
if (NdChar <= -1.22e-126) {
tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 4.6e-192) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.65e-116) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (NdChar <= 3.3e-32) {
tmp = t_1;
} else if (NdChar <= 0.00028) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 2.7e+32) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (NdChar <= 4.8e+144) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT))) t_2 = NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) tmp = 0 if NdChar <= -1.22e-126: tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 4.6e-192: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) elif NdChar <= 1.65e-116: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif NdChar <= 3.3e-32: tmp = t_1 elif NdChar <= 0.00028: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 2.7e+32: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif NdChar <= 4.8e+144: tmp = t_1 else: tmp = t_2 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))) t_2 = Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) tmp = 0.0 if (NdChar <= -1.22e-126) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 4.6e-192) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); elseif (NdChar <= 1.65e-116) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (NdChar <= 3.3e-32) tmp = t_1; elseif (NdChar <= 0.00028) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 2.7e+32) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (NdChar <= 4.8e+144) tmp = t_1; else tmp = Float64(t_2 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT))); t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); tmp = 0.0; if (NdChar <= -1.22e-126) tmp = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 4.6e-192) tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); elseif (NdChar <= 1.65e-116) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (NdChar <= 3.3e-32) tmp = t_1; elseif (NdChar <= 0.00028) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 2.7e+32) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (NdChar <= 4.8e+144) tmp = t_1; else tmp = t_2 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.22e-126], N[(t$95$2 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.6e-192], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.65e-116], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.3e-32], t$95$1, If[LessEqual[NdChar, 0.00028], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.7e+32], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.8e+144], t$95$1, N[(t$95$2 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
t_2 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -1.22 \cdot 10^{-126}:\\
\;\;\;\;t\_2 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 4.6 \cdot 10^{-192}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.65 \cdot 10^{-116}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{-32}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 0.00028:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 2.7 \cdot 10^{+32}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 4.8 \cdot 10^{+144}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -1.21999999999999996e-126Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 72.5%
if -1.21999999999999996e-126 < NdChar < 4.60000000000000037e-192Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.5%
if 4.60000000000000037e-192 < NdChar < 1.65e-116Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.0%
Taylor expanded in Ev around inf 65.6%
if 1.65e-116 < NdChar < 3.30000000000000025e-32 or 2.70000000000000013e32 < NdChar < 4.8000000000000001e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 75.4%
mul-1-neg75.4%
distribute-neg-frac275.4%
Simplified75.4%
Taylor expanded in Ec around 0 65.9%
mul-1-neg65.9%
unsub-neg65.9%
Simplified65.9%
if 3.30000000000000025e-32 < NdChar < 2.7999999999999998e-4Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 83.9%
mul-1-neg83.9%
distribute-neg-frac283.9%
Simplified83.9%
Taylor expanded in EAccept around inf 67.5%
Taylor expanded in EAccept around 0 68.3%
if 2.7999999999999998e-4 < NdChar < 2.70000000000000013e32Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.4%
Taylor expanded in EAccept around inf 74.2%
if 4.8000000000000001e144 < NdChar Initial program 99.7%
Simplified99.7%
clear-num99.6%
associate-/r/99.7%
add-exp-log99.7%
rec-exp99.7%
log1p-expm1-u99.7%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.7%
log1p-undefine99.7%
*-un-lft-identity99.7%
pow-exp99.7%
add-exp-log99.8%
pow-exp99.7%
*-un-lft-identity99.7%
associate--l+99.7%
Applied egg-rr99.7%
Taylor expanded in KbT around inf 83.2%
Final simplification74.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (- 2.0 (/ Ec KbT)))))
(t_2
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_3
(+
t_2
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT)))))
(t_4
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= NdChar -5.8e-126)
t_3
(if (<= NdChar 1.4e-191)
(+
t_0
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
(if (<= NdChar 1.35e-116)
t_4
(if (<= NdChar 1.16e-32)
t_1
(if (<= NdChar 4.3e+30)
t_3
(if (<= NdChar 3.9e+46)
t_4
(if (<= NdChar 6.8e+144) t_1 (+ t_2 (/ NaChar 2.0)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT)));
double t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_3 = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (NdChar <= -5.8e-126) {
tmp = t_3;
} else if (NdChar <= 1.4e-191) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.35e-116) {
tmp = t_4;
} else if (NdChar <= 1.16e-32) {
tmp = t_1;
} else if (NdChar <= 4.3e+30) {
tmp = t_3;
} else if (NdChar <= 3.9e+46) {
tmp = t_4;
} else if (NdChar <= 6.8e+144) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (2.0d0 - (ec / kbt)))
t_2 = ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
t_3 = t_2 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
t_4 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
if (ndchar <= (-5.8d-126)) then
tmp = t_3
else if (ndchar <= 1.4d-191) then
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else if (ndchar <= 1.35d-116) then
tmp = t_4
else if (ndchar <= 1.16d-32) then
tmp = t_1
else if (ndchar <= 4.3d+30) then
tmp = t_3
else if (ndchar <= 3.9d+46) then
tmp = t_4
else if (ndchar <= 6.8d+144) then
tmp = t_1
else
tmp = t_2 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT)));
double t_2 = NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_3 = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (NdChar <= -5.8e-126) {
tmp = t_3;
} else if (NdChar <= 1.4e-191) {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 1.35e-116) {
tmp = t_4;
} else if (NdChar <= 1.16e-32) {
tmp = t_1;
} else if (NdChar <= 4.3e+30) {
tmp = t_3;
} else if (NdChar <= 3.9e+46) {
tmp = t_4;
} else if (NdChar <= 6.8e+144) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT))) t_2 = NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_3 = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) t_4 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if NdChar <= -5.8e-126: tmp = t_3 elif NdChar <= 1.4e-191: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) elif NdChar <= 1.35e-116: tmp = t_4 elif NdChar <= 1.16e-32: tmp = t_1 elif NdChar <= 4.3e+30: tmp = t_3 elif NdChar <= 3.9e+46: tmp = t_4 elif NdChar <= 6.8e+144: tmp = t_1 else: tmp = t_2 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))) t_2 = Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_3 = Float64(t_2 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (NdChar <= -5.8e-126) tmp = t_3; elseif (NdChar <= 1.4e-191) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); elseif (NdChar <= 1.35e-116) tmp = t_4; elseif (NdChar <= 1.16e-32) tmp = t_1; elseif (NdChar <= 4.3e+30) tmp = t_3; elseif (NdChar <= 3.9e+46) tmp = t_4; elseif (NdChar <= 6.8e+144) tmp = t_1; else tmp = Float64(t_2 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (2.0 - (Ec / KbT))); t_2 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_3 = t_2 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); t_4 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (NdChar <= -5.8e-126) tmp = t_3; elseif (NdChar <= 1.4e-191) tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); elseif (NdChar <= 1.35e-116) tmp = t_4; elseif (NdChar <= 1.16e-32) tmp = t_1; elseif (NdChar <= 4.3e+30) tmp = t_3; elseif (NdChar <= 3.9e+46) tmp = t_4; elseif (NdChar <= 6.8e+144) tmp = t_1; else tmp = t_2 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.8e-126], t$95$3, If[LessEqual[NdChar, 1.4e-191], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.35e-116], t$95$4, If[LessEqual[NdChar, 1.16e-32], t$95$1, If[LessEqual[NdChar, 4.3e+30], t$95$3, If[LessEqual[NdChar, 3.9e+46], t$95$4, If[LessEqual[NdChar, 6.8e+144], t$95$1, N[(t$95$2 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
t_2 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_3 := t\_2 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;NdChar \leq -5.8 \cdot 10^{-126}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NdChar \leq 1.4 \cdot 10^{-191}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.35 \cdot 10^{-116}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;NdChar \leq 1.16 \cdot 10^{-32}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 4.3 \cdot 10^{+30}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NdChar \leq 3.9 \cdot 10^{+46}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;NdChar \leq 6.8 \cdot 10^{+144}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -5.79999999999999975e-126 or 1.16000000000000001e-32 < NdChar < 4.3e30Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 70.8%
if -5.79999999999999975e-126 < NdChar < 1.40000000000000006e-191Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.5%
if 1.40000000000000006e-191 < NdChar < 1.35e-116 or 4.3e30 < NdChar < 3.89999999999999995e46Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.6%
Taylor expanded in Ev around inf 58.0%
if 1.35e-116 < NdChar < 1.16000000000000001e-32 or 3.89999999999999995e46 < NdChar < 6.7999999999999998e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 73.4%
mul-1-neg73.4%
distribute-neg-frac273.4%
Simplified73.4%
Taylor expanded in Ec around 0 68.3%
mul-1-neg68.3%
unsub-neg68.3%
Simplified68.3%
if 6.7999999999999998e144 < NdChar Initial program 99.7%
Simplified99.7%
clear-num99.6%
associate-/r/99.7%
add-exp-log99.7%
rec-exp99.7%
log1p-expm1-u99.7%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.7%
log1p-undefine99.7%
*-un-lft-identity99.7%
pow-exp99.7%
add-exp-log99.8%
pow-exp99.7%
*-un-lft-identity99.7%
associate--l+99.7%
Applied egg-rr99.7%
Taylor expanded in KbT around inf 83.2%
Final simplification73.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))))
(if (<= Ec -7.5e+155)
t_1
(if (<= Ec -1.25e-217)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Ec 1.8e-64)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((Ec / -KbT))));
double tmp;
if (Ec <= -7.5e+155) {
tmp = t_1;
} else if (Ec <= -1.25e-217) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Ec <= 1.8e-64) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((ec / -kbt))))
if (ec <= (-7.5d+155)) then
tmp = t_1
else if (ec <= (-1.25d-217)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ec <= 1.8d-64) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
double tmp;
if (Ec <= -7.5e+155) {
tmp = t_1;
} else if (Ec <= -1.25e-217) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Ec <= 1.8e-64) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) tmp = 0 if Ec <= -7.5e+155: tmp = t_1 elif Ec <= -1.25e-217: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Ec <= 1.8e-64: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))) tmp = 0.0 if (Ec <= -7.5e+155) tmp = t_1; elseif (Ec <= -1.25e-217) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Ec <= 1.8e-64) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((Ec / -KbT)))); tmp = 0.0; if (Ec <= -7.5e+155) tmp = t_1; elseif (Ec <= -1.25e-217) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Ec <= 1.8e-64) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ec, -7.5e+155], t$95$1, If[LessEqual[Ec, -1.25e-217], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ec, 1.8e-64], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{if}\;Ec \leq -7.5 \cdot 10^{+155}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Ec \leq -1.25 \cdot 10^{-217}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Ec \leq 1.8 \cdot 10^{-64}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Ec < -7.4999999999999999e155 or 1.7999999999999999e-64 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 85.4%
mul-1-neg85.4%
distribute-neg-frac285.4%
Simplified85.4%
if -7.4999999999999999e155 < Ec < -1.2500000000000001e-217Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 82.0%
if -1.2500000000000001e-217 < Ec < 1.7999999999999999e-64Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Final simplification84.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -7e+112)
t_1
(if (<= Vef -2.22e+15)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= Vef 3.5e+42)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+112) {
tmp = t_1;
} else if (Vef <= -2.22e+15) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (Vef <= 3.5e+42) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-7d+112)) then
tmp = t_1
else if (vef <= (-2.22d+15)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (vef <= 3.5d+42) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+112) {
tmp = t_1;
} else if (Vef <= -2.22e+15) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (Vef <= 3.5e+42) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -7e+112: tmp = t_1 elif Vef <= -2.22e+15: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif Vef <= 3.5e+42: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -7e+112) tmp = t_1; elseif (Vef <= -2.22e+15) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (Vef <= 3.5e+42) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -7e+112) tmp = t_1; elseif (Vef <= -2.22e+15) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (Vef <= 3.5e+42) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7e+112], t$95$1, If[LessEqual[Vef, -2.22e+15], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.5e+42], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+112}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -2.22 \cdot 10^{+15}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;Vef \leq 3.5 \cdot 10^{+42}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -6.99999999999999994e112 or 3.50000000000000023e42 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 83.4%
if -6.99999999999999994e112 < Vef < -2.22e15Initial program 99.6%
Simplified99.6%
Taylor expanded in mu around inf 86.0%
Taylor expanded in mu around inf 79.1%
associate-*r/79.1%
mul-1-neg79.1%
Simplified79.1%
if -2.22e15 < Vef < 3.50000000000000023e42Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.7%
Final simplification80.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))))
(if (or (<= mu -900000.0) (not (<= mu 3.5e+56)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double tmp;
if ((mu <= -900000.0) || !(mu <= 3.5e+56)) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
if ((mu <= (-900000.0d0)) .or. (.not. (mu <= 3.5d+56))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double tmp;
if ((mu <= -900000.0) || !(mu <= 3.5e+56)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) tmp = 0 if (mu <= -900000.0) or not (mu <= 3.5e+56): tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((mu <= -900000.0) || !(mu <= 3.5e+56)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); tmp = 0.0; if ((mu <= -900000.0) || ~((mu <= 3.5e+56))) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[mu, -900000.0], N[Not[LessEqual[mu, 3.5e+56]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -900000 \lor \neg \left(mu \leq 3.5 \cdot 10^{+56}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if mu < -9e5 or 3.49999999999999999e56 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 84.9%
if -9e5 < mu < 3.49999999999999999e56Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 79.0%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Ec -4.2e+181) (not (<= Ec 7e+152)))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ec <= (-4.2d+181)) .or. (.not. (ec <= 7d+152))) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Ec <= -4.2e+181) or not (Ec <= 7e+152): tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Ec <= -4.2e+181) || ~((Ec <= 7e+152))) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Ec, -4.2e+181], N[Not[LessEqual[Ec, 7e+152]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -4.2 \cdot 10^{+181} \lor \neg \left(Ec \leq 7 \cdot 10^{+152}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Ec < -4.19999999999999995e181 or 6.99999999999999963e152 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 90.1%
mul-1-neg90.1%
distribute-neg-frac290.1%
Simplified90.1%
Taylor expanded in EAccept around inf 69.9%
if -4.19999999999999995e181 < Ec < 6.99999999999999963e152Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.9%
Final simplification76.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))
(if (<= mu -1.25e+60)
t_0
(if (<= mu 6.2e-188)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 1.4e+92)
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double tmp;
if (mu <= -1.25e+60) {
tmp = t_0;
} else if (mu <= 6.2e-188) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 1.4e+92) {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
if (mu <= (-1.25d+60)) then
tmp = t_0
else if (mu <= 6.2d-188) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 1.4d+92) then
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double tmp;
if (mu <= -1.25e+60) {
tmp = t_0;
} else if (mu <= 6.2e-188) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 1.4e+92) {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) tmp = 0 if mu <= -1.25e+60: tmp = t_0 elif mu <= 6.2e-188: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 1.4e+92: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) tmp = 0.0 if (mu <= -1.25e+60) tmp = t_0; elseif (mu <= 6.2e-188) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 1.4e+92) tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); tmp = 0.0; if (mu <= -1.25e+60) tmp = t_0; elseif (mu <= 6.2e-188) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 1.4e+92) tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.25e+60], t$95$0, If[LessEqual[mu, 6.2e-188], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.4e+92], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{if}\;mu \leq -1.25 \cdot 10^{+60}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 6.2 \cdot 10^{-188}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.4 \cdot 10^{+92}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -1.24999999999999994e60 or 1.4e92 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 88.3%
Taylor expanded in mu around inf 75.2%
associate-*r/75.2%
mul-1-neg75.2%
Simplified75.2%
if -1.24999999999999994e60 < mu < 6.2000000000000004e-188Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 73.7%
Taylor expanded in Ev around inf 66.5%
if 6.2000000000000004e-188 < mu < 1.4e92Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
add-exp-log100.0%
rec-exp100.0%
log1p-expm1-u100.0%
log1p-define100.0%
expm1-log1p-u100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
exp-neg100.0%
log1p-undefine100.0%
*-un-lft-identity100.0%
pow-exp100.0%
add-exp-log100.0%
pow-exp100.0%
*-un-lft-identity100.0%
associate--l+100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 67.6%
Final simplification69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))) (* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (pow E (/ (+ EDonor (- (+ mu Vef) Ec)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + pow(((double) M_E), ((EDonor + ((mu + Vef) - Ec)) / KbT))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.pow(Math.E, ((EDonor + ((mu + Vef) - Ec)) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.pow(math.e, ((EDonor + ((mu + Vef) - Ec)) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + (exp(1) ^ Float64(Float64(EDonor + Float64(Float64(mu + Vef) - Ec)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (2.71828182845904523536 ^ ((EDonor + ((mu + Vef) - Ec)) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Power[E, N[(N[(EDonor + N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + {e}^{\left(\frac{EDonor + \left(\left(mu + Vef\right) - Ec\right)}{KbT}\right)}}
\end{array}
Initial program 99.9%
Simplified99.9%
*-un-lft-identity99.9%
exp-prod99.9%
associate-+r-99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
(if (<= NdChar -3.3e+54)
t_0
(if (<= NdChar -7.5e-59)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar -1.05e-123)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 1.5e+144)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.3e+54) {
tmp = t_0;
} else if (NdChar <= -7.5e-59) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -1.05e-123) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.5e+144) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
if (ndchar <= (-3.3d+54)) then
tmp = t_0
else if (ndchar <= (-7.5d-59)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= (-1.05d-123)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 1.5d+144) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.3e+54) {
tmp = t_0;
} else if (NdChar <= -7.5e-59) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -1.05e-123) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.5e+144) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.3e+54: tmp = t_0 elif NdChar <= -7.5e-59: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= -1.05e-123: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 1.5e+144: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.3e+54) tmp = t_0; elseif (NdChar <= -7.5e-59) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= -1.05e-123) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 1.5e+144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.3e+54) tmp = t_0; elseif (NdChar <= -7.5e-59) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= -1.05e-123) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 1.5e+144) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.3e+54], t$95$0, If[LessEqual[NdChar, -7.5e-59], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.05e-123], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e+144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.3 \cdot 10^{+54}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -7.5 \cdot 10^{-59}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -1.05 \cdot 10^{-123}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{+144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -3.3e54 or 1.49999999999999995e144 < NdChar Initial program 99.9%
Simplified99.9%
clear-num99.7%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 74.9%
if -3.3e54 < NdChar < -7.50000000000000019e-59Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 70.7%
mul-1-neg70.7%
distribute-neg-frac270.7%
Simplified70.7%
Taylor expanded in EAccept around inf 63.3%
Taylor expanded in EAccept around 0 52.3%
if -7.50000000000000019e-59 < NdChar < -1.05e-123Initial program 99.4%
Simplified99.4%
Taylor expanded in mu around inf 64.5%
Taylor expanded in KbT around inf 57.0%
if -1.05e-123 < NdChar < 1.49999999999999995e144Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
(if (<= NdChar -3.4e+54)
t_0
(if (<= NdChar -5.2e-68)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (or (<= NdChar -8.2e-104)
(and (not (<= NdChar 3.5e-156))
(or (<= NdChar 1.65e-116) (not (<= NdChar 1.85e+144)))))
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar (- 2.0 (/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.4e+54) {
tmp = t_0;
} else if (NdChar <= -5.2e-68) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= -8.2e-104) || (!(NdChar <= 3.5e-156) && ((NdChar <= 1.65e-116) || !(NdChar <= 1.85e+144)))) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
if (ndchar <= (-3.4d+54)) then
tmp = t_0
else if (ndchar <= (-5.2d-68)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if ((ndchar <= (-8.2d-104)) .or. (.not. (ndchar <= 3.5d-156)) .and. (ndchar <= 1.65d-116) .or. (.not. (ndchar <= 1.85d+144))) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.4e+54) {
tmp = t_0;
} else if (NdChar <= -5.2e-68) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= -8.2e-104) || (!(NdChar <= 3.5e-156) && ((NdChar <= 1.65e-116) || !(NdChar <= 1.85e+144)))) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.4e+54: tmp = t_0 elif NdChar <= -5.2e-68: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif (NdChar <= -8.2e-104) or (not (NdChar <= 3.5e-156) and ((NdChar <= 1.65e-116) or not (NdChar <= 1.85e+144))): tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.4e+54) tmp = t_0; elseif (NdChar <= -5.2e-68) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif ((NdChar <= -8.2e-104) || (!(NdChar <= 3.5e-156) && ((NdChar <= 1.65e-116) || !(NdChar <= 1.85e+144)))) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.4e+54) tmp = t_0; elseif (NdChar <= -5.2e-68) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif ((NdChar <= -8.2e-104) || (~((NdChar <= 3.5e-156)) && ((NdChar <= 1.65e-116) || ~((NdChar <= 1.85e+144))))) tmp = t_0; else tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.4e+54], t$95$0, If[LessEqual[NdChar, -5.2e-68], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -8.2e-104], And[N[Not[LessEqual[NdChar, 3.5e-156]], $MachinePrecision], Or[LessEqual[NdChar, 1.65e-116], N[Not[LessEqual[NdChar, 1.85e+144]], $MachinePrecision]]]], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.4 \cdot 10^{+54}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -5.2 \cdot 10^{-68}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -8.2 \cdot 10^{-104} \lor \neg \left(NdChar \leq 3.5 \cdot 10^{-156}\right) \land \left(NdChar \leq 1.65 \cdot 10^{-116} \lor \neg \left(NdChar \leq 1.85 \cdot 10^{+144}\right)\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -3.4000000000000001e54 or -5.1999999999999996e-68 < NdChar < -8.19999999999999968e-104 or 3.4999999999999999e-156 < NdChar < 1.65e-116 or 1.8499999999999998e144 < NdChar Initial program 99.8%
Simplified99.8%
clear-num99.7%
associate-/r/99.8%
add-exp-log99.8%
rec-exp99.8%
log1p-expm1-u99.8%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.8%
log1p-undefine99.8%
*-un-lft-identity99.8%
pow-exp99.8%
add-exp-log99.8%
pow-exp99.8%
*-un-lft-identity99.8%
associate--l+99.8%
Applied egg-rr99.8%
Taylor expanded in KbT around inf 73.5%
if -3.4000000000000001e54 < NdChar < -5.1999999999999996e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 68.3%
mul-1-neg68.3%
distribute-neg-frac268.3%
Simplified68.3%
Taylor expanded in EAccept around inf 61.0%
Taylor expanded in EAccept around 0 50.4%
if -8.19999999999999968e-104 < NdChar < 3.4999999999999999e-156 or 1.65e-116 < NdChar < 1.8499999999999998e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.6%
mul-1-neg78.6%
distribute-neg-frac278.6%
Simplified78.6%
Taylor expanded in Ec around 0 65.7%
mul-1-neg65.7%
unsub-neg65.7%
Simplified65.7%
Final simplification67.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_1
(+
t_0
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT)))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))))
(if (<= NdChar -1.1e-124)
t_1
(if (<= NdChar 4.6e-163)
(+
t_2
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
(if (<= NdChar 5.1e-109)
t_1
(if (<= NdChar 2.7e+144)
(+ t_2 (/ NdChar (- 2.0 (/ Ec KbT))))
(+ t_0 (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_1 = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_2 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -1.1e-124) {
tmp = t_1;
} else if (NdChar <= 4.6e-163) {
tmp = t_2 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 5.1e-109) {
tmp = t_1;
} else if (NdChar <= 2.7e+144) {
tmp = t_2 + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
t_1 = t_0 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
t_2 = nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))
if (ndchar <= (-1.1d-124)) then
tmp = t_1
else if (ndchar <= 4.6d-163) then
tmp = t_2 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else if (ndchar <= 5.1d-109) then
tmp = t_1
else if (ndchar <= 2.7d+144) then
tmp = t_2 + (ndchar / (2.0d0 - (ec / kbt)))
else
tmp = t_0 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_1 = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_2 = NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -1.1e-124) {
tmp = t_1;
} else if (NdChar <= 4.6e-163) {
tmp = t_2 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else if (NdChar <= 5.1e-109) {
tmp = t_1;
} else if (NdChar <= 2.7e+144) {
tmp = t_2 + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_1 = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) t_2 = NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT))) tmp = 0 if NdChar <= -1.1e-124: tmp = t_1 elif NdChar <= 4.6e-163: tmp = t_2 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) elif NdChar <= 5.1e-109: tmp = t_1 elif NdChar <= 2.7e+144: tmp = t_2 + (NdChar / (2.0 - (Ec / KbT))) else: tmp = t_0 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NdChar <= -1.1e-124) tmp = t_1; elseif (NdChar <= 4.6e-163) tmp = Float64(t_2 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); elseif (NdChar <= 5.1e-109) tmp = t_1; elseif (NdChar <= 2.7e+144) tmp = Float64(t_2 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); else tmp = Float64(t_0 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_1 = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); t_2 = NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT))); tmp = 0.0; if (NdChar <= -1.1e-124) tmp = t_1; elseif (NdChar <= 4.6e-163) tmp = t_2 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); elseif (NdChar <= 5.1e-109) tmp = t_1; elseif (NdChar <= 2.7e+144) tmp = t_2 + (NdChar / (2.0 - (Ec / KbT))); else tmp = t_0 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.1e-124], t$95$1, If[LessEqual[NdChar, 4.6e-163], N[(t$95$2 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.1e-109], t$95$1, If[LessEqual[NdChar, 2.7e+144], N[(t$95$2 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -1.1 \cdot 10^{-124}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 4.6 \cdot 10^{-163}:\\
\;\;\;\;t\_2 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 5.1 \cdot 10^{-109}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 2.7 \cdot 10^{+144}:\\
\;\;\;\;t\_2 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -1.0999999999999999e-124 or 4.5999999999999999e-163 < NdChar < 5.10000000000000041e-109Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 73.4%
if -1.0999999999999999e-124 < NdChar < 4.5999999999999999e-163Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.7%
if 5.10000000000000041e-109 < NdChar < 2.70000000000000015e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 72.6%
mul-1-neg72.6%
distribute-neg-frac272.6%
Simplified72.6%
Taylor expanded in Ec around 0 57.8%
mul-1-neg57.8%
unsub-neg57.8%
Simplified57.8%
if 2.70000000000000015e144 < NdChar Initial program 99.7%
Simplified99.7%
clear-num99.6%
associate-/r/99.7%
add-exp-log99.7%
rec-exp99.7%
log1p-expm1-u99.7%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.7%
log1p-undefine99.7%
*-un-lft-identity99.7%
pow-exp99.7%
add-exp-log99.8%
pow-exp99.7%
*-un-lft-identity99.7%
associate--l+99.7%
Applied egg-rr99.7%
Taylor expanded in KbT around inf 83.2%
Final simplification72.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
(if (<= NdChar -3.5e+54)
t_0
(if (<= NdChar -9.5e-60)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar -6.1e-99)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 7.6e+146)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar (- 2.0 (/ Ec KbT))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.5e+54) {
tmp = t_0;
} else if (NdChar <= -9.5e-60) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -6.1e-99) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 7.6e+146) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
if (ndchar <= (-3.5d+54)) then
tmp = t_0
else if (ndchar <= (-9.5d-60)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= (-6.1d-99)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 7.6d+146) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.5e+54) {
tmp = t_0;
} else if (NdChar <= -9.5e-60) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -6.1e-99) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 7.6e+146) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.5e+54: tmp = t_0 elif NdChar <= -9.5e-60: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= -6.1e-99: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 7.6e+146: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.5e+54) tmp = t_0; elseif (NdChar <= -9.5e-60) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= -6.1e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 7.6e+146) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.5e+54) tmp = t_0; elseif (NdChar <= -9.5e-60) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= -6.1e-99) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 7.6e+146) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.5e+54], t$95$0, If[LessEqual[NdChar, -9.5e-60], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -6.1e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 7.6e+146], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.5 \cdot 10^{+54}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -9.5 \cdot 10^{-60}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -6.1 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 7.6 \cdot 10^{+146}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -3.5000000000000001e54 or 7.59999999999999958e146 < NdChar Initial program 99.9%
Simplified99.9%
clear-num99.7%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 74.9%
if -3.5000000000000001e54 < NdChar < -9.49999999999999958e-60Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 70.7%
mul-1-neg70.7%
distribute-neg-frac270.7%
Simplified70.7%
Taylor expanded in EAccept around inf 63.3%
Taylor expanded in EAccept around 0 52.3%
if -9.49999999999999958e-60 < NdChar < -6.1000000000000003e-99Initial program 99.2%
Simplified99.2%
Taylor expanded in mu around inf 63.4%
Taylor expanded in KbT around inf 63.3%
if -6.1000000000000003e-99 < NdChar < 7.59999999999999958e146Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.5%
mul-1-neg78.5%
distribute-neg-frac278.5%
Simplified78.5%
Taylor expanded in Ec around 0 63.2%
mul-1-neg63.2%
unsub-neg63.2%
Simplified63.2%
Final simplification66.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
(if (<= NdChar -3.3e+54)
t_0
(if (<= NdChar -2.6e-58)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar -6e-99)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 3.2e+145)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar (- 2.0 (/ Ec KbT))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.3e+54) {
tmp = t_0;
} else if (NdChar <= -2.6e-58) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -6e-99) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.2e+145) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
if (ndchar <= (-3.3d+54)) then
tmp = t_0
else if (ndchar <= (-2.6d-58)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= (-6d-99)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 3.2d+145) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.3e+54) {
tmp = t_0;
} else if (NdChar <= -2.6e-58) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= -6e-99) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.2e+145) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.3e+54: tmp = t_0 elif NdChar <= -2.6e-58: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= -6e-99: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 3.2e+145: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.3e+54) tmp = t_0; elseif (NdChar <= -2.6e-58) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= -6e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 3.2e+145) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.3e+54) tmp = t_0; elseif (NdChar <= -2.6e-58) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= -6e-99) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 3.2e+145) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.3e+54], t$95$0, If[LessEqual[NdChar, -2.6e-58], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -6e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.2e+145], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.3 \cdot 10^{+54}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -2.6 \cdot 10^{-58}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -6 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 3.2 \cdot 10^{+145}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -3.3e54 or 3.20000000000000008e145 < NdChar Initial program 99.9%
Simplified99.9%
clear-num99.7%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 74.9%
if -3.3e54 < NdChar < -2.60000000000000007e-58Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 70.7%
mul-1-neg70.7%
distribute-neg-frac270.7%
Simplified70.7%
Taylor expanded in EAccept around inf 63.3%
Taylor expanded in EAccept around 0 52.3%
if -2.60000000000000007e-58 < NdChar < -6.00000000000000012e-99Initial program 99.2%
Simplified99.2%
Taylor expanded in EDonor around inf 62.9%
Taylor expanded in KbT around inf 62.7%
if -6.00000000000000012e-99 < NdChar < 3.20000000000000008e145Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.5%
mul-1-neg78.5%
distribute-neg-frac278.5%
Simplified78.5%
Taylor expanded in Ec around 0 63.2%
mul-1-neg63.2%
unsub-neg63.2%
Simplified63.2%
Final simplification65.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
(if (<= NdChar -3.5e+54)
t_0
(if (<= NdChar -5.2e-67)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (or (<= NdChar -6.1e-99) (not (<= NdChar 1.5e+144)))
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.5e+54) {
tmp = t_0;
} else if (NdChar <= -5.2e-67) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= -6.1e-99) || !(NdChar <= 1.5e+144)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
if (ndchar <= (-3.5d+54)) then
tmp = t_0
else if (ndchar <= (-5.2d-67)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if ((ndchar <= (-6.1d-99)) .or. (.not. (ndchar <= 1.5d+144))) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.5e+54) {
tmp = t_0;
} else if (NdChar <= -5.2e-67) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= -6.1e-99) || !(NdChar <= 1.5e+144)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.5e+54: tmp = t_0 elif NdChar <= -5.2e-67: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif (NdChar <= -6.1e-99) or not (NdChar <= 1.5e+144): tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.5e+54) tmp = t_0; elseif (NdChar <= -5.2e-67) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif ((NdChar <= -6.1e-99) || !(NdChar <= 1.5e+144)) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.5e+54) tmp = t_0; elseif (NdChar <= -5.2e-67) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif ((NdChar <= -6.1e-99) || ~((NdChar <= 1.5e+144))) tmp = t_0; else tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.5e+54], t$95$0, If[LessEqual[NdChar, -5.2e-67], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -6.1e-99], N[Not[LessEqual[NdChar, 1.5e+144]], $MachinePrecision]], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.5 \cdot 10^{+54}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -5.2 \cdot 10^{-67}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -6.1 \cdot 10^{-99} \lor \neg \left(NdChar \leq 1.5 \cdot 10^{+144}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -3.5000000000000001e54 or -5.1999999999999998e-67 < NdChar < -6.1000000000000003e-99 or 1.49999999999999995e144 < NdChar Initial program 99.8%
Simplified99.8%
clear-num99.7%
associate-/r/99.8%
add-exp-log99.8%
rec-exp99.8%
log1p-expm1-u99.8%
log1p-define99.8%
expm1-log1p-u99.8%
div-inv99.8%
div-inv99.8%
associate-+r-99.8%
Applied egg-rr99.8%
exp-neg99.8%
log1p-undefine99.8%
*-un-lft-identity99.8%
pow-exp99.8%
add-exp-log99.8%
pow-exp99.8%
*-un-lft-identity99.8%
associate--l+99.8%
Applied egg-rr99.8%
Taylor expanded in KbT around inf 73.1%
if -3.5000000000000001e54 < NdChar < -5.1999999999999998e-67Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 68.3%
mul-1-neg68.3%
distribute-neg-frac268.3%
Simplified68.3%
Taylor expanded in EAccept around inf 61.0%
Taylor expanded in EAccept around 0 50.4%
if -6.1000000000000003e-99 < NdChar < 1.49999999999999995e144Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.9%
Taylor expanded in mu around 0 62.1%
+-commutative62.1%
Simplified62.1%
Final simplification64.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -94.0) (not (<= NaChar 7.8e-16)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar 2.0))
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -94.0) || !(NaChar <= 7.8e-16)) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-94.0d0)) .or. (.not. (nachar <= 7.8d-16))) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -94.0) || !(NaChar <= 7.8e-16)) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -94.0) or not (NaChar <= 7.8e-16): tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -94.0) || !(NaChar <= 7.8e-16)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -94.0) || ~((NaChar <= 7.8e-16))) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -94.0], N[Not[LessEqual[NaChar, 7.8e-16]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -94 \lor \neg \left(NaChar \leq 7.8 \cdot 10^{-16}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -94 or 7.79999999999999954e-16 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.2%
if -94 < NaChar < 7.79999999999999954e-16Initial program 99.9%
Simplified99.9%
clear-num99.7%
associate-/r/99.9%
add-exp-log99.9%
rec-exp99.9%
log1p-expm1-u99.9%
log1p-define99.9%
expm1-log1p-u99.9%
div-inv99.9%
div-inv99.9%
associate-+r-99.9%
Applied egg-rr99.9%
exp-neg99.9%
log1p-undefine99.9%
*-un-lft-identity99.9%
pow-exp99.9%
add-exp-log99.9%
pow-exp99.9%
*-un-lft-identity99.9%
associate--l+99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 58.8%
Final simplification59.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -2.7e-127)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.26e+147)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef (- EAccept mu))) KbT))))
(/ NdChar 2.0))
(+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.7e-127) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.26e+147) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-2.7d-127)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.26d+147) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + (eaccept - mu))) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.7e-127) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.26e+147) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.7e-127: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.26e+147: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.7e-127) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.26e+147) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -2.7e-127) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.26e+147) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + (EAccept - mu))) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.7e-127], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.26e+147], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.7 \cdot 10^{-127}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.26 \cdot 10^{+147}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -2.7e-127Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 69.4%
Taylor expanded in EAccept around inf 54.5%
Taylor expanded in EAccept around 0 52.2%
if -2.7e-127 < NdChar < 1.26e147Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.2%
if 1.26e147 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in Ec around inf 66.4%
mul-1-neg66.4%
distribute-neg-frac266.4%
Simplified66.4%
Taylor expanded in KbT around inf 60.5%
Final simplification55.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.2e+26)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NaChar 3.1e-10)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.2e+26) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.1e-10) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-1.2d+26)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 3.1d-10) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.2e+26) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.1e-10) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.2e+26: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NaChar <= 3.1e-10: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.2e+26) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 3.1e-10) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.2e+26) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 3.1e-10) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.2e+26], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.1e-10], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.2 \cdot 10^{+26}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 3.1 \cdot 10^{-10}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.20000000000000002e26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
Taylor expanded in EAccept around inf 48.6%
if -1.20000000000000002e26 < NaChar < 3.10000000000000015e-10Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 64.7%
Taylor expanded in EAccept around inf 50.3%
Taylor expanded in EAccept around 0 47.6%
if 3.10000000000000015e-10 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.1%
Taylor expanded in Ev around inf 54.1%
Final simplification49.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -5.8e-23)
(+ (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))) (/ NdChar 2.0))
(if (<= NaChar 3.1e-12)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5.8e-23) {
tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.1e-12) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-5.8d-23)) then
tmp = (nachar / (1.0d0 + exp((mu / -kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 3.1d-12) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5.8e-23) {
tmp = (NaChar / (1.0 + Math.exp((mu / -KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.1e-12) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -5.8e-23: tmp = (NaChar / (1.0 + math.exp((mu / -KbT)))) + (NdChar / 2.0) elif NaChar <= 3.1e-12: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -5.8e-23) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT))))) + Float64(NdChar / 2.0)); elseif (NaChar <= 3.1e-12) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -5.8e-23) tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar / 2.0); elseif (NaChar <= 3.1e-12) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -5.8e-23], N[(N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.1e-12], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.8 \cdot 10^{-23}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{mu}{-KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 3.1 \cdot 10^{-12}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -5.8000000000000003e-23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in mu around inf 42.6%
associate-*r/62.6%
mul-1-neg62.6%
Simplified42.6%
if -5.8000000000000003e-23 < NaChar < 3.1000000000000001e-12Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 64.8%
Taylor expanded in KbT around inf 45.2%
if 3.1000000000000001e-12 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.4%
Taylor expanded in Ev around inf 53.6%
Final simplification46.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.45e+14)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NaChar 2.9e-12)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.45e+14) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 2.9e-12) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-1.45d+14)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 2.9d-12) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.45e+14) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 2.9e-12) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.45e+14: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NaChar <= 2.9e-12: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.45e+14) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 2.9e-12) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.45e+14) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 2.9e-12) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.45e+14], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.9e-12], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.45 \cdot 10^{+14}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 2.9 \cdot 10^{-12}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.45e14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.9%
Taylor expanded in EAccept around inf 46.6%
if -1.45e14 < NaChar < 2.9000000000000002e-12Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 63.7%
Taylor expanded in KbT around inf 43.5%
if 2.9000000000000002e-12 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.4%
Taylor expanded in Ev around inf 53.6%
Final simplification46.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 7.8e+117) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 7.8e+117) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 7.8d+117) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 7.8e+117) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 7.8e+117: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 7.8e+117) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 7.8e+117) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 7.8e+117], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 7.8 \cdot 10^{+117}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EAccept < 7.79999999999999981e117Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 46.2%
Taylor expanded in Ev around inf 39.0%
if 7.79999999999999981e117 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.3%
Taylor expanded in EAccept around inf 49.5%
Final simplification40.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.1%
Taylor expanded in EAccept around inf 38.2%
Final simplification38.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar 2.0) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / 2.0d0) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / 2.0) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / 2.0) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / 2.0) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{2} + \frac{NdChar}{2}
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.1%
Taylor expanded in KbT around inf 30.1%
Final simplification30.1%
herbie shell --seed 2024096
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:name "Bulmash initializePoisson"
:precision binary64
(+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))