
(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 25 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 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev 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(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + 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(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + exp((((vef + (ev + 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(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -1.7e+22)
t_1
(if (<= NdChar 1.75e-56)
t_0
(if (<= NdChar 5.8e+37)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= NdChar 1.05e+162) t_0 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((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.7e+22) {
tmp = t_1;
} else if (NdChar <= 1.75e-56) {
tmp = t_0;
} else if (NdChar <= 5.8e+37) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (NdChar <= 1.05e+162) {
tmp = t_0;
} 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((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
t_1 = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-1.7d+22)) then
tmp = t_1
else if (ndchar <= 1.75d-56) then
tmp = t_0
else if (ndchar <= 5.8d+37) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ndchar <= 1.05d+162) then
tmp = t_0
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((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.7e+22) {
tmp = t_1;
} else if (NdChar <= 1.75e-56) {
tmp = t_0;
} else if (NdChar <= 5.8e+37) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (NdChar <= 1.05e+162) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) t_1 = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -1.7e+22: tmp = t_1 elif NdChar <= 1.75e-56: tmp = t_0 elif NdChar <= 5.8e+37: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif NdChar <= 1.05e+162: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -1.7e+22) tmp = t_1; elseif (NdChar <= 1.75e-56) tmp = t_0; elseif (NdChar <= 5.8e+37) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (NdChar <= 1.05e+162) tmp = t_0; 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((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -1.7e+22) tmp = t_1; elseif (NdChar <= 1.75e-56) tmp = t_0; elseif (NdChar <= 5.8e+37) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (NdChar <= 1.05e+162) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.7e+22], t$95$1, If[LessEqual[NdChar, 1.75e-56], t$95$0, If[LessEqual[NdChar, 5.8e+37], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e+162], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -1.7 \cdot 10^{+22}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.75 \cdot 10^{-56}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{+37}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+162}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -1.7e22 or 1.05e162 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.6%
Taylor expanded in Ev around 0 61.2%
unpow261.2%
unpow261.2%
Simplified61.2%
div-inv61.2%
times-frac68.5%
Applied egg-rr68.5%
associate-+r+68.5%
times-frac61.2%
unpow261.2%
unpow261.2%
associate-+r+61.2%
unpow261.2%
unpow261.2%
times-frac68.5%
associate-*r*68.5%
Simplified68.5%
Taylor expanded in Ev around inf 70.0%
*-commutative70.0%
unpow270.0%
unpow270.0%
times-frac77.3%
associate-*r*77.3%
Simplified77.3%
if -1.7e22 < NdChar < 1.7499999999999999e-56 or 5.79999999999999957e37 < NdChar < 1.05e162Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.5%
if 1.7499999999999999e-56 < NdChar < 5.79999999999999957e37Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.8%
Taylor expanded in EDonor around inf 71.0%
Final simplification77.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1
(+ t_0 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -5.5e+21)
t_1
(if (<= NdChar 1.75e-56)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= NdChar 4.1e+26)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= NdChar 1.15e+141)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept 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 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -5.5e+21) {
tmp = t_1;
} else if (NdChar <= 1.75e-56) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
} else if (NdChar <= 4.1e+26) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (NdChar <= 1.15e+141) {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / 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 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-5.5d+21)) then
tmp = t_1
else if (ndchar <= 1.75d-56) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (ndchar <= 4.1d+26) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ndchar <= 1.15d+141) then
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / 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 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -5.5e+21) {
tmp = t_1;
} else if (NdChar <= 1.75e-56) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (NdChar <= 4.1e+26) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (NdChar <= 1.15e+141) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -5.5e+21: tmp = t_1 elif NdChar <= 1.75e-56: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) elif NdChar <= 4.1e+26: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif NdChar <= 1.15e+141: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -5.5e+21) tmp = t_1; elseif (NdChar <= 1.75e-56) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (NdChar <= 4.1e+26) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (NdChar <= 1.15e+141) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -5.5e+21) tmp = t_1; elseif (NdChar <= 1.75e-56) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); elseif (NdChar <= 4.1e+26) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (NdChar <= 1.15e+141) tmp = t_0 + (NaChar / (1.0 + exp((EAccept / 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[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.5e+21], t$95$1, If[LessEqual[NdChar, 1.75e-56], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.1e+26], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.15e+141], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -5.5 \cdot 10^{+21}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.75 \cdot 10^{-56}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 4.1 \cdot 10^{+26}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+141}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -5.5e21 or 1.1500000000000001e141 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.4%
Taylor expanded in Ev around 0 58.1%
unpow258.1%
unpow258.1%
Simplified58.1%
div-inv58.1%
times-frac65.0%
Applied egg-rr65.0%
associate-+r+65.0%
times-frac58.1%
unpow258.1%
unpow258.1%
associate-+r+58.1%
unpow258.1%
unpow258.1%
times-frac65.0%
associate-*r*65.0%
Simplified65.0%
Taylor expanded in Ev around inf 68.1%
*-commutative68.1%
unpow268.1%
unpow268.1%
times-frac75.0%
associate-*r*75.0%
Simplified75.0%
if -5.5e21 < NdChar < 1.7499999999999999e-56Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.2%
if 1.7499999999999999e-56 < NdChar < 4.09999999999999983e26Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.7%
Taylor expanded in EDonor around inf 75.7%
if 4.09999999999999983e26 < NdChar < 1.1500000000000001e141Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 84.5%
Final simplification77.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (* (/ Ev KbT) 0.5))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))))
(if (<= mu -1.1e+160)
t_2
(if (<= mu -6.2e+43)
(+
t_3
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT))))))))
(if (<= mu -9.5e-120)
(+
t_0
(* NaChar (/ 1.0 (+ 1.0 (+ (/ Ev KbT) (+ 1.0 (/ (* Ev t_1) KbT)))))))
(if (<= mu 4.6e-264)
(+
t_3
(/
NdChar
(+
1.0
(-
(+ (/ mu KbT) (+ (/ EDonor KbT) (+ 1.0 (/ Vef KbT))))
(/ Ec KbT)))))
(if (<= mu 1.06e+185)
(+ t_0 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) t_1)))))
t_2)))))))
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 + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (Ev / KbT) * 0.5;
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_3 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double tmp;
if (mu <= -1.1e+160) {
tmp = t_2;
} else if (mu <= -6.2e+43) {
tmp = t_3 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
} else if (mu <= -9.5e-120) {
tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_1) / KbT))))));
} else if (mu <= 4.6e-264) {
tmp = t_3 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (mu <= 1.06e+185) {
tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_1))));
} else {
tmp = t_2;
}
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) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = (ev / kbt) * 0.5d0
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_3 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
if (mu <= (-1.1d+160)) then
tmp = t_2
else if (mu <= (-6.2d+43)) then
tmp = t_3 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
else if (mu <= (-9.5d-120)) then
tmp = t_0 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) + (1.0d0 + ((ev * t_1) / kbt))))))
else if (mu <= 4.6d-264) then
tmp = t_3 + (ndchar / (1.0d0 + (((mu / kbt) + ((edonor / kbt) + (1.0d0 + (vef / kbt)))) - (ec / kbt))))
else if (mu <= 1.06d+185) then
tmp = t_0 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * t_1))))
else
tmp = t_2
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 + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (Ev / KbT) * 0.5;
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_3 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double tmp;
if (mu <= -1.1e+160) {
tmp = t_2;
} else if (mu <= -6.2e+43) {
tmp = t_3 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
} else if (mu <= -9.5e-120) {
tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_1) / KbT))))));
} else if (mu <= 4.6e-264) {
tmp = t_3 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (mu <= 1.06e+185) {
tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_1))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = (Ev / KbT) * 0.5 t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_3 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) tmp = 0 if mu <= -1.1e+160: tmp = t_2 elif mu <= -6.2e+43: tmp = t_3 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) elif mu <= -9.5e-120: tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_1) / KbT)))))) elif mu <= 4.6e-264: tmp = t_3 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) elif mu <= 1.06e+185: tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_1)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(Float64(Ev / KbT) * 0.5) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) tmp = 0.0 if (mu <= -1.1e+160) tmp = t_2; elseif (mu <= -6.2e+43) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))); elseif (mu <= -9.5e-120) tmp = Float64(t_0 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(Float64(Ev * t_1) / KbT))))))); elseif (mu <= 4.6e-264) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(mu / KbT) + Float64(Float64(EDonor / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); elseif (mu <= 1.06e+185) tmp = Float64(t_0 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * t_1))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = (Ev / KbT) * 0.5; t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_3 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); tmp = 0.0; if (mu <= -1.1e+160) tmp = t_2; elseif (mu <= -6.2e+43) tmp = t_3 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); elseif (mu <= -9.5e-120) tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_1) / KbT)))))); elseif (mu <= 4.6e-264) tmp = t_3 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))); elseif (mu <= 1.06e+185) tmp = t_0 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_1)))); else tmp = t_2; 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[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]}, Block[{t$95$2 = 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]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.1e+160], t$95$2, If[LessEqual[mu, -6.2e+43], N[(t$95$3 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -9.5e-120], N[(t$95$0 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(N[(Ev * t$95$1), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4.6e-264], N[(t$95$3 + N[(NdChar / N[(1.0 + N[(N[(N[(mu / KbT), $MachinePrecision] + N[(N[(EDonor / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.06e+185], N[(t$95$0 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := \frac{Ev}{KbT} \cdot 0.5\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.1 \cdot 10^{+160}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -6.2 \cdot 10^{+43}:\\
\;\;\;\;t_3 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;mu \leq -9.5 \cdot 10^{-120}:\\
\;\;\;\;t_0 + NaChar \cdot \frac{1}{1 + \left(\frac{Ev}{KbT} + \left(1 + \frac{Ev \cdot t_1}{KbT}\right)\right)}\\
\mathbf{elif}\;mu \leq 4.6 \cdot 10^{-264}:\\
\;\;\;\;t_3 + \frac{NdChar}{1 + \left(\left(\frac{mu}{KbT} + \left(\frac{EDonor}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 1.06 \cdot 10^{+185}:\\
\;\;\;\;t_0 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot t_1}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -1.09999999999999996e160 or 1.06000000000000004e185 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.9%
Taylor expanded in mu around inf 87.0%
neg-mul-187.0%
Simplified87.0%
if -1.09999999999999996e160 < mu < -6.2000000000000003e43Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in mu around inf 87.5%
Taylor expanded in mu around 0 76.9%
unpow276.9%
unpow276.9%
Simplified76.9%
if -6.2000000000000003e43 < mu < -9.49999999999999937e-120Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 86.5%
Taylor expanded in Ev around 0 48.7%
unpow248.7%
unpow248.7%
Simplified48.7%
div-inv48.7%
times-frac66.0%
Applied egg-rr66.0%
associate-+r+66.0%
times-frac48.7%
unpow248.7%
unpow248.7%
associate-+r+48.7%
unpow248.7%
unpow248.7%
times-frac66.0%
associate-*r*66.0%
Simplified66.0%
associate-*r/66.0%
*-commutative66.0%
Applied egg-rr66.0%
if -9.49999999999999937e-120 < mu < 4.60000000000000023e-264Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.3%
associate-+r+32.3%
Simplified75.3%
if 4.60000000000000023e-264 < mu < 1.06000000000000004e185Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.9%
Taylor expanded in Ev around 0 57.7%
unpow257.7%
unpow257.7%
Simplified57.7%
div-inv57.7%
times-frac60.2%
Applied egg-rr60.2%
associate-+r+60.2%
times-frac57.7%
unpow257.7%
unpow257.7%
associate-+r+57.7%
unpow257.7%
unpow257.7%
times-frac60.2%
associate-*r*60.2%
Simplified60.2%
Taylor expanded in Ev around inf 57.5%
*-commutative57.5%
unpow257.5%
unpow257.5%
times-frac60.0%
associate-*r*60.0%
Simplified60.0%
Final simplification71.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2
(+ t_1 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -1.8e+22)
t_2
(if (<= NdChar -4.4e-36)
(+
t_0
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT))))))))
(if (<= NdChar -4.8e-166)
(+ t_1 (/ NaChar (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))
(if (<= NdChar 1.7e-62)
(+
t_0
(/
NdChar
(+
1.0
(-
(+ (/ mu KbT) (+ (/ EDonor KbT) (+ 1.0 (/ Vef KbT))))
(/ Ec KbT)))))
(if (<= NdChar 2.9e+27)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= NdChar 2.05e+127)
(+
t_1
(/
NaChar
(+
(/ EAccept KbT)
(+ 2.0 (* 0.5 (/ (* EAccept EAccept) (* KbT KbT)))))))
t_2))))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.8e+22) {
tmp = t_2;
} else if (NdChar <= -4.4e-36) {
tmp = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
} else if (NdChar <= -4.8e-166) {
tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= 1.7e-62) {
tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (NdChar <= 2.9e+27) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (NdChar <= 2.05e+127) {
tmp = t_1 + (NaChar / ((EAccept / KbT) + (2.0 + (0.5 * ((EAccept * EAccept) / (KbT * KbT))))));
} else {
tmp = t_2;
}
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((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-1.8d+22)) then
tmp = t_2
else if (ndchar <= (-4.4d-36)) then
tmp = t_0 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
else if (ndchar <= (-4.8d-166)) then
tmp = t_1 + (nachar / (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))
else if (ndchar <= 1.7d-62) then
tmp = t_0 + (ndchar / (1.0d0 + (((mu / kbt) + ((edonor / kbt) + (1.0d0 + (vef / kbt)))) - (ec / kbt))))
else if (ndchar <= 2.9d+27) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ndchar <= 2.05d+127) then
tmp = t_1 + (nachar / ((eaccept / kbt) + (2.0d0 + (0.5d0 * ((eaccept * eaccept) / (kbt * kbt))))))
else
tmp = t_2
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.8e+22) {
tmp = t_2;
} else if (NdChar <= -4.4e-36) {
tmp = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
} else if (NdChar <= -4.8e-166) {
tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= 1.7e-62) {
tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (NdChar <= 2.9e+27) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (NdChar <= 2.05e+127) {
tmp = t_1 + (NaChar / ((EAccept / KbT) + (2.0 + (0.5 * ((EAccept * EAccept) / (KbT * KbT))))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -1.8e+22: tmp = t_2 elif NdChar <= -4.4e-36: tmp = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) elif NdChar <= -4.8e-166: tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))) elif NdChar <= 1.7e-62: tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) elif NdChar <= 2.9e+27: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif NdChar <= 2.05e+127: tmp = t_1 + (NaChar / ((EAccept / KbT) + (2.0 + (0.5 * ((EAccept * EAccept) / (KbT * KbT)))))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -1.8e+22) tmp = t_2; elseif (NdChar <= -4.4e-36) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))); elseif (NdChar <= -4.8e-166) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))); elseif (NdChar <= 1.7e-62) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(mu / KbT) + Float64(Float64(EDonor / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); elseif (NdChar <= 2.9e+27) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (NdChar <= 2.05e+127) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + Float64(2.0 + Float64(0.5 * Float64(Float64(EAccept * EAccept) / Float64(KbT * KbT))))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -1.8e+22) tmp = t_2; elseif (NdChar <= -4.4e-36) tmp = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); elseif (NdChar <= -4.8e-166) tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))); elseif (NdChar <= 1.7e-62) tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))); elseif (NdChar <= 2.9e+27) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (NdChar <= 2.05e+127) tmp = t_1 + (NaChar / ((EAccept / KbT) + (2.0 + (0.5 * ((EAccept * EAccept) / (KbT * KbT)))))); else tmp = t_2; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.8e+22], t$95$2, If[LessEqual[NdChar, -4.4e-36], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -4.8e-166], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.7e-62], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(N[(mu / KbT), $MachinePrecision] + N[(N[(EDonor / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.9e+27], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.05e+127], N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + N[(2.0 + N[(0.5 * N[(N[(EAccept * EAccept), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -1.8 \cdot 10^{+22}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq -4.4 \cdot 10^{-36}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;NdChar \leq -4.8 \cdot 10^{-166}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}}\\
\mathbf{elif}\;NdChar \leq 1.7 \cdot 10^{-62}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(\left(\frac{mu}{KbT} + \left(\frac{EDonor}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 2.9 \cdot 10^{+27}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 2.05 \cdot 10^{+127}:\\
\;\;\;\;t_1 + \frac{NaChar}{\frac{EAccept}{KbT} + \left(2 + 0.5 \cdot \frac{EAccept \cdot EAccept}{KbT \cdot KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -1.8e22 or 2.04999999999999991e127 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.8%
Taylor expanded in Ev around 0 58.8%
unpow258.8%
unpow258.8%
Simplified58.8%
div-inv58.8%
times-frac65.6%
Applied egg-rr65.6%
associate-+r+65.6%
times-frac58.8%
unpow258.8%
unpow258.8%
associate-+r+58.8%
unpow258.8%
unpow258.8%
times-frac65.6%
associate-*r*65.6%
Simplified65.6%
Taylor expanded in Ev around inf 68.6%
*-commutative68.6%
unpow268.6%
unpow268.6%
times-frac75.4%
associate-*r*75.4%
Simplified75.4%
if -1.8e22 < NdChar < -4.3999999999999999e-36Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.1%
Taylor expanded in mu around 0 75.0%
unpow275.0%
unpow275.0%
Simplified75.0%
if -4.3999999999999999e-36 < NdChar < -4.7999999999999997e-166Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 57.2%
Taylor expanded in Ev around 0 72.2%
unpow272.2%
unpow272.2%
Simplified72.2%
Taylor expanded in Ev around inf 80.0%
unpow280.0%
unpow280.0%
Simplified80.0%
if -4.7999999999999997e-166 < NdChar < 1.69999999999999994e-62Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.1%
associate-+r+25.5%
Simplified70.1%
if 1.69999999999999994e-62 < NdChar < 2.9000000000000001e27Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.5%
Taylor expanded in EDonor around inf 72.9%
if 2.9000000000000001e27 < NdChar < 2.04999999999999991e127Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 82.3%
Taylor expanded in EAccept around 0 63.2%
unpow263.2%
unpow263.2%
Simplified63.2%
Final simplification72.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))))
(if (<= EAccept 3.5e-48)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 5e+145)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept 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 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (EAccept <= 3.5e-48) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 5e+145) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / 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 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
if (eaccept <= 3.5d-48) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 5d+145) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / 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 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (EAccept <= 3.5e-48) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 5e+145) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) tmp = 0 if EAccept <= 3.5e-48: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 5e+145: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) tmp = 0.0 if (EAccept <= 3.5e-48) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 5e+145) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); tmp = 0.0; if (EAccept <= 3.5e-48) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 5e+145) tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); 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[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 3.5e-48], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 5e+145], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 3.5 \cdot 10^{-48}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 5 \cdot 10^{+145}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 3.49999999999999991e-48Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.6%
if 3.49999999999999991e-48 < EAccept < 4.99999999999999967e145Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Vef around inf 73.2%
if 4.99999999999999967e145 < EAccept Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 84.7%
Final simplification71.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))))
(if (<= EAccept 1.8e+83)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept 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 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (EAccept <= 1.8e+83) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / 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 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
if (eaccept <= 1.8d+83) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / 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 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (EAccept <= 1.8e+83) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) tmp = 0 if EAccept <= 1.8e+83: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) tmp = 0.0 if (EAccept <= 1.8e+83) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); tmp = 0.0; if (EAccept <= 1.8e+83) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); 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[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 1.8e+83], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 1.8 \cdot 10^{+83}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.7999999999999999e83Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.7%
if 1.7999999999999999e83 < EAccept Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 77.4%
Final simplification70.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1
(+
t_0
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT)))))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_3
(+ t_2 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -2.7e+25)
t_3
(if (<= NdChar -4.7e-39)
t_1
(if (<= NdChar -4.5e-198)
(+
t_2
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= NdChar 6.2e-68)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 4.8e+128)
(+ t_2 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.02e+176) t_1 t_3))))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -2.7e+25) {
tmp = t_3;
} else if (NdChar <= -4.7e-39) {
tmp = t_1;
} else if (NdChar <= -4.5e-198) {
tmp = t_2 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (NdChar <= 6.2e-68) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 4.8e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_3;
}
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) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
t_2 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_3 = t_2 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-2.7d+25)) then
tmp = t_3
else if (ndchar <= (-4.7d-39)) then
tmp = t_1
else if (ndchar <= (-4.5d-198)) then
tmp = t_2 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (ndchar <= 6.2d-68) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 4.8d+128) then
tmp = t_2 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.02d+176) then
tmp = t_1
else
tmp = t_3
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -2.7e+25) {
tmp = t_3;
} else if (NdChar <= -4.7e-39) {
tmp = t_1;
} else if (NdChar <= -4.5e-198) {
tmp = t_2 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (NdChar <= 6.2e-68) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 4.8e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) t_2 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -2.7e+25: tmp = t_3 elif NdChar <= -4.7e-39: tmp = t_1 elif NdChar <= -4.5e-198: tmp = t_2 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif NdChar <= 6.2e-68: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 4.8e+128: tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.02e+176: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_3 = Float64(t_2 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -2.7e+25) tmp = t_3; elseif (NdChar <= -4.7e-39) tmp = t_1; elseif (NdChar <= -4.5e-198) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (NdChar <= 6.2e-68) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NdChar <= 4.8e+128) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -2.7e+25) tmp = t_3; elseif (NdChar <= -4.7e-39) tmp = t_1; elseif (NdChar <= -4.5e-198) tmp = t_2 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (NdChar <= 6.2e-68) tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 4.8e+128) tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_3; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.7e+25], t$95$3, If[LessEqual[NdChar, -4.7e-39], t$95$1, If[LessEqual[NdChar, -4.5e-198], N[(t$95$2 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6.2e-68], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.8e+128], N[(t$95$2 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.02e+176], t$95$1, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_3 := t_2 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -2.7 \cdot 10^{+25}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NdChar \leq -4.7 \cdot 10^{-39}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -4.5 \cdot 10^{-198}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;NdChar \leq 6.2 \cdot 10^{-68}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 4.8 \cdot 10^{+128}:\\
\;\;\;\;t_2 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.02 \cdot 10^{+176}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if NdChar < -2.7e25 or 1.02000000000000001e176 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.4%
Taylor expanded in Ev around 0 62.4%
unpow262.4%
unpow262.4%
Simplified62.4%
div-inv62.4%
times-frac69.8%
Applied egg-rr69.8%
associate-+r+69.8%
times-frac62.4%
unpow262.4%
unpow262.4%
associate-+r+62.4%
unpow262.4%
unpow262.4%
times-frac69.8%
associate-*r*69.8%
Simplified69.8%
Taylor expanded in Ev around inf 70.7%
*-commutative70.7%
unpow270.7%
unpow270.7%
times-frac77.3%
associate-*r*77.3%
Simplified77.3%
if -2.7e25 < NdChar < -4.7000000000000002e-39 or 4.8000000000000004e128 < NdChar < 1.02000000000000001e176Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.6%
Taylor expanded in mu around 0 79.6%
unpow279.6%
unpow279.6%
Simplified79.6%
if -4.7000000000000002e-39 < NdChar < -4.4999999999999998e-198Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 54.7%
Taylor expanded in Ev around 0 63.4%
unpow263.4%
unpow263.4%
Simplified63.4%
if -4.4999999999999998e-198 < NdChar < 6.1999999999999999e-68Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.8%
Taylor expanded in mu around 0 65.7%
if 6.1999999999999999e-68 < NdChar < 4.8000000000000004e128Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 80.8%
Taylor expanded in EAccept around 0 68.2%
Final simplification71.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1
(+
t_0
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT)))))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_3 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))
(t_4 (+ t_2 (* NaChar (/ 1.0 t_3)))))
(if (<= NdChar -1.8e+22)
t_4
(if (<= NdChar -5.8e-41)
t_1
(if (<= NdChar -6.5e-201)
(+ t_2 (* NaChar (/ 1.0 (+ 1.0 (+ (/ Ev KbT) t_3)))))
(if (<= NdChar 1.5e-68)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 4.4e+128)
(+ t_2 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.02e+176) t_1 t_4))))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = 1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5));
double t_4 = t_2 + (NaChar * (1.0 / t_3));
double tmp;
if (NdChar <= -1.8e+22) {
tmp = t_4;
} else if (NdChar <= -5.8e-41) {
tmp = t_1;
} else if (NdChar <= -6.5e-201) {
tmp = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + t_3))));
} else if (NdChar <= 1.5e-68) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 4.4e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_4;
}
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((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
t_2 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_3 = 1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0))
t_4 = t_2 + (nachar * (1.0d0 / t_3))
if (ndchar <= (-1.8d+22)) then
tmp = t_4
else if (ndchar <= (-5.8d-41)) then
tmp = t_1
else if (ndchar <= (-6.5d-201)) then
tmp = t_2 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) + t_3))))
else if (ndchar <= 1.5d-68) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 4.4d+128) then
tmp = t_2 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.02d+176) then
tmp = t_1
else
tmp = t_4
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = 1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5));
double t_4 = t_2 + (NaChar * (1.0 / t_3));
double tmp;
if (NdChar <= -1.8e+22) {
tmp = t_4;
} else if (NdChar <= -5.8e-41) {
tmp = t_1;
} else if (NdChar <= -6.5e-201) {
tmp = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + t_3))));
} else if (NdChar <= 1.5e-68) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 4.4e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) t_2 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_3 = 1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)) t_4 = t_2 + (NaChar * (1.0 / t_3)) tmp = 0 if NdChar <= -1.8e+22: tmp = t_4 elif NdChar <= -5.8e-41: tmp = t_1 elif NdChar <= -6.5e-201: tmp = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + t_3)))) elif NdChar <= 1.5e-68: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 4.4e+128: tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.02e+176: tmp = t_1 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_3 = Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5))) t_4 = Float64(t_2 + Float64(NaChar * Float64(1.0 / t_3))) tmp = 0.0 if (NdChar <= -1.8e+22) tmp = t_4; elseif (NdChar <= -5.8e-41) tmp = t_1; elseif (NdChar <= -6.5e-201) tmp = Float64(t_2 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) + t_3))))); elseif (NdChar <= 1.5e-68) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NdChar <= 4.4e+128) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_3 = 1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)); t_4 = t_2 + (NaChar * (1.0 / t_3)); tmp = 0.0; if (NdChar <= -1.8e+22) tmp = t_4; elseif (NdChar <= -5.8e-41) tmp = t_1; elseif (NdChar <= -6.5e-201) tmp = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + t_3)))); elseif (NdChar <= 1.5e-68) tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 4.4e+128) tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_4; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$2 + N[(NaChar * N[(1.0 / t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.8e+22], t$95$4, If[LessEqual[NdChar, -5.8e-41], t$95$1, If[LessEqual[NdChar, -6.5e-201], N[(t$95$2 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e-68], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.4e+128], N[(t$95$2 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.02e+176], t$95$1, t$95$4]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_3 := 1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)\\
t_4 := t_2 + NaChar \cdot \frac{1}{t_3}\\
\mathbf{if}\;NdChar \leq -1.8 \cdot 10^{+22}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;NdChar \leq -5.8 \cdot 10^{-41}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -6.5 \cdot 10^{-201}:\\
\;\;\;\;t_2 + NaChar \cdot \frac{1}{1 + \left(\frac{Ev}{KbT} + t_3\right)}\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{-68}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 4.4 \cdot 10^{+128}:\\
\;\;\;\;t_2 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.02 \cdot 10^{+176}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if NdChar < -1.8e22 or 1.02000000000000001e176 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.4%
Taylor expanded in Ev around 0 62.4%
unpow262.4%
unpow262.4%
Simplified62.4%
div-inv62.4%
times-frac69.8%
Applied egg-rr69.8%
associate-+r+69.8%
times-frac62.4%
unpow262.4%
unpow262.4%
associate-+r+62.4%
unpow262.4%
unpow262.4%
times-frac69.8%
associate-*r*69.8%
Simplified69.8%
Taylor expanded in Ev around inf 70.7%
*-commutative70.7%
unpow270.7%
unpow270.7%
times-frac77.3%
associate-*r*77.3%
Simplified77.3%
if -1.8e22 < NdChar < -5.79999999999999955e-41 or 4.40000000000000033e128 < NdChar < 1.02000000000000001e176Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.6%
Taylor expanded in mu around 0 79.6%
unpow279.6%
unpow279.6%
Simplified79.6%
if -5.79999999999999955e-41 < NdChar < -6.49999999999999974e-201Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 54.7%
Taylor expanded in Ev around 0 63.4%
unpow263.4%
unpow263.4%
Simplified63.4%
div-inv63.4%
times-frac64.0%
Applied egg-rr64.0%
associate-+r+64.0%
times-frac63.4%
unpow263.4%
unpow263.4%
associate-+r+63.4%
unpow263.4%
unpow263.4%
times-frac64.0%
associate-*r*64.0%
Simplified64.0%
if -6.49999999999999974e-201 < NdChar < 1.5e-68Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.8%
Taylor expanded in mu around 0 65.7%
if 1.5e-68 < NdChar < 4.40000000000000033e128Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 80.8%
Taylor expanded in EAccept around 0 68.2%
Final simplification71.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* (/ Ev KbT) 0.5))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_2
(+
t_1
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT)))))))))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_4 (+ t_3 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) t_0)))))))
(if (<= NdChar -2.7e+25)
t_4
(if (<= NdChar -4e-44)
t_2
(if (<= NdChar -9.5e-198)
(+
t_3
(* NaChar (/ 1.0 (+ 1.0 (+ (/ Ev KbT) (+ 1.0 (/ (* Ev t_0) KbT)))))))
(if (<= NdChar 6.5e-71)
(+ t_1 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 6.6e+127)
(+ t_3 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.02e+176) t_2 t_4))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (Ev / KbT) * 0.5;
double t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_3 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_4 = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_0))));
double tmp;
if (NdChar <= -2.7e+25) {
tmp = t_4;
} else if (NdChar <= -4e-44) {
tmp = t_2;
} else if (NdChar <= -9.5e-198) {
tmp = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_0) / KbT))))));
} else if (NdChar <= 6.5e-71) {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 6.6e+127) {
tmp = t_3 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_2;
} else {
tmp = t_4;
}
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 = (ev / kbt) * 0.5d0
t_1 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
t_3 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_4 = t_3 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * t_0))))
if (ndchar <= (-2.7d+25)) then
tmp = t_4
else if (ndchar <= (-4d-44)) then
tmp = t_2
else if (ndchar <= (-9.5d-198)) then
tmp = t_3 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) + (1.0d0 + ((ev * t_0) / kbt))))))
else if (ndchar <= 6.5d-71) then
tmp = t_1 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 6.6d+127) then
tmp = t_3 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.02d+176) then
tmp = t_2
else
tmp = t_4
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 = (Ev / KbT) * 0.5;
double t_1 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_3 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_4 = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_0))));
double tmp;
if (NdChar <= -2.7e+25) {
tmp = t_4;
} else if (NdChar <= -4e-44) {
tmp = t_2;
} else if (NdChar <= -9.5e-198) {
tmp = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_0) / KbT))))));
} else if (NdChar <= 6.5e-71) {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 6.6e+127) {
tmp = t_3 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_2;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Ev / KbT) * 0.5 t_1 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_2 = t_1 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) t_3 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_4 = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_0)))) tmp = 0 if NdChar <= -2.7e+25: tmp = t_4 elif NdChar <= -4e-44: tmp = t_2 elif NdChar <= -9.5e-198: tmp = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_0) / KbT)))))) elif NdChar <= 6.5e-71: tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 6.6e+127: tmp = t_3 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.02e+176: tmp = t_2 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Ev / KbT) * 0.5) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_4 = Float64(t_3 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * t_0))))) tmp = 0.0 if (NdChar <= -2.7e+25) tmp = t_4; elseif (NdChar <= -4e-44) tmp = t_2; elseif (NdChar <= -9.5e-198) tmp = Float64(t_3 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(Float64(Ev * t_0) / KbT))))))); elseif (NdChar <= 6.5e-71) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NdChar <= 6.6e+127) tmp = Float64(t_3 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.02e+176) tmp = t_2; else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Ev / KbT) * 0.5; t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_2 = t_1 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); t_3 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_4 = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * t_0)))); tmp = 0.0; if (NdChar <= -2.7e+25) tmp = t_4; elseif (NdChar <= -4e-44) tmp = t_2; elseif (NdChar <= -9.5e-198) tmp = t_3 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) + (1.0 + ((Ev * t_0) / KbT)))))); elseif (NdChar <= 6.5e-71) tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 6.6e+127) tmp = t_3 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.02e+176) tmp = t_2; else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.7e+25], t$95$4, If[LessEqual[NdChar, -4e-44], t$95$2, If[LessEqual[NdChar, -9.5e-198], N[(t$95$3 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(N[(Ev * t$95$0), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6.5e-71], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6.6e+127], N[(t$95$3 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.02e+176], t$95$2, t$95$4]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Ev}{KbT} \cdot 0.5\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_4 := t_3 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot t_0}\\
\mathbf{if}\;NdChar \leq -2.7 \cdot 10^{+25}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;NdChar \leq -4 \cdot 10^{-44}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq -9.5 \cdot 10^{-198}:\\
\;\;\;\;t_3 + NaChar \cdot \frac{1}{1 + \left(\frac{Ev}{KbT} + \left(1 + \frac{Ev \cdot t_0}{KbT}\right)\right)}\\
\mathbf{elif}\;NdChar \leq 6.5 \cdot 10^{-71}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 6.6 \cdot 10^{+127}:\\
\;\;\;\;t_3 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.02 \cdot 10^{+176}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if NdChar < -2.7e25 or 1.02000000000000001e176 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.4%
Taylor expanded in Ev around 0 62.4%
unpow262.4%
unpow262.4%
Simplified62.4%
div-inv62.4%
times-frac69.8%
Applied egg-rr69.8%
associate-+r+69.8%
times-frac62.4%
unpow262.4%
unpow262.4%
associate-+r+62.4%
unpow262.4%
unpow262.4%
times-frac69.8%
associate-*r*69.8%
Simplified69.8%
Taylor expanded in Ev around inf 70.7%
*-commutative70.7%
unpow270.7%
unpow270.7%
times-frac77.3%
associate-*r*77.3%
Simplified77.3%
if -2.7e25 < NdChar < -3.99999999999999981e-44 or 6.59999999999999953e127 < NdChar < 1.02000000000000001e176Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.6%
Taylor expanded in mu around 0 79.6%
unpow279.6%
unpow279.6%
Simplified79.6%
if -3.99999999999999981e-44 < NdChar < -9.4999999999999997e-198Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 54.7%
Taylor expanded in Ev around 0 63.4%
unpow263.4%
unpow263.4%
Simplified63.4%
div-inv63.4%
times-frac64.0%
Applied egg-rr64.0%
associate-+r+64.0%
times-frac63.4%
unpow263.4%
unpow263.4%
associate-+r+63.4%
unpow263.4%
unpow263.4%
times-frac64.0%
associate-*r*64.0%
Simplified64.0%
associate-*r/64.0%
*-commutative64.0%
Applied egg-rr64.0%
if -9.4999999999999997e-198 < NdChar < 6.50000000000000005e-71Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.8%
Taylor expanded in mu around 0 65.7%
if 6.50000000000000005e-71 < NdChar < 6.59999999999999953e127Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 80.8%
Taylor expanded in EAccept around 0 68.2%
Final simplification71.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1
(+
t_0
(/
NdChar
(+ 1.0 (+ (/ mu KbT) (+ 1.0 (* 0.5 (/ (* mu mu) (* KbT KbT)))))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_3
(+ t_2 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -7e+23)
t_3
(if (<= NdChar -1.2e-36)
t_1
(if (<= NdChar -1.6e-166)
(+ t_2 (/ NaChar (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))
(if (<= NdChar 9.2e-62)
(+
t_0
(/
NdChar
(+
1.0
(-
(+ (/ mu KbT) (+ (/ EDonor KbT) (+ 1.0 (/ Vef KbT))))
(/ Ec KbT)))))
(if (<= NdChar 4.8e+128)
(+ t_2 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.02e+176) t_1 t_3))))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -7e+23) {
tmp = t_3;
} else if (NdChar <= -1.2e-36) {
tmp = t_1;
} else if (NdChar <= -1.6e-166) {
tmp = t_2 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= 9.2e-62) {
tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (NdChar <= 4.8e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_3;
}
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) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + ((mu / kbt) + (1.0d0 + (0.5d0 * ((mu * mu) / (kbt * kbt)))))))
t_2 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_3 = t_2 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-7d+23)) then
tmp = t_3
else if (ndchar <= (-1.2d-36)) then
tmp = t_1
else if (ndchar <= (-1.6d-166)) then
tmp = t_2 + (nachar / (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))
else if (ndchar <= 9.2d-62) then
tmp = t_0 + (ndchar / (1.0d0 + (((mu / kbt) + ((edonor / kbt) + (1.0d0 + (vef / kbt)))) - (ec / kbt))))
else if (ndchar <= 4.8d+128) then
tmp = t_2 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.02d+176) then
tmp = t_1
else
tmp = t_3
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT)))))));
double t_2 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -7e+23) {
tmp = t_3;
} else if (NdChar <= -1.2e-36) {
tmp = t_1;
} else if (NdChar <= -1.6e-166) {
tmp = t_2 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= 9.2e-62) {
tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT))));
} else if (NdChar <= 4.8e+128) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.02e+176) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))) t_2 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -7e+23: tmp = t_3 elif NdChar <= -1.2e-36: tmp = t_1 elif NdChar <= -1.6e-166: tmp = t_2 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))) elif NdChar <= 9.2e-62: tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) elif NdChar <= 4.8e+128: tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.02e+176: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(mu / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(mu * mu) / Float64(KbT * KbT)))))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_3 = Float64(t_2 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -7e+23) tmp = t_3; elseif (NdChar <= -1.2e-36) tmp = t_1; elseif (NdChar <= -1.6e-166) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))); elseif (NdChar <= 9.2e-62) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(mu / KbT) + Float64(Float64(EDonor / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); elseif (NdChar <= 4.8e+128) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + ((mu / KbT) + (1.0 + (0.5 * ((mu * mu) / (KbT * KbT))))))); t_2 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_3 = t_2 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -7e+23) tmp = t_3; elseif (NdChar <= -1.2e-36) tmp = t_1; elseif (NdChar <= -1.6e-166) tmp = t_2 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))); elseif (NdChar <= 9.2e-62) tmp = t_0 + (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))); elseif (NdChar <= 4.8e+128) tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.02e+176) tmp = t_1; else tmp = t_3; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(mu * mu), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -7e+23], t$95$3, If[LessEqual[NdChar, -1.2e-36], t$95$1, If[LessEqual[NdChar, -1.6e-166], N[(t$95$2 + N[(NaChar / N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.2e-62], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(N[(mu / KbT), $MachinePrecision] + N[(N[(EDonor / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.8e+128], N[(t$95$2 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.02e+176], t$95$1, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + \left(\frac{mu}{KbT} + \left(1 + 0.5 \cdot \frac{mu \cdot mu}{KbT \cdot KbT}\right)\right)}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_3 := t_2 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -7 \cdot 10^{+23}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NdChar \leq -1.2 \cdot 10^{-36}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -1.6 \cdot 10^{-166}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}}\\
\mathbf{elif}\;NdChar \leq 9.2 \cdot 10^{-62}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(\left(\frac{mu}{KbT} + \left(\frac{EDonor}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 4.8 \cdot 10^{+128}:\\
\;\;\;\;t_2 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.02 \cdot 10^{+176}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if NdChar < -7.0000000000000004e23 or 1.02000000000000001e176 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.4%
Taylor expanded in Ev around 0 62.4%
unpow262.4%
unpow262.4%
Simplified62.4%
div-inv62.4%
times-frac69.8%
Applied egg-rr69.8%
associate-+r+69.8%
times-frac62.4%
unpow262.4%
unpow262.4%
associate-+r+62.4%
unpow262.4%
unpow262.4%
times-frac69.8%
associate-*r*69.8%
Simplified69.8%
Taylor expanded in Ev around inf 70.7%
*-commutative70.7%
unpow270.7%
unpow270.7%
times-frac77.3%
associate-*r*77.3%
Simplified77.3%
if -7.0000000000000004e23 < NdChar < -1.2e-36 or 4.8000000000000004e128 < NdChar < 1.02000000000000001e176Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.1%
Taylor expanded in mu around 0 78.8%
unpow278.8%
unpow278.8%
Simplified78.8%
if -1.2e-36 < NdChar < -1.6e-166Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 57.2%
Taylor expanded in Ev around 0 72.2%
unpow272.2%
unpow272.2%
Simplified72.2%
Taylor expanded in Ev around inf 80.0%
unpow280.0%
unpow280.0%
Simplified80.0%
if -1.6e-166 < NdChar < 9.20000000000000002e-62Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.1%
associate-+r+25.5%
Simplified70.1%
if 9.20000000000000002e-62 < NdChar < 4.8000000000000004e128Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 80.8%
Taylor expanded in EAccept around 0 68.2%
Final simplification73.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2
(+ t_1 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -1.25e-10)
t_2
(if (<= NdChar -8.2e-40)
(+ t_0 (/ NdChar 2.0))
(if (<= NdChar -7e-201)
(+
t_1
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= NdChar 1.05e-75)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
t_2))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.25e-10) {
tmp = t_2;
} else if (NdChar <= -8.2e-40) {
tmp = t_0 + (NdChar / 2.0);
} else if (NdChar <= -7e-201) {
tmp = t_1 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (NdChar <= 1.05e-75) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2;
}
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((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-1.25d-10)) then
tmp = t_2
else if (ndchar <= (-8.2d-40)) then
tmp = t_0 + (ndchar / 2.0d0)
else if (ndchar <= (-7d-201)) then
tmp = t_1 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (ndchar <= 1.05d-75) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = t_2
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -1.25e-10) {
tmp = t_2;
} else if (NdChar <= -8.2e-40) {
tmp = t_0 + (NdChar / 2.0);
} else if (NdChar <= -7e-201) {
tmp = t_1 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (NdChar <= 1.05e-75) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -1.25e-10: tmp = t_2 elif NdChar <= -8.2e-40: tmp = t_0 + (NdChar / 2.0) elif NdChar <= -7e-201: tmp = t_1 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif NdChar <= 1.05e-75: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -1.25e-10) tmp = t_2; elseif (NdChar <= -8.2e-40) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif (NdChar <= -7e-201) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (NdChar <= 1.05e-75) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -1.25e-10) tmp = t_2; elseif (NdChar <= -8.2e-40) tmp = t_0 + (NdChar / 2.0); elseif (NdChar <= -7e-201) tmp = t_1 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (NdChar <= 1.05e-75) tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = t_2; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.25e-10], t$95$2, If[LessEqual[NdChar, -8.2e-40], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -7e-201], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e-75], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -1.25 \cdot 10^{-10}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq -8.2 \cdot 10^{-40}:\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq -7 \cdot 10^{-201}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{-75}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -1.25000000000000008e-10 or 1.0500000000000001e-75 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.2%
Taylor expanded in Ev around 0 58.8%
unpow258.8%
unpow258.8%
Simplified58.8%
div-inv58.8%
times-frac65.5%
Applied egg-rr65.5%
associate-+r+65.5%
times-frac58.8%
unpow258.8%
unpow258.8%
associate-+r+58.8%
unpow258.8%
unpow258.8%
times-frac65.5%
associate-*r*65.5%
Simplified65.5%
Taylor expanded in Ev around inf 64.7%
*-commutative64.7%
unpow264.7%
unpow264.7%
times-frac71.5%
associate-*r*71.5%
Simplified71.5%
if -1.25000000000000008e-10 < NdChar < -8.19999999999999926e-40Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.7%
if -8.19999999999999926e-40 < NdChar < -7.00000000000000016e-201Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 54.7%
Taylor expanded in Ev around 0 63.4%
unpow263.4%
unpow263.4%
Simplified63.4%
if -7.00000000000000016e-201 < NdChar < 1.0500000000000001e-75Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.8%
Taylor expanded in mu around 0 65.7%
Final simplification69.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2
(+ t_1 (* NaChar (/ 1.0 (+ 1.0 (* (/ Ev KbT) (* (/ Ev KbT) 0.5))))))))
(if (<= NdChar -3.2e-12)
t_2
(if (<= NdChar -9.5e-40)
(+ t_0 (/ NdChar 2.0))
(if (<= NdChar -3.2e-188)
(+ t_1 (/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(if (<= NdChar 2.7e-76)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
t_2))))))
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -3.2e-12) {
tmp = t_2;
} else if (NdChar <= -9.5e-40) {
tmp = t_0 + (NdChar / 2.0);
} else if (NdChar <= -3.2e-188) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (NdChar <= 2.7e-76) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2;
}
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((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar * (1.0d0 / (1.0d0 + ((ev / kbt) * ((ev / kbt) * 0.5d0)))))
if (ndchar <= (-3.2d-12)) then
tmp = t_2
else if (ndchar <= (-9.5d-40)) then
tmp = t_0 + (ndchar / 2.0d0)
else if (ndchar <= (-3.2d-188)) then
tmp = t_1 + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else if (ndchar <= 2.7d-76) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = t_2
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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5)))));
double tmp;
if (NdChar <= -3.2e-12) {
tmp = t_2;
} else if (NdChar <= -9.5e-40) {
tmp = t_0 + (NdChar / 2.0);
} else if (NdChar <= -3.2e-188) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (NdChar <= 2.7e-76) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))) tmp = 0 if NdChar <= -3.2e-12: tmp = t_2 elif NdChar <= -9.5e-40: tmp = t_0 + (NdChar / 2.0) elif NdChar <= -3.2e-188: tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) elif NdChar <= 2.7e-76: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar * Float64(1.0 / Float64(1.0 + Float64(Float64(Ev / KbT) * Float64(Float64(Ev / KbT) * 0.5)))))) tmp = 0.0 if (NdChar <= -3.2e-12) tmp = t_2; elseif (NdChar <= -9.5e-40) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif (NdChar <= -3.2e-188) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); elseif (NdChar <= 2.7e-76) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar * (1.0 / (1.0 + ((Ev / KbT) * ((Ev / KbT) * 0.5))))); tmp = 0.0; if (NdChar <= -3.2e-12) tmp = t_2; elseif (NdChar <= -9.5e-40) tmp = t_0 + (NdChar / 2.0); elseif (NdChar <= -3.2e-188) tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); elseif (NdChar <= 2.7e-76) tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = t_2; 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar * N[(1.0 / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] * N[(N[(Ev / KbT), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.2e-12], t$95$2, If[LessEqual[NdChar, -9.5e-40], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -3.2e-188], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.7e-76], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + NaChar \cdot \frac{1}{1 + \frac{Ev}{KbT} \cdot \left(\frac{Ev}{KbT} \cdot 0.5\right)}\\
\mathbf{if}\;NdChar \leq -3.2 \cdot 10^{-12}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq -9.5 \cdot 10^{-40}:\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq -3.2 \cdot 10^{-188}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 2.7 \cdot 10^{-76}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -3.2000000000000001e-12 or 2.7e-76 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.2%
Taylor expanded in Ev around 0 58.8%
unpow258.8%
unpow258.8%
Simplified58.8%
div-inv58.8%
times-frac65.5%
Applied egg-rr65.5%
associate-+r+65.5%
times-frac58.8%
unpow258.8%
unpow258.8%
associate-+r+58.8%
unpow258.8%
unpow258.8%
times-frac65.5%
associate-*r*65.5%
Simplified65.5%
Taylor expanded in Ev around inf 64.7%
*-commutative64.7%
unpow264.7%
unpow264.7%
times-frac71.5%
associate-*r*71.5%
Simplified71.5%
if -3.2000000000000001e-12 < NdChar < -9.5000000000000006e-40Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.7%
if -9.5000000000000006e-40 < NdChar < -3.20000000000000022e-188Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in Ev around inf 47.1%
Taylor expanded in Ev around 0 58.1%
if -3.20000000000000022e-188 < NdChar < 2.7e-76Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.5%
Taylor expanded in mu around 0 66.0%
Final simplification69.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))))
(if (<= NdChar -6500000000000.0)
t_1
(if (<= NdChar -5.4e-62)
(+ t_0 (/ NdChar 2.0))
(if (or (<= NdChar -3.5e-188) (not (<= NdChar 2.7e-67)))
t_1
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu 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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double tmp;
if (NdChar <= -6500000000000.0) {
tmp = t_1;
} else if (NdChar <= -5.4e-62) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -3.5e-188) || !(NdChar <= 2.7e-67)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / 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) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
if (ndchar <= (-6500000000000.0d0)) then
tmp = t_1
else if (ndchar <= (-5.4d-62)) then
tmp = t_0 + (ndchar / 2.0d0)
else if ((ndchar <= (-3.5d-188)) .or. (.not. (ndchar <= 2.7d-67))) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / 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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double tmp;
if (NdChar <= -6500000000000.0) {
tmp = t_1;
} else if (NdChar <= -5.4e-62) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -3.5e-188) || !(NdChar <= 2.7e-67)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) tmp = 0 if NdChar <= -6500000000000.0: tmp = t_1 elif NdChar <= -5.4e-62: tmp = t_0 + (NdChar / 2.0) elif (NdChar <= -3.5e-188) or not (NdChar <= 2.7e-67): tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) tmp = 0.0 if (NdChar <= -6500000000000.0) tmp = t_1; elseif (NdChar <= -5.4e-62) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif ((NdChar <= -3.5e-188) || !(NdChar <= 2.7e-67)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); tmp = 0.0; if (NdChar <= -6500000000000.0) tmp = t_1; elseif (NdChar <= -5.4e-62) tmp = t_0 + (NdChar / 2.0); elseif ((NdChar <= -3.5e-188) || ~((NdChar <= 2.7e-67))) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6500000000000.0], t$95$1, If[LessEqual[NdChar, -5.4e-62], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -3.5e-188], N[Not[LessEqual[NdChar, 2.7e-67]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{if}\;NdChar \leq -6500000000000:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -5.4 \cdot 10^{-62}:\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq -3.5 \cdot 10^{-188} \lor \neg \left(NdChar \leq 2.7 \cdot 10^{-67}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\end{array}
\end{array}
if NdChar < -6.5e12 or -5.40000000000000039e-62 < NdChar < -3.5e-188 or 2.70000000000000016e-67 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.3%
Taylor expanded in Ev around 0 64.6%
if -6.5e12 < NdChar < -5.40000000000000039e-62Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.9%
if -3.5e-188 < NdChar < 2.70000000000000016e-67Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.5%
Taylor expanded in mu around 0 66.0%
Final simplification65.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))))
(if (<= NdChar -2e+14)
(+ t_1 (/ NaChar (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))
(if (<= NdChar -7.8e-44)
(+ t_0 (/ NdChar 2.0))
(if (or (<= NdChar -3.5e-188) (not (<= NdChar 1.05e-68)))
(+ t_1 (/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu 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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (NdChar <= -2e+14) {
tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= -7.8e-44) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -3.5e-188) || !(NdChar <= 1.05e-68)) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / 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) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
if (ndchar <= (-2d+14)) then
tmp = t_1 + (nachar / (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))
else if (ndchar <= (-7.8d-44)) then
tmp = t_0 + (ndchar / 2.0d0)
else if ((ndchar <= (-3.5d-188)) .or. (.not. (ndchar <= 1.05d-68))) then
tmp = t_1 + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / 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((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (NdChar <= -2e+14) {
tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))));
} else if (NdChar <= -7.8e-44) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -3.5e-188) || !(NdChar <= 1.05e-68)) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) tmp = 0 if NdChar <= -2e+14: tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))) elif NdChar <= -7.8e-44: tmp = t_0 + (NdChar / 2.0) elif (NdChar <= -3.5e-188) or not (NdChar <= 1.05e-68): tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) tmp = 0.0 if (NdChar <= -2e+14) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))); elseif (NdChar <= -7.8e-44) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif ((NdChar <= -3.5e-188) || !(NdChar <= 1.05e-68)) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); tmp = 0.0; if (NdChar <= -2e+14) tmp = t_1 + (NaChar / (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))); elseif (NdChar <= -7.8e-44) tmp = t_0 + (NdChar / 2.0); elseif ((NdChar <= -3.5e-188) || ~((NdChar <= 1.05e-68))) tmp = t_1 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); else tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / 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[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2e+14], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -7.8e-44], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -3.5e-188], N[Not[LessEqual[NdChar, 1.05e-68]], $MachinePrecision]], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -2 \cdot 10^{+14}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}}\\
\mathbf{elif}\;NdChar \leq -7.8 \cdot 10^{-44}:\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq -3.5 \cdot 10^{-188} \lor \neg \left(NdChar \leq 1.05 \cdot 10^{-68}\right):\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\end{array}
\end{array}
if NdChar < -2e14Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.3%
Taylor expanded in Ev around 0 61.8%
unpow261.8%
unpow261.8%
Simplified61.8%
Taylor expanded in Ev around inf 68.0%
unpow268.0%
unpow268.0%
Simplified68.0%
if -2e14 < NdChar < -7.8000000000000004e-44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.9%
if -7.8000000000000004e-44 < NdChar < -3.5e-188 or 1.05000000000000004e-68 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 66.0%
if -3.5e-188 < NdChar < 1.05000000000000004e-68Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.5%
Taylor expanded in mu around 0 66.0%
Final simplification66.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.2e+40) (not (<= NaChar 1.3e+25)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ EAccept KbT) 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 <= -2.2e+40) || !(NaChar <= 1.3e+25)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((EAccept / 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) :: tmp
if ((nachar <= (-2.2d+40)) .or. (.not. (nachar <= 1.3d+25))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((eaccept / 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 tmp;
if ((NaChar <= -2.2e+40) || !(NaChar <= 1.3e+25)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.2e+40) or not (NaChar <= 1.3e+25): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.2e+40) || !(NaChar <= 1.3e+25)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.2e+40) || ~((NaChar <= 1.3e+25))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.2e+40], N[Not[LessEqual[NaChar, 1.3e+25]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.2 \cdot 10^{+40} \lor \neg \left(NaChar \leq 1.3 \cdot 10^{+25}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -2.1999999999999999e40 or 1.2999999999999999e25 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.6%
if -2.1999999999999999e40 < NaChar < 1.2999999999999999e25Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 70.6%
Taylor expanded in EAccept around 0 67.8%
Final simplification62.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))))
(if (<= Ev -9.5e-126)
(+ t_0 (/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(if (<= Ev 3.5e-224)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) 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 t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (Ev <= -9.5e-126) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (Ev <= 3.5e-224) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / 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) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
if (ev <= (-9.5d-126)) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else if (ev <= 3.5d-224) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / 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 t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double tmp;
if (Ev <= -9.5e-126) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (Ev <= 3.5e-224) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) tmp = 0 if Ev <= -9.5e-126: tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) elif Ev <= 3.5e-224: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) tmp = 0.0 if (Ev <= -9.5e-126) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); elseif (Ev <= 3.5e-224) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / 2.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 + ((Vef + EDonor) - Ec)) / KbT))); tmp = 0.0; if (Ev <= -9.5e-126) tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); elseif (Ev <= 3.5e-224) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 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[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -9.5e-126], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 3.5e-224], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
\mathbf{if}\;Ev \leq -9.5 \cdot 10^{-126}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{elif}\;Ev \leq 3.5 \cdot 10^{-224}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -9.5000000000000003e-126Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.4%
Taylor expanded in Ev around 0 61.6%
if -9.5000000000000003e-126 < Ev < 3.50000000000000019e-224Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.5%
Taylor expanded in EAccept around 0 56.3%
if 3.50000000000000019e-224 < Ev Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.3%
Final simplification54.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -5.7e-31) (not (<= NaChar 1e+113)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(* NaChar 0.5))))
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.7e-31) || !(NaChar <= 1e+113)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
}
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.7d-31)) .or. (.not. (nachar <= 1d+113))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar * 0.5d0)
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.7e-31) || !(NaChar <= 1e+113)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -5.7e-31) or not (NaChar <= 1e+113): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -5.7e-31) || !(NaChar <= 1e+113)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -5.7e-31) || ~((NaChar <= 1e+113))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -5.7e-31], N[Not[LessEqual[NaChar, 1e+113]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.7 \cdot 10^{-31} \lor \neg \left(NaChar \leq 10^{+113}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -5.69999999999999995e-31 or 1e113 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.9%
if -5.69999999999999995e-31 < NaChar < 1e113Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
*-commutative55.6%
Simplified55.6%
Final simplification55.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -5.4e+211)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NaChar 3.4e+171)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(* NaChar 0.5))
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (* NdChar 0.5)))))
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.4e+211) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.4e+171) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5);
}
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.4d+211)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 3.4d+171) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar * 0.5d0)
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.4e+211) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3.4e+171) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -5.4e+211: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NaChar <= 3.4e+171: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -5.4e+211) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 3.4e+171) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -5.4e+211) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 3.4e+171) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -5.4e+211], 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.4e+171], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.4 \cdot 10^{+211}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 3.4 \cdot 10^{+171}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -5.3999999999999998e211Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 57.8%
Taylor expanded in KbT around inf 52.4%
if -5.3999999999999998e211 < NaChar < 3.4000000000000001e171Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.6%
*-commutative50.6%
Simplified50.6%
if 3.4000000000000001e171 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 67.7%
Taylor expanded in KbT around inf 38.2%
Final simplification49.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -9e+44)
(+ (* NaChar 0.5) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= NdChar 6e-138)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NdChar 2.3e+39)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -9e+44) {
tmp = (NaChar * 0.5) + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (NdChar <= 6e-138) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 2.3e+39) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
}
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 <= (-9d+44)) then
tmp = (nachar * 0.5d0) + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (ndchar <= 6d-138) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (ndchar <= 2.3d+39) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
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 <= -9e+44) {
tmp = (NaChar * 0.5) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (NdChar <= 6e-138) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 2.3e+39) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -9e+44: tmp = (NaChar * 0.5) + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif NdChar <= 6e-138: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NdChar <= 2.3e+39: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -9e+44) tmp = Float64(Float64(NaChar * 0.5) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (NdChar <= 6e-138) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NdChar <= 2.3e+39) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -9e+44) tmp = (NaChar * 0.5) + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (NdChar <= 6e-138) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NdChar <= 2.3e+39) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -9e+44], N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6e-138], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.3e+39], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -9 \cdot 10^{+44}:\\
\;\;\;\;NaChar \cdot 0.5 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 6 \cdot 10^{-138}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq 2.3 \cdot 10^{+39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -9e44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.7%
*-commutative47.7%
Simplified47.7%
Taylor expanded in Vef around inf 36.7%
if -9e44 < NdChar < 6.0000000000000001e-138Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 62.3%
Taylor expanded in KbT around inf 39.5%
if 6.0000000000000001e-138 < NdChar < 2.30000000000000012e39Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.4%
*-commutative51.4%
Simplified51.4%
Taylor expanded in EDonor around inf 46.1%
if 2.30000000000000012e39 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.5%
*-commutative59.5%
Simplified59.5%
Taylor expanded in mu around inf 50.5%
Final simplification42.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.7e+96)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= NaChar 1.72e+134)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (* NdChar 0.5)))))
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.7e+96) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.72e+134) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5);
}
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.7d+96)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (nachar <= 1.72d+134) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar * 0.5d0)
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.7e+96) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.72e+134) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.7e+96: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif NaChar <= 1.72e+134: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.7e+96) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (NaChar <= 1.72e+134) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.7e+96) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (NaChar <= 1.72e+134) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.7e+96], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.72e+134], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.7 \cdot 10^{+96}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 1.72 \cdot 10^{+134}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -1.7e96Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 57.5%
Taylor expanded in KbT around inf 36.7%
if -1.7e96 < NaChar < 1.71999999999999998e134Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.4%
*-commutative52.4%
Simplified52.4%
Taylor expanded in EDonor around inf 40.1%
if 1.71999999999999998e134 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 67.7%
Taylor expanded in KbT around inf 38.5%
Final simplification39.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -7.6e+123) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -7.6e+123) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5);
}
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 (ev <= (-7.6d+123)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar * 0.5d0)
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 (Ev <= -7.6e+123) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -7.6e+123: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -7.6e+123) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -7.6e+123) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -7.6e+123], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -7.6 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if Ev < -7.59999999999999989e123Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 92.3%
Taylor expanded in KbT around inf 33.4%
if -7.59999999999999989e123 < Ev Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 71.2%
Taylor expanded in KbT around inf 34.4%
Final simplification34.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)))
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 / KbT)))) + (NdChar * 0.5);
}
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 / kbt)))) + (ndchar * 0.5d0)
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 / KbT)))) + (NdChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.5%
Taylor expanded in KbT around inf 32.1%
Final simplification32.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -5.8e-220)
(+
(/
NdChar
(+
1.0
(- (+ (/ mu KbT) (+ (/ EDonor KbT) (+ 1.0 (/ Vef KbT)))) (/ Ec KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(* 0.5 (+ NdChar NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -5.8e-220) {
tmp = (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
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 <= (-5.8d-220)) then
tmp = (ndchar / (1.0d0 + (((mu / kbt) + ((edonor / kbt) + (1.0d0 + (vef / kbt)))) - (ec / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else
tmp = 0.5d0 * (ndchar + nachar)
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 <= -5.8e-220) {
tmp = (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -5.8e-220: tmp = (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -5.8e-220) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(mu / KbT) + Float64(Float64(EDonor / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -5.8e-220) tmp = (NdChar / (1.0 + (((mu / KbT) + ((EDonor / KbT) + (1.0 + (Vef / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -5.8e-220], N[(N[(NdChar / N[(1.0 + N[(N[(N[(mu / KbT), $MachinePrecision] + N[(N[(EDonor / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -5.8 \cdot 10^{-220}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(\frac{mu}{KbT} + \left(\frac{EDonor}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if NdChar < -5.7999999999999997e-220Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.2%
Taylor expanded in Ev around 0 58.2%
unpow258.2%
unpow258.2%
Simplified58.2%
Taylor expanded in KbT around inf 26.5%
associate-+r+26.5%
Simplified26.5%
if -5.7999999999999997e-220 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.3%
*-commutative47.3%
Simplified47.3%
Taylor expanded in KbT around inf 18.8%
fma-def18.8%
associate-/l*23.4%
associate--l+23.4%
Simplified23.4%
Taylor expanded in KbT around inf 28.7%
distribute-lft-out28.7%
Simplified28.7%
Final simplification27.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
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 = 0.5d0 * (ndchar + nachar)
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 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.3%
*-commutative45.3%
Simplified45.3%
Taylor expanded in KbT around inf 16.8%
fma-def16.8%
associate-/l*21.5%
associate--l+21.5%
Simplified21.5%
Taylor expanded in KbT around inf 26.6%
distribute-lft-out26.6%
Simplified26.6%
Final simplification26.6%
herbie shell --seed 2023257
(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))))))