
(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 36 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 (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec)))))) (/ 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((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (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((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (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((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (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((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (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(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (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[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.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 (/ EDonor KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= mu -2e+110)
t_1
(if (<= mu -1.36e-152)
t_0
(if (<= mu 3.8e-164)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT)))))
(if (<= mu 1.05e+192) 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((EDonor / KbT))));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -2e+110) {
tmp = t_1;
} else if (mu <= -1.36e-152) {
tmp = t_0;
} else if (mu <= 3.8e-164) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT))));
} else if (mu <= 1.05e+192) {
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((edonor / kbt))))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (mu <= (-2d+110)) then
tmp = t_1
else if (mu <= (-1.36d-152)) then
tmp = t_0
else if (mu <= 3.8d-164) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt))))
else if (mu <= 1.05d+192) 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((EDonor / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -2e+110) {
tmp = t_1;
} else if (mu <= -1.36e-152) {
tmp = t_0;
} else if (mu <= 3.8e-164) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT))));
} else if (mu <= 1.05e+192) {
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((EDonor / KbT)))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if mu <= -2e+110: tmp = t_1 elif mu <= -1.36e-152: tmp = t_0 elif mu <= 3.8e-164: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) elif mu <= 1.05e+192: 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(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (mu <= -2e+110) tmp = t_1; elseif (mu <= -1.36e-152) tmp = t_0; elseif (mu <= 3.8e-164) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT))))); elseif (mu <= 1.05e+192) 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((EDonor / KbT)))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (mu <= -2e+110) tmp = t_1; elseif (mu <= -1.36e-152) tmp = t_0; elseif (mu <= 3.8e-164) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))); elseif (mu <= 1.05e+192) 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2e+110], t$95$1, If[LessEqual[mu, -1.36e-152], t$95$0, If[LessEqual[mu, 3.8e-164], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.05e+192], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2 \cdot 10^{+110}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -1.36 \cdot 10^{-152}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 3.8 \cdot 10^{-164}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.05 \cdot 10^{+192}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if mu < -2e110 or 1.04999999999999997e192 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 88.6%
Taylor expanded in EAccept around 0 85.3%
+-commutative85.3%
Simplified85.3%
if -2e110 < mu < -1.3599999999999999e-152 or 3.79999999999999989e-164 < mu < 1.04999999999999997e192Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.0%
if -1.3599999999999999e-152 < mu < 3.79999999999999989e-164Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 85.6%
associate-*r/44.3%
mul-1-neg44.3%
Simplified85.6%
Taylor expanded in mu around 0 85.6%
+-commutative39.5%
associate-+l+39.5%
+-commutative39.5%
Simplified85.6%
Final simplification85.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= mu -4.8e+250)
(+ t_1 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= mu -9.5e+181)
(+
t_0
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))))
(if (<= mu -3.6e+158)
(+
t_1
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))))
(/ Ec KbT)))))
(if (<= mu 2.2e+198)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT)))))
(- t_0 (* KbT (/ NaChar mu)))))))))
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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (mu <= -4.8e+250) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (mu <= -9.5e+181) {
tmp = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
} else if (mu <= -3.6e+158) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
} else if (mu <= 2.2e+198) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT))));
} else {
tmp = t_0 - (KbT * (NaChar / mu));
}
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(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (mu <= (-4.8d+250)) then
tmp = t_1 + (ndchar / (1.0d0 - (ec / kbt)))
else if (mu <= (-9.5d+181)) then
tmp = t_0 + (nachar / (2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))))
else if (mu <= (-3.6d+158)) then
tmp = t_1 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))))
else if (mu <= 2.2d+198) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt))))
else
tmp = t_0 - (kbt * (nachar / mu))
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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (mu <= -4.8e+250) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (mu <= -9.5e+181) {
tmp = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
} else if (mu <= -3.6e+158) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
} else if (mu <= 2.2e+198) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT))));
} else {
tmp = t_0 - (KbT * (NaChar / mu));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if mu <= -4.8e+250: tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))) elif mu <= -9.5e+181: tmp = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))) elif mu <= -3.6e+158: tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) elif mu <= 2.2e+198: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) else: tmp = t_0 - (KbT * (NaChar / mu)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (mu <= -4.8e+250) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (mu <= -9.5e+181) tmp = Float64(t_0 + Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))))); elseif (mu <= -3.6e+158) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); elseif (mu <= 2.2e+198) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT))))); else tmp = Float64(t_0 - Float64(KbT * Float64(NaChar / mu))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (mu <= -4.8e+250) tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))); elseif (mu <= -9.5e+181) tmp = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))); elseif (mu <= -3.6e+158) tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))); elseif (mu <= 2.2e+198) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))); else tmp = t_0 - (KbT * (NaChar / mu)); 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.8e+250], N[(t$95$1 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -9.5e+181], N[(t$95$0 + N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -3.6e+158], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.2e+198], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(KbT * N[(NaChar / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -4.8 \cdot 10^{+250}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;mu \leq -9.5 \cdot 10^{+181}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}\\
\mathbf{elif}\;mu \leq -3.6 \cdot 10^{+158}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 2.2 \cdot 10^{+198}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - KbT \cdot \frac{NaChar}{mu}\\
\end{array}
\end{array}
if mu < -4.80000000000000026e250Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.3%
associate-+r+53.3%
+-commutative53.3%
Simplified53.3%
Taylor expanded in Ec around inf 73.9%
associate-*r/73.9%
mul-1-neg73.9%
Simplified73.9%
if -4.80000000000000026e250 < mu < -9.50000000000000032e181Initial program 99.4%
Simplified99.4%
Taylor expanded in KbT around inf 63.9%
+-commutative63.9%
Simplified63.9%
Taylor expanded in mu around 0 79.7%
+-commutative79.7%
Simplified79.7%
if -9.50000000000000032e181 < mu < -3.59999999999999988e158Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
if -3.59999999999999988e158 < mu < 2.2e198Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.2%
Taylor expanded in mu around 0 80.6%
+-commutative38.5%
associate-+l+38.5%
+-commutative38.5%
Simplified80.6%
if 2.2e198 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.9%
+-commutative57.9%
Simplified57.9%
Taylor expanded in mu around inf 76.5%
mul-1-neg76.5%
associate-/l*79.7%
distribute-rgt-neg-in79.7%
Simplified79.7%
Final simplification79.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT)))))
(t_1 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_0))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= mu -2.4e+108)
t_2
(if (<= mu -2.45e-151)
t_1
(if (<= mu 5.8e-161)
(+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) t_0)
(if (<= mu 3.5e+163) 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 = NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0;
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -2.4e+108) {
tmp = t_2;
} else if (mu <= -2.45e-151) {
tmp = t_1;
} else if (mu <= 5.8e-161) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + t_0;
} else if (mu <= 3.5e+163) {
tmp = 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) :: tmp
t_0 = nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_0
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (mu <= (-2.4d+108)) then
tmp = t_2
else if (mu <= (-2.45d-151)) then
tmp = t_1
else if (mu <= 5.8d-161) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + t_0
else if (mu <= 3.5d+163) then
tmp = 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 = NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -2.4e+108) {
tmp = t_2;
} else if (mu <= -2.45e-151) {
tmp = t_1;
} else if (mu <= 5.8e-161) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + t_0;
} else if (mu <= 3.5e+163) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT))) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if mu <= -2.4e+108: tmp = t_2 elif mu <= -2.45e-151: tmp = t_1 elif mu <= 5.8e-161: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + t_0 elif mu <= 3.5e+163: tmp = t_1 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(Ev + Float64(Vef + EAccept)) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (mu <= -2.4e+108) tmp = t_2; elseif (mu <= -2.45e-151) tmp = t_1; elseif (mu <= 5.8e-161) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + t_0); elseif (mu <= 3.5e+163) tmp = 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 = NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT))); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (mu <= -2.4e+108) tmp = t_2; elseif (mu <= -2.45e-151) tmp = t_1; elseif (mu <= 5.8e-161) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + t_0; elseif (mu <= 3.5e+163) tmp = 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[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $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[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.4e+108], t$95$2, If[LessEqual[mu, -2.45e-151], t$95$1, If[LessEqual[mu, 5.8e-161], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 3.5e+163], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_0\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.4 \cdot 10^{+108}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -2.45 \cdot 10^{-151}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 5.8 \cdot 10^{-161}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + t\_0\\
\mathbf{elif}\;mu \leq 3.5 \cdot 10^{+163}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.40000000000000019e108 or 3.5000000000000003e163 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 86.8%
Taylor expanded in EAccept around 0 83.8%
+-commutative83.8%
Simplified83.8%
if -2.40000000000000019e108 < mu < -2.44999999999999983e-151 or 5.8e-161 < mu < 3.5000000000000003e163Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.6%
Taylor expanded in mu around 0 85.5%
+-commutative37.9%
associate-+l+37.9%
+-commutative37.9%
Simplified85.5%
if -2.44999999999999983e-151 < mu < 5.8e-161Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 85.6%
associate-*r/44.3%
mul-1-neg44.3%
Simplified85.6%
Taylor expanded in mu around 0 85.6%
+-commutative39.5%
associate-+l+39.5%
+-commutative39.5%
Simplified85.6%
Final simplification85.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= EDonor -1.05e+108) (not (<= EDonor 1.55e-37)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -1.05e+108) || !(EDonor <= 1.55e-37)) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((Ec / -KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((edonor <= (-1.05d+108)) .or. (.not. (edonor <= 1.55d-37))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((ec / -kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -1.05e+108) || !(EDonor <= 1.55e-37)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Ec / -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))) tmp = 0 if (EDonor <= -1.05e+108) or not (EDonor <= 1.55e-37): tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((EDonor <= -1.05e+108) || !(EDonor <= 1.55e-37)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-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))); tmp = 0.0; if ((EDonor <= -1.05e+108) || ~((EDonor <= 1.55e-37))) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((Ec / -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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[EDonor, -1.05e+108], N[Not[LessEqual[EDonor, 1.55e-37]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.05 \cdot 10^{+108} \lor \neg \left(EDonor \leq 1.55 \cdot 10^{-37}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\end{array}
\end{array}
if EDonor < -1.05000000000000005e108 or 1.54999999999999997e-37 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 83.8%
if -1.05000000000000005e108 < EDonor < 1.54999999999999997e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 83.5%
associate-*r/42.5%
mul-1-neg42.5%
Simplified83.5%
Final simplification83.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= mu -4.4e+102) (not (<= mu 1.9e+164)))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -4.4e+102) || !(mu <= 1.9e+164)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + 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) :: tmp
if ((mu <= (-4.4d+102)) .or. (.not. (mu <= 1.9d+164))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((ev + (vef + 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 tmp;
if ((mu <= -4.4e+102) || !(mu <= 1.9e+164)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (mu <= -4.4e+102) or not (mu <= 1.9e+164): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((mu <= -4.4e+102) || !(mu <= 1.9e+164)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((mu <= -4.4e+102) || ~((mu <= 1.9e+164))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[mu, -4.4e+102], N[Not[LessEqual[mu, 1.9e+164]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -4.4 \cdot 10^{+102} \lor \neg \left(mu \leq 1.9 \cdot 10^{+164}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}}\\
\end{array}
\end{array}
if mu < -4.40000000000000015e102 or 1.90000000000000011e164 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 86.8%
Taylor expanded in EAccept around 0 83.8%
+-commutative83.8%
Simplified83.8%
if -4.40000000000000015e102 < mu < 1.90000000000000011e164Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.9%
Taylor expanded in mu around 0 81.8%
+-commutative38.5%
associate-+l+38.5%
+-commutative38.5%
Simplified81.8%
Final simplification82.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= NaChar -1.9e-11)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Ev EAccept) KbT)))))
(if (<= NaChar 2.7e-129)
t_0
(if (<= NaChar 4e-26)
(+ t_1 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= NaChar 460000.0)
t_0
(+ t_1 (/ NdChar (+ 1.0 (+ 1.0 (/ EDonor KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NaChar <= -1.9e-11) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + EAccept) / KbT))));
} else if (NaChar <= 2.7e-129) {
tmp = t_0;
} else if (NaChar <= 4e-26) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (NaChar <= 460000.0) {
tmp = t_0;
} else {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (nachar <= (-1.9d-11)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((ev + eaccept) / kbt))))
else if (nachar <= 2.7d-129) then
tmp = t_0
else if (nachar <= 4d-26) then
tmp = t_1 + (ndchar / (1.0d0 - (ec / kbt)))
else if (nachar <= 460000.0d0) then
tmp = t_0
else
tmp = t_1 + (ndchar / (1.0d0 + (1.0d0 + (edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NaChar <= -1.9e-11) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Ev + EAccept) / KbT))));
} else if (NaChar <= 2.7e-129) {
tmp = t_0;
} else if (NaChar <= 4e-26) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (NaChar <= 460000.0) {
tmp = t_0;
} else {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if NaChar <= -1.9e-11: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Ev + EAccept) / KbT)))) elif NaChar <= 2.7e-129: tmp = t_0 elif NaChar <= 4e-26: tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))) elif NaChar <= 460000.0: tmp = t_0 else: tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NaChar <= -1.9e-11) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + EAccept) / KbT))))); elseif (NaChar <= 2.7e-129) tmp = t_0; elseif (NaChar <= 4e-26) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (NaChar <= 460000.0) tmp = t_0; else tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (NaChar <= -1.9e-11) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Ev + EAccept) / KbT)))); elseif (NaChar <= 2.7e-129) tmp = t_0; elseif (NaChar <= 4e-26) tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))); elseif (NaChar <= 460000.0) tmp = t_0; else tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.9e-11], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + EAccept), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.7e-129], t$95$0, If[LessEqual[NaChar, 4e-26], N[(t$95$1 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 460000.0], t$95$0, N[(t$95$1 + N[(NdChar / N[(1.0 + N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{-11}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev + EAccept}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-129}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 4 \cdot 10^{-26}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 460000:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(1 + \frac{EDonor}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -1.8999999999999999e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.2%
Taylor expanded in mu around 0 85.2%
+-commutative43.1%
associate-+l+43.1%
+-commutative43.1%
Simplified85.2%
Taylor expanded in Vef around 0 78.0%
if -1.8999999999999999e-11 < NaChar < 2.69999999999999999e-129 or 4.0000000000000002e-26 < NaChar < 4.6e5Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 69.0%
+-commutative69.0%
Simplified69.0%
Taylor expanded in mu around 0 72.1%
+-commutative72.1%
Simplified72.1%
if 2.69999999999999999e-129 < NaChar < 4.0000000000000002e-26Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.7%
associate-+r+56.7%
+-commutative56.7%
Simplified56.7%
Taylor expanded in Ec around inf 76.6%
associate-*r/76.6%
mul-1-neg76.6%
Simplified76.6%
if 4.6e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.7%
Taylor expanded in EDonor around 0 76.2%
+-commutative76.2%
Simplified76.2%
Final simplification75.1%
(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 (/ Ec KbT))))))
(if (<= NdChar -3.45e+112)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NdChar -5.3e-272)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ EDonor KbT)))))
(if (<= NdChar 8.2e-170)
t_1
(if (<= NdChar 4.6e-94)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))
(if (<= NdChar 1.05e+42)
(+ t_0 (/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= NdChar 1.75e+106)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/
NaChar
(+ (+ (/ Vef KbT) (/ Ev KbT)) (+ 2.0 (/ EAccept KbT)))))
(if (<= NdChar 3.1e+150)
t_1
(+
(/ NaChar 2.0)
(*
NdChar
(/
1.0
(+
1.0
(exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT)))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -3.45e+112) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= -5.3e-272) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
} else if (NdChar <= 8.2e-170) {
tmp = t_1;
} else if (NdChar <= 4.6e-94) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else if (NdChar <= 1.05e+42) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (NdChar <= 1.75e+106) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT))));
} else if (NdChar <= 3.1e+150) {
tmp = t_1;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
if (ndchar <= (-3.45d+112)) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (ndchar <= (-5.3d-272)) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (edonor / kbt))))
else if (ndchar <= 8.2d-170) then
tmp = t_1
else if (ndchar <= 4.6d-94) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
else if (ndchar <= 1.05d+42) then
tmp = t_0 + (ndchar / (1.0d0 + (mu / kbt)))
else if (ndchar <= 1.75d+106) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (((vef / kbt) + (ev / kbt)) + (2.0d0 + (eaccept / kbt))))
else if (ndchar <= 3.1d+150) then
tmp = t_1
else
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -3.45e+112) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= -5.3e-272) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
} else if (NdChar <= 8.2e-170) {
tmp = t_1;
} else if (NdChar <= 4.6e-94) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else if (NdChar <= 1.05e+42) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (NdChar <= 1.75e+106) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT))));
} else if (NdChar <= 3.1e+150) {
tmp = t_1;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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 = t_0 + (NdChar / (1.0 - (Ec / KbT))) tmp = 0 if NdChar <= -3.45e+112: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NdChar <= -5.3e-272: tmp = t_0 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))) elif NdChar <= 8.2e-170: tmp = t_1 elif NdChar <= 4.6e-94: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) elif NdChar <= 1.05e+42: tmp = t_0 + (NdChar / (1.0 + (mu / KbT))) elif NdChar <= 1.75e+106: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT)))) elif NdChar <= 3.1e+150: tmp = t_1 else: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))) tmp = 0.0 if (NdChar <= -3.45e+112) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NdChar <= -5.3e-272) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(EDonor / KbT))))); elseif (NdChar <= 8.2e-170) tmp = t_1; elseif (NdChar <= 4.6e-94) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); elseif (NdChar <= 1.05e+42) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (NdChar <= 1.75e+106) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Vef / KbT) + Float64(Ev / KbT)) + Float64(2.0 + Float64(EAccept / KbT))))); elseif (NdChar <= 3.1e+150) tmp = t_1; else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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 = t_0 + (NdChar / (1.0 - (Ec / KbT))); tmp = 0.0; if (NdChar <= -3.45e+112) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NdChar <= -5.3e-272) tmp = t_0 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))); elseif (NdChar <= 8.2e-170) tmp = t_1; elseif (NdChar <= 4.6e-94) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); elseif (NdChar <= 1.05e+42) tmp = t_0 + (NdChar / (1.0 + (mu / KbT))); elseif (NdChar <= 1.75e+106) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT)))); elseif (NdChar <= 3.1e+150) tmp = t_1; else tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.45e+112], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -5.3e-272], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.2e-170], t$95$1, If[LessEqual[NdChar, 4.6e-94], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e+42], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.75e+106], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision] + N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.1e+150], t$95$1, N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{if}\;NdChar \leq -3.45 \cdot 10^{+112}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq -5.3 \cdot 10^{-272}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \left(1 + \frac{EDonor}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 8.2 \cdot 10^{-170}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 4.6 \cdot 10^{-94}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+42}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.75 \cdot 10^{+106}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right) + \left(2 + \frac{EAccept}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 3.1 \cdot 10^{+150}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -3.45e112Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.9%
if -3.45e112 < NdChar < -5.3e-272Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.3%
Taylor expanded in EDonor around 0 76.1%
+-commutative76.1%
Simplified76.1%
if -5.3e-272 < NdChar < 8.19999999999999931e-170 or 1.7499999999999999e106 < NdChar < 3.10000000000000014e150Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.8%
associate-+r+66.8%
+-commutative66.8%
Simplified66.8%
Taylor expanded in Ec around inf 81.9%
associate-*r/81.9%
mul-1-neg81.9%
Simplified81.9%
if 8.19999999999999931e-170 < NdChar < 4.5999999999999999e-94Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.0%
Taylor expanded in mu around 0 88.0%
+-commutative39.6%
associate-+l+39.6%
+-commutative39.6%
Simplified88.0%
Taylor expanded in EDonor around 0 76.7%
if 4.5999999999999999e-94 < NdChar < 1.04999999999999998e42Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.8%
associate-+r+52.8%
+-commutative52.8%
Simplified52.8%
Taylor expanded in mu around inf 72.2%
if 1.04999999999999998e42 < NdChar < 1.7499999999999999e106Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.2%
Taylor expanded in mu around 0 75.1%
+-commutative8.5%
associate-+l+8.5%
+-commutative8.5%
Simplified75.1%
Taylor expanded in KbT around inf 69.1%
+-commutative69.1%
+-commutative69.1%
associate-+l+69.1%
Simplified69.1%
if 3.10000000000000014e150 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 67.1%
div-inv67.1%
associate-+r-67.1%
Applied egg-rr67.1%
Final simplification74.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))))
(if (<= NaChar -6.8e-26)
t_1
(if (<= NaChar -2.7e-101)
(+ t_0 (/ NaChar (/ Ev KbT)))
(if (<= NaChar -1.6e-169)
(+
(/ NaChar 2.0)
(/ NdChar (+ 1.0 (exp (/ (+ (+ Vef EDonor) mu) KbT)))))
(if (<= NaChar 9e-174)
(- t_0 (* KbT (/ NaChar mu)))
(if (<= NaChar 1.66e-127)
t_1
(if (<= NaChar 1.26e-96)
(-
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* KbT (/ NdChar Ec)))
(if (<= NaChar 17000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) 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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-26) {
tmp = t_1;
} else if (NaChar <= -2.7e-101) {
tmp = t_0 + (NaChar / (Ev / KbT));
} else if (NaChar <= -1.6e-169) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT))));
} else if (NaChar <= 9e-174) {
tmp = t_0 - (KbT * (NaChar / mu));
} else if (NaChar <= 1.66e-127) {
tmp = t_1;
} else if (NaChar <= 1.26e-96) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec));
} else if (NaChar <= 17000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / 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(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
if (nachar <= (-6.8d-26)) then
tmp = t_1
else if (nachar <= (-2.7d-101)) then
tmp = t_0 + (nachar / (ev / kbt))
else if (nachar <= (-1.6d-169)) then
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((((vef + edonor) + mu) / kbt))))
else if (nachar <= 9d-174) then
tmp = t_0 - (kbt * (nachar / mu))
else if (nachar <= 1.66d-127) then
tmp = t_1
else if (nachar <= 1.26d-96) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) - (kbt * (ndchar / ec))
else if (nachar <= 17000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / 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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-26) {
tmp = t_1;
} else if (NaChar <= -2.7e-101) {
tmp = t_0 + (NaChar / (Ev / KbT));
} else if (NaChar <= -1.6e-169) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((((Vef + EDonor) + mu) / KbT))));
} else if (NaChar <= 9e-174) {
tmp = t_0 - (KbT * (NaChar / mu));
} else if (NaChar <= 1.66e-127) {
tmp = t_1;
} else if (NaChar <= 1.26e-96) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec));
} else if (NaChar <= 17000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) tmp = 0 if NaChar <= -6.8e-26: tmp = t_1 elif NaChar <= -2.7e-101: tmp = t_0 + (NaChar / (Ev / KbT)) elif NaChar <= -1.6e-169: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((((Vef + EDonor) + mu) / KbT)))) elif NaChar <= 9e-174: tmp = t_0 - (KbT * (NaChar / mu)) elif NaChar <= 1.66e-127: tmp = t_1 elif NaChar <= 1.26e-96: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec)) elif NaChar <= 17000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / 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(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -6.8e-26) tmp = t_1; elseif (NaChar <= -2.7e-101) tmp = Float64(t_0 + Float64(NaChar / Float64(Ev / KbT))); elseif (NaChar <= -1.6e-169) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EDonor) + mu) / KbT))))); elseif (NaChar <= 9e-174) tmp = Float64(t_0 - Float64(KbT * Float64(NaChar / mu))); elseif (NaChar <= 1.66e-127) tmp = t_1; elseif (NaChar <= 1.26e-96) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) - Float64(KbT * Float64(NdChar / Ec))); elseif (NaChar <= 17000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -6.8e-26) tmp = t_1; elseif (NaChar <= -2.7e-101) tmp = t_0 + (NaChar / (Ev / KbT)); elseif (NaChar <= -1.6e-169) tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT)))); elseif (NaChar <= 9e-174) tmp = t_0 - (KbT * (NaChar / mu)); elseif (NaChar <= 1.66e-127) tmp = t_1; elseif (NaChar <= 1.26e-96) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec)); elseif (NaChar <= 17000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.8e-26], t$95$1, If[LessEqual[NaChar, -2.7e-101], N[(t$95$0 + N[(NaChar / N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.6e-169], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 9e-174], N[(t$95$0 - N[(KbT * N[(NaChar / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.66e-127], t$95$1, If[LessEqual[NaChar, 1.26e-96], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(KbT * N[(NdChar / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 17000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{-26}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -2.7 \cdot 10^{-101}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1.6 \cdot 10^{-169}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{\left(Vef + EDonor\right) + mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-174}:\\
\;\;\;\;t\_0 - KbT \cdot \frac{NaChar}{mu}\\
\mathbf{elif}\;NaChar \leq 1.66 \cdot 10^{-127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.26 \cdot 10^{-96}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} - KbT \cdot \frac{NdChar}{Ec}\\
\mathbf{elif}\;NaChar \leq 17000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -6.80000000000000026e-26 or 8.99999999999999929e-174 < NaChar < 1.66000000000000003e-127 or 17000 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.5%
Taylor expanded in mu around 0 82.6%
+-commutative44.3%
associate-+l+44.3%
+-commutative44.3%
Simplified82.6%
Taylor expanded in EDonor around 0 69.3%
if -6.80000000000000026e-26 < NaChar < -2.7000000000000002e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.3%
+-commutative78.3%
Simplified78.3%
Taylor expanded in Ev around inf 56.9%
if -2.7000000000000002e-101 < NaChar < -1.59999999999999997e-169Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.0%
Taylor expanded in Ec around 0 54.0%
associate-+r+54.0%
+-commutative54.0%
Simplified54.0%
if -1.59999999999999997e-169 < NaChar < 8.99999999999999929e-174Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.0%
+-commutative67.0%
Simplified67.0%
Taylor expanded in mu around inf 69.9%
mul-1-neg69.9%
associate-/l*70.0%
distribute-rgt-neg-in70.0%
Simplified70.0%
if 1.66000000000000003e-127 < NaChar < 1.25999999999999997e-96Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.0%
associate-+r+60.0%
+-commutative60.0%
Simplified60.0%
Taylor expanded in Ec around inf 100.0%
mul-1-neg100.0%
associate-/l*100.0%
distribute-rgt-neg-in100.0%
Simplified100.0%
if 1.25999999999999997e-96 < NaChar < 17000Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification69.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (/ Ev KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ t_1 (* NdChar 0.5))))
(if (<= NaChar -4.1e-50)
t_2
(if (<= NaChar -2.25e-102)
t_0
(if (<= NaChar 1.55e-146)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NaChar 5.7e-129)
t_0
(if (<= NaChar 2.7e-97)
(+ t_1 (* KbT (/ NdChar Vef)))
(if (<= NaChar 160000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) 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 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (Ev / KbT));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.1e-50) {
tmp = t_2;
} else if (NaChar <= -2.25e-102) {
tmp = t_0;
} else if (NaChar <= 1.55e-146) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NaChar <= 5.7e-129) {
tmp = t_0;
} else if (NaChar <= 2.7e-97) {
tmp = t_1 + (KbT * (NdChar / Vef));
} else if (NaChar <= 160000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / 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 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (ev / kbt))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar * 0.5d0)
if (nachar <= (-4.1d-50)) then
tmp = t_2
else if (nachar <= (-2.25d-102)) then
tmp = t_0
else if (nachar <= 1.55d-146) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (nachar <= 5.7d-129) then
tmp = t_0
else if (nachar <= 2.7d-97) then
tmp = t_1 + (kbt * (ndchar / vef))
else if (nachar <= 160000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / 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 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (Ev / KbT));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.1e-50) {
tmp = t_2;
} else if (NaChar <= -2.25e-102) {
tmp = t_0;
} else if (NaChar <= 1.55e-146) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NaChar <= 5.7e-129) {
tmp = t_0;
} else if (NaChar <= 2.7e-97) {
tmp = t_1 + (KbT * (NdChar / Vef));
} else if (NaChar <= 160000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (Ev / KbT)) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar * 0.5) tmp = 0 if NaChar <= -4.1e-50: tmp = t_2 elif NaChar <= -2.25e-102: tmp = t_0 elif NaChar <= 1.55e-146: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NaChar <= 5.7e-129: tmp = t_0 elif NaChar <= 2.7e-97: tmp = t_1 + (KbT * (NdChar / Vef)) elif NaChar <= 160000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Ev / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -4.1e-50) tmp = t_2; elseif (NaChar <= -2.25e-102) tmp = t_0; elseif (NaChar <= 1.55e-146) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NaChar <= 5.7e-129) tmp = t_0; elseif (NaChar <= 2.7e-97) tmp = Float64(t_1 + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 160000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); 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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (Ev / KbT)); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -4.1e-50) tmp = t_2; elseif (NaChar <= -2.25e-102) tmp = t_0; elseif (NaChar <= 1.55e-146) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NaChar <= 5.7e-129) tmp = t_0; elseif (NaChar <= 2.7e-97) tmp = t_1 + (KbT * (NdChar / Vef)); elseif (NaChar <= 160000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / 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[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.1e-50], t$95$2, If[LessEqual[NaChar, -2.25e-102], t$95$0, If[LessEqual[NaChar, 1.55e-146], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.7e-129], t$95$0, If[LessEqual[NaChar, 2.7e-97], N[(t$95$1 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 160000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -4.1 \cdot 10^{-50}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -2.25 \cdot 10^{-102}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.55 \cdot 10^{-146}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 160000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -4.09999999999999985e-50 or 1.6e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.7%
associate-*r/35.0%
mul-1-neg35.0%
Simplified82.7%
Taylor expanded in Ec around 0 66.6%
if -4.09999999999999985e-50 < NaChar < -2.25e-102 or 1.5499999999999999e-146 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 85.8%
+-commutative85.8%
Simplified85.8%
Taylor expanded in Ev around inf 62.8%
if -2.25e-102 < NaChar < 1.5499999999999999e-146Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.1%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
if 2.69999999999999985e-97 < NaChar < 1.6e5Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= NaChar -4.5e-12)
(+ t_1 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NaChar 5.6e-129)
t_0
(if (<= NaChar 1.2e-27)
(+ t_1 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= NaChar 850000.0)
t_0
(+ t_1 (/ NdChar (+ 1.0 (+ 1.0 (/ EDonor KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NaChar <= -4.5e-12) {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NaChar <= 5.6e-129) {
tmp = t_0;
} else if (NaChar <= 1.2e-27) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (NaChar <= 850000.0) {
tmp = t_0;
} else {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (nachar <= (-4.5d-12)) then
tmp = t_1 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (nachar <= 5.6d-129) then
tmp = t_0
else if (nachar <= 1.2d-27) then
tmp = t_1 + (ndchar / (1.0d0 - (ec / kbt)))
else if (nachar <= 850000.0d0) then
tmp = t_0
else
tmp = t_1 + (ndchar / (1.0d0 + (1.0d0 + (edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NaChar <= -4.5e-12) {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NaChar <= 5.6e-129) {
tmp = t_0;
} else if (NaChar <= 1.2e-27) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (NaChar <= 850000.0) {
tmp = t_0;
} else {
tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if NaChar <= -4.5e-12: tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NaChar <= 5.6e-129: tmp = t_0 elif NaChar <= 1.2e-27: tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))) elif NaChar <= 850000.0: tmp = t_0 else: tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NaChar <= -4.5e-12) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NaChar <= 5.6e-129) tmp = t_0; elseif (NaChar <= 1.2e-27) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (NaChar <= 850000.0) tmp = t_0; else tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (NaChar <= -4.5e-12) tmp = t_1 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NaChar <= 5.6e-129) tmp = t_0; elseif (NaChar <= 1.2e-27) tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))); elseif (NaChar <= 850000.0) tmp = t_0; else tmp = t_1 + (NdChar / (1.0 + (1.0 + (EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.5e-12], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.6e-129], t$95$0, If[LessEqual[NaChar, 1.2e-27], N[(t$95$1 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 850000.0], t$95$0, N[(t$95$1 + N[(NdChar / N[(1.0 + N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -4.5 \cdot 10^{-12}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 5.6 \cdot 10^{-129}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.2 \cdot 10^{-27}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 850000:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(1 + \frac{EDonor}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -4.49999999999999981e-12Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.4%
Taylor expanded in mu around 0 72.5%
+-commutative72.5%
Simplified72.5%
if -4.49999999999999981e-12 < NaChar < 5.5999999999999998e-129 or 1.20000000000000001e-27 < NaChar < 8.5e5Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 69.0%
+-commutative69.0%
Simplified69.0%
Taylor expanded in mu around 0 72.1%
+-commutative72.1%
Simplified72.1%
if 5.5999999999999998e-129 < NaChar < 1.20000000000000001e-27Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.7%
associate-+r+56.7%
+-commutative56.7%
Simplified56.7%
Taylor expanded in Ec around inf 76.6%
associate-*r/76.6%
mul-1-neg76.6%
Simplified76.6%
if 8.5e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.7%
Taylor expanded in EDonor around 0 76.2%
+-commutative76.2%
Simplified76.2%
Final simplification73.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))))
(/ NdChar (+ 1.0 (/ mu KbT))))))
(if (<= NdChar -1.65e+112)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NdChar -1.6e-270)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))
(if (<= NdChar 1.9e+42)
t_0
(if (<= NdChar 3.2e+78)
(-
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* KbT (/ NaChar mu)))
(if (<= NdChar 2e+176)
t_0
(+
(/ NaChar 2.0)
(*
NdChar
(/
1.0
(+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (mu / KbT)));
double tmp;
if (NdChar <= -1.65e+112) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= -1.6e-270) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else if (NdChar <= 1.9e+42) {
tmp = t_0;
} else if (NdChar <= 3.2e+78) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) - (KbT * (NaChar / mu));
} else if (NdChar <= 2e+176) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (mu / kbt)))
if (ndchar <= (-1.65d+112)) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (ndchar <= (-1.6d-270)) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
else if (ndchar <= 1.9d+42) then
tmp = t_0
else if (ndchar <= 3.2d+78) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) - (kbt * (nachar / mu))
else if (ndchar <= 2d+176) then
tmp = t_0
else
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (mu / KbT)));
double tmp;
if (NdChar <= -1.65e+112) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= -1.6e-270) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else if (NdChar <= 1.9e+42) {
tmp = t_0;
} else if (NdChar <= 3.2e+78) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) - (KbT * (NaChar / mu));
} else if (NdChar <= 2e+176) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 + (mu / KbT))) tmp = 0 if NdChar <= -1.65e+112: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NdChar <= -1.6e-270: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) elif NdChar <= 1.9e+42: tmp = t_0 elif NdChar <= 3.2e+78: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) - (KbT * (NaChar / mu)) elif NdChar <= 2e+176: tmp = t_0 else: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))) tmp = 0.0 if (NdChar <= -1.65e+112) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NdChar <= -1.6e-270) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); elseif (NdChar <= 1.9e+42) tmp = t_0; elseif (NdChar <= 3.2e+78) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) - Float64(KbT * Float64(NaChar / mu))); elseif (NdChar <= 2e+176) tmp = t_0; else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 + (mu / KbT))); tmp = 0.0; if (NdChar <= -1.65e+112) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NdChar <= -1.6e-270) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); elseif (NdChar <= 1.9e+42) tmp = t_0; elseif (NdChar <= 3.2e+78) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) - (KbT * (NaChar / mu)); elseif (NdChar <= 2e+176) tmp = t_0; else tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.65e+112], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.6e-270], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.9e+42], t$95$0, If[LessEqual[NdChar, 3.2e+78], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(KbT * N[(NaChar / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2e+176], t$95$0, N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{if}\;NdChar \leq -1.65 \cdot 10^{+112}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq -1.6 \cdot 10^{-270}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.9 \cdot 10^{+42}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 3.2 \cdot 10^{+78}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} - KbT \cdot \frac{NaChar}{mu}\\
\mathbf{elif}\;NdChar \leq 2 \cdot 10^{+176}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.64999999999999995e112Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.9%
if -1.64999999999999995e112 < NdChar < -1.59999999999999994e-270Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.3%
Taylor expanded in mu around 0 77.1%
+-commutative49.8%
associate-+l+49.8%
+-commutative49.8%
Simplified77.1%
Taylor expanded in EDonor around 0 70.6%
if -1.59999999999999994e-270 < NdChar < 1.8999999999999999e42 or 3.19999999999999994e78 < NdChar < 2e176Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.3%
associate-+r+60.3%
+-commutative60.3%
Simplified60.3%
Taylor expanded in mu around inf 68.7%
if 1.8999999999999999e42 < NdChar < 3.19999999999999994e78Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 84.7%
+-commutative84.7%
Simplified84.7%
Taylor expanded in mu around inf 68.6%
mul-1-neg68.6%
associate-/l*68.6%
distribute-rgt-neg-in68.6%
Simplified68.6%
if 2e176 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 71.7%
div-inv71.7%
associate-+r-71.7%
Applied egg-rr71.7%
Final simplification69.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))))
(/ NdChar (+ 1.0 (/ EDonor KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -2.8e+70)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NdChar 1.9e+42)
t_0
(if (<= NdChar 3.5e+78)
(- t_1 (* KbT (/ NaChar mu)))
(if (<= NdChar 9.2e+166)
t_0
(if (<= NdChar 6.8e+213)
(+ t_1 (/ NaChar (/ Ev KbT)))
(+
(/ NaChar 2.0)
(*
NdChar
(/
1.0
(+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -2.8e+70) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 1.9e+42) {
tmp = t_0;
} else if (NdChar <= 3.5e+78) {
tmp = t_1 - (KbT * (NaChar / mu));
} else if (NdChar <= 9.2e+166) {
tmp = t_0;
} else if (NdChar <= 6.8e+213) {
tmp = t_1 + (NaChar / (Ev / KbT));
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-2.8d+70)) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (ndchar <= 1.9d+42) then
tmp = t_0
else if (ndchar <= 3.5d+78) then
tmp = t_1 - (kbt * (nachar / mu))
else if (ndchar <= 9.2d+166) then
tmp = t_0
else if (ndchar <= 6.8d+213) then
tmp = t_1 + (nachar / (ev / kbt))
else
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -2.8e+70) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 1.9e+42) {
tmp = t_0;
} else if (NdChar <= 3.5e+78) {
tmp = t_1 - (KbT * (NaChar / mu));
} else if (NdChar <= 9.2e+166) {
tmp = t_0;
} else if (NdChar <= 6.8e+213) {
tmp = t_1 + (NaChar / (Ev / KbT));
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 + (EDonor / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -2.8e+70: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NdChar <= 1.9e+42: tmp = t_0 elif NdChar <= 3.5e+78: tmp = t_1 - (KbT * (NaChar / mu)) elif NdChar <= 9.2e+166: tmp = t_0 elif NdChar <= 6.8e+213: tmp = t_1 + (NaChar / (Ev / KbT)) else: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -2.8e+70) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NdChar <= 1.9e+42) tmp = t_0; elseif (NdChar <= 3.5e+78) tmp = Float64(t_1 - Float64(KbT * Float64(NaChar / mu))); elseif (NdChar <= 9.2e+166) tmp = t_0; elseif (NdChar <= 6.8e+213) tmp = Float64(t_1 + Float64(NaChar / Float64(Ev / KbT))); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 + (EDonor / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -2.8e+70) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NdChar <= 1.9e+42) tmp = t_0; elseif (NdChar <= 3.5e+78) tmp = t_1 - (KbT * (NaChar / mu)); elseif (NdChar <= 9.2e+166) tmp = t_0; elseif (NdChar <= 6.8e+213) tmp = t_1 + (NaChar / (Ev / KbT)); else tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.8e+70], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.9e+42], t$95$0, If[LessEqual[NdChar, 3.5e+78], N[(t$95$1 - N[(KbT * N[(NaChar / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.2e+166], t$95$0, If[LessEqual[NdChar, 6.8e+213], N[(t$95$1 + N[(NaChar / N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -2.8 \cdot 10^{+70}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq 1.9 \cdot 10^{+42}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 3.5 \cdot 10^{+78}:\\
\;\;\;\;t\_1 - KbT \cdot \frac{NaChar}{mu}\\
\mathbf{elif}\;NdChar \leq 9.2 \cdot 10^{+166}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 6.8 \cdot 10^{+213}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -2.7999999999999999e70Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.5%
if -2.7999999999999999e70 < NdChar < 1.8999999999999999e42 or 3.5000000000000001e78 < NdChar < 9.2000000000000003e166Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.6%
associate-+r+66.6%
+-commutative66.6%
Simplified66.6%
Taylor expanded in EDonor around inf 67.1%
if 1.8999999999999999e42 < NdChar < 3.5000000000000001e78Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 84.7%
+-commutative84.7%
Simplified84.7%
Taylor expanded in mu around inf 68.6%
mul-1-neg68.6%
associate-/l*68.6%
distribute-rgt-neg-in68.6%
Simplified68.6%
if 9.2000000000000003e166 < NdChar < 6.79999999999999983e213Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.1%
+-commutative75.1%
Simplified75.1%
Taylor expanded in Ev around inf 39.6%
if 6.79999999999999983e213 < NdChar Initial program 99.6%
Simplified99.6%
Taylor expanded in KbT around inf 71.5%
div-inv71.5%
associate-+r-71.5%
Applied egg-rr71.5%
Final simplification66.6%
(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 (/ Ec KbT))))))
(if (<= NdChar -1.06e+71)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NdChar 1.85e+42)
t_0
(if (<= NdChar 4.8e+110)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (/ EAccept KbT)))
(if (<= NdChar 1.85e+150)
t_0
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -1.06e+71) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 1.85e+42) {
tmp = t_0;
} else if (NdChar <= 4.8e+110) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (EAccept / KbT));
} else if (NdChar <= 1.85e+150) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 - (ec / kbt)))
if (ndchar <= (-1.06d+71)) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (ndchar <= 1.85d+42) then
tmp = t_0
else if (ndchar <= 4.8d+110) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (eaccept / kbt))
else if (ndchar <= 1.85d+150) then
tmp = t_0
else
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -1.06e+71) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 1.85e+42) {
tmp = t_0;
} else if (NdChar <= 4.8e+110) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (EAccept / KbT));
} else if (NdChar <= 1.85e+150) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 - (Ec / KbT))) tmp = 0 if NdChar <= -1.06e+71: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NdChar <= 1.85e+42: tmp = t_0 elif NdChar <= 4.8e+110: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (EAccept / KbT)) elif NdChar <= 1.85e+150: tmp = t_0 else: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))) tmp = 0.0 if (NdChar <= -1.06e+71) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NdChar <= 1.85e+42) tmp = t_0; elseif (NdChar <= 4.8e+110) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(EAccept / KbT))); elseif (NdChar <= 1.85e+150) tmp = t_0; else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 - (Ec / KbT))); tmp = 0.0; if (NdChar <= -1.06e+71) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NdChar <= 1.85e+42) tmp = t_0; elseif (NdChar <= 4.8e+110) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (EAccept / KbT)); elseif (NdChar <= 1.85e+150) tmp = t_0; else tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.06e+71], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.85e+42], t$95$0, If[LessEqual[NdChar, 4.8e+110], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.85e+150], t$95$0, N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{if}\;NdChar \leq -1.06 \cdot 10^{+71}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq 1.85 \cdot 10^{+42}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 4.8 \cdot 10^{+110}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.85 \cdot 10^{+150}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.06e71Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.5%
if -1.06e71 < NdChar < 1.84999999999999998e42 or 4.80000000000000025e110 < NdChar < 1.84999999999999994e150Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.4%
associate-+r+68.4%
+-commutative68.4%
Simplified68.4%
Taylor expanded in Ec around inf 73.1%
associate-*r/73.1%
mul-1-neg73.1%
Simplified73.1%
if 1.84999999999999998e42 < NdChar < 4.80000000000000025e110Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 84.6%
+-commutative84.6%
Simplified84.6%
Taylor expanded in EAccept around inf 57.4%
if 1.84999999999999994e150 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 67.1%
div-inv67.1%
associate-+r-67.1%
Applied egg-rr67.1%
Final simplification69.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))))
(/ NdChar (- 1.0 (/ Ec KbT))))))
(if (<= NdChar -1.25e+70)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NdChar 3.9e+40)
t_0
(if (<= NdChar 1.3e+106)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (+ (/ Vef KbT) (/ Ev KbT)) (+ 2.0 (/ EAccept KbT)))))
(if (<= NdChar 1.85e+150)
t_0
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -1.25e+70) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 3.9e+40) {
tmp = t_0;
} else if (NdChar <= 1.3e+106) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT))));
} else if (NdChar <= 1.85e+150) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 - (ec / kbt)))
if (ndchar <= (-1.25d+70)) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (ndchar <= 3.9d+40) then
tmp = t_0
else if (ndchar <= 1.3d+106) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (((vef / kbt) + (ev / kbt)) + (2.0d0 + (eaccept / kbt))))
else if (ndchar <= 1.85d+150) then
tmp = t_0
else
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
double tmp;
if (NdChar <= -1.25e+70) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NdChar <= 3.9e+40) {
tmp = t_0;
} else if (NdChar <= 1.3e+106) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT))));
} else if (NdChar <= 1.85e+150) {
tmp = t_0;
} else {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 - (Ec / KbT))) tmp = 0 if NdChar <= -1.25e+70: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NdChar <= 3.9e+40: tmp = t_0 elif NdChar <= 1.3e+106: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT)))) elif NdChar <= 1.85e+150: tmp = t_0 else: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))) tmp = 0.0 if (NdChar <= -1.25e+70) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NdChar <= 3.9e+40) tmp = t_0; elseif (NdChar <= 1.3e+106) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Vef / KbT) + Float64(Ev / KbT)) + Float64(2.0 + Float64(EAccept / KbT))))); elseif (NdChar <= 1.85e+150) tmp = t_0; else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / 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)))) + (NdChar / (1.0 - (Ec / KbT))); tmp = 0.0; if (NdChar <= -1.25e+70) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NdChar <= 3.9e+40) tmp = t_0; elseif (NdChar <= 1.3e+106) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (((Vef / KbT) + (Ev / KbT)) + (2.0 + (EAccept / KbT)))); elseif (NdChar <= 1.85e+150) tmp = t_0; else tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.25e+70], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.9e+40], t$95$0, If[LessEqual[NdChar, 1.3e+106], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision] + N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.85e+150], t$95$0, N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{if}\;NdChar \leq -1.25 \cdot 10^{+70}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq 3.9 \cdot 10^{+40}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.3 \cdot 10^{+106}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right) + \left(2 + \frac{EAccept}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 1.85 \cdot 10^{+150}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.2500000000000001e70Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.5%
if -1.2500000000000001e70 < NdChar < 3.9000000000000001e40 or 1.3000000000000001e106 < NdChar < 1.84999999999999994e150Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.2%
associate-+r+68.2%
+-commutative68.2%
Simplified68.2%
Taylor expanded in Ec around inf 72.8%
associate-*r/72.8%
mul-1-neg72.8%
Simplified72.8%
if 3.9000000000000001e40 < NdChar < 1.3000000000000001e106Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.2%
Taylor expanded in mu around 0 75.1%
+-commutative8.5%
associate-+l+8.5%
+-commutative8.5%
Simplified75.1%
Taylor expanded in KbT around inf 69.1%
+-commutative69.1%
+-commutative69.1%
associate-+l+69.1%
Simplified69.1%
if 1.84999999999999994e150 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 67.1%
div-inv67.1%
associate-+r-67.1%
Applied egg-rr67.1%
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 0.5))))
(if (<= NaChar -6.8e-28)
t_1
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(if (<= NaChar 2.7e-97)
(+ t_0 (* KbT (/ NdChar Vef)))
(if (<= NaChar 58000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.8e-28) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NaChar <= 2.7e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 58000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar * 0.5d0)
if (nachar <= (-6.8d-28)) then
tmp = t_1
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else if (nachar <= 2.7d-97) then
tmp = t_0 + (kbt * (ndchar / vef))
else if (nachar <= 58000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.8e-28) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NaChar <= 2.7e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 58000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar * 0.5) tmp = 0 if NaChar <= -6.8e-28: tmp = t_1 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) elif NaChar <= 2.7e-97: tmp = t_0 + (KbT * (NdChar / Vef)) elif NaChar <= 58000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -6.8e-28) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); elseif (NaChar <= 2.7e-97) tmp = Float64(t_0 + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 58000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -6.8e-28) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); elseif (NaChar <= 2.7e-97) tmp = t_0 + (KbT * (NdChar / Vef)); elseif (NaChar <= 58000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.8e-28], t$95$1, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.7e-97], N[(t$95$0 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 58000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{-28}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 58000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -6.8000000000000001e-28 or 58000 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.4%
associate-*r/34.2%
mul-1-neg34.2%
Simplified82.4%
Taylor expanded in Ec around 0 67.0%
if -6.8000000000000001e-28 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.1%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
if 2.69999999999999985e-97 < NaChar < 58000Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification65.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 (+ t_0 (* NdChar 0.5))))
(if (<= NaChar -6.5e-28)
t_1
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ 1.0 (/ KbT (- (+ (+ Vef EDonor) mu) Ec))))))
(/ NaChar 2.0))
(if (<= NaChar 2.7e-97)
(+ t_0 (* KbT (/ NdChar Vef)))
(if (<= NaChar 210000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.5e-28) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NaChar <= 2.7e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 210000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar * 0.5d0)
if (nachar <= (-6.5d-28)) then
tmp = t_1
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp((1.0d0 / (kbt / (((vef + edonor) + mu) - ec)))))) + (nachar / 2.0d0)
else if (nachar <= 2.7d-97) then
tmp = t_0 + (kbt * (ndchar / vef))
else if (nachar <= 210000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.5e-28) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0);
} else if (NaChar <= 2.7e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 210000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar * 0.5) tmp = 0 if NaChar <= -6.5e-28: tmp = t_1 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0) elif NaChar <= 2.7e-97: tmp = t_0 + (KbT * (NdChar / Vef)) elif NaChar <= 210000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -6.5e-28) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(1.0 / Float64(KbT / Float64(Float64(Float64(Vef + EDonor) + mu) - Ec)))))) + Float64(NaChar / 2.0)); elseif (NaChar <= 2.7e-97) tmp = Float64(t_0 + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 210000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -6.5e-28) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp((1.0 / (KbT / (((Vef + EDonor) + mu) - Ec)))))) + (NaChar / 2.0); elseif (NaChar <= 2.7e-97) tmp = t_0 + (KbT * (NdChar / Vef)); elseif (NaChar <= 210000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.5e-28], t$95$1, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(1.0 / N[(KbT / N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.7e-97], N[(t$95$0 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 210000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -6.5 \cdot 10^{-28}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{1}{\frac{KbT}{\left(\left(Vef + EDonor\right) + mu\right) - Ec}}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 210000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -6.50000000000000043e-28 or 2.1e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.4%
associate-*r/34.2%
mul-1-neg34.2%
Simplified82.4%
Taylor expanded in Ec around 0 67.0%
if -6.50000000000000043e-28 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.1%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
if 2.69999999999999985e-97 < NaChar < 2.1e5Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification65.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 (+ t_0 (* NdChar 0.5))))
(if (<= NaChar -7.2e-50)
t_1
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ (* KbT NaChar) Ev))
(if (<= NaChar 3.35e-97)
(+ t_0 (* KbT (/ NdChar Vef)))
(if (<= NaChar 7.2e-6)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -7.2e-50) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 3.35e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 7.2e-6) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar * 0.5d0)
if (nachar <= (-7.2d-50)) then
tmp = t_1
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + ((kbt * nachar) / ev)
else if (nachar <= 3.35d-97) then
tmp = t_0 + (kbt * (ndchar / vef))
else if (nachar <= 7.2d-6) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar * 0.5);
double tmp;
if (NaChar <= -7.2e-50) {
tmp = t_1;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 3.35e-97) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (NaChar <= 7.2e-6) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar * 0.5) tmp = 0 if NaChar <= -7.2e-50: tmp = t_1 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev) elif NaChar <= 3.35e-97: tmp = t_0 + (KbT * (NdChar / Vef)) elif NaChar <= 7.2e-6: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -7.2e-50) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(Float64(KbT * NaChar) / Ev)); elseif (NaChar <= 3.35e-97) tmp = Float64(t_0 + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 7.2e-6) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -7.2e-50) tmp = t_1; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev); elseif (NaChar <= 3.35e-97) tmp = t_0 + (KbT * (NdChar / Vef)); elseif (NaChar <= 7.2e-6) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -7.2e-50], t$95$1, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.35e-97], N[(t$95$0 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 7.2e-6], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -7.2 \cdot 10^{-50}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{KbT \cdot NaChar}{Ev}\\
\mathbf{elif}\;NaChar \leq 3.35 \cdot 10^{-97}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 7.2 \cdot 10^{-6}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -7.19999999999999958e-50 or 7.19999999999999967e-6 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.3%
associate-*r/34.6%
mul-1-neg34.6%
Simplified82.3%
Taylor expanded in Ec around 0 66.4%
if -7.19999999999999958e-50 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
+-commutative67.5%
Simplified67.5%
Taylor expanded in Ev around inf 54.2%
if 5.7000000000000001e-129 < NaChar < 3.35e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
if 3.35e-97 < NaChar < 7.19999999999999967e-6Initial program 99.4%
Simplified99.4%
Taylor expanded in KbT around inf 74.4%
div-inv74.4%
associate-+r-74.4%
Applied egg-rr74.4%
Final simplification62.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))))
(if (<= NaChar -6.8e-31)
t_0
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ (* KbT NaChar) Ev))
(if (<= NaChar 8e-92)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* KbT (/ NdChar Vef)))
(if (<= NaChar 400000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-31) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 8e-92) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= 400000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
if (nachar <= (-6.8d-31)) then
tmp = t_0
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + ((kbt * nachar) / ev)
else if (nachar <= 8d-92) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (kbt * (ndchar / vef))
else if (nachar <= 400000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-31) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 8e-92) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= 400000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) tmp = 0 if NaChar <= -6.8e-31: tmp = t_0 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev) elif NaChar <= 8e-92: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (KbT * (NdChar / Vef)) elif NaChar <= 400000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -6.8e-31) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(Float64(KbT * NaChar) / Ev)); elseif (NaChar <= 8e-92) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 400000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -6.8e-31) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev); elseif (NaChar <= 8e-92) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (KbT * (NdChar / Vef)); elseif (NaChar <= 400000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.8e-31], t$95$0, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8e-92], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 400000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{-31}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{KbT \cdot NaChar}{Ev}\\
\mathbf{elif}\;NaChar \leq 8 \cdot 10^{-92}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 400000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -6.8000000000000002e-31 or 4e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.3%
Taylor expanded in mu around 0 82.1%
+-commutative45.5%
associate-+l+45.5%
+-commutative45.5%
Simplified82.1%
Taylor expanded in EDonor around 0 69.3%
if -6.8000000000000002e-31 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
+-commutative67.5%
Simplified67.5%
Taylor expanded in Ev around inf 53.8%
if 5.7000000000000001e-129 < NaChar < 7.9999999999999999e-92Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
if 7.9999999999999999e-92 < NaChar < 4e5Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification64.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))))
(if (<= NaChar -4e-30)
t_0
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ (* KbT NaChar) Ev))
(if (<= NaChar 2.7e-97)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ (* NdChar KbT) EDonor))
(if (<= NaChar 62000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -4e-30) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 2.7e-97) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + ((NdChar * KbT) / EDonor);
} else if (NaChar <= 62000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
if (nachar <= (-4d-30)) then
tmp = t_0
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + ((kbt * nachar) / ev)
else if (nachar <= 2.7d-97) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + ((ndchar * kbt) / edonor)
else if (nachar <= 62000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -4e-30) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 2.7e-97) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + ((NdChar * KbT) / EDonor);
} else if (NaChar <= 62000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) tmp = 0 if NaChar <= -4e-30: tmp = t_0 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev) elif NaChar <= 2.7e-97: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + ((NdChar * KbT) / EDonor) elif NaChar <= 62000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -4e-30) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(Float64(KbT * NaChar) / Ev)); elseif (NaChar <= 2.7e-97) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(Float64(NdChar * KbT) / EDonor)); elseif (NaChar <= 62000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -4e-30) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev); elseif (NaChar <= 2.7e-97) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + ((NdChar * KbT) / EDonor); elseif (NaChar <= 62000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4e-30], t$95$0, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.7e-97], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(NdChar * KbT), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 62000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -4 \cdot 10^{-30}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{KbT \cdot NaChar}{Ev}\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar \cdot KbT}{EDonor}\\
\mathbf{elif}\;NaChar \leq 62000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -4e-30 or 62000 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.3%
Taylor expanded in mu around 0 82.1%
+-commutative45.5%
associate-+l+45.5%
+-commutative45.5%
Simplified82.1%
Taylor expanded in EDonor around 0 69.3%
if -4e-30 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
+-commutative67.5%
Simplified67.5%
Taylor expanded in Ev around inf 53.8%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in EDonor around inf 84.1%
if 2.69999999999999985e-97 < NaChar < 62000Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification64.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))))
(if (<= NaChar -1.55e-30)
t_0
(if (<= NaChar 5.7e-129)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ (* KbT NaChar) Ev))
(if (<= NaChar 2.7e-97)
(-
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* KbT (/ NdChar Ec)))
(if (<= NaChar 36000.0)
(+
(/ NaChar 2.0)
(*
NdChar
(/ 1.0 (+ 1.0 (exp (/ (+ EDonor (- (+ Vef mu) Ec)) KbT))))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -1.55e-30) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 2.7e-97) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec));
} else if (NaChar <= 36000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
if (nachar <= (-1.55d-30)) then
tmp = t_0
else if (nachar <= 5.7d-129) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + ((kbt * nachar) / ev)
else if (nachar <= 2.7d-97) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) - (kbt * (ndchar / ec))
else if (nachar <= 36000.0d0) then
tmp = (nachar / 2.0d0) + (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + ((vef + mu) - ec)) / kbt)))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
double tmp;
if (NaChar <= -1.55e-30) {
tmp = t_0;
} else if (NaChar <= 5.7e-129) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev);
} else if (NaChar <= 2.7e-97) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec));
} else if (NaChar <= 36000.0) {
tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT)))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) tmp = 0 if NaChar <= -1.55e-30: tmp = t_0 elif NaChar <= 5.7e-129: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev) elif NaChar <= 2.7e-97: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec)) elif NaChar <= 36000.0: tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + math.exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -1.55e-30) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(Float64(KbT * NaChar) / Ev)); elseif (NaChar <= 2.7e-97) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) - Float64(KbT * Float64(NdChar / Ec))); elseif (NaChar <= 36000.0) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef + mu) - Ec)) / KbT)))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -1.55e-30) tmp = t_0; elseif (NaChar <= 5.7e-129) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + ((KbT * NaChar) / Ev); elseif (NaChar <= 2.7e-97) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) - (KbT * (NdChar / Ec)); elseif (NaChar <= 36000.0) tmp = (NaChar / 2.0) + (NdChar * (1.0 / (1.0 + exp(((EDonor + ((Vef + mu) - Ec)) / KbT))))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.55e-30], t$95$0, If[LessEqual[NaChar, 5.7e-129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.7e-97], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(KbT * N[(NdChar / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 36000.0], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -1.55 \cdot 10^{-30}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{KbT \cdot NaChar}{Ev}\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} - KbT \cdot \frac{NdChar}{Ec}\\
\mathbf{elif}\;NaChar \leq 36000:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(\left(Vef + mu\right) - Ec\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.54999999999999995e-30 or 36000 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.3%
Taylor expanded in mu around 0 82.1%
+-commutative45.5%
associate-+l+45.5%
+-commutative45.5%
Simplified82.1%
Taylor expanded in EDonor around 0 69.3%
if -1.54999999999999995e-30 < NaChar < 5.7000000000000001e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
+-commutative67.5%
Simplified67.5%
Taylor expanded in Ev around inf 53.8%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Ec around inf 85.3%
mul-1-neg85.3%
associate-/l*85.3%
distribute-rgt-neg-in85.3%
Simplified85.3%
if 2.69999999999999985e-97 < NaChar < 36000Initial program 99.5%
Simplified99.5%
Taylor expanded in KbT around inf 72.4%
div-inv72.4%
associate-+r-72.4%
Applied egg-rr72.4%
Final simplification64.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar 2.0)
(/ NdChar (+ 1.0 (exp (/ (+ (+ Vef EDonor) mu) KbT))))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NdChar -1.5e+112)
t_0
(if (<= NdChar -3.95e-125)
t_1
(if (<= NdChar -2.1e-242)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (+ Vef EAccept)) KbT))))
(* KbT (/ NdChar Vef)))
(if (<= NdChar 2.3e+17) t_1 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT))));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NdChar <= -1.5e+112) {
tmp = t_0;
} else if (NdChar <= -3.95e-125) {
tmp = t_1;
} else if (NdChar <= -2.1e-242) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (KbT * (NdChar / Vef));
} else if (NdChar <= 2.3e+17) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((((vef + edonor) + mu) / kbt))))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (ndchar <= (-1.5d+112)) then
tmp = t_0
else if (ndchar <= (-3.95d-125)) then
tmp = t_1
else if (ndchar <= (-2.1d-242)) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef + eaccept)) / kbt)))) + (kbt * (ndchar / vef))
else if (ndchar <= 2.3d+17) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((((Vef + EDonor) + mu) / KbT))));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NdChar <= -1.5e+112) {
tmp = t_0;
} else if (NdChar <= -3.95e-125) {
tmp = t_1;
} else if (NdChar <= -2.1e-242) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (KbT * (NdChar / Vef));
} else if (NdChar <= 2.3e+17) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((((Vef + EDonor) + mu) / KbT)))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NdChar <= -1.5e+112: tmp = t_0 elif NdChar <= -3.95e-125: tmp = t_1 elif NdChar <= -2.1e-242: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef + EAccept)) / KbT)))) + (KbT * (NdChar / Vef)) elif NdChar <= 2.3e+17: tmp = t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EDonor) + mu) / KbT))))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NdChar <= -1.5e+112) tmp = t_0; elseif (NdChar <= -3.95e-125) tmp = t_1; elseif (NdChar <= -2.1e-242) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef + EAccept)) / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); elseif (NdChar <= 2.3e+17) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT)))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NdChar <= -1.5e+112) tmp = t_0; elseif (NdChar <= -3.95e-125) tmp = t_1; elseif (NdChar <= -2.1e-242) tmp = (NaChar / (1.0 + exp(((Ev + (Vef + EAccept)) / KbT)))) + (KbT * (NdChar / Vef)); elseif (NdChar <= 2.3e+17) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.5e+112], t$95$0, If[LessEqual[NdChar, -3.95e-125], t$95$1, If[LessEqual[NdChar, -2.1e-242], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef + EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.3e+17], t$95$1, t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{\left(Vef + EDonor\right) + mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NdChar \leq -1.5 \cdot 10^{+112}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -3.95 \cdot 10^{-125}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -2.1 \cdot 10^{-242}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef + EAccept\right)}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NdChar \leq 2.3 \cdot 10^{+17}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -1.4999999999999999e112 or 2.3e17 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 63.7%
Taylor expanded in Ec around 0 56.1%
associate-+r+56.1%
+-commutative56.1%
Simplified56.1%
if -1.4999999999999999e112 < NdChar < -3.94999999999999994e-125 or -2.10000000000000019e-242 < NdChar < 2.3e17Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.7%
associate-*r/30.6%
mul-1-neg30.6%
Simplified79.7%
Taylor expanded in Ec around 0 64.5%
if -3.94999999999999994e-125 < NdChar < -2.10000000000000019e-242Initial program 99.9%
Simplified99.9%
clear-num99.9%
inv-pow99.9%
+-commutative99.9%
associate-+r-99.9%
associate-+l-99.9%
+-commutative99.9%
Applied egg-rr99.9%
unpow-199.9%
associate--r-99.9%
sub-neg99.9%
associate-+r+99.9%
mul-1-neg99.9%
+-commutative99.9%
associate-+r+99.9%
mul-1-neg99.9%
sub-neg99.9%
associate--l+99.9%
+-commutative99.9%
Simplified99.9%
Taylor expanded in KbT around inf 87.0%
associate-+r+87.0%
+-commutative87.0%
Simplified87.0%
Taylor expanded in Vef around inf 65.1%
associate-/l*65.1%
Simplified65.1%
Taylor expanded in mu around 0 65.1%
+-commutative65.1%
associate-+l+65.1%
+-commutative65.1%
Simplified65.1%
Final simplification60.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ t_1 (* NdChar 0.5))))
(if (<= NaChar -1.55e-28)
t_2
(if (<= NaChar 5.7e-129)
t_0
(if (<= NaChar 2.7e-97)
(+ t_1 (* KbT (/ NdChar Vef)))
(if (<= NaChar 68000.0) t_0 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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.55e-28) {
tmp = t_2;
} else if (NaChar <= 5.7e-129) {
tmp = t_0;
} else if (NaChar <= 2.7e-97) {
tmp = t_1 + (KbT * (NdChar / Vef));
} else if (NaChar <= 68000.0) {
tmp = t_0;
} 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 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar * 0.5d0)
if (nachar <= (-1.55d-28)) then
tmp = t_2
else if (nachar <= 5.7d-129) then
tmp = t_0
else if (nachar <= 2.7d-97) then
tmp = t_1 + (kbt * (ndchar / vef))
else if (nachar <= 68000.0d0) then
tmp = t_0
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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.55e-28) {
tmp = t_2;
} else if (NaChar <= 5.7e-129) {
tmp = t_0;
} else if (NaChar <= 2.7e-97) {
tmp = t_1 + (KbT * (NdChar / Vef));
} else if (NaChar <= 68000.0) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar * 0.5) tmp = 0 if NaChar <= -1.55e-28: tmp = t_2 elif NaChar <= 5.7e-129: tmp = t_0 elif NaChar <= 2.7e-97: tmp = t_1 + (KbT * (NdChar / Vef)) elif NaChar <= 68000.0: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -1.55e-28) tmp = t_2; elseif (NaChar <= 5.7e-129) tmp = t_0; elseif (NaChar <= 2.7e-97) tmp = Float64(t_1 + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= 68000.0) tmp = t_0; 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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -1.55e-28) tmp = t_2; elseif (NaChar <= 5.7e-129) tmp = t_0; elseif (NaChar <= 2.7e-97) tmp = t_1 + (KbT * (NdChar / Vef)); elseif (NaChar <= 68000.0) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.55e-28], t$95$2, If[LessEqual[NaChar, 5.7e-129], t$95$0, If[LessEqual[NaChar, 2.7e-97], N[(t$95$1 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 68000.0], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -1.55 \cdot 10^{-28}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 5.7 \cdot 10^{-129}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 2.7 \cdot 10^{-97}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq 68000:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -1.54999999999999996e-28 or 68000 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.4%
associate-*r/34.2%
mul-1-neg34.2%
Simplified82.4%
Taylor expanded in Ec around 0 67.0%
if -1.54999999999999996e-28 < NaChar < 5.7000000000000001e-129 or 2.69999999999999985e-97 < NaChar < 68000Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 61.8%
if 5.7000000000000001e-129 < NaChar < 2.69999999999999985e-97Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
+-commutative100.0%
Applied egg-rr100.0%
unpow-1100.0%
associate--r-100.0%
sub-neg100.0%
associate-+r+100.0%
mul-1-neg100.0%
+-commutative100.0%
associate-+r+100.0%
mul-1-neg100.0%
sub-neg100.0%
associate--l+100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.7%
associate-+r+66.7%
+-commutative66.7%
Simplified66.7%
Taylor expanded in Vef around inf 83.7%
associate-/l*83.6%
Simplified83.6%
Final simplification65.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -3.4e+112) (not (<= NdChar 9.6e+16)))
(+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ (+ (+ Vef EDonor) mu) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) 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 ((NdChar <= -3.4e+112) || !(NdChar <= 9.6e+16)) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / 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 ((ndchar <= (-3.4d+112)) .or. (.not. (ndchar <= 9.6d+16))) then
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((((vef + edonor) + mu) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / 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 ((NdChar <= -3.4e+112) || !(NdChar <= 9.6e+16)) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((((Vef + EDonor) + mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -3.4e+112) or not (NdChar <= 9.6e+16): tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((((Vef + EDonor) + mu) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -3.4e+112) || !(NdChar <= 9.6e+16)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EDonor) + mu) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / 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 ((NdChar <= -3.4e+112) || ~((NdChar <= 9.6e+16))) tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -3.4e+112], N[Not[LessEqual[NdChar, 9.6e+16]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -3.4 \cdot 10^{+112} \lor \neg \left(NdChar \leq 9.6 \cdot 10^{+16}\right):\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{\left(Vef + EDonor\right) + mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -3.39999999999999993e112 or 9.6e16 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 63.7%
Taylor expanded in Ec around 0 56.1%
associate-+r+56.1%
+-commutative56.1%
Simplified56.1%
if -3.39999999999999993e112 < NdChar < 9.6e16Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 80.2%
associate-*r/30.0%
mul-1-neg30.0%
Simplified80.2%
Taylor expanded in Ec around 0 61.7%
Final simplification59.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -7.2e-26) (not (<= NaChar 230000.0)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.2e-26) || !(NaChar <= 230000.0)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-7.2d-26)) .or. (.not. (nachar <= 230000.0d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.2e-26) || !(NaChar <= 230000.0)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -7.2e-26) or not (NaChar <= 230000.0): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -7.2e-26) || !(NaChar <= 230000.0)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -7.2e-26) || ~((NaChar <= 230000.0))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -7.2e-26], N[Not[LessEqual[NaChar, 230000.0]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7.2 \cdot 10^{-26} \lor \neg \left(NaChar \leq 230000\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -7.2000000000000003e-26 or 2.3e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 82.4%
associate-*r/34.2%
mul-1-neg34.2%
Simplified82.4%
Taylor expanded in Ec around 0 67.0%
if -7.2000000000000003e-26 < NaChar < 2.3e5Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.3%
Final simplification63.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Ec -1.4e+124) (not (<= Ec 5.8e+110))) (+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar 2.0)) (+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ (+ (+ Vef EDonor) mu) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Ec <= -1.4e+124) || !(Ec <= 5.8e+110)) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + 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) :: tmp
if ((ec <= (-1.4d+124)) .or. (.not. (ec <= 5.8d+110))) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((((vef + edonor) + 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 tmp;
if ((Ec <= -1.4e+124) || !(Ec <= 5.8e+110)) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((((Vef + EDonor) + mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Ec <= -1.4e+124) or not (Ec <= 5.8e+110): tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((((Vef + EDonor) + mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Ec <= -1.4e+124) || !(Ec <= 5.8e+110)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EDonor) + mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Ec <= -1.4e+124) || ~((Ec <= 5.8e+110))) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0); else tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((((Vef + EDonor) + mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Ec, -1.4e+124], N[Not[LessEqual[Ec, 5.8e+110]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EDonor), $MachinePrecision] + mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -1.4 \cdot 10^{+124} \lor \neg \left(Ec \leq 5.8 \cdot 10^{+110}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{\left(Vef + EDonor\right) + mu}{KbT}}}\\
\end{array}
\end{array}
if Ec < -1.4e124 or 5.7999999999999999e110 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.3%
Taylor expanded in Ec around inf 40.6%
associate-*r/40.6%
mul-1-neg40.6%
Simplified40.6%
if -1.4e124 < Ec < 5.7999999999999999e110Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 48.6%
Taylor expanded in Ec around 0 48.5%
associate-+r+48.5%
+-commutative48.5%
Simplified48.5%
Final simplification45.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Ec -1.85e+61) (not (<= Ec 1.2e-47))) (+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar 2.0)) (+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Ec <= -1.85e+61) || !(Ec <= 1.2e-47)) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ec <= (-1.85d+61)) .or. (.not. (ec <= 1.2d-47))) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Ec <= -1.85e+61) || !(Ec <= 1.2e-47)) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Ec <= -1.85e+61) or not (Ec <= 1.2e-47): tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Ec <= -1.85e+61) || !(Ec <= 1.2e-47)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Ec <= -1.85e+61) || ~((Ec <= 1.2e-47))) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0); else tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Ec, -1.85e+61], N[Not[LessEqual[Ec, 1.2e-47]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -1.85 \cdot 10^{+61} \lor \neg \left(Ec \leq 1.2 \cdot 10^{-47}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if Ec < -1.85000000000000001e61 or 1.2e-47 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in Ec around inf 36.5%
associate-*r/36.5%
mul-1-neg36.5%
Simplified36.5%
if -1.85000000000000001e61 < Ec < 1.2e-47Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.9%
Taylor expanded in Vef around inf 43.7%
Final simplification40.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= mu -2.15e+113) (not (<= mu 1e-29))) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0)) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -2.15e+113) || !(mu <= 1e-29)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((mu <= (-2.15d+113)) .or. (.not. (mu <= 1d-29))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -2.15e+113) || !(mu <= 1e-29)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (mu <= -2.15e+113) or not (mu <= 1e-29): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((mu <= -2.15e+113) || !(mu <= 1e-29)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((mu <= -2.15e+113) || ~((mu <= 1e-29))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[mu, -2.15e+113], N[Not[LessEqual[mu, 1e-29]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -2.15 \cdot 10^{+113} \lor \neg \left(mu \leq 10^{-29}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if mu < -2.1500000000000002e113 or 9.99999999999999943e-30 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 80.9%
Taylor expanded in KbT around inf 38.8%
if -2.1500000000000002e113 < mu < 9.99999999999999943e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.4%
Taylor expanded in KbT around inf 40.1%
Final simplification39.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -5e+194) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (/ Ev KbT))) (+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5e+194) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (Ev / KbT));
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-5d+194)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (ev / kbt))
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5e+194) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (Ev / KbT));
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -5e+194: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (Ev / KbT)) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -5e+194) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Ev / KbT))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -5e+194) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (Ev / KbT)); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -5e+194], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -5 \cdot 10^{+194}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if Ev < -4.99999999999999989e194Initial program 99.6%
Simplified99.6%
Taylor expanded in KbT around inf 33.4%
+-commutative33.4%
Simplified33.4%
Taylor expanded in Ev around inf 42.0%
Taylor expanded in EDonor around inf 28.8%
if -4.99999999999999989e194 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.7%
Taylor expanded in Ec around inf 37.7%
associate-*r/37.7%
mul-1-neg37.7%
Simplified37.7%
Final simplification37.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 1.3e-87) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)) (+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.3e-87) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= 1.3d-87) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.3e-87) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 1.3e-87: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 1.3e-87) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 1.3e-87) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 1.3e-87], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 1.3 \cdot 10^{-87}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if Vef < 1.30000000000000001e-87Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.4%
Taylor expanded in KbT around inf 36.3%
if 1.30000000000000001e-87 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 44.3%
Taylor expanded in Vef around inf 38.6%
Final simplification37.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)))
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((EDonor / KbT)))) + (NaChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.3%
Taylor expanded in KbT around inf 34.6%
Final simplification34.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -5.4e-66) (not (<= KbT 1.55e-297))) (+ (/ NaChar 2.0) (/ NdChar 2.0)) (/ (* KbT NaChar) Ev)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -5.4e-66) || !(KbT <= 1.55e-297)) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else {
tmp = (KbT * NaChar) / Ev;
}
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 ((kbt <= (-5.4d-66)) .or. (.not. (kbt <= 1.55d-297))) then
tmp = (nachar / 2.0d0) + (ndchar / 2.0d0)
else
tmp = (kbt * nachar) / ev
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 ((KbT <= -5.4e-66) || !(KbT <= 1.55e-297)) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else {
tmp = (KbT * NaChar) / Ev;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -5.4e-66) or not (KbT <= 1.55e-297): tmp = (NaChar / 2.0) + (NdChar / 2.0) else: tmp = (KbT * NaChar) / Ev return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -5.4e-66) || !(KbT <= 1.55e-297)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(KbT * NaChar) / Ev); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -5.4e-66) || ~((KbT <= 1.55e-297))) tmp = (NaChar / 2.0) + (NdChar / 2.0); else tmp = (KbT * NaChar) / Ev; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -5.4e-66], N[Not[LessEqual[KbT, 1.55e-297]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.4 \cdot 10^{-66} \lor \neg \left(KbT \leq 1.55 \cdot 10^{-297}\right):\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{Ev}\\
\end{array}
\end{array}
if KbT < -5.39999999999999992e-66 or 1.5499999999999998e-297 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in KbT around inf 32.7%
if -5.39999999999999992e-66 < KbT < 1.5499999999999998e-297Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.3%
+-commutative44.3%
Simplified44.3%
Taylor expanded in Ev around inf 38.6%
Taylor expanded in KbT around inf 6.9%
Taylor expanded in NdChar around 0 15.1%
Final simplification28.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.85e-87) (not (<= KbT 5e-253))) (* NdChar 0.5) (* KbT (/ NaChar Ev))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.85e-87) || !(KbT <= 5e-253)) {
tmp = NdChar * 0.5;
} else {
tmp = KbT * (NaChar / Ev);
}
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 ((kbt <= (-1.85d-87)) .or. (.not. (kbt <= 5d-253))) then
tmp = ndchar * 0.5d0
else
tmp = kbt * (nachar / ev)
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 ((KbT <= -1.85e-87) || !(KbT <= 5e-253)) {
tmp = NdChar * 0.5;
} else {
tmp = KbT * (NaChar / Ev);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.85e-87) or not (KbT <= 5e-253): tmp = NdChar * 0.5 else: tmp = KbT * (NaChar / Ev) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.85e-87) || !(KbT <= 5e-253)) tmp = Float64(NdChar * 0.5); else tmp = Float64(KbT * Float64(NaChar / Ev)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.85e-87) || ~((KbT <= 5e-253))) tmp = NdChar * 0.5; else tmp = KbT * (NaChar / Ev); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.85e-87], N[Not[LessEqual[KbT, 5e-253]], $MachinePrecision]], N[(NdChar * 0.5), $MachinePrecision], N[(KbT * N[(NaChar / Ev), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.85 \cdot 10^{-87} \lor \neg \left(KbT \leq 5 \cdot 10^{-253}\right):\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{Ev}\\
\end{array}
\end{array}
if KbT < -1.8500000000000001e-87 or 4.99999999999999971e-253 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 56.2%
+-commutative56.2%
Simplified56.2%
Taylor expanded in Ev around inf 25.8%
Taylor expanded in KbT around inf 11.0%
Taylor expanded in NdChar around inf 23.5%
if -1.8500000000000001e-87 < KbT < 4.99999999999999971e-253Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.0%
+-commutative43.0%
Simplified43.0%
Taylor expanded in Ev around inf 41.0%
Taylor expanded in KbT around inf 7.4%
Taylor expanded in NdChar around 0 15.0%
associate-/l*14.9%
Simplified14.9%
Final simplification21.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -6.2e-86) (not (<= KbT 2e-250))) (* NdChar 0.5) (/ (* KbT NaChar) Ev)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -6.2e-86) || !(KbT <= 2e-250)) {
tmp = NdChar * 0.5;
} else {
tmp = (KbT * NaChar) / Ev;
}
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 ((kbt <= (-6.2d-86)) .or. (.not. (kbt <= 2d-250))) then
tmp = ndchar * 0.5d0
else
tmp = (kbt * nachar) / ev
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 ((KbT <= -6.2e-86) || !(KbT <= 2e-250)) {
tmp = NdChar * 0.5;
} else {
tmp = (KbT * NaChar) / Ev;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -6.2e-86) or not (KbT <= 2e-250): tmp = NdChar * 0.5 else: tmp = (KbT * NaChar) / Ev return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -6.2e-86) || !(KbT <= 2e-250)) tmp = Float64(NdChar * 0.5); else tmp = Float64(Float64(KbT * NaChar) / Ev); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -6.2e-86) || ~((KbT <= 2e-250))) tmp = NdChar * 0.5; else tmp = (KbT * NaChar) / Ev; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -6.2e-86], N[Not[LessEqual[KbT, 2e-250]], $MachinePrecision]], N[(NdChar * 0.5), $MachinePrecision], N[(N[(KbT * NaChar), $MachinePrecision] / Ev), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -6.2 \cdot 10^{-86} \lor \neg \left(KbT \leq 2 \cdot 10^{-250}\right):\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{Ev}\\
\end{array}
\end{array}
if KbT < -6.19999999999999977e-86 or 2.0000000000000001e-250 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 56.2%
+-commutative56.2%
Simplified56.2%
Taylor expanded in Ev around inf 25.8%
Taylor expanded in KbT around inf 11.0%
Taylor expanded in NdChar around inf 23.5%
if -6.19999999999999977e-86 < KbT < 2.0000000000000001e-250Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.0%
+-commutative43.0%
Simplified43.0%
Taylor expanded in Ev around inf 41.0%
Taylor expanded in KbT around inf 7.4%
Taylor expanded in NdChar around 0 15.0%
Final simplification21.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 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 = 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 NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.7%
+-commutative52.7%
Simplified52.7%
Taylor expanded in Ev around inf 29.8%
Taylor expanded in KbT around inf 10.1%
Taylor expanded in NdChar around inf 19.3%
Final simplification19.3%
herbie shell --seed 2024043
(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))))))