
(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 26 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 (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)) (/ NaChar (+ (expm1 (log1p (exp (/ (+ (+ Ev EAccept) (- Vef mu)) KbT)))) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (expm1(log1p(exp((((Ev + EAccept) + (Vef - mu)) / KbT)))) + 1.0));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.expm1(Math.log1p(Math.exp((((Ev + EAccept) + (Vef - mu)) / KbT)))) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.expm1(math.log1p(math.exp((((Ev + EAccept) + (Vef - mu)) / KbT)))) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(expm1(log1p(exp(Float64(Float64(Float64(Ev + EAccept) + Float64(Vef - mu)) / KbT)))) + 1.0))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Exp[N[Log[1 + N[Exp[N[(N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\mathsf{expm1}\left(\mathsf{log1p}\left(e^{\frac{\left(Ev + EAccept\right) + \left(Vef - mu\right)}{KbT}}\right)\right) + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
expm1-log1p-u100.0%
log1p-define100.0%
log1p-expm1-u100.0%
log1p-define100.0%
expm1-log1p-u100.0%
div-inv100.0%
div-inv100.0%
+-commutative100.0%
associate-+r-100.0%
associate-+l-100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))
(t_1 (/ NaChar (+ t_0 1.0)))
(t_2 (+ t_1 (/ NdChar (+ (exp (/ mu KbT)) 1.0)))))
(if (<= mu -1.25e+81)
t_2
(if (<= mu -4.2e-109)
(- (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar (- -1.0 t_0)))
(if (<= mu -8e-226)
(+ t_1 (/ NdChar (+ (exp (/ Vef KbT)) 1.0)))
(if (<= mu 2.9e+18)
(+ t_1 (/ NdChar (+ (exp (/ Ec (- KbT))) 1.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 = exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double t_1 = NaChar / (t_0 + 1.0);
double t_2 = t_1 + (NdChar / (exp((mu / KbT)) + 1.0));
double tmp;
if (mu <= -1.25e+81) {
tmp = t_2;
} else if (mu <= -4.2e-109) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else if (mu <= -8e-226) {
tmp = t_1 + (NdChar / (exp((Vef / KbT)) + 1.0));
} else if (mu <= 2.9e+18) {
tmp = t_1 + (NdChar / (exp((Ec / -KbT)) + 1.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 = exp(((vef + (ev + (eaccept - mu))) / kbt))
t_1 = nachar / (t_0 + 1.0d0)
t_2 = t_1 + (ndchar / (exp((mu / kbt)) + 1.0d0))
if (mu <= (-1.25d+81)) then
tmp = t_2
else if (mu <= (-4.2d-109)) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - t_0))
else if (mu <= (-8d-226)) then
tmp = t_1 + (ndchar / (exp((vef / kbt)) + 1.0d0))
else if (mu <= 2.9d+18) then
tmp = t_1 + (ndchar / (exp((ec / -kbt)) + 1.0d0))
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 = Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double t_1 = NaChar / (t_0 + 1.0);
double t_2 = t_1 + (NdChar / (Math.exp((mu / KbT)) + 1.0));
double tmp;
if (mu <= -1.25e+81) {
tmp = t_2;
} else if (mu <= -4.2e-109) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else if (mu <= -8e-226) {
tmp = t_1 + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
} else if (mu <= 2.9e+18) {
tmp = t_1 + (NdChar / (Math.exp((Ec / -KbT)) + 1.0));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) t_1 = NaChar / (t_0 + 1.0) t_2 = t_1 + (NdChar / (math.exp((mu / KbT)) + 1.0)) tmp = 0 if mu <= -1.25e+81: tmp = t_2 elif mu <= -4.2e-109: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)) elif mu <= -8e-226: tmp = t_1 + (NdChar / (math.exp((Vef / KbT)) + 1.0)) elif mu <= 2.9e+18: tmp = t_1 + (NdChar / (math.exp((Ec / -KbT)) + 1.0)) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) t_1 = Float64(NaChar / Float64(t_0 + 1.0)) t_2 = Float64(t_1 + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))) tmp = 0.0 if (mu <= -1.25e+81) tmp = t_2; elseif (mu <= -4.2e-109) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - t_0))); elseif (mu <= -8e-226) tmp = Float64(t_1 + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif (mu <= 2.9e+18) tmp = Float64(t_1 + Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev + (EAccept - mu))) / KbT)); t_1 = NaChar / (t_0 + 1.0); t_2 = t_1 + (NdChar / (exp((mu / KbT)) + 1.0)); tmp = 0.0; if (mu <= -1.25e+81) tmp = t_2; elseif (mu <= -4.2e-109) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)); elseif (mu <= -8e-226) tmp = t_1 + (NdChar / (exp((Vef / KbT)) + 1.0)); elseif (mu <= 2.9e+18) tmp = t_1 + (NdChar / (exp((Ec / -KbT)) + 1.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[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.25e+81], t$95$2, If[LessEqual[mu, -4.2e-109], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -8e-226], N[(t$95$1 + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.9e+18], N[(t$95$1 + N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\\
t_1 := \frac{NaChar}{t\_0 + 1}\\
t_2 := t\_1 + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{if}\;mu \leq -1.25 \cdot 10^{+81}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -4.2 \cdot 10^{-109}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{elif}\;mu \leq -8 \cdot 10^{-226}:\\
\;\;\;\;t\_1 + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq 2.9 \cdot 10^{+18}:\\
\;\;\;\;t\_1 + \frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -1.25e81 or 2.9e18 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.8%
if -1.25e81 < mu < -4.19999999999999992e-109Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.9%
if -4.19999999999999992e-109 < mu < -7.99999999999999937e-226Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.2%
if -7.99999999999999937e-226 < mu < 2.9e18Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 83.2%
associate-*r/83.2%
mul-1-neg83.2%
Simplified83.2%
Final simplification85.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ Vef (- Ev mu)) KbT)) 1.0)))))
(if (<= Vef -2.5e+116)
t_0
(if (<= Vef 7e-71)
(-
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= Vef 3.6e+18)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(-
(+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= Vef 2.15e+158)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0));
double tmp;
if (Vef <= -2.5e+116) {
tmp = t_0;
} else if (Vef <= 7e-71) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= 3.6e+18) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.15e+158) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp(((vef + (ev - mu)) / kbt)) + 1.0d0))
if (vef <= (-2.5d+116)) then
tmp = t_0
else if (vef <= 7d-71) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev + (eaccept - mu))) / kbt))))
else if (vef <= 3.6d+18) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 2.15d+158) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0));
double tmp;
if (Vef <= -2.5e+116) {
tmp = t_0;
} else if (Vef <= 7e-71) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= 3.6e+18) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 2.15e+158) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0)) tmp = 0 if Vef <= -2.5e+116: tmp = t_0 elif Vef <= 7e-71: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif Vef <= 3.6e+18: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 2.15e+158: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - mu)) / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -2.5e+116) tmp = t_0; elseif (Vef <= 7e-71) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (Vef <= 3.6e+18) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 2.15e+158) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -2.5e+116) tmp = t_0; elseif (Vef <= 7e-71) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); elseif (Vef <= 3.6e+18) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 2.15e+158) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.5e+116], t$95$0, If[LessEqual[Vef, 7e-71], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $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], If[LessEqual[Vef, 3.6e+18], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.15e+158], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev - mu\right)}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -2.5 \cdot 10^{+116}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 7 \cdot 10^{-71}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;Vef \leq 3.6 \cdot 10^{+18}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 2.15 \cdot 10^{+158}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -2.50000000000000013e116 or 2.15e158 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.4%
Taylor expanded in EAccept around 0 79.1%
+-commutative79.1%
+-commutative79.1%
associate--l+79.1%
Simplified79.1%
if -2.50000000000000013e116 < Vef < 6.9999999999999998e-71Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 78.5%
if 6.9999999999999998e-71 < Vef < 3.6e18Initial program 99.3%
Simplified99.3%
Taylor expanded in KbT around inf 91.6%
associate-+r+91.6%
Simplified91.6%
if 3.6e18 < Vef < 2.15e158Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 52.8%
associate-*r/52.8%
mul-1-neg52.8%
Simplified52.8%
Taylor expanded in NdChar around 0 69.4%
Final simplification78.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (+ Vef (- Ev mu)) KbT)) 1.0)))
(t_1 (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) t_0)))
(if (<= EDonor -5.8e-52)
t_1
(if (<= EDonor 2050000000000.0)
(+ (/ NdChar (+ (exp (/ Vef KbT)) 1.0)) t_0)
(if (<= EDonor 1.16e+126)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.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 / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0);
double t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + t_0;
double tmp;
if (EDonor <= -5.8e-52) {
tmp = t_1;
} else if (EDonor <= 2050000000000.0) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + t_0;
} else if (EDonor <= 1.16e+126) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.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 / (exp(((vef + (ev - mu)) / kbt)) + 1.0d0)
t_1 = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + t_0
if (edonor <= (-5.8d-52)) then
tmp = t_1
else if (edonor <= 2050000000000.0d0) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + t_0
else if (edonor <= 1.16d+126) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
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 / (Math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0);
double t_1 = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + t_0;
double tmp;
if (EDonor <= -5.8e-52) {
tmp = t_1;
} else if (EDonor <= 2050000000000.0) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + t_0;
} else if (EDonor <= 1.16e+126) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0) t_1 = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + t_0 tmp = 0 if EDonor <= -5.8e-52: tmp = t_1 elif EDonor <= 2050000000000.0: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + t_0 elif EDonor <= 1.16e+126: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - mu)) / KbT)) + 1.0)) t_1 = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + t_0) tmp = 0.0 if (EDonor <= -5.8e-52) tmp = t_1; elseif (EDonor <= 2050000000000.0) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + t_0); elseif (EDonor <= 1.16e+126) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.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 / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0); t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + t_0; tmp = 0.0; if (EDonor <= -5.8e-52) tmp = t_1; elseif (EDonor <= 2050000000000.0) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + t_0; elseif (EDonor <= 1.16e+126) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.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[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[EDonor, -5.8e-52], t$95$1, If[LessEqual[EDonor, 2050000000000.0], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EDonor, 1.16e+126], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef + \left(Ev - mu\right)}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + t\_0\\
\mathbf{if}\;EDonor \leq -5.8 \cdot 10^{-52}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq 2050000000000:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + t\_0\\
\mathbf{elif}\;EDonor \leq 1.16 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -5.8000000000000003e-52 or 1.15999999999999997e126 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.6%
Taylor expanded in EAccept around 0 76.7%
+-commutative53.9%
+-commutative53.9%
associate--l+53.9%
Simplified76.7%
if -5.8000000000000003e-52 < EDonor < 2.05e12Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 74.7%
Taylor expanded in EAccept around 0 70.3%
+-commutative70.3%
+-commutative70.3%
associate--l+70.3%
Simplified70.3%
if 2.05e12 < EDonor < 1.15999999999999997e126Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 67.7%
associate-*r/67.7%
mul-1-neg67.7%
Simplified67.7%
Taylor expanded in NdChar around 0 94.6%
Final simplification74.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(-
(+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))))
(if (<= NaChar -4e-5)
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/
NdChar
(+
(- (+ (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))) 1.0) (/ Ec KbT))
1.0)))
(if (<= NaChar 9.5e-183)
t_0
(if (<= NaChar 3.5e-69)
(+
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ Vef (- Ev mu)) KbT)) 1.0)))
(if (<= NaChar 5.2e-6)
t_0
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
double tmp;
if (NaChar <= -4e-5) {
tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} else if (NaChar <= 9.5e-183) {
tmp = t_0;
} else if (NaChar <= 3.5e-69) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0));
} else if (NaChar <= 5.2e-6) {
tmp = t_0;
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
if (nachar <= (-4d-5)) then
tmp = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / (((((edonor / kbt) + ((mu / kbt) + (vef / kbt))) + 1.0d0) - (ec / kbt)) + 1.0d0))
else if (nachar <= 9.5d-183) then
tmp = t_0
else if (nachar <= 3.5d-69) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / (exp(((vef + (ev - mu)) / kbt)) + 1.0d0))
else if (nachar <= 5.2d-6) then
tmp = t_0
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
double tmp;
if (NaChar <= -4e-5) {
tmp = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} else if (NaChar <= 9.5e-183) {
tmp = t_0;
} else if (NaChar <= 3.5e-69) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0));
} else if (NaChar <= 5.2e-6) {
tmp = t_0;
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) tmp = 0 if NaChar <= -4e-5: tmp = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) elif NaChar <= 9.5e-183: tmp = t_0 elif NaChar <= 3.5e-69: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef + (Ev - mu)) / KbT)) + 1.0)) elif NaChar <= 5.2e-6: tmp = t_0 else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))) tmp = 0.0 if (NaChar <= -4e-5) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(Ec / KbT)) + 1.0))); elseif (NaChar <= 9.5e-183) tmp = t_0; elseif (NaChar <= 3.5e-69) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - mu)) / KbT)) + 1.0))); elseif (NaChar <= 5.2e-6) tmp = t_0; else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); tmp = 0.0; if (NaChar <= -4e-5) tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)); elseif (NaChar <= 9.5e-183) tmp = t_0; elseif (NaChar <= 3.5e-69) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev - mu)) / KbT)) + 1.0)); elseif (NaChar <= 5.2e-6) tmp = t_0; else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4e-5], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 9.5e-183], t$95$0, If[LessEqual[NaChar, 3.5e-69], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.2e-6], t$95$0, N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{if}\;NaChar \leq -4 \cdot 10^{-5}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{Ec}{KbT}\right) + 1}\\
\mathbf{elif}\;NaChar \leq 9.5 \cdot 10^{-183}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 3.5 \cdot 10^{-69}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev - mu\right)}{KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq 5.2 \cdot 10^{-6}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -4.00000000000000033e-5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.5%
if -4.00000000000000033e-5 < NaChar < 9.5000000000000008e-183 or 3.5000000000000001e-69 < NaChar < 5.20000000000000019e-6Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.3%
associate-+r+74.3%
Simplified74.3%
if 9.5000000000000008e-183 < NaChar < 3.5000000000000001e-69Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 73.7%
Taylor expanded in EAccept around 0 69.7%
+-commutative65.5%
+-commutative65.5%
associate--l+65.5%
Simplified69.7%
if 5.20000000000000019e-6 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.4%
associate-*r/79.4%
mul-1-neg79.4%
Simplified79.4%
Taylor expanded in NdChar around 0 76.8%
Final simplification73.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(if (or (<= EDonor -1.04e+65) (not (<= EDonor 1.2e+137)))
(- (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar (- -1.0 t_0)))
(+ (/ NaChar (+ t_0 1.0)) (/ NdChar (+ (exp (/ mu KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if ((EDonor <= -1.04e+65) || !(EDonor <= 1.2e+137)) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.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 = exp(((vef + (ev + (eaccept - mu))) / kbt))
if ((edonor <= (-1.04d+65)) .or. (.not. (edonor <= 1.2d+137))) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - t_0))
else
tmp = (nachar / (t_0 + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if ((EDonor <= -1.04e+65) || !(EDonor <= 1.2e+137)) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) tmp = 0 if (EDonor <= -1.04e+65) or not (EDonor <= 1.2e+137): tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)) else: tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) tmp = 0.0 if ((EDonor <= -1.04e+65) || !(EDonor <= 1.2e+137)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - t_0))); else tmp = Float64(Float64(NaChar / Float64(t_0 + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev + (EAccept - mu))) / KbT)); tmp = 0.0; if ((EDonor <= -1.04e+65) || ~((EDonor <= 1.2e+137))) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)); else tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, If[Or[LessEqual[EDonor, -1.04e+65], N[Not[LessEqual[EDonor, 1.2e+137]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\\
\mathbf{if}\;EDonor \leq -1.04 \cdot 10^{+65} \lor \neg \left(EDonor \leq 1.2 \cdot 10^{+137}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_0 + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\end{array}
\end{array}
if EDonor < -1.03999999999999999e65 or 1.19999999999999992e137 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.8%
if -1.03999999999999999e65 < EDonor < 1.19999999999999992e137Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 77.5%
Final simplification80.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(if (or (<= EDonor -2.55e-51) (not (<= EDonor 2e+138)))
(- (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar (- -1.0 t_0)))
(+ (/ NaChar (+ t_0 1.0)) (/ NdChar (+ (exp (/ Vef KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if ((EDonor <= -2.55e-51) || !(EDonor <= 2e+138)) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.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 = exp(((vef + (ev + (eaccept - mu))) / kbt))
if ((edonor <= (-2.55d-51)) .or. (.not. (edonor <= 2d+138))) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - t_0))
else
tmp = (nachar / (t_0 + 1.0d0)) + (ndchar / (exp((vef / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if ((EDonor <= -2.55e-51) || !(EDonor <= 2e+138)) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) tmp = 0 if (EDonor <= -2.55e-51) or not (EDonor <= 2e+138): tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)) else: tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (math.exp((Vef / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) tmp = 0.0 if ((EDonor <= -2.55e-51) || !(EDonor <= 2e+138)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - t_0))); else tmp = Float64(Float64(NaChar / Float64(t_0 + 1.0)) + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev + (EAccept - mu))) / KbT)); tmp = 0.0; if ((EDonor <= -2.55e-51) || ~((EDonor <= 2e+138))) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)); else tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, If[Or[LessEqual[EDonor, -2.55e-51], N[Not[LessEqual[EDonor, 2e+138]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\\
\mathbf{if}\;EDonor \leq -2.55 \cdot 10^{-51} \lor \neg \left(EDonor \leq 2 \cdot 10^{+138}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_0 + 1} + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\end{array}
\end{array}
if EDonor < -2.5499999999999999e-51 or 2.0000000000000001e138 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.6%
if -2.5499999999999999e-51 < EDonor < 2.0000000000000001e138Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 74.1%
Final simplification78.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)) (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.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 / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.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 / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}
\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 (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar 2.0))))
(if (<= NdChar -4.6e+179)
t_0
(if (<= NdChar 4e-55)
(/ NaChar (+ (+ (expm1 (/ (+ Ev (+ Vef (- EAccept mu))) KbT)) 1.0) 1.0))
(if (<= NdChar 6.8e-22)
t_0
(if (<= NdChar 0.0015)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (or (<= NdChar 1.9e+90) (not (<= NdChar 1.9e+250)))
t_0
(/ NdChar (+ (exp (/ Vef KbT)) 1.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (NdChar <= -4.6e+179) {
tmp = t_0;
} else if (NdChar <= 4e-55) {
tmp = NaChar / ((expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
} else if (NdChar <= 6.8e-22) {
tmp = t_0;
} else if (NdChar <= 0.0015) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if ((NdChar <= 1.9e+90) || !(NdChar <= 1.9e+250)) {
tmp = t_0;
} else {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
}
return tmp;
}
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 / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (NdChar <= -4.6e+179) {
tmp = t_0;
} else if (NdChar <= 4e-55) {
tmp = NaChar / ((Math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
} else if (NdChar <= 6.8e-22) {
tmp = t_0;
} else if (NdChar <= 0.0015) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if ((NdChar <= 1.9e+90) || !(NdChar <= 1.9e+250)) {
tmp = t_0;
} else {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0) tmp = 0 if NdChar <= -4.6e+179: tmp = t_0 elif NdChar <= 4e-55: tmp = NaChar / ((math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0) elif NdChar <= 6.8e-22: tmp = t_0 elif NdChar <= 0.0015: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif (NdChar <= 1.9e+90) or not (NdChar <= 1.9e+250): tmp = t_0 else: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -4.6e+179) tmp = t_0; elseif (NdChar <= 4e-55) tmp = Float64(NaChar / Float64(Float64(expm1(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)) + 1.0) + 1.0)); elseif (NdChar <= 6.8e-22) tmp = t_0; elseif (NdChar <= 0.0015) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif ((NdChar <= 1.9e+90) || !(NdChar <= 1.9e+250)) tmp = t_0; else tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); end return tmp end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4.6e+179], t$95$0, If[LessEqual[NdChar, 4e-55], N[(NaChar / N[(N[(N[(Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6.8e-22], t$95$0, If[LessEqual[NdChar, 0.0015], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, 1.9e+90], N[Not[LessEqual[NdChar, 1.9e+250]], $MachinePrecision]], t$95$0, N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -4.6 \cdot 10^{+179}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 4 \cdot 10^{-55}:\\
\;\;\;\;\frac{NaChar}{\left(\mathsf{expm1}\left(\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}\right) + 1\right) + 1}\\
\mathbf{elif}\;NdChar \leq 6.8 \cdot 10^{-22}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 0.0015:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;NdChar \leq 1.9 \cdot 10^{+90} \lor \neg \left(NdChar \leq 1.9 \cdot 10^{+250}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -4.59999999999999988e179 or 3.99999999999999998e-55 < NdChar < 6.7999999999999997e-22 or 0.0015 < NdChar < 1.9000000000000001e90 or 1.89999999999999985e250 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.6%
if -4.59999999999999988e179 < NdChar < 3.99999999999999998e-55Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 72.8%
associate-*r/72.8%
mul-1-neg72.8%
Simplified72.8%
Taylor expanded in NdChar around 0 70.3%
expm1-log1p-u70.3%
log1p-define70.3%
expm1-undefine70.3%
add-exp-log70.3%
associate--l+70.3%
Applied egg-rr70.3%
associate--l+70.3%
expm1-define70.3%
+-commutative70.3%
*-lft-identity70.3%
metadata-eval70.3%
cancel-sign-sub-inv70.3%
associate--r+70.3%
associate--l+70.3%
mul-1-neg70.3%
unsub-neg70.3%
Simplified70.3%
if 6.7999999999999997e-22 < NdChar < 0.0015Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 98.7%
associate-*r/98.7%
mul-1-neg98.7%
Simplified98.7%
Taylor expanded in NdChar around 0 78.5%
if 1.9000000000000001e90 < NdChar < 1.89999999999999985e250Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.0%
Taylor expanded in KbT around inf 43.1%
associate-+r+54.0%
Simplified43.1%
Taylor expanded in Vef around inf 40.3%
Taylor expanded in NdChar around inf 66.6%
Final simplification70.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -4.6e-5)
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/
NdChar
(+
(- (+ (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))) 1.0) (/ Ec KbT))
1.0)))
(if (<= NaChar 5.5e-8)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.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 <= -4.6e-5) {
tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} else if (NaChar <= 5.5e-8) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.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 <= (-4.6d-5)) then
tmp = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / (((((edonor / kbt) + ((mu / kbt) + (vef / kbt))) + 1.0d0) - (ec / kbt)) + 1.0d0))
else if (nachar <= 5.5d-8) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.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 <= -4.6e-5) {
tmp = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} else if (NaChar <= 5.5e-8) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -4.6e-5: tmp = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) elif NaChar <= 5.5e-8: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -4.6e-5) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(Ec / KbT)) + 1.0))); elseif (NaChar <= 5.5e-8) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -4.6e-5) tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)); elseif (NaChar <= 5.5e-8) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -4.6e-5], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.5e-8], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.6 \cdot 10^{-5}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{Ec}{KbT}\right) + 1}\\
\mathbf{elif}\;NaChar \leq 5.5 \cdot 10^{-8}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -4.6e-5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.5%
if -4.6e-5 < NaChar < 5.5000000000000003e-8Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 70.1%
associate-+r+70.1%
Simplified70.1%
if 5.5000000000000003e-8 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.4%
associate-*r/79.4%
mul-1-neg79.4%
Simplified79.4%
Taylor expanded in NdChar around 0 76.8%
Final simplification71.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -5.6e+42)
(-
(/ NdChar (+ (/ Vef KbT) 1.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= NaChar 9e-6)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5.6e+42) {
tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (NaChar <= 9e-6) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-5.6d+42)) then
tmp = (ndchar / ((vef / kbt) + 1.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev + (eaccept - mu))) / kbt))))
else if (nachar <= 9d-6) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5.6e+42) {
tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (NaChar <= 9e-6) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -5.6e+42: tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif NaChar <= 9e-6: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -5.6e+42) tmp = Float64(Float64(NdChar / Float64(Float64(Vef / KbT) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (NaChar <= 9e-6) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -5.6e+42) tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); elseif (NaChar <= 9e-6) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -5.6e+42], N[(N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $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], If[LessEqual[NaChar, 9e-6], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.6 \cdot 10^{+42}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT} + 1} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-6}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -5.5999999999999999e42Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.0%
Taylor expanded in Vef around inf 71.9%
if -5.5999999999999999e42 < NaChar < 9.00000000000000023e-6Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 68.8%
associate-+r+68.8%
Simplified68.8%
if 9.00000000000000023e-6 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.4%
associate-*r/79.4%
mul-1-neg79.4%
Simplified79.4%
Taylor expanded in NdChar around 0 76.8%
Final simplification71.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ mu (- KbT))) 1.0)))
(t_1 (+ (exp (/ Vef KbT)) 1.0))
(t_2 (/ NaChar t_1)))
(if (<= NaChar -1.5e+157)
t_2
(if (<= NaChar -3e+24)
t_0
(if (<= NaChar -6.5e-6)
(+
(/
NdChar
(+
(-
(+ (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))) 1.0)
(/ Ec KbT))
1.0))
(/ NaChar 2.0))
(if (<= NaChar -2.75e-39)
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(if (<= NaChar -9.5e-51)
t_2
(if (<= NaChar 1900000000.0) (/ NdChar 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 / (exp((mu / -KbT)) + 1.0);
double t_1 = exp((Vef / KbT)) + 1.0;
double t_2 = NaChar / t_1;
double tmp;
if (NaChar <= -1.5e+157) {
tmp = t_2;
} else if (NaChar <= -3e+24) {
tmp = t_0;
} else if (NaChar <= -6.5e-6) {
tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (NaChar <= -2.75e-39) {
tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= -9.5e-51) {
tmp = t_2;
} else if (NaChar <= 1900000000.0) {
tmp = NdChar / 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) :: t_2
real(8) :: tmp
t_0 = nachar / (exp((mu / -kbt)) + 1.0d0)
t_1 = exp((vef / kbt)) + 1.0d0
t_2 = nachar / t_1
if (nachar <= (-1.5d+157)) then
tmp = t_2
else if (nachar <= (-3d+24)) then
tmp = t_0
else if (nachar <= (-6.5d-6)) then
tmp = (ndchar / (((((edonor / kbt) + ((mu / kbt) + (vef / kbt))) + 1.0d0) - (ec / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (nachar <= (-2.75d-39)) then
tmp = ndchar / (exp((ec / -kbt)) + 1.0d0)
else if (nachar <= (-9.5d-51)) then
tmp = t_2
else if (nachar <= 1900000000.0d0) then
tmp = ndchar / 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 / (Math.exp((mu / -KbT)) + 1.0);
double t_1 = Math.exp((Vef / KbT)) + 1.0;
double t_2 = NaChar / t_1;
double tmp;
if (NaChar <= -1.5e+157) {
tmp = t_2;
} else if (NaChar <= -3e+24) {
tmp = t_0;
} else if (NaChar <= -6.5e-6) {
tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (NaChar <= -2.75e-39) {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= -9.5e-51) {
tmp = t_2;
} else if (NaChar <= 1900000000.0) {
tmp = NdChar / t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((mu / -KbT)) + 1.0) t_1 = math.exp((Vef / KbT)) + 1.0 t_2 = NaChar / t_1 tmp = 0 if NaChar <= -1.5e+157: tmp = t_2 elif NaChar <= -3e+24: tmp = t_0 elif NaChar <= -6.5e-6: tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0) elif NaChar <= -2.75e-39: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) elif NaChar <= -9.5e-51: tmp = t_2 elif NaChar <= 1900000000.0: tmp = NdChar / t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(mu / Float64(-KbT))) + 1.0)) t_1 = Float64(exp(Float64(Vef / KbT)) + 1.0) t_2 = Float64(NaChar / t_1) tmp = 0.0 if (NaChar <= -1.5e+157) tmp = t_2; elseif (NaChar <= -3e+24) tmp = t_0; elseif (NaChar <= -6.5e-6) tmp = Float64(Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(Ec / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (NaChar <= -2.75e-39) tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); elseif (NaChar <= -9.5e-51) tmp = t_2; elseif (NaChar <= 1900000000.0) tmp = Float64(NdChar / 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 / (exp((mu / -KbT)) + 1.0); t_1 = exp((Vef / KbT)) + 1.0; t_2 = NaChar / t_1; tmp = 0.0; if (NaChar <= -1.5e+157) tmp = t_2; elseif (NaChar <= -3e+24) tmp = t_0; elseif (NaChar <= -6.5e-6) tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0); elseif (NaChar <= -2.75e-39) tmp = NdChar / (exp((Ec / -KbT)) + 1.0); elseif (NaChar <= -9.5e-51) tmp = t_2; elseif (NaChar <= 1900000000.0) tmp = NdChar / 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[(NaChar / N[(N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / t$95$1), $MachinePrecision]}, If[LessEqual[NaChar, -1.5e+157], t$95$2, If[LessEqual[NaChar, -3e+24], t$95$0, If[LessEqual[NaChar, -6.5e-6], N[(N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -2.75e-39], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -9.5e-51], t$95$2, If[LessEqual[NaChar, 1900000000.0], N[(NdChar / t$95$1), $MachinePrecision], t$95$0]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{mu}{-KbT}} + 1}\\
t_1 := e^{\frac{Vef}{KbT}} + 1\\
t_2 := \frac{NaChar}{t\_1}\\
\mathbf{if}\;NaChar \leq -1.5 \cdot 10^{+157}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -3 \cdot 10^{+24}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -6.5 \cdot 10^{-6}:\\
\;\;\;\;\frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{Ec}{KbT}\right) + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq -2.75 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq -9.5 \cdot 10^{-51}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 1900000000:\\
\;\;\;\;\frac{NdChar}{t\_1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.50000000000000005e157 or -2.75000000000000009e-39 < NaChar < -9.4999999999999998e-51Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 69.3%
associate-*r/69.3%
mul-1-neg69.3%
Simplified69.3%
Taylor expanded in NdChar around 0 70.8%
Taylor expanded in Vef around inf 62.1%
Taylor expanded in mu around 0 59.7%
if -1.50000000000000005e157 < NaChar < -2.99999999999999995e24 or 1.9e9 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.9%
associate-*r/79.9%
mul-1-neg79.9%
Simplified79.9%
Taylor expanded in NdChar around 0 76.8%
Taylor expanded in mu around inf 49.6%
neg-mul-149.6%
Simplified49.6%
if -2.99999999999999995e24 < NaChar < -6.4999999999999996e-6Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.8%
Taylor expanded in KbT around inf 54.7%
if -6.4999999999999996e-6 < NaChar < -2.75000000000000009e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.3%
associate-*r/78.3%
mul-1-neg78.3%
Simplified78.3%
Taylor expanded in NdChar around inf 78.3%
mul-1-neg78.3%
distribute-frac-neg78.3%
Simplified78.3%
if -9.4999999999999998e-51 < NaChar < 1.9e9Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 62.7%
Taylor expanded in KbT around inf 46.7%
associate-+r+68.2%
Simplified46.7%
Taylor expanded in Vef around inf 35.4%
Taylor expanded in NdChar around inf 52.2%
Final simplification53.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= mu -2.7e+85)
(-
(/ NdChar (+ (/ Vef KbT) 1.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= mu -5.1e-85)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (<= mu -4.2e-180)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= mu 4.2e-210)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar 2.0))
(/
NaChar
(+ (+ (expm1 (/ (+ Ev (+ Vef (- EAccept mu))) KbT)) 1.0) 1.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.7e+85) {
tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (mu <= -5.1e-85) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (mu <= -4.2e-180) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else if (mu <= 4.2e-210) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / ((expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
}
return tmp;
}
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.7e+85) {
tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (mu <= -5.1e-85) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (mu <= -4.2e-180) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (mu <= 4.2e-210) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / ((Math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= -2.7e+85: tmp = (NdChar / ((Vef / KbT) + 1.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif mu <= -5.1e-85: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif mu <= -4.2e-180: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) elif mu <= 4.2e-210: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = NaChar / ((math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= -2.7e+85) tmp = Float64(Float64(NdChar / Float64(Float64(Vef / KbT) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (mu <= -5.1e-85) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif (mu <= -4.2e-180) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (mu <= 4.2e-210) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(NaChar / Float64(Float64(expm1(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)) + 1.0) + 1.0)); end return tmp end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, -2.7e+85], N[(N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $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], If[LessEqual[mu, -5.1e-85], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -4.2e-180], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4.2e-210], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(N[(Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -2.7 \cdot 10^{+85}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT} + 1} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;mu \leq -5.1 \cdot 10^{-85}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq -4.2 \cdot 10^{-180}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq 4.2 \cdot 10^{-210}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(\mathsf{expm1}\left(\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}\right) + 1\right) + 1}\\
\end{array}
\end{array}
if mu < -2.69999999999999983e85Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.9%
Taylor expanded in Vef around inf 63.2%
if -2.69999999999999983e85 < mu < -5.1000000000000002e-85Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 66.2%
associate-*r/66.2%
mul-1-neg66.2%
Simplified66.2%
Taylor expanded in NdChar around 0 74.4%
if -5.1000000000000002e-85 < mu < -4.1999999999999997e-180Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.3%
Taylor expanded in KbT around inf 44.7%
associate-+r+57.8%
Simplified44.7%
Taylor expanded in Vef around inf 35.5%
Taylor expanded in NdChar around inf 67.1%
if -4.1999999999999997e-180 < mu < 4.20000000000000032e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
if 4.20000000000000032e-210 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 71.4%
associate-*r/71.4%
mul-1-neg71.4%
Simplified71.4%
Taylor expanded in NdChar around 0 67.4%
expm1-log1p-u67.4%
log1p-define67.4%
expm1-undefine67.4%
add-exp-log67.4%
associate--l+67.4%
Applied egg-rr67.4%
associate--l+67.4%
expm1-define67.4%
+-commutative67.4%
*-lft-identity67.4%
metadata-eval67.4%
cancel-sign-sub-inv67.4%
associate--r+67.4%
associate--l+67.4%
mul-1-neg67.4%
unsub-neg67.4%
Simplified67.4%
Final simplification68.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= mu -2.6e-85)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (<= mu -9.5e-180)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= mu 3.6e-210)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ Ec (- KbT))))))
(/
NaChar
(+ (+ (expm1 (/ (+ Ev (+ Vef (- EAccept mu))) KbT)) 1.0) 1.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.6e-85) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (mu <= -9.5e-180) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else if (mu <= 3.6e-210) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((Ec / -KbT))));
} else {
tmp = NaChar / ((expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
}
return tmp;
}
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.6e-85) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (mu <= -9.5e-180) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (mu <= 3.6e-210) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((Ec / -KbT))));
} else {
tmp = NaChar / ((Math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= -2.6e-85: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif mu <= -9.5e-180: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) elif mu <= 3.6e-210: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((Ec / -KbT)))) else: tmp = NaChar / ((math.expm1(((Ev + (Vef + (EAccept - mu))) / KbT)) + 1.0) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= -2.6e-85) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif (mu <= -9.5e-180) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (mu <= 3.6e-210) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Ec / Float64(-KbT)))))); else tmp = Float64(NaChar / Float64(Float64(expm1(Float64(Float64(Ev + Float64(Vef + Float64(EAccept - mu))) / KbT)) + 1.0) + 1.0)); end return tmp end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, -2.6e-85], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -9.5e-180], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.6e-210], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(N[(Exp[N[(N[(Ev + N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -2.6 \cdot 10^{-85}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq -9.5 \cdot 10^{-180}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq 3.6 \cdot 10^{-210}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{Ec}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(\mathsf{expm1}\left(\frac{Ev + \left(Vef + \left(EAccept - mu\right)\right)}{KbT}\right) + 1\right) + 1}\\
\end{array}
\end{array}
if mu < -2.60000000000000011e-85Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 58.9%
associate-*r/58.9%
mul-1-neg58.9%
Simplified58.9%
Taylor expanded in NdChar around 0 60.8%
if -2.60000000000000011e-85 < mu < -9.49999999999999934e-180Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.3%
Taylor expanded in KbT around inf 44.7%
associate-+r+57.8%
Simplified44.7%
Taylor expanded in Vef around inf 35.5%
Taylor expanded in NdChar around inf 67.1%
if -9.49999999999999934e-180 < mu < 3.5999999999999999e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
Taylor expanded in Ec around inf 63.3%
associate-*r/80.3%
mul-1-neg80.3%
Simplified63.3%
if 3.5999999999999999e-210 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 71.4%
associate-*r/71.4%
mul-1-neg71.4%
Simplified71.4%
Taylor expanded in NdChar around 0 67.4%
expm1-log1p-u67.4%
log1p-define67.4%
expm1-undefine67.4%
add-exp-log67.4%
associate--l+67.4%
Applied egg-rr67.4%
associate--l+67.4%
expm1-define67.4%
+-commutative67.4%
*-lft-identity67.4%
metadata-eval67.4%
cancel-sign-sub-inv67.4%
associate--r+67.4%
associate--l+67.4%
mul-1-neg67.4%
unsub-neg67.4%
Simplified67.4%
Final simplification64.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -1.95e+123)
(/ NaChar (+ (exp (/ (- Ev mu) KbT)) 1.0))
(if (<= Ev -5e-161)
(/ NaChar (+ (exp (/ (- Vef mu) KbT)) 1.0))
(if (<= Ev -1.22e-257)
(+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0))
(if (<= Ev 4e-187)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (- EAccept mu) KbT)) 1.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 <= -1.95e+123) {
tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0);
} else if (Ev <= -5e-161) {
tmp = NaChar / (exp(((Vef - mu) / KbT)) + 1.0);
} else if (Ev <= -1.22e-257) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (Ev <= 4e-187) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.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 <= (-1.95d+123)) then
tmp = nachar / (exp(((ev - mu) / kbt)) + 1.0d0)
else if (ev <= (-5d-161)) then
tmp = nachar / (exp(((vef - mu) / kbt)) + 1.0d0)
else if (ev <= (-1.22d-257)) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (ev <= 4d-187) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp(((eaccept - mu) / kbt)) + 1.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 <= -1.95e+123) {
tmp = NaChar / (Math.exp(((Ev - mu) / KbT)) + 1.0);
} else if (Ev <= -5e-161) {
tmp = NaChar / (Math.exp(((Vef - mu) / KbT)) + 1.0);
} else if (Ev <= -1.22e-257) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (Ev <= 4e-187) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp(((EAccept - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -1.95e+123: tmp = NaChar / (math.exp(((Ev - mu) / KbT)) + 1.0) elif Ev <= -5e-161: tmp = NaChar / (math.exp(((Vef - mu) / KbT)) + 1.0) elif Ev <= -1.22e-257: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) elif Ev <= 4e-187: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp(((EAccept - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -1.95e+123) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Ev - mu) / KbT)) + 1.0)); elseif (Ev <= -5e-161) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Vef - mu) / KbT)) + 1.0)); elseif (Ev <= -1.22e-257) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (Ev <= 4e-187) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -1.95e+123) tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0); elseif (Ev <= -5e-161) tmp = NaChar / (exp(((Vef - mu) / KbT)) + 1.0); elseif (Ev <= -1.22e-257) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); elseif (Ev <= 4e-187) tmp = NdChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -1.95e+123], N[(NaChar / N[(N[Exp[N[(N[(Ev - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -5e-161], N[(NaChar / N[(N[Exp[N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.22e-257], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 4e-187], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -1.95 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev - mu}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -5 \cdot 10^{-161}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef - mu}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.22 \cdot 10^{-257}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;Ev \leq 4 \cdot 10^{-187}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -1.94999999999999996e123Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 56.1%
associate-*r/56.1%
mul-1-neg56.1%
Simplified56.1%
Taylor expanded in NdChar around 0 46.7%
Taylor expanded in Ev around inf 43.3%
if -1.94999999999999996e123 < Ev < -4.9999999999999999e-161Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 74.2%
associate-*r/74.2%
mul-1-neg74.2%
Simplified74.2%
Taylor expanded in NdChar around 0 63.0%
Taylor expanded in Vef around inf 53.3%
if -4.9999999999999999e-161 < Ev < -1.22000000000000004e-257Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 56.9%
Taylor expanded in EDonor around inf 45.6%
if -1.22000000000000004e-257 < Ev < 4.0000000000000001e-187Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.6%
Taylor expanded in KbT around inf 44.7%
associate-+r+55.5%
Simplified44.7%
Taylor expanded in Vef around inf 30.4%
Taylor expanded in NdChar around inf 41.7%
if 4.0000000000000001e-187 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 69.3%
associate-*r/69.3%
mul-1-neg69.3%
Simplified69.3%
Taylor expanded in NdChar around 0 62.4%
Taylor expanded in EAccept around inf 45.1%
Final simplification46.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (exp (/ Vef KbT)) 1.0)))
(if (<= NaChar -6e-6)
(/ NaChar (+ (exp (/ (- Ev mu) KbT)) 1.0))
(if (<= NaChar -3.6e-39)
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(if (<= NaChar -6.6e-54)
(/ NaChar t_0)
(if (<= NaChar 12500000000.0)
(/ NdChar t_0)
(/ NaChar (+ (exp (/ (- EAccept mu) KbT)) 1.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp((Vef / KbT)) + 1.0;
double tmp;
if (NaChar <= -6e-6) {
tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0);
} else if (NaChar <= -3.6e-39) {
tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= -6.6e-54) {
tmp = NaChar / t_0;
} else if (NaChar <= 12500000000.0) {
tmp = NdChar / t_0;
} else {
tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.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 = exp((vef / kbt)) + 1.0d0
if (nachar <= (-6d-6)) then
tmp = nachar / (exp(((ev - mu) / kbt)) + 1.0d0)
else if (nachar <= (-3.6d-39)) then
tmp = ndchar / (exp((ec / -kbt)) + 1.0d0)
else if (nachar <= (-6.6d-54)) then
tmp = nachar / t_0
else if (nachar <= 12500000000.0d0) then
tmp = ndchar / t_0
else
tmp = nachar / (exp(((eaccept - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if (NaChar <= -6e-6) {
tmp = NaChar / (Math.exp(((Ev - mu) / KbT)) + 1.0);
} else if (NaChar <= -3.6e-39) {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= -6.6e-54) {
tmp = NaChar / t_0;
} else if (NaChar <= 12500000000.0) {
tmp = NdChar / t_0;
} else {
tmp = NaChar / (Math.exp(((EAccept - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if NaChar <= -6e-6: tmp = NaChar / (math.exp(((Ev - mu) / KbT)) + 1.0) elif NaChar <= -3.6e-39: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) elif NaChar <= -6.6e-54: tmp = NaChar / t_0 elif NaChar <= 12500000000.0: tmp = NdChar / t_0 else: tmp = NaChar / (math.exp(((EAccept - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if (NaChar <= -6e-6) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Ev - mu) / KbT)) + 1.0)); elseif (NaChar <= -3.6e-39) tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); elseif (NaChar <= -6.6e-54) tmp = Float64(NaChar / t_0); elseif (NaChar <= 12500000000.0) tmp = Float64(NdChar / t_0); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if (NaChar <= -6e-6) tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0); elseif (NaChar <= -3.6e-39) tmp = NdChar / (exp((Ec / -KbT)) + 1.0); elseif (NaChar <= -6.6e-54) tmp = NaChar / t_0; elseif (NaChar <= 12500000000.0) tmp = NdChar / t_0; else tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[NaChar, -6e-6], N[(NaChar / N[(N[Exp[N[(N[(Ev - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -3.6e-39], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -6.6e-54], N[(NaChar / t$95$0), $MachinePrecision], If[LessEqual[NaChar, 12500000000.0], N[(NdChar / t$95$0), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;NaChar \leq -6 \cdot 10^{-6}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev - mu}{KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq -3.6 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq -6.6 \cdot 10^{-54}:\\
\;\;\;\;\frac{NaChar}{t\_0}\\
\mathbf{elif}\;NaChar \leq 12500000000:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -6.0000000000000002e-6Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 72.9%
associate-*r/72.9%
mul-1-neg72.9%
Simplified72.9%
Taylor expanded in NdChar around 0 69.2%
Taylor expanded in Ev around inf 52.8%
if -6.0000000000000002e-6 < NaChar < -3.6000000000000001e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.3%
associate-*r/78.3%
mul-1-neg78.3%
Simplified78.3%
Taylor expanded in NdChar around inf 78.3%
mul-1-neg78.3%
distribute-frac-neg78.3%
Simplified78.3%
if -3.6000000000000001e-39 < NaChar < -6.59999999999999986e-54Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 55.8%
associate-*r/55.8%
mul-1-neg55.8%
Simplified55.8%
Taylor expanded in NdChar around 0 75.5%
Taylor expanded in Vef around inf 75.9%
Taylor expanded in mu around 0 75.9%
if -6.59999999999999986e-54 < NaChar < 1.25e10Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 62.7%
Taylor expanded in KbT around inf 46.7%
associate-+r+68.2%
Simplified46.7%
Taylor expanded in Vef around inf 35.4%
Taylor expanded in NdChar around inf 52.2%
if 1.25e10 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 80.3%
associate-*r/80.3%
mul-1-neg80.3%
Simplified80.3%
Taylor expanded in NdChar around 0 79.3%
Taylor expanded in EAccept around inf 62.8%
Final simplification56.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- EAccept mu) KbT)) 1.0)))
(t_1 (+ (exp (/ Vef KbT)) 1.0)))
(if (<= Vef -4.9e+104)
(/ NdChar t_1)
(if (<= Vef 2.5e-70)
t_0
(if (<= Vef 4.3e+20)
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(if (<= Vef 2.95e+109) t_0 (/ NaChar 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 / (exp(((EAccept - mu) / KbT)) + 1.0);
double t_1 = exp((Vef / KbT)) + 1.0;
double tmp;
if (Vef <= -4.9e+104) {
tmp = NdChar / t_1;
} else if (Vef <= 2.5e-70) {
tmp = t_0;
} else if (Vef <= 4.3e+20) {
tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
} else if (Vef <= 2.95e+109) {
tmp = t_0;
} else {
tmp = NaChar / 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 / (exp(((eaccept - mu) / kbt)) + 1.0d0)
t_1 = exp((vef / kbt)) + 1.0d0
if (vef <= (-4.9d+104)) then
tmp = ndchar / t_1
else if (vef <= 2.5d-70) then
tmp = t_0
else if (vef <= 4.3d+20) then
tmp = ndchar / (exp((ec / -kbt)) + 1.0d0)
else if (vef <= 2.95d+109) then
tmp = t_0
else
tmp = nachar / 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 / (Math.exp(((EAccept - mu) / KbT)) + 1.0);
double t_1 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if (Vef <= -4.9e+104) {
tmp = NdChar / t_1;
} else if (Vef <= 2.5e-70) {
tmp = t_0;
} else if (Vef <= 4.3e+20) {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
} else if (Vef <= 2.95e+109) {
tmp = t_0;
} else {
tmp = NaChar / t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp(((EAccept - mu) / KbT)) + 1.0) t_1 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if Vef <= -4.9e+104: tmp = NdChar / t_1 elif Vef <= 2.5e-70: tmp = t_0 elif Vef <= 4.3e+20: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) elif Vef <= 2.95e+109: tmp = t_0 else: tmp = NaChar / t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(EAccept - mu) / KbT)) + 1.0)) t_1 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if (Vef <= -4.9e+104) tmp = Float64(NdChar / t_1); elseif (Vef <= 2.5e-70) tmp = t_0; elseif (Vef <= 4.3e+20) tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); elseif (Vef <= 2.95e+109) tmp = t_0; else tmp = Float64(NaChar / t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp(((EAccept - mu) / KbT)) + 1.0); t_1 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if (Vef <= -4.9e+104) tmp = NdChar / t_1; elseif (Vef <= 2.5e-70) tmp = t_0; elseif (Vef <= 4.3e+20) tmp = NdChar / (exp((Ec / -KbT)) + 1.0); elseif (Vef <= 2.95e+109) tmp = t_0; else tmp = NaChar / t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(EAccept - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[Vef, -4.9e+104], N[(NdChar / t$95$1), $MachinePrecision], If[LessEqual[Vef, 2.5e-70], t$95$0, If[LessEqual[Vef, 4.3e+20], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.95e+109], t$95$0, N[(NaChar / t$95$1), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{EAccept - mu}{KbT}} + 1}\\
t_1 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;Vef \leq -4.9 \cdot 10^{+104}:\\
\;\;\;\;\frac{NdChar}{t\_1}\\
\mathbf{elif}\;Vef \leq 2.5 \cdot 10^{-70}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 4.3 \cdot 10^{+20}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 2.95 \cdot 10^{+109}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_1}\\
\end{array}
\end{array}
if Vef < -4.89999999999999985e104Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.8%
Taylor expanded in KbT around inf 41.1%
associate-+r+56.9%
Simplified41.1%
Taylor expanded in Vef around inf 42.6%
Taylor expanded in NdChar around inf 64.2%
if -4.89999999999999985e104 < Vef < 2.4999999999999999e-70 or 4.3e20 < Vef < 2.9499999999999999e109Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 76.9%
associate-*r/76.9%
mul-1-neg76.9%
Simplified76.9%
Taylor expanded in NdChar around 0 62.3%
Taylor expanded in EAccept around inf 52.2%
if 2.4999999999999999e-70 < Vef < 4.3e20Initial program 99.3%
Simplified99.3%
Taylor expanded in Ec around inf 91.9%
associate-*r/91.9%
mul-1-neg91.9%
Simplified91.9%
Taylor expanded in NdChar around inf 75.7%
mul-1-neg75.7%
distribute-frac-neg75.7%
Simplified75.7%
if 2.9499999999999999e109 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 43.6%
associate-*r/43.6%
mul-1-neg43.6%
Simplified43.6%
Taylor expanded in NdChar around 0 66.0%
Taylor expanded in Vef around inf 63.6%
Taylor expanded in mu around 0 61.2%
Final simplification56.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ mu (- KbT))) 1.0)))
(t_1 (+ (exp (/ Vef KbT)) 1.0)))
(if (<= NaChar -2.75e+157)
(/ NaChar t_1)
(if (<= NaChar -2.45e+25)
t_0
(if (<= NaChar -7.8e-7)
(+
(/
NdChar
(+
(-
(+ (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))) 1.0)
(/ Ec KbT))
1.0))
(/ NaChar 2.0))
(if (<= NaChar 10000000000.0) (/ NdChar 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 / (exp((mu / -KbT)) + 1.0);
double t_1 = exp((Vef / KbT)) + 1.0;
double tmp;
if (NaChar <= -2.75e+157) {
tmp = NaChar / t_1;
} else if (NaChar <= -2.45e+25) {
tmp = t_0;
} else if (NaChar <= -7.8e-7) {
tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (NaChar <= 10000000000.0) {
tmp = NdChar / 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 / (exp((mu / -kbt)) + 1.0d0)
t_1 = exp((vef / kbt)) + 1.0d0
if (nachar <= (-2.75d+157)) then
tmp = nachar / t_1
else if (nachar <= (-2.45d+25)) then
tmp = t_0
else if (nachar <= (-7.8d-7)) then
tmp = (ndchar / (((((edonor / kbt) + ((mu / kbt) + (vef / kbt))) + 1.0d0) - (ec / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (nachar <= 10000000000.0d0) then
tmp = ndchar / 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 / (Math.exp((mu / -KbT)) + 1.0);
double t_1 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if (NaChar <= -2.75e+157) {
tmp = NaChar / t_1;
} else if (NaChar <= -2.45e+25) {
tmp = t_0;
} else if (NaChar <= -7.8e-7) {
tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (NaChar <= 10000000000.0) {
tmp = NdChar / t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((mu / -KbT)) + 1.0) t_1 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if NaChar <= -2.75e+157: tmp = NaChar / t_1 elif NaChar <= -2.45e+25: tmp = t_0 elif NaChar <= -7.8e-7: tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0) elif NaChar <= 10000000000.0: tmp = NdChar / t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(mu / Float64(-KbT))) + 1.0)) t_1 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if (NaChar <= -2.75e+157) tmp = Float64(NaChar / t_1); elseif (NaChar <= -2.45e+25) tmp = t_0; elseif (NaChar <= -7.8e-7) tmp = Float64(Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(Ec / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (NaChar <= 10000000000.0) tmp = Float64(NdChar / 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 / (exp((mu / -KbT)) + 1.0); t_1 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if (NaChar <= -2.75e+157) tmp = NaChar / t_1; elseif (NaChar <= -2.45e+25) tmp = t_0; elseif (NaChar <= -7.8e-7) tmp = (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) + (NaChar / 2.0); elseif (NaChar <= 10000000000.0) tmp = NdChar / 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[(NaChar / N[(N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[NaChar, -2.75e+157], N[(NaChar / t$95$1), $MachinePrecision], If[LessEqual[NaChar, -2.45e+25], t$95$0, If[LessEqual[NaChar, -7.8e-7], N[(N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 10000000000.0], N[(NdChar / t$95$1), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{mu}{-KbT}} + 1}\\
t_1 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;NaChar \leq -2.75 \cdot 10^{+157}:\\
\;\;\;\;\frac{NaChar}{t\_1}\\
\mathbf{elif}\;NaChar \leq -2.45 \cdot 10^{+25}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -7.8 \cdot 10^{-7}:\\
\;\;\;\;\frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{Ec}{KbT}\right) + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 10000000000:\\
\;\;\;\;\frac{NdChar}{t\_1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -2.7500000000000001e157Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 71.1%
associate-*r/71.1%
mul-1-neg71.1%
Simplified71.1%
Taylor expanded in NdChar around 0 70.1%
Taylor expanded in Vef around inf 60.2%
Taylor expanded in mu around 0 57.4%
if -2.7500000000000001e157 < NaChar < -2.45e25 or 1e10 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.9%
associate-*r/79.9%
mul-1-neg79.9%
Simplified79.9%
Taylor expanded in NdChar around 0 76.8%
Taylor expanded in mu around inf 49.6%
neg-mul-149.6%
Simplified49.6%
if -2.45e25 < NaChar < -7.80000000000000049e-7Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.9%
Taylor expanded in KbT around inf 51.3%
if -7.80000000000000049e-7 < NaChar < 1e10Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 62.1%
Taylor expanded in KbT around inf 45.3%
associate-+r+67.8%
Simplified45.3%
Taylor expanded in Vef around inf 35.0%
Taylor expanded in NdChar around inf 51.0%
Final simplification51.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))
(if (<= mu -2.6e-85)
t_0
(if (<= mu -7e-181)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= mu 3.9e-210)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ 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 / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (mu <= -2.6e-85) {
tmp = t_0;
} else if (mu <= -7e-181) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else if (mu <= 3.9e-210) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((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 / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
if (mu <= (-2.6d-85)) then
tmp = t_0
else if (mu <= (-7d-181)) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else if (mu <= 3.9d-210) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - exp((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 / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (mu <= -2.6e-85) {
tmp = t_0;
} else if (mu <= -7e-181) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (mu <= 3.9e-210) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((Ec / -KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) tmp = 0 if mu <= -2.6e-85: tmp = t_0 elif mu <= -7e-181: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) elif mu <= 3.9e-210: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((Ec / -KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0.0 if (mu <= -2.6e-85) tmp = t_0; elseif (mu <= -7e-181) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (mu <= 3.9e-210) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Ec / Float64(-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 / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); tmp = 0.0; if (mu <= -2.6e-85) tmp = t_0; elseif (mu <= -7e-181) tmp = NdChar / (exp((Vef / KbT)) + 1.0); elseif (mu <= 3.9e-210) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((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[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.6e-85], t$95$0, If[LessEqual[mu, -7e-181], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.9e-210], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;mu \leq -2.6 \cdot 10^{-85}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq -7 \cdot 10^{-181}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq 3.9 \cdot 10^{-210}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{Ec}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -2.60000000000000011e-85 or 3.8999999999999998e-210 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 66.5%
associate-*r/66.5%
mul-1-neg66.5%
Simplified66.5%
Taylor expanded in NdChar around 0 64.8%
if -2.60000000000000011e-85 < mu < -6.99999999999999993e-181Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.3%
Taylor expanded in KbT around inf 44.7%
associate-+r+57.8%
Simplified44.7%
Taylor expanded in Vef around inf 35.5%
Taylor expanded in NdChar around inf 67.1%
if -6.99999999999999993e-181 < mu < 3.8999999999999998e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
Taylor expanded in Ec around inf 63.3%
associate-*r/80.3%
mul-1-neg80.3%
Simplified63.3%
Final simplification64.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -2.6e+123)
(/ NaChar (+ (exp (/ (- Ev mu) KbT)) 1.0))
(if (<= Ev -2.1e-258)
(/ NaChar (+ (exp (/ (- Vef mu) KbT)) 1.0))
(if (<= Ev 1.3e-187)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (- EAccept mu) KbT)) 1.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 <= -2.6e+123) {
tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0);
} else if (Ev <= -2.1e-258) {
tmp = NaChar / (exp(((Vef - mu) / KbT)) + 1.0);
} else if (Ev <= 1.3e-187) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.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 <= (-2.6d+123)) then
tmp = nachar / (exp(((ev - mu) / kbt)) + 1.0d0)
else if (ev <= (-2.1d-258)) then
tmp = nachar / (exp(((vef - mu) / kbt)) + 1.0d0)
else if (ev <= 1.3d-187) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp(((eaccept - mu) / kbt)) + 1.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 <= -2.6e+123) {
tmp = NaChar / (Math.exp(((Ev - mu) / KbT)) + 1.0);
} else if (Ev <= -2.1e-258) {
tmp = NaChar / (Math.exp(((Vef - mu) / KbT)) + 1.0);
} else if (Ev <= 1.3e-187) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp(((EAccept - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.6e+123: tmp = NaChar / (math.exp(((Ev - mu) / KbT)) + 1.0) elif Ev <= -2.1e-258: tmp = NaChar / (math.exp(((Vef - mu) / KbT)) + 1.0) elif Ev <= 1.3e-187: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp(((EAccept - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.6e+123) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Ev - mu) / KbT)) + 1.0)); elseif (Ev <= -2.1e-258) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Vef - mu) / KbT)) + 1.0)); elseif (Ev <= 1.3e-187) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -2.6e+123) tmp = NaChar / (exp(((Ev - mu) / KbT)) + 1.0); elseif (Ev <= -2.1e-258) tmp = NaChar / (exp(((Vef - mu) / KbT)) + 1.0); elseif (Ev <= 1.3e-187) tmp = NdChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp(((EAccept - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.6e+123], N[(NaChar / N[(N[Exp[N[(N[(Ev - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -2.1e-258], N[(NaChar / N[(N[Exp[N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.3e-187], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.6 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev - mu}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -2.1 \cdot 10^{-258}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef - mu}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq 1.3 \cdot 10^{-187}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -2.59999999999999985e123Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 56.1%
associate-*r/56.1%
mul-1-neg56.1%
Simplified56.1%
Taylor expanded in NdChar around 0 46.7%
Taylor expanded in Ev around inf 43.3%
if -2.59999999999999985e123 < Ev < -2.0999999999999999e-258Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 74.8%
associate-*r/74.8%
mul-1-neg74.8%
Simplified74.8%
Taylor expanded in NdChar around 0 57.6%
Taylor expanded in Vef around inf 48.5%
if -2.0999999999999999e-258 < Ev < 1.3e-187Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.6%
Taylor expanded in KbT around inf 44.7%
associate-+r+55.5%
Simplified44.7%
Taylor expanded in Vef around inf 30.4%
Taylor expanded in NdChar around inf 41.7%
if 1.3e-187 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 69.3%
associate-*r/69.3%
mul-1-neg69.3%
Simplified69.3%
Taylor expanded in NdChar around 0 62.4%
Taylor expanded in EAccept around inf 45.1%
Final simplification45.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (exp (/ Vef KbT)) 1.0)))
(if (or (<= NaChar -7.5e-50) (not (<= NaChar 950000.0)))
(/ NaChar t_0)
(/ NdChar 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 = exp((Vef / KbT)) + 1.0;
double tmp;
if ((NaChar <= -7.5e-50) || !(NaChar <= 950000.0)) {
tmp = NaChar / t_0;
} else {
tmp = NdChar / 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 = exp((vef / kbt)) + 1.0d0
if ((nachar <= (-7.5d-50)) .or. (.not. (nachar <= 950000.0d0))) then
tmp = nachar / t_0
else
tmp = ndchar / 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 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if ((NaChar <= -7.5e-50) || !(NaChar <= 950000.0)) {
tmp = NaChar / t_0;
} else {
tmp = NdChar / t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if (NaChar <= -7.5e-50) or not (NaChar <= 950000.0): tmp = NaChar / t_0 else: tmp = NdChar / t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if ((NaChar <= -7.5e-50) || !(NaChar <= 950000.0)) tmp = Float64(NaChar / t_0); else tmp = Float64(NdChar / t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if ((NaChar <= -7.5e-50) || ~((NaChar <= 950000.0))) tmp = NaChar / t_0; else tmp = NdChar / t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[Or[LessEqual[NaChar, -7.5e-50], N[Not[LessEqual[NaChar, 950000.0]], $MachinePrecision]], N[(NaChar / t$95$0), $MachinePrecision], N[(NdChar / t$95$0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;NaChar \leq -7.5 \cdot 10^{-50} \lor \neg \left(NaChar \leq 950000\right):\\
\;\;\;\;\frac{NaChar}{t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\end{array}
\end{array}
if NaChar < -7.5e-50 or 9.5e5 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 76.2%
associate-*r/76.2%
mul-1-neg76.2%
Simplified76.2%
Taylor expanded in NdChar around 0 71.6%
Taylor expanded in Vef around inf 55.8%
Taylor expanded in mu around 0 46.7%
if -7.5e-50 < NaChar < 9.5e5Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 62.3%
Taylor expanded in KbT around inf 47.1%
associate-+r+68.8%
Simplified47.1%
Taylor expanded in Vef around inf 35.7%
Taylor expanded in NdChar around inf 51.8%
Final simplification49.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -3e+216)
(- (+ (* NaChar 0.5) (* NdChar 0.5)) (* -0.25 (* NaChar (/ mu KbT))))
(if (<= KbT 6.2e+35)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(* 0.5 (+ NdChar NaChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3e+216) {
tmp = ((NaChar * 0.5) + (NdChar * 0.5)) - (-0.25 * (NaChar * (mu / KbT)));
} else if (KbT <= 6.2e+35) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-3d+216)) then
tmp = ((nachar * 0.5d0) + (ndchar * 0.5d0)) - ((-0.25d0) * (nachar * (mu / kbt)))
else if (kbt <= 6.2d+35) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3e+216) {
tmp = ((NaChar * 0.5) + (NdChar * 0.5)) - (-0.25 * (NaChar * (mu / KbT)));
} else if (KbT <= 6.2e+35) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -3e+216: tmp = ((NaChar * 0.5) + (NdChar * 0.5)) - (-0.25 * (NaChar * (mu / KbT))) elif KbT <= 6.2e+35: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -3e+216) tmp = Float64(Float64(Float64(NaChar * 0.5) + Float64(NdChar * 0.5)) - Float64(-0.25 * Float64(NaChar * Float64(mu / KbT)))); elseif (KbT <= 6.2e+35) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -3e+216) tmp = ((NaChar * 0.5) + (NdChar * 0.5)) - (-0.25 * (NaChar * (mu / KbT))); elseif (KbT <= 6.2e+35) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -3e+216], N[(N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision] - N[(-0.25 * N[(NaChar * N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 6.2e+35], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3 \cdot 10^{+216}:\\
\;\;\;\;\left(NaChar \cdot 0.5 + NdChar \cdot 0.5\right) - -0.25 \cdot \left(NaChar \cdot \frac{mu}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 6.2 \cdot 10^{+35}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -2.9999999999999998e216Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 95.5%
associate-*r/95.5%
mul-1-neg95.5%
Simplified95.5%
Taylor expanded in KbT around inf 57.7%
Taylor expanded in mu around inf 68.7%
associate-/l*80.8%
Simplified80.8%
if -2.9999999999999998e216 < KbT < 6.19999999999999973e35Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 64.5%
associate-*r/64.5%
mul-1-neg64.5%
Simplified64.5%
Taylor expanded in NdChar around 0 62.2%
Taylor expanded in Vef around inf 46.6%
Taylor expanded in mu around 0 40.2%
if 6.19999999999999973e35 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 73.2%
associate-*r/73.2%
mul-1-neg73.2%
Simplified73.2%
Taylor expanded in KbT around inf 41.8%
distribute-lft-out41.8%
Simplified41.8%
Final simplification43.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -3.2e-41) (not (<= KbT 1550.0)))
(* 0.5 (+ NdChar NaChar))
(/
NaChar
(-
1.0
(+ (/ mu KbT) (- -1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.2e-41) || !(KbT <= 1550.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (1.0 - ((mu / KbT) + (-1.0 - ((EAccept / KbT) + ((Vef / KbT) + (Ev / 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 ((kbt <= (-3.2d-41)) .or. (.not. (kbt <= 1550.0d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (1.0d0 - ((mu / kbt) + ((-1.0d0) - ((eaccept / kbt) + ((vef / kbt) + (ev / 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 ((KbT <= -3.2e-41) || !(KbT <= 1550.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (1.0 - ((mu / KbT) + (-1.0 - ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.2e-41) or not (KbT <= 1550.0): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (1.0 - ((mu / KbT) + (-1.0 - ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.2e-41) || !(KbT <= 1550.0)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(1.0 - Float64(Float64(mu / KbT) + Float64(-1.0 - Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.2e-41) || ~((KbT <= 1550.0))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (1.0 - ((mu / KbT) + (-1.0 - ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.2e-41], N[Not[LessEqual[KbT, 1550.0]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 - N[(N[(mu / KbT), $MachinePrecision] + N[(-1.0 - N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.2 \cdot 10^{-41} \lor \neg \left(KbT \leq 1550\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 - \left(\frac{mu}{KbT} + \left(-1 - \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right)\right)}\\
\end{array}
\end{array}
if KbT < -3.20000000000000012e-41 or 1550 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 72.4%
associate-*r/72.4%
mul-1-neg72.4%
Simplified72.4%
Taylor expanded in KbT around inf 39.3%
distribute-lft-out39.3%
Simplified39.3%
if -3.20000000000000012e-41 < KbT < 1550Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 64.0%
associate-*r/64.0%
mul-1-neg64.0%
Simplified64.0%
Taylor expanded in NdChar around 0 57.9%
Taylor expanded in KbT around inf 19.8%
Final simplification30.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -1.06e-41) (not (<= KbT 550.0)))
(* 0.5 (+ NdChar NaChar))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ 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 ((KbT <= -1.06e-41) || !(KbT <= 550.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (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 ((kbt <= (-1.06d-41)) .or. (.not. (kbt <= 550.0d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (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 ((KbT <= -1.06e-41) || !(KbT <= 550.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.06e-41) or not (KbT <= 550.0): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.06e-41) || !(KbT <= 550.0)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.06e-41) || ~((KbT <= 550.0))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.06e-41], N[Not[LessEqual[KbT, 550.0]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.06 \cdot 10^{-41} \lor \neg \left(KbT \leq 550\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -1.06e-41 or 550 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 72.4%
associate-*r/72.4%
mul-1-neg72.4%
Simplified72.4%
Taylor expanded in KbT around inf 39.3%
distribute-lft-out39.3%
Simplified39.3%
if -1.06e-41 < KbT < 550Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 64.0%
associate-*r/64.0%
mul-1-neg64.0%
Simplified64.0%
Taylor expanded in NdChar around 0 57.9%
Taylor expanded in KbT around inf 19.8%
Final simplification30.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 68.7%
associate-*r/68.7%
mul-1-neg68.7%
Simplified68.7%
Taylor expanded in KbT around inf 27.6%
distribute-lft-out27.6%
Simplified27.6%
Final simplification27.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (/ NaChar 2.0))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar / 2.0;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar / 2.0d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar / 2.0;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar / 2.0
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar / 2.0) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar / 2.0; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar / 2.0), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 68.7%
associate-*r/68.7%
mul-1-neg68.7%
Simplified68.7%
Taylor expanded in NdChar around 0 58.6%
Taylor expanded in Vef around inf 45.3%
Taylor expanded in KbT around inf 18.3%
herbie shell --seed 2024083
(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))))))