
(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 38 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
(let* ((t_0 (cbrt (/ (- Vef (- (- mu Ev) EAccept)) KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (pow (exp (pow t_0 2.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 = cbrt(((Vef - ((mu - Ev) - EAccept)) / KbT));
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + pow(exp(pow(t_0, 2.0)), t_0)));
}
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.cbrt(((Vef - ((mu - Ev) - EAccept)) / KbT));
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.pow(Math.exp(Math.pow(t_0, 2.0)), t_0)));
}
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = cbrt(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT)) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + (exp((t_0 ^ 2.0)) ^ t_0)))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Power[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision], 1/3], $MachinePrecision]}, N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Power[N[Exp[N[Power[t$95$0, 2.0], $MachinePrecision]], $MachinePrecision], t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \sqrt[3]{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + {\left(e^{{t\_0}^{2}}\right)}^{t\_0}}
\end{array}
\end{array}
Initial program 100.0%
Simplified100.0%
add-cube-cbrt100.0%
exp-prod100.0%
pow2100.0%
+-commutative100.0%
associate-+l-100.0%
+-commutative100.0%
associate-+l-100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (expm1 (log1p (exp (/ (- Vef (- (- mu Ev) EAccept)) 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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + expm1(log1p(exp(((Vef - ((mu - Ev) - EAccept)) / KbT))))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.expm1(Math.log1p(Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.expm1(math.log1p(math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + expm1(log1p(exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))))))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Exp[N[Log[1 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \mathsf{expm1}\left(\mathsf{log1p}\left(e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}\right)\right)}
\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%
+-commutative100.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 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_2 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= mu -0.37)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= mu 1.42e-216)
(+
t_0
(/
NaChar
(+
1.0
(*
mu
(+
(/ (+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) mu)
(/ -1.0 KbT))))))
(if (<= mu 9.5e-150)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 6.6e-117)
(+
t_0
(/
NaChar
(+
1.0
(-
(+
1.0
(*
Ev
(+
(/ 1.0 KbT)
(+ (/ EAccept (* KbT Ev)) (/ Vef (* KbT Ev))))))
(/ mu KbT)))))
(if (<= mu 31.5)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_1)
(if (<= mu 2.35e+173)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(+ t_2 (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_2 = NdChar / (1.0 + exp((mu / KbT)));
double tmp;
if (mu <= -0.37) {
tmp = t_2 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.42e-216) {
tmp = t_0 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)))));
} else if (mu <= 9.5e-150) {
tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 6.6e-117) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT))));
} else if (mu <= 31.5) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1;
} else if (mu <= 2.35e+173) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2 + (NaChar / (1.0 + exp((mu / -KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_2 = ndchar / (1.0d0 + exp((mu / kbt)))
if (mu <= (-0.37d0)) then
tmp = t_2 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (mu <= 1.42d-216) then
tmp = t_0 + (nachar / (1.0d0 + (mu * (((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) / mu) + ((-1.0d0) / kbt)))))
else if (mu <= 9.5d-150) then
tmp = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 6.6d-117) then
tmp = t_0 + (nachar / (1.0d0 + ((1.0d0 + (ev * ((1.0d0 / kbt) + ((eaccept / (kbt * ev)) + (vef / (kbt * ev)))))) - (mu / kbt))))
else if (mu <= 31.5d0) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_1
else if (mu <= 2.35d+173) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = t_2 + (nachar / (1.0d0 + exp((mu / -kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_2 = NdChar / (1.0 + Math.exp((mu / KbT)));
double tmp;
if (mu <= -0.37) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.42e-216) {
tmp = t_0 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)))));
} else if (mu <= 9.5e-150) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 6.6e-117) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT))));
} else if (mu <= 31.5) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_1;
} else if (mu <= 2.35e+173) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_2 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_2 = NdChar / (1.0 + math.exp((mu / KbT))) tmp = 0 if mu <= -0.37: tmp = t_2 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif mu <= 1.42e-216: tmp = t_0 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))))) elif mu <= 9.5e-150: tmp = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 6.6e-117: tmp = t_0 + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT)))) elif mu <= 31.5: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_1 elif mu <= 2.35e+173: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = t_2 + (NaChar / (1.0 + math.exp((mu / -KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) tmp = 0.0 if (mu <= -0.37) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (mu <= 1.42e-216) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(mu * Float64(Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) / mu) + Float64(-1.0 / KbT)))))); elseif (mu <= 9.5e-150) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 6.6e-117) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Ev * Float64(Float64(1.0 / KbT) + Float64(Float64(EAccept / Float64(KbT * Ev)) + Float64(Vef / Float64(KbT * Ev)))))) - Float64(mu / KbT))))); elseif (mu <= 31.5) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_1); elseif (mu <= 2.35e+173) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = NdChar / (1.0 + exp((EDonor / KbT))); t_2 = NdChar / (1.0 + exp((mu / KbT))); tmp = 0.0; if (mu <= -0.37) tmp = t_2 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (mu <= 1.42e-216) tmp = t_0 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))))); elseif (mu <= 9.5e-150) tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 6.6e-117) tmp = t_0 + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT)))); elseif (mu <= 31.5) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1; elseif (mu <= 2.35e+173) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = t_2 + (NaChar / (1.0 + exp((mu / -KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -0.37], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.42e-216], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(mu * N[(N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 9.5e-150], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 6.6e-117], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(Ev * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(EAccept / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision] + N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 31.5], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[mu, 2.35e+173], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -0.37:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.42 \cdot 10^{-216}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + mu \cdot \left(\frac{1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 9.5 \cdot 10^{-150}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 6.6 \cdot 10^{-117}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + \left(\left(1 + Ev \cdot \left(\frac{1}{KbT} + \left(\frac{EAccept}{KbT \cdot Ev} + \frac{Vef}{KbT \cdot Ev}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 31.5:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_1\\
\mathbf{elif}\;mu \leq 2.35 \cdot 10^{+173}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\end{array}
\end{array}
if mu < -0.37Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.1%
Taylor expanded in EAccept around 0 77.4%
if -0.37 < mu < 1.42000000000000004e-216Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.0%
Taylor expanded in mu around -inf 75.7%
if 1.42000000000000004e-216 < mu < 9.50000000000000013e-150Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.1%
Taylor expanded in EDonor around inf 70.1%
if 9.50000000000000013e-150 < mu < 6.6000000000000003e-117Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.2%
Taylor expanded in Ev around inf 64.4%
if 6.6000000000000003e-117 < mu < 31.5Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.8%
Taylor expanded in EDonor around inf 61.3%
if 31.5 < mu < 2.35000000000000007e173Initial program 99.8%
Simplified99.8%
Taylor expanded in mu around inf 75.9%
Taylor expanded in mu around 0 73.4%
if 2.35000000000000007e173 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 90.2%
Taylor expanded in mu around inf 90.2%
associate-*r/90.2%
mul-1-neg90.2%
Simplified90.2%
Final simplification74.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_1 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(if (<= mu -2.8e+219)
t_0
(if (<= mu 8.9e-218)
(-
(/
NaChar
(-
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (/ Vef (* KbT EAccept)))))
(/ mu KbT)))
(/ NdChar (- -1.0 t_1)))
(if (<= mu 1.65e-161)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 9.2e-48)
(+
(/ NdChar (+ 1.0 t_1))
(/
NaChar
(+
1.0
(-
(+
1.0
(*
Ev
(+
(/ 1.0 KbT)
(+ (/ EAccept (* KbT Ev)) (/ Vef (* KbT Ev))))))
(/ mu KbT)))))
(if (<= mu 1.9e+172)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_1 = exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double tmp;
if (mu <= -2.8e+219) {
tmp = t_0;
} else if (mu <= 8.9e-218) {
tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_1));
} else if (mu <= 1.65e-161) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 9.2e-48) {
tmp = (NdChar / (1.0 + t_1)) + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT))));
} else if (mu <= 1.9e+172) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_1 = exp(((edonor + (mu + (vef - ec))) / kbt))
if (mu <= (-2.8d+219)) then
tmp = t_0
else if (mu <= 8.9d-218) then
tmp = (nachar / ((2.0d0 + (eaccept * ((1.0d0 / kbt) + (vef / (kbt * eaccept))))) - (mu / kbt))) - (ndchar / ((-1.0d0) - t_1))
else if (mu <= 1.65d-161) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 9.2d-48) then
tmp = (ndchar / (1.0d0 + t_1)) + (nachar / (1.0d0 + ((1.0d0 + (ev * ((1.0d0 / kbt) + ((eaccept / (kbt * ev)) + (vef / (kbt * ev)))))) - (mu / kbt))))
else if (mu <= 1.9d+172) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_1 = Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double tmp;
if (mu <= -2.8e+219) {
tmp = t_0;
} else if (mu <= 8.9e-218) {
tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_1));
} else if (mu <= 1.65e-161) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 9.2e-48) {
tmp = (NdChar / (1.0 + t_1)) + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT))));
} else if (mu <= 1.9e+172) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_1 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) tmp = 0 if mu <= -2.8e+219: tmp = t_0 elif mu <= 8.9e-218: tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_1)) elif mu <= 1.65e-161: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 9.2e-48: tmp = (NdChar / (1.0 + t_1)) + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT)))) elif mu <= 1.9e+172: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_1 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) tmp = 0.0 if (mu <= -2.8e+219) tmp = t_0; elseif (mu <= 8.9e-218) tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(KbT * EAccept))))) - Float64(mu / KbT))) - Float64(NdChar / Float64(-1.0 - t_1))); elseif (mu <= 1.65e-161) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 9.2e-48) tmp = Float64(Float64(NdChar / Float64(1.0 + t_1)) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Ev * Float64(Float64(1.0 / KbT) + Float64(Float64(EAccept / Float64(KbT * Ev)) + Float64(Vef / Float64(KbT * Ev)))))) - Float64(mu / KbT))))); elseif (mu <= 1.9e+172) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_1 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); tmp = 0.0; if (mu <= -2.8e+219) tmp = t_0; elseif (mu <= 8.9e-218) tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_1)); elseif (mu <= 1.65e-161) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 9.2e-48) tmp = (NdChar / (1.0 + t_1)) + (NaChar / (1.0 + ((1.0 + (Ev * ((1.0 / KbT) + ((EAccept / (KbT * Ev)) + (Vef / (KbT * Ev)))))) - (mu / KbT)))); elseif (mu <= 1.9e+172) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[mu, -2.8e+219], t$95$0, If[LessEqual[mu, 8.9e-218], N[(N[(NaChar / N[(N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.65e-161], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 9.2e-48], N[(N[(NdChar / N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(Ev * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(EAccept / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision] + N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.9e+172], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_1 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
\mathbf{if}\;mu \leq -2.8 \cdot 10^{+219}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 8.9 \cdot 10^{-218}:\\
\;\;\;\;\frac{NaChar}{\left(2 + EAccept \cdot \left(\frac{1}{KbT} + \frac{Vef}{KbT \cdot EAccept}\right)\right) - \frac{mu}{KbT}} - \frac{NdChar}{-1 - t\_1}\\
\mathbf{elif}\;mu \leq 1.65 \cdot 10^{-161}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 9.2 \cdot 10^{-48}:\\
\;\;\;\;\frac{NdChar}{1 + t\_1} + \frac{NaChar}{1 + \left(\left(1 + Ev \cdot \left(\frac{1}{KbT} + \left(\frac{EAccept}{KbT \cdot Ev} + \frac{Vef}{KbT \cdot Ev}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 1.9 \cdot 10^{+172}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -2.80000000000000015e219 or 1.89999999999999985e172 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.4%
Taylor expanded in mu around inf 91.4%
associate-*r/91.4%
mul-1-neg91.4%
Simplified91.4%
if -2.80000000000000015e219 < mu < 8.8999999999999999e-218Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.4%
Taylor expanded in EAccept around inf 71.2%
Taylor expanded in Ev around 0 74.9%
if 8.8999999999999999e-218 < mu < 1.6499999999999999e-161Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.1%
Taylor expanded in EDonor around inf 70.1%
if 1.6499999999999999e-161 < mu < 9.2000000000000003e-48Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.8%
Taylor expanded in Ev around inf 62.8%
if 9.2000000000000003e-48 < mu < 1.89999999999999985e172Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 74.0%
Taylor expanded in mu around 0 70.5%
Final simplification74.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -2.35e+39)
t_2
(if (<= Vef 1.75e-28)
(+ t_1 t_0)
(if (or (<= Vef 2.25e+102) (not (<= Vef 2e+185)))
t_2
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -2.35e+39) {
tmp = t_2;
} else if (Vef <= 1.75e-28) {
tmp = t_1 + t_0;
} else if ((Vef <= 2.25e+102) || !(Vef <= 2e+185)) {
tmp = t_2;
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-2.35d+39)) then
tmp = t_2
else if (vef <= 1.75d-28) then
tmp = t_1 + t_0
else if ((vef <= 2.25d+102) .or. (.not. (vef <= 2d+185))) then
tmp = t_2
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -2.35e+39) {
tmp = t_2;
} else if (Vef <= 1.75e-28) {
tmp = t_1 + t_0;
} else if ((Vef <= 2.25e+102) || !(Vef <= 2e+185)) {
tmp = t_2;
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -2.35e+39: tmp = t_2 elif Vef <= 1.75e-28: tmp = t_1 + t_0 elif (Vef <= 2.25e+102) or not (Vef <= 2e+185): tmp = t_2 else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -2.35e+39) tmp = t_2; elseif (Vef <= 1.75e-28) tmp = Float64(t_1 + t_0); elseif ((Vef <= 2.25e+102) || !(Vef <= 2e+185)) tmp = t_2; else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -2.35e+39) tmp = t_2; elseif (Vef <= 1.75e-28) tmp = t_1 + t_0; elseif ((Vef <= 2.25e+102) || ~((Vef <= 2e+185))) tmp = t_2; else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.35e+39], t$95$2, If[LessEqual[Vef, 1.75e-28], N[(t$95$1 + t$95$0), $MachinePrecision], If[Or[LessEqual[Vef, 2.25e+102], N[Not[LessEqual[Vef, 2e+185]], $MachinePrecision]], t$95$2, N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.35 \cdot 10^{+39}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 1.75 \cdot 10^{-28}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;Vef \leq 2.25 \cdot 10^{+102} \lor \neg \left(Vef \leq 2 \cdot 10^{+185}\right):\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.35e39 or 1.75e-28 < Vef < 2.2500000000000001e102 or 2e185 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 87.8%
if -2.35e39 < Vef < 1.75e-28Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.3%
if 2.2500000000000001e102 < Vef < 2e185Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
Taylor expanded in EAccept around 0 100.0%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1
(-
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
(if (<= NdChar -7.5e-88)
t_1
(if (<= NdChar 5.8e-226)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= NdChar 5.6e-64)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NaChar / (1.0 + exp((EAccept / KbT)))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double tmp;
if (NdChar <= -7.5e-88) {
tmp = t_1;
} else if (NdChar <= 5.8e-226) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (NdChar <= 5.6e-64) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (nachar / (1.0d0 + exp((eaccept / kbt)))) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
if (ndchar <= (-7.5d-88)) then
tmp = t_1
else if (ndchar <= 5.8d-226) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (ndchar <= 5.6d-64) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double tmp;
if (NdChar <= -7.5e-88) {
tmp = t_1;
} else if (NdChar <= 5.8e-226) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (NdChar <= 5.6e-64) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NaChar / (1.0 + math.exp((EAccept / KbT)))) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) tmp = 0 if NdChar <= -7.5e-88: tmp = t_1 elif NdChar <= 5.8e-226: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif NdChar <= 5.6e-64: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) tmp = 0.0 if (NdChar <= -7.5e-88) tmp = t_1; elseif (NdChar <= 5.8e-226) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (NdChar <= 5.6e-64) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NaChar / (1.0 + exp((EAccept / KbT)))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); tmp = 0.0; if (NdChar <= -7.5e-88) tmp = t_1; elseif (NdChar <= 5.8e-226) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (NdChar <= 5.6e-64) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -7.5e-88], t$95$1, If[LessEqual[NdChar, 5.8e-226], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.6e-64], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -7.5 \cdot 10^{-88}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{-226}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 5.6 \cdot 10^{-64}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NdChar < -7.50000000000000041e-88 or 5.60000000000000008e-64 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 83.2%
if -7.50000000000000041e-88 < NdChar < 5.80000000000000003e-226Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 84.6%
if 5.80000000000000003e-226 < NdChar < 5.60000000000000008e-64Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 89.6%
Final simplification84.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= mu -8.4e+77)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= mu 1.25e+187)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double tmp;
if (mu <= -8.4e+77) {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.25e+187) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((mu / -KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
if (mu <= (-8.4d+77)) then
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (mu <= 1.25d+187) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((mu / -kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double tmp;
if (mu <= -8.4e+77) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.25e+187) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) tmp = 0 if mu <= -8.4e+77: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif mu <= 1.25e+187: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((mu / -KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) tmp = 0.0 if (mu <= -8.4e+77) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (mu <= 1.25e+187) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); tmp = 0.0; if (mu <= -8.4e+77) tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (mu <= 1.25e+187) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((mu / -KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -8.4e+77], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.25e+187], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -8.4 \cdot 10^{+77}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.25 \cdot 10^{+187}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\end{array}
\end{array}
if mu < -8.3999999999999995e77Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.1%
Taylor expanded in EAccept around 0 83.1%
if -8.3999999999999995e77 < mu < 1.25e187Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 78.9%
if 1.25e187 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 94.8%
Taylor expanded in mu around inf 94.8%
associate-*r/94.8%
mul-1-neg94.8%
Simplified94.8%
Final simplification80.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))
(t_1 (/ NdChar (+ 1.0 t_0)))
(t_2
(+
t_1
(/
NaChar
(+
1.0
(-
(+
1.0
(+ (/ EAccept KbT) (* Vef (+ (/ 1.0 KbT) (/ Ev (* Vef KbT))))))
(/ mu KbT))))))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -3e+60)
t_3
(if (<= NaChar -1.05e-85)
t_2
(if (<= NaChar 2.5e-257)
(+ t_1 (* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
(if (<= NaChar 0.5)
(-
(/
NaChar
(-
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (/ Vef (* KbT EAccept)))))
(/ mu KbT)))
(/ NdChar (- -1.0 t_0)))
(if (or (<= NaChar 3.1e+67) (not (<= NaChar 8.5e+144)))
t_3
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(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / (1.0 + t_0);
double t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + (Vef * ((1.0 / KbT) + (Ev / (Vef * KbT)))))) - (mu / KbT))));
double t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -3e+60) {
tmp = t_3;
} else if (NaChar <= -1.05e-85) {
tmp = t_2;
} else if (NaChar <= 2.5e-257) {
tmp = t_1 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
} else if ((NaChar <= 3.1e+67) || !(NaChar <= 8.5e+144)) {
tmp = t_3;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = ndchar / (1.0d0 + t_0)
t_2 = t_1 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + (vef * ((1.0d0 / kbt) + (ev / (vef * kbt)))))) - (mu / kbt))))
t_3 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-3d+60)) then
tmp = t_3
else if (nachar <= (-1.05d-85)) then
tmp = t_2
else if (nachar <= 2.5d-257) then
tmp = t_1 + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else if (nachar <= 0.5d0) then
tmp = (nachar / ((2.0d0 + (eaccept * ((1.0d0 / kbt) + (vef / (kbt * eaccept))))) - (mu / kbt))) - (ndchar / ((-1.0d0) - t_0))
else if ((nachar <= 3.1d+67) .or. (.not. (nachar <= 8.5d+144))) then
tmp = t_3
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(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / (1.0 + t_0);
double t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + (Vef * ((1.0 / KbT) + (Ev / (Vef * KbT)))))) - (mu / KbT))));
double t_3 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -3e+60) {
tmp = t_3;
} else if (NaChar <= -1.05e-85) {
tmp = t_2;
} else if (NaChar <= 2.5e-257) {
tmp = t_1 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
} else if ((NaChar <= 3.1e+67) || !(NaChar <= 8.5e+144)) {
tmp = t_3;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = NdChar / (1.0 + t_0) t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + (Vef * ((1.0 / KbT) + (Ev / (Vef * KbT)))))) - (mu / KbT)))) t_3 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -3e+60: tmp = t_3 elif NaChar <= -1.05e-85: tmp = t_2 elif NaChar <= 2.5e-257: tmp = t_1 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) elif NaChar <= 0.5: tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)) elif (NaChar <= 3.1e+67) or not (NaChar <= 8.5e+144): tmp = t_3 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) t_1 = Float64(NdChar / Float64(1.0 + t_0)) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(Ev / Float64(Vef * KbT)))))) - Float64(mu / KbT))))) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -3e+60) tmp = t_3; elseif (NaChar <= -1.05e-85) tmp = t_2; elseif (NaChar <= 2.5e-257) tmp = Float64(t_1 + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); elseif (NaChar <= 0.5) tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(KbT * EAccept))))) - Float64(mu / KbT))) - Float64(NdChar / Float64(-1.0 - t_0))); elseif ((NaChar <= 3.1e+67) || !(NaChar <= 8.5e+144)) tmp = t_3; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = NdChar / (1.0 + t_0); t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + (Vef * ((1.0 / KbT) + (Ev / (Vef * KbT)))))) - (mu / KbT)))); t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -3e+60) tmp = t_3; elseif (NaChar <= -1.05e-85) tmp = t_2; elseif (NaChar <= 2.5e-257) tmp = t_1 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); elseif (NaChar <= 0.5) tmp = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)); elseif ((NaChar <= 3.1e+67) || ~((NaChar <= 8.5e+144))) tmp = t_3; 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Ev / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3e+60], t$95$3, If[LessEqual[NaChar, -1.05e-85], t$95$2, If[LessEqual[NaChar, 2.5e-257], N[(t$95$1 + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], N[(N[(NaChar / N[(N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 3.1e+67], N[Not[LessEqual[NaChar, 8.5e+144]], $MachinePrecision]], t$95$3, t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NdChar}{1 + t\_0}\\
t_2 := t\_1 + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + Vef \cdot \left(\frac{1}{KbT} + \frac{Ev}{Vef \cdot KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -3 \cdot 10^{+60}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq -1.05 \cdot 10^{-85}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 2.5 \cdot 10^{-257}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;\frac{NaChar}{\left(2 + EAccept \cdot \left(\frac{1}{KbT} + \frac{Vef}{KbT \cdot EAccept}\right)\right) - \frac{mu}{KbT}} - \frac{NdChar}{-1 - t\_0}\\
\mathbf{elif}\;NaChar \leq 3.1 \cdot 10^{+67} \lor \neg \left(NaChar \leq 8.5 \cdot 10^{+144}\right):\\
\;\;\;\;t\_3\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -2.9999999999999998e60 or 0.5 < NaChar < 3.09999999999999996e67 or 8.4999999999999998e144 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 83.6%
Taylor expanded in mu around 0 74.6%
if -2.9999999999999998e60 < NaChar < -1.05e-85 or 3.09999999999999996e67 < NaChar < 8.4999999999999998e144Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 60.5%
Taylor expanded in Vef around inf 66.1%
if -1.05e-85 < NaChar < 2.49999999999999994e-257Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.4%
Taylor expanded in KbT around 0 79.0%
associate-/l*80.5%
associate--l+80.5%
associate--l+80.5%
Simplified80.5%
if 2.49999999999999994e-257 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.5%
Taylor expanded in EAccept around inf 78.4%
Taylor expanded in Ev around 0 73.4%
Final simplification74.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))
(t_1 (/ NdChar (+ 1.0 t_0)))
(t_2
(+
t_1
(/
NaChar
(+
1.0
(-
(+
1.0
(- (/ EAccept KbT) (* Vef (- (/ -1.0 KbT) (/ Ev (* Vef KbT))))))
(/ mu KbT))))))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -6.5e+57)
t_3
(if (<= NaChar -4.8e-85)
t_2
(if (<= NaChar 1.5e-258)
(-
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu)))))
(/ NdChar (- -1.0 t_0)))
(if (<= NaChar 0.5)
(+
t_1
(/
NaChar
(+
1.0
(*
mu
(+
(/ (+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) mu)
(/ -1.0 KbT))))))
(if (or (<= NaChar 2.9e+67) (not (<= NaChar 8.5e+144)))
t_3
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(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / (1.0 + t_0);
double t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) - (Vef * ((-1.0 / KbT) - (Ev / (Vef * KbT)))))) - (mu / KbT))));
double t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -6.5e+57) {
tmp = t_3;
} else if (NaChar <= -4.8e-85) {
tmp = t_2;
} else if (NaChar <= 1.5e-258) {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - t_0));
} else if (NaChar <= 0.5) {
tmp = t_1 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)))));
} else if ((NaChar <= 2.9e+67) || !(NaChar <= 8.5e+144)) {
tmp = t_3;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = ndchar / (1.0d0 + t_0)
t_2 = t_1 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) - (vef * (((-1.0d0) / kbt) - (ev / (vef * kbt)))))) - (mu / kbt))))
t_3 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-6.5d+57)) then
tmp = t_3
else if (nachar <= (-4.8d-85)) then
tmp = t_2
else if (nachar <= 1.5d-258) then
tmp = (kbt * (nachar / (eaccept + (ev + (vef - mu))))) - (ndchar / ((-1.0d0) - t_0))
else if (nachar <= 0.5d0) then
tmp = t_1 + (nachar / (1.0d0 + (mu * (((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) / mu) + ((-1.0d0) / kbt)))))
else if ((nachar <= 2.9d+67) .or. (.not. (nachar <= 8.5d+144))) then
tmp = t_3
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(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / (1.0 + t_0);
double t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) - (Vef * ((-1.0 / KbT) - (Ev / (Vef * KbT)))))) - (mu / KbT))));
double t_3 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -6.5e+57) {
tmp = t_3;
} else if (NaChar <= -4.8e-85) {
tmp = t_2;
} else if (NaChar <= 1.5e-258) {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - t_0));
} else if (NaChar <= 0.5) {
tmp = t_1 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)))));
} else if ((NaChar <= 2.9e+67) || !(NaChar <= 8.5e+144)) {
tmp = t_3;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = NdChar / (1.0 + t_0) t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) - (Vef * ((-1.0 / KbT) - (Ev / (Vef * KbT)))))) - (mu / KbT)))) t_3 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -6.5e+57: tmp = t_3 elif NaChar <= -4.8e-85: tmp = t_2 elif NaChar <= 1.5e-258: tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - t_0)) elif NaChar <= 0.5: tmp = t_1 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))))) elif (NaChar <= 2.9e+67) or not (NaChar <= 8.5e+144): tmp = t_3 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) t_1 = Float64(NdChar / Float64(1.0 + t_0)) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) - Float64(Vef * Float64(Float64(-1.0 / KbT) - Float64(Ev / Float64(Vef * KbT)))))) - Float64(mu / KbT))))) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -6.5e+57) tmp = t_3; elseif (NaChar <= -4.8e-85) tmp = t_2; elseif (NaChar <= 1.5e-258) tmp = Float64(Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu))))) - Float64(NdChar / Float64(-1.0 - t_0))); elseif (NaChar <= 0.5) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(mu * Float64(Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) / mu) + Float64(-1.0 / KbT)))))); elseif ((NaChar <= 2.9e+67) || !(NaChar <= 8.5e+144)) tmp = t_3; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = NdChar / (1.0 + t_0); t_2 = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) - (Vef * ((-1.0 / KbT) - (Ev / (Vef * KbT)))))) - (mu / KbT)))); t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -6.5e+57) tmp = t_3; elseif (NaChar <= -4.8e-85) tmp = t_2; elseif (NaChar <= 1.5e-258) tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - t_0)); elseif (NaChar <= 0.5) tmp = t_1 + (NaChar / (1.0 + (mu * (((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))))); elseif ((NaChar <= 2.9e+67) || ~((NaChar <= 8.5e+144))) tmp = t_3; 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] - N[(Vef * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Ev / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.5e+57], t$95$3, If[LessEqual[NaChar, -4.8e-85], t$95$2, If[LessEqual[NaChar, 1.5e-258], N[(N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(mu * N[(N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 2.9e+67], N[Not[LessEqual[NaChar, 8.5e+144]], $MachinePrecision]], t$95$3, t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NdChar}{1 + t\_0}\\
t_2 := t\_1 + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} - Vef \cdot \left(\frac{-1}{KbT} - \frac{Ev}{Vef \cdot KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -6.5 \cdot 10^{+57}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq -4.8 \cdot 10^{-85}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 1.5 \cdot 10^{-258}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)} - \frac{NdChar}{-1 - t\_0}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + mu \cdot \left(\frac{1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 2.9 \cdot 10^{+67} \lor \neg \left(NaChar \leq 8.5 \cdot 10^{+144}\right):\\
\;\;\;\;t\_3\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -6.4999999999999997e57 or 0.5 < NaChar < 2.90000000000000023e67 or 8.4999999999999998e144 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 83.6%
Taylor expanded in mu around 0 74.6%
if -6.4999999999999997e57 < NaChar < -4.8000000000000001e-85 or 2.90000000000000023e67 < NaChar < 8.4999999999999998e144Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 60.5%
Taylor expanded in Vef around inf 66.1%
if -4.8000000000000001e-85 < NaChar < 1.5000000000000001e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.4%
Taylor expanded in KbT around 0 79.0%
associate-/l*80.5%
associate--l+80.5%
associate--l+80.5%
Simplified80.5%
if 1.5000000000000001e-258 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.5%
Taylor expanded in mu around -inf 80.5%
Final simplification75.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))
(t_1
(-
(/
NaChar
(-
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (/ Vef (* KbT EAccept)))))
(/ mu KbT)))
(/ NdChar (- -1.0 t_0))))
(t_2 (/ NdChar (+ 1.0 t_0)))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -2.3e+60)
t_3
(if (<= NaChar -1.75e-87)
t_1
(if (<= NaChar 2e-258)
(+ t_2 (* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
(if (<= NaChar 0.5)
t_1
(if (<= NaChar 1.7e+69)
t_3
(if (<= NaChar 1.25e+145)
(+
t_2
(/
1.0
(/
(+
2.0
(+
(/ EAccept KbT)
(+ (/ Ev KbT) (- (/ Vef KbT) (/ mu KbT)))))
NaChar)))
(if (<= NaChar 1.9e+163)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
t_3)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = NdChar / (1.0 + t_0);
double t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -2.3e+60) {
tmp = t_3;
} else if (NaChar <= -1.75e-87) {
tmp = t_1;
} else if (NaChar <= 2e-258) {
tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 1.7e+69) {
tmp = t_3;
} else if (NaChar <= 1.25e+145) {
tmp = t_2 + (1.0 / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef / KbT) - (mu / KbT))))) / NaChar));
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = (nachar / ((2.0d0 + (eaccept * ((1.0d0 / kbt) + (vef / (kbt * eaccept))))) - (mu / kbt))) - (ndchar / ((-1.0d0) - t_0))
t_2 = ndchar / (1.0d0 + t_0)
t_3 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-2.3d+60)) then
tmp = t_3
else if (nachar <= (-1.75d-87)) then
tmp = t_1
else if (nachar <= 2d-258) then
tmp = t_2 + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else if (nachar <= 0.5d0) then
tmp = t_1
else if (nachar <= 1.7d+69) then
tmp = t_3
else if (nachar <= 1.25d+145) then
tmp = t_2 + (1.0d0 / ((2.0d0 + ((eaccept / kbt) + ((ev / kbt) + ((vef / kbt) - (mu / kbt))))) / nachar))
else if (nachar <= 1.9d+163) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = NdChar / (1.0 + t_0);
double t_3 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -2.3e+60) {
tmp = t_3;
} else if (NaChar <= -1.75e-87) {
tmp = t_1;
} else if (NaChar <= 2e-258) {
tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 1.7e+69) {
tmp = t_3;
} else if (NaChar <= 1.25e+145) {
tmp = t_2 + (1.0 / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef / KbT) - (mu / KbT))))) / NaChar));
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)) t_2 = NdChar / (1.0 + t_0) t_3 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -2.3e+60: tmp = t_3 elif NaChar <= -1.75e-87: tmp = t_1 elif NaChar <= 2e-258: tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) elif NaChar <= 0.5: tmp = t_1 elif NaChar <= 1.7e+69: tmp = t_3 elif NaChar <= 1.25e+145: tmp = t_2 + (1.0 / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef / KbT) - (mu / KbT))))) / NaChar)) elif NaChar <= 1.9e+163: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) t_1 = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(KbT * EAccept))))) - Float64(mu / KbT))) - Float64(NdChar / Float64(-1.0 - t_0))) t_2 = Float64(NdChar / Float64(1.0 + t_0)) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -2.3e+60) tmp = t_3; elseif (NaChar <= -1.75e-87) tmp = t_1; elseif (NaChar <= 2e-258) tmp = Float64(t_2 + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 1.7e+69) tmp = t_3; elseif (NaChar <= 1.25e+145) tmp = Float64(t_2 + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Float64(Vef / KbT) - Float64(mu / KbT))))) / NaChar))); elseif (NaChar <= 1.9e+163) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)); t_2 = NdChar / (1.0 + t_0); t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -2.3e+60) tmp = t_3; elseif (NaChar <= -1.75e-87) tmp = t_1; elseif (NaChar <= 2e-258) tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 1.7e+69) tmp = t_3; elseif (NaChar <= 1.25e+145) tmp = t_2 + (1.0 / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef / KbT) - (mu / KbT))))) / NaChar)); elseif (NaChar <= 1.9e+163) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.3e+60], t$95$3, If[LessEqual[NaChar, -1.75e-87], t$95$1, If[LessEqual[NaChar, 2e-258], N[(t$95$2 + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], t$95$1, If[LessEqual[NaChar, 1.7e+69], t$95$3, If[LessEqual[NaChar, 1.25e+145], N[(t$95$2 + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.9e+163], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NaChar}{\left(2 + EAccept \cdot \left(\frac{1}{KbT} + \frac{Vef}{KbT \cdot EAccept}\right)\right) - \frac{mu}{KbT}} - \frac{NdChar}{-1 - t\_0}\\
t_2 := \frac{NdChar}{1 + t\_0}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -2.3 \cdot 10^{+60}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq -1.75 \cdot 10^{-87}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2 \cdot 10^{-258}:\\
\;\;\;\;t\_2 + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.7 \cdot 10^{+69}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq 1.25 \cdot 10^{+145}:\\
\;\;\;\;t\_2 + \frac{1}{\frac{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \left(\frac{Vef}{KbT} - \frac{mu}{KbT}\right)\right)\right)}{NaChar}}\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{+163}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if NaChar < -2.30000000000000017e60 or 0.5 < NaChar < 1.69999999999999993e69 or 1.90000000000000004e163 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 84.7%
Taylor expanded in mu around 0 76.0%
if -2.30000000000000017e60 < NaChar < -1.75000000000000006e-87 or 1.99999999999999991e-258 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.5%
Taylor expanded in EAccept around inf 71.9%
Taylor expanded in Ev around 0 71.4%
if -1.75000000000000006e-87 < NaChar < 1.99999999999999991e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.4%
Taylor expanded in KbT around 0 79.0%
associate-/l*80.5%
associate--l+80.5%
associate--l+80.5%
Simplified80.5%
if 1.69999999999999993e69 < NaChar < 1.24999999999999992e145Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 70.6%
clear-num70.6%
inv-pow70.6%
associate--l+70.6%
Applied egg-rr70.6%
unpow-170.6%
associate-+r+70.6%
metadata-eval70.6%
associate--l+70.6%
associate--l+70.6%
Simplified70.6%
if 1.24999999999999992e145 < NaChar < 1.90000000000000004e163Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 59.4%
Taylor expanded in EDonor around inf 56.4%
Taylor expanded in EDonor around 0 56.4%
Final simplification75.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))
(t_1
(-
(/
NaChar
(-
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (/ Vef (* KbT EAccept)))))
(/ mu KbT)))
(/ NdChar (- -1.0 t_0))))
(t_2 (/ NdChar (+ 1.0 t_0)))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -1.55e+59)
t_3
(if (<= NaChar -4.4e-84)
t_1
(if (<= NaChar 5e-258)
(+ t_2 (* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
(if (<= NaChar 0.5)
t_1
(if (<= NaChar 2.6e+69)
t_3
(if (<= NaChar 1.6e+146)
(+
t_2
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT)))))
(if (<= NaChar 1.9e+163)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
t_3)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = NdChar / (1.0 + t_0);
double t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -1.55e+59) {
tmp = t_3;
} else if (NaChar <= -4.4e-84) {
tmp = t_1;
} else if (NaChar <= 5e-258) {
tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 2.6e+69) {
tmp = t_3;
} else if (NaChar <= 1.6e+146) {
tmp = t_2 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))));
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = (nachar / ((2.0d0 + (eaccept * ((1.0d0 / kbt) + (vef / (kbt * eaccept))))) - (mu / kbt))) - (ndchar / ((-1.0d0) - t_0))
t_2 = ndchar / (1.0d0 + t_0)
t_3 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-1.55d+59)) then
tmp = t_3
else if (nachar <= (-4.4d-84)) then
tmp = t_1
else if (nachar <= 5d-258) then
tmp = t_2 + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else if (nachar <= 0.5d0) then
tmp = t_1
else if (nachar <= 2.6d+69) then
tmp = t_3
else if (nachar <= 1.6d+146) then
tmp = t_2 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt))))
else if (nachar <= 1.9d+163) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = NdChar / (1.0 + t_0);
double t_3 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -1.55e+59) {
tmp = t_3;
} else if (NaChar <= -4.4e-84) {
tmp = t_1;
} else if (NaChar <= 5e-258) {
tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 2.6e+69) {
tmp = t_3;
} else if (NaChar <= 1.6e+146) {
tmp = t_2 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))));
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)) t_2 = NdChar / (1.0 + t_0) t_3 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -1.55e+59: tmp = t_3 elif NaChar <= -4.4e-84: tmp = t_1 elif NaChar <= 5e-258: tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) elif NaChar <= 0.5: tmp = t_1 elif NaChar <= 2.6e+69: tmp = t_3 elif NaChar <= 1.6e+146: tmp = t_2 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) elif NaChar <= 1.9e+163: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) t_1 = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(KbT * EAccept))))) - Float64(mu / KbT))) - Float64(NdChar / Float64(-1.0 - t_0))) t_2 = Float64(NdChar / Float64(1.0 + t_0)) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -1.55e+59) tmp = t_3; elseif (NaChar <= -4.4e-84) tmp = t_1; elseif (NaChar <= 5e-258) tmp = Float64(t_2 + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 2.6e+69) tmp = t_3; elseif (NaChar <= 1.6e+146) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))))); elseif (NaChar <= 1.9e+163) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)); t_2 = NdChar / (1.0 + t_0); t_3 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -1.55e+59) tmp = t_3; elseif (NaChar <= -4.4e-84) tmp = t_1; elseif (NaChar <= 5e-258) tmp = t_2 + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 2.6e+69) tmp = t_3; elseif (NaChar <= 1.6e+146) tmp = t_2 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))); elseif (NaChar <= 1.9e+163) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.55e+59], t$95$3, If[LessEqual[NaChar, -4.4e-84], t$95$1, If[LessEqual[NaChar, 5e-258], N[(t$95$2 + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], t$95$1, If[LessEqual[NaChar, 2.6e+69], t$95$3, If[LessEqual[NaChar, 1.6e+146], N[(t$95$2 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.9e+163], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NaChar}{\left(2 + EAccept \cdot \left(\frac{1}{KbT} + \frac{Vef}{KbT \cdot EAccept}\right)\right) - \frac{mu}{KbT}} - \frac{NdChar}{-1 - t\_0}\\
t_2 := \frac{NdChar}{1 + t\_0}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -1.55 \cdot 10^{+59}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq -4.4 \cdot 10^{-84}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 5 \cdot 10^{-258}:\\
\;\;\;\;t\_2 + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.6 \cdot 10^{+69}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;NaChar \leq 1.6 \cdot 10^{+146}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{+163}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if NaChar < -1.55000000000000007e59 or 0.5 < NaChar < 2.6000000000000002e69 or 1.90000000000000004e163 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 84.7%
Taylor expanded in mu around 0 76.0%
if -1.55000000000000007e59 < NaChar < -4.3999999999999998e-84 or 4.9999999999999999e-258 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.5%
Taylor expanded in EAccept around inf 71.9%
Taylor expanded in Ev around 0 71.4%
if -4.3999999999999998e-84 < NaChar < 4.9999999999999999e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.4%
Taylor expanded in KbT around 0 79.0%
associate-/l*80.5%
associate--l+80.5%
associate--l+80.5%
Simplified80.5%
if 2.6000000000000002e69 < NaChar < 1.6e146Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 70.6%
if 1.6e146 < NaChar < 1.90000000000000004e163Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 59.4%
Taylor expanded in EDonor around inf 56.4%
Taylor expanded in EDonor around 0 56.4%
Final simplification75.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))
(t_1
(-
(/
NaChar
(-
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (/ Vef (* KbT EAccept)))))
(/ mu KbT)))
(/ NdChar (- -1.0 t_0))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -5.6e+59)
t_2
(if (<= NaChar -2.6e-85)
t_1
(if (<= NaChar 1e-257)
(+
(/ NdChar (+ 1.0 t_0))
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
(if (<= NaChar 0.5)
t_1
(if (<= NaChar 2.6e+69)
t_2
(if (<= NaChar 1.15e+146)
t_1
(if (<= NaChar 1.9e+163)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
t_2)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -5.6e+59) {
tmp = t_2;
} else if (NaChar <= -2.6e-85) {
tmp = t_1;
} else if (NaChar <= 1e-257) {
tmp = (NdChar / (1.0 + t_0)) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 2.6e+69) {
tmp = t_2;
} else if (NaChar <= 1.15e+146) {
tmp = t_1;
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = (nachar / ((2.0d0 + (eaccept * ((1.0d0 / kbt) + (vef / (kbt * eaccept))))) - (mu / kbt))) - (ndchar / ((-1.0d0) - t_0))
t_2 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-5.6d+59)) then
tmp = t_2
else if (nachar <= (-2.6d-85)) then
tmp = t_1
else if (nachar <= 1d-257) then
tmp = (ndchar / (1.0d0 + t_0)) + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else if (nachar <= 0.5d0) then
tmp = t_1
else if (nachar <= 2.6d+69) then
tmp = t_2
else if (nachar <= 1.15d+146) then
tmp = t_1
else if (nachar <= 1.9d+163) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0));
double t_2 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -5.6e+59) {
tmp = t_2;
} else if (NaChar <= -2.6e-85) {
tmp = t_1;
} else if (NaChar <= 1e-257) {
tmp = (NdChar / (1.0 + t_0)) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else if (NaChar <= 0.5) {
tmp = t_1;
} else if (NaChar <= 2.6e+69) {
tmp = t_2;
} else if (NaChar <= 1.15e+146) {
tmp = t_1;
} else if (NaChar <= 1.9e+163) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)) t_2 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -5.6e+59: tmp = t_2 elif NaChar <= -2.6e-85: tmp = t_1 elif NaChar <= 1e-257: tmp = (NdChar / (1.0 + t_0)) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) elif NaChar <= 0.5: tmp = t_1 elif NaChar <= 2.6e+69: tmp = t_2 elif NaChar <= 1.15e+146: tmp = t_1 elif NaChar <= 1.9e+163: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) t_1 = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(KbT * EAccept))))) - Float64(mu / KbT))) - Float64(NdChar / Float64(-1.0 - t_0))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -5.6e+59) tmp = t_2; elseif (NaChar <= -2.6e-85) tmp = t_1; elseif (NaChar <= 1e-257) tmp = Float64(Float64(NdChar / Float64(1.0 + t_0)) + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 2.6e+69) tmp = t_2; elseif (NaChar <= 1.15e+146) tmp = t_1; elseif (NaChar <= 1.9e+163) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = (NaChar / ((2.0 + (EAccept * ((1.0 / KbT) + (Vef / (KbT * EAccept))))) - (mu / KbT))) - (NdChar / (-1.0 - t_0)); t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -5.6e+59) tmp = t_2; elseif (NaChar <= -2.6e-85) tmp = t_1; elseif (NaChar <= 1e-257) tmp = (NdChar / (1.0 + t_0)) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); elseif (NaChar <= 0.5) tmp = t_1; elseif (NaChar <= 2.6e+69) tmp = t_2; elseif (NaChar <= 1.15e+146) tmp = t_1; elseif (NaChar <= 1.9e+163) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.6e+59], t$95$2, If[LessEqual[NaChar, -2.6e-85], t$95$1, If[LessEqual[NaChar, 1e-257], N[(N[(NdChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], t$95$1, If[LessEqual[NaChar, 2.6e+69], t$95$2, If[LessEqual[NaChar, 1.15e+146], t$95$1, If[LessEqual[NaChar, 1.9e+163], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NaChar}{\left(2 + EAccept \cdot \left(\frac{1}{KbT} + \frac{Vef}{KbT \cdot EAccept}\right)\right) - \frac{mu}{KbT}} - \frac{NdChar}{-1 - t\_0}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -5.6 \cdot 10^{+59}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -2.6 \cdot 10^{-85}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 10^{-257}:\\
\;\;\;\;\frac{NdChar}{1 + t\_0} + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.6 \cdot 10^{+69}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 1.15 \cdot 10^{+146}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{+163}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -5.5999999999999996e59 or 0.5 < NaChar < 2.6000000000000002e69 or 1.90000000000000004e163 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 84.7%
Taylor expanded in mu around 0 76.0%
if -5.5999999999999996e59 < NaChar < -2.60000000000000011e-85 or 9.9999999999999998e-258 < NaChar < 0.5 or 2.6000000000000002e69 < NaChar < 1.15e146Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.9%
Taylor expanded in EAccept around inf 71.7%
Taylor expanded in Ev around 0 70.2%
if -2.60000000000000011e-85 < NaChar < 9.9999999999999998e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.4%
Taylor expanded in KbT around 0 79.0%
associate-/l*80.5%
associate--l+80.5%
associate--l+80.5%
Simplified80.5%
if 1.15e146 < NaChar < 1.90000000000000004e163Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 59.4%
Taylor expanded in EDonor around inf 56.4%
Taylor expanded in EDonor around 0 56.4%
Final simplification74.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NaChar -5e+60)
t_1
(if (<= NaChar -1.15e+19)
(-
(/ NaChar (- (+ 2.0 (+ (/ EAccept KbT) (/ Vef KbT))) (/ mu KbT)))
t_0)
(if (or (<= NaChar -2.9e-27) (not (<= NaChar 0.5)))
t_1
(- (* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))) t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -5e+60) {
tmp = t_1;
} else if (NaChar <= -1.15e+19) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + (Vef / KbT))) - (mu / KbT))) - t_0;
} else if ((NaChar <= -2.9e-27) || !(NaChar <= 0.5)) {
tmp = t_1;
} else {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - 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 = ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (nachar <= (-5d+60)) then
tmp = t_1
else if (nachar <= (-1.15d+19)) then
tmp = (nachar / ((2.0d0 + ((eaccept / kbt) + (vef / kbt))) - (mu / kbt))) - t_0
else if ((nachar <= (-2.9d-27)) .or. (.not. (nachar <= 0.5d0))) then
tmp = t_1
else
tmp = (kbt * (nachar / (eaccept + (ev + (vef - mu))))) - t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NaChar <= -5e+60) {
tmp = t_1;
} else if (NaChar <= -1.15e+19) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + (Vef / KbT))) - (mu / KbT))) - t_0;
} else if ((NaChar <= -2.9e-27) || !(NaChar <= 0.5)) {
tmp = t_1;
} else {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NaChar <= -5e+60: tmp = t_1 elif NaChar <= -1.15e+19: tmp = (NaChar / ((2.0 + ((EAccept / KbT) + (Vef / KbT))) - (mu / KbT))) - t_0 elif (NaChar <= -2.9e-27) or not (NaChar <= 0.5): tmp = t_1 else: tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NaChar <= -5e+60) tmp = t_1; elseif (NaChar <= -1.15e+19) tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT))) - t_0); elseif ((NaChar <= -2.9e-27) || !(NaChar <= 0.5)) tmp = t_1; else tmp = Float64(Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu))))) - t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NaChar <= -5e+60) tmp = t_1; elseif (NaChar <= -1.15e+19) tmp = (NaChar / ((2.0 + ((EAccept / KbT) + (Vef / KbT))) - (mu / KbT))) - t_0; elseif ((NaChar <= -2.9e-27) || ~((NaChar <= 0.5))) tmp = t_1; else tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5e+60], t$95$1, If[LessEqual[NaChar, -1.15e+19], N[(N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[Or[LessEqual[NaChar, -2.9e-27], N[Not[LessEqual[NaChar, 0.5]], $MachinePrecision]], t$95$1, N[(N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -5 \cdot 10^{+60}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.15 \cdot 10^{+19}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}} - t\_0\\
\mathbf{elif}\;NaChar \leq -2.9 \cdot 10^{-27} \lor \neg \left(NaChar \leq 0.5\right):\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)} - t\_0\\
\end{array}
\end{array}
if NaChar < -4.99999999999999975e60 or -1.15e19 < NaChar < -2.90000000000000004e-27 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 78.1%
Taylor expanded in mu around 0 68.7%
if -4.99999999999999975e60 < NaChar < -1.15e19Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.1%
Taylor expanded in Ev around 0 82.2%
if -2.90000000000000004e-27 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.9%
Taylor expanded in KbT around 0 77.4%
associate-/l*79.0%
associate--l+79.0%
associate--l+79.0%
Simplified79.0%
Final simplification74.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu)))))))
(t_1
(-
(* NaChar 0.5)
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_2
(+
(* NdChar 0.5)
(/
1.0
(/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))))
(if (<= NaChar -3.1e+55)
t_2
(if (<= NaChar -5.2e-233)
t_1
(if (<= NaChar -3.5e-299)
t_0
(if (<= NaChar 1.3e-68) t_1 (if (<= NaChar 0.5) t_0 t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
double t_1 = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -3.1e+55) {
tmp = t_2;
} else if (NaChar <= -5.2e-233) {
tmp = t_1;
} else if (NaChar <= -3.5e-299) {
tmp = t_0;
} else if (NaChar <= 1.3e-68) {
tmp = t_1;
} else if (NaChar <= 0.5) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((vef / kbt)))) + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
t_1 = (nachar * 0.5d0) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
t_2 = (ndchar * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
if (nachar <= (-3.1d+55)) then
tmp = t_2
else if (nachar <= (-5.2d-233)) then
tmp = t_1
else if (nachar <= (-3.5d-299)) then
tmp = t_0
else if (nachar <= 1.3d-68) then
tmp = t_1
else if (nachar <= 0.5d0) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
double t_1 = (NaChar * 0.5) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -3.1e+55) {
tmp = t_2;
} else if (NaChar <= -5.2e-233) {
tmp = t_1;
} else if (NaChar <= -3.5e-299) {
tmp = t_0;
} else if (NaChar <= 1.3e-68) {
tmp = t_1;
} else if (NaChar <= 0.5) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) t_1 = (NaChar * 0.5) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) tmp = 0 if NaChar <= -3.1e+55: tmp = t_2 elif NaChar <= -5.2e-233: tmp = t_1 elif NaChar <= -3.5e-299: tmp = t_0 elif NaChar <= 1.3e-68: tmp = t_1 elif NaChar <= 0.5: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))) t_1 = Float64(Float64(NaChar * 0.5) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_2 = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))) tmp = 0.0 if (NaChar <= -3.1e+55) tmp = t_2; elseif (NaChar <= -5.2e-233) tmp = t_1; elseif (NaChar <= -3.5e-299) tmp = t_0; elseif (NaChar <= 1.3e-68) tmp = t_1; elseif (NaChar <= 0.5) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); t_1 = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); tmp = 0.0; if (NaChar <= -3.1e+55) tmp = t_2; elseif (NaChar <= -5.2e-233) tmp = t_1; elseif (NaChar <= -3.5e-299) tmp = t_0; elseif (NaChar <= 1.3e-68) tmp = t_1; elseif (NaChar <= 0.5) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar * 0.5), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3.1e+55], t$95$2, If[LessEqual[NaChar, -5.2e-233], t$95$1, If[LessEqual[NaChar, -3.5e-299], t$95$0, If[LessEqual[NaChar, 1.3e-68], t$95$1, If[LessEqual[NaChar, 0.5], t$95$0, t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
t_1 := NaChar \cdot 0.5 - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;NaChar \leq -3.1 \cdot 10^{+55}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -5.2 \cdot 10^{-233}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -3.5 \cdot 10^{-299}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{-68}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -3.09999999999999994e55 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 67.1%
*-commutative10.0%
Simplified67.1%
if -3.09999999999999994e55 < NaChar < -5.1999999999999996e-233 or -3.49999999999999991e-299 < NaChar < 1.2999999999999999e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.8%
if -5.1999999999999996e-233 < NaChar < -3.49999999999999991e-299 or 1.2999999999999999e-68 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.9%
Taylor expanded in KbT around 0 82.5%
associate-/l*87.3%
associate--l+87.3%
associate--l+87.3%
Simplified87.3%
Taylor expanded in Vef around inf 73.4%
Final simplification65.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (- (* NaChar 0.5) t_0))
(t_2
(+
(* NdChar 0.5)
(/
1.0
(/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))))
(if (<= NaChar -2e+56)
t_2
(if (<= NaChar -3.8e-196)
t_1
(if (<= NaChar 2.9e-280)
(- (* KbT (/ NaChar EAccept)) t_0)
(if (<= NaChar 1.65e-68)
t_1
(if (<= NaChar 0.5)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar * 0.5) - t_0;
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -2e+56) {
tmp = t_2;
} else if (NaChar <= -3.8e-196) {
tmp = t_1;
} else if (NaChar <= 2.9e-280) {
tmp = (KbT * (NaChar / EAccept)) - t_0;
} else if (NaChar <= 1.65e-68) {
tmp = t_1;
} else if (NaChar <= 0.5) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar * 0.5d0) - t_0
t_2 = (ndchar * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
if (nachar <= (-2d+56)) then
tmp = t_2
else if (nachar <= (-3.8d-196)) then
tmp = t_1
else if (nachar <= 2.9d-280) then
tmp = (kbt * (nachar / eaccept)) - t_0
else if (nachar <= 1.65d-68) then
tmp = t_1
else if (nachar <= 0.5d0) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar * 0.5) - t_0;
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -2e+56) {
tmp = t_2;
} else if (NaChar <= -3.8e-196) {
tmp = t_1;
} else if (NaChar <= 2.9e-280) {
tmp = (KbT * (NaChar / EAccept)) - t_0;
} else if (NaChar <= 1.65e-68) {
tmp = t_1;
} else if (NaChar <= 0.5) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar * 0.5) - t_0 t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) tmp = 0 if NaChar <= -2e+56: tmp = t_2 elif NaChar <= -3.8e-196: tmp = t_1 elif NaChar <= 2.9e-280: tmp = (KbT * (NaChar / EAccept)) - t_0 elif NaChar <= 1.65e-68: tmp = t_1 elif NaChar <= 0.5: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar * 0.5) - t_0) t_2 = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))) tmp = 0.0 if (NaChar <= -2e+56) tmp = t_2; elseif (NaChar <= -3.8e-196) tmp = t_1; elseif (NaChar <= 2.9e-280) tmp = Float64(Float64(KbT * Float64(NaChar / EAccept)) - t_0); elseif (NaChar <= 1.65e-68) tmp = t_1; elseif (NaChar <= 0.5) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar * 0.5) - t_0; t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); tmp = 0.0; if (NaChar <= -2e+56) tmp = t_2; elseif (NaChar <= -3.8e-196) tmp = t_1; elseif (NaChar <= 2.9e-280) tmp = (KbT * (NaChar / EAccept)) - t_0; elseif (NaChar <= 1.65e-68) tmp = t_1; elseif (NaChar <= 0.5) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar * 0.5), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2e+56], t$95$2, If[LessEqual[NaChar, -3.8e-196], t$95$1, If[LessEqual[NaChar, 2.9e-280], N[(N[(KbT * N[(NaChar / EAccept), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[NaChar, 1.65e-68], t$95$1, If[LessEqual[NaChar, 0.5], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := NaChar \cdot 0.5 - t\_0\\
t_2 := NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;NaChar \leq -2 \cdot 10^{+56}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -3.8 \cdot 10^{-196}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.9 \cdot 10^{-280}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{EAccept} - t\_0\\
\mathbf{elif}\;NaChar \leq 1.65 \cdot 10^{-68}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -2.00000000000000018e56 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 67.1%
*-commutative10.0%
Simplified67.1%
if -2.00000000000000018e56 < NaChar < -3.8000000000000001e-196 or 2.9e-280 < NaChar < 1.6499999999999999e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.3%
if -3.8000000000000001e-196 < NaChar < 2.9e-280Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.7%
Taylor expanded in KbT around 0 82.8%
associate-/l*85.2%
associate--l+85.2%
associate--l+85.2%
Simplified85.2%
Taylor expanded in EAccept around inf 70.1%
associate-/l*66.8%
Simplified66.8%
if 1.6499999999999999e-68 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.2%
Taylor expanded in KbT around 0 79.2%
associate-/l*84.5%
associate--l+84.5%
associate--l+84.5%
Simplified84.5%
Taylor expanded in Vef around inf 69.3%
Final simplification65.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (- (* NaChar 0.5) t_0))
(t_2
(+
(* NdChar 0.5)
(/
1.0
(/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))))
(if (<= NaChar -1.1e+56)
t_2
(if (<= NaChar -4.1e-196)
t_1
(if (<= NaChar 6.8e-137)
(- (* KbT (/ NaChar Vef)) t_0)
(if (<= NaChar 2.2e-69)
t_1
(if (<= NaChar 5.5e-6)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar * 0.5) - t_0;
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -1.1e+56) {
tmp = t_2;
} else if (NaChar <= -4.1e-196) {
tmp = t_1;
} else if (NaChar <= 6.8e-137) {
tmp = (KbT * (NaChar / Vef)) - t_0;
} else if (NaChar <= 2.2e-69) {
tmp = t_1;
} else if (NaChar <= 5.5e-6) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar * 0.5d0) - t_0
t_2 = (ndchar * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
if (nachar <= (-1.1d+56)) then
tmp = t_2
else if (nachar <= (-4.1d-196)) then
tmp = t_1
else if (nachar <= 6.8d-137) then
tmp = (kbt * (nachar / vef)) - t_0
else if (nachar <= 2.2d-69) then
tmp = t_1
else if (nachar <= 5.5d-6) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar * 0.5) - t_0;
double t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -1.1e+56) {
tmp = t_2;
} else if (NaChar <= -4.1e-196) {
tmp = t_1;
} else if (NaChar <= 6.8e-137) {
tmp = (KbT * (NaChar / Vef)) - t_0;
} else if (NaChar <= 2.2e-69) {
tmp = t_1;
} else if (NaChar <= 5.5e-6) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar * 0.5) - t_0 t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) tmp = 0 if NaChar <= -1.1e+56: tmp = t_2 elif NaChar <= -4.1e-196: tmp = t_1 elif NaChar <= 6.8e-137: tmp = (KbT * (NaChar / Vef)) - t_0 elif NaChar <= 2.2e-69: tmp = t_1 elif NaChar <= 5.5e-6: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar * 0.5) - t_0) t_2 = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))) tmp = 0.0 if (NaChar <= -1.1e+56) tmp = t_2; elseif (NaChar <= -4.1e-196) tmp = t_1; elseif (NaChar <= 6.8e-137) tmp = Float64(Float64(KbT * Float64(NaChar / Vef)) - t_0); elseif (NaChar <= 2.2e-69) tmp = t_1; elseif (NaChar <= 5.5e-6) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar * 0.5) - t_0; t_2 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); tmp = 0.0; if (NaChar <= -1.1e+56) tmp = t_2; elseif (NaChar <= -4.1e-196) tmp = t_1; elseif (NaChar <= 6.8e-137) tmp = (KbT * (NaChar / Vef)) - t_0; elseif (NaChar <= 2.2e-69) tmp = t_1; elseif (NaChar <= 5.5e-6) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar * 0.5), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.1e+56], t$95$2, If[LessEqual[NaChar, -4.1e-196], t$95$1, If[LessEqual[NaChar, 6.8e-137], N[(N[(KbT * N[(NaChar / Vef), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[NaChar, 2.2e-69], t$95$1, If[LessEqual[NaChar, 5.5e-6], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := NaChar \cdot 0.5 - t\_0\\
t_2 := NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;NaChar \leq -1.1 \cdot 10^{+56}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -4.1 \cdot 10^{-196}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 6.8 \cdot 10^{-137}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{Vef} - t\_0\\
\mathbf{elif}\;NaChar \leq 2.2 \cdot 10^{-69}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 5.5 \cdot 10^{-6}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -1.10000000000000008e56 or 5.4999999999999999e-6 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 66.1%
*-commutative10.0%
Simplified66.1%
if -1.10000000000000008e56 < NaChar < -4.10000000000000021e-196 or 6.80000000000000028e-137 < NaChar < 2.2e-69Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.8%
if -4.10000000000000021e-196 < NaChar < 6.80000000000000028e-137Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.4%
Taylor expanded in EAccept around inf 80.0%
Taylor expanded in Vef around inf 73.8%
associate-/l*73.6%
Simplified73.6%
if 2.2e-69 < NaChar < 5.4999999999999999e-6Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.6%
Taylor expanded in KbT around 0 76.6%
associate-/l*82.6%
associate--l+82.6%
associate--l+82.6%
Simplified82.6%
Taylor expanded in Vef around inf 70.5%
Final simplification66.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(-
(* NaChar 0.5)
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(t_1
(+
(* NdChar 0.5)
(/
1.0
(/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))))
(if (<= NaChar -4.1e+55)
t_1
(if (<= NaChar -1.35e-280)
t_0
(if (<= NaChar -1.5e-294)
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))
(if (<= NaChar 5e-7) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_1 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -4.1e+55) {
tmp = t_1;
} else if (NaChar <= -1.35e-280) {
tmp = t_0;
} else if (NaChar <= -1.5e-294) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 5e-7) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar * 0.5d0) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
t_1 = (ndchar * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
if (nachar <= (-4.1d+55)) then
tmp = t_1
else if (nachar <= (-1.35d-280)) then
tmp = t_0
else if (nachar <= (-1.5d-294)) then
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
else if (nachar <= 5d-7) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * 0.5) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
double t_1 = (NdChar * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -4.1e+55) {
tmp = t_1;
} else if (NaChar <= -1.35e-280) {
tmp = t_0;
} else if (NaChar <= -1.5e-294) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 5e-7) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar * 0.5) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) t_1 = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) tmp = 0 if NaChar <= -4.1e+55: tmp = t_1 elif NaChar <= -1.35e-280: tmp = t_0 elif NaChar <= -1.5e-294: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) elif NaChar <= 5e-7: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar * 0.5) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) t_1 = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))) tmp = 0.0 if (NaChar <= -4.1e+55) tmp = t_1; elseif (NaChar <= -1.35e-280) tmp = t_0; elseif (NaChar <= -1.5e-294) tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); elseif (NaChar <= 5e-7) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); t_1 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); tmp = 0.0; if (NaChar <= -4.1e+55) tmp = t_1; elseif (NaChar <= -1.35e-280) tmp = t_0; elseif (NaChar <= -1.5e-294) tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); elseif (NaChar <= 5e-7) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar * 0.5), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.1e+55], t$95$1, If[LessEqual[NaChar, -1.35e-280], t$95$0, If[LessEqual[NaChar, -1.5e-294], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5e-7], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NaChar \cdot 0.5 - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;NaChar \leq -4.1 \cdot 10^{+55}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.35 \cdot 10^{-280}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.5 \cdot 10^{-294}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\mathbf{elif}\;NaChar \leq 5 \cdot 10^{-7}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -4.09999999999999981e55 or 4.99999999999999977e-7 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 66.1%
*-commutative10.0%
Simplified66.1%
if -4.09999999999999981e55 < NaChar < -1.34999999999999992e-280 or -1.4999999999999999e-294 < NaChar < 4.99999999999999977e-7Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
if -1.34999999999999992e-280 < NaChar < -1.4999999999999999e-294Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around 0 100.0%
associate-/l*100.0%
associate--l+100.0%
associate--l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 3.1%
*-commutative3.1%
Simplified3.1%
Taylor expanded in NdChar around 0 100.0%
Final simplification62.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 2.0 (/ Ev KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_2 (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)))
(if (<= mu -1.65e+71)
(+ t_1 t_0)
(if (<= mu 6.5e-215)
t_2
(if (<= mu 6.4e-157)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))
(if (<= mu 2.8e-104)
t_2
(if (<= mu 2.85e+187)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
(+ t_1 (* NaChar 0.5)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
double tmp;
if (mu <= -1.65e+71) {
tmp = t_1 + t_0;
} else if (mu <= 6.5e-215) {
tmp = t_2;
} else if (mu <= 6.4e-157) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else if (mu <= 2.8e-104) {
tmp = t_2;
} else if (mu <= 2.85e+187) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (2.0d0 + (ev / kbt))
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
t_2 = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
if (mu <= (-1.65d+71)) then
tmp = t_1 + t_0
else if (mu <= 6.5d-215) then
tmp = t_2
else if (mu <= 6.4d-157) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
else if (mu <= 2.8d-104) then
tmp = t_2
else if (mu <= 2.85d+187) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_1 + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
double tmp;
if (mu <= -1.65e+71) {
tmp = t_1 + t_0;
} else if (mu <= 6.5e-215) {
tmp = t_2;
} else if (mu <= 6.4e-157) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
} else if (mu <= 2.8e-104) {
tmp = t_2;
} else if (mu <= 2.85e+187) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (2.0 + (Ev / KbT)) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) t_2 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 tmp = 0 if mu <= -1.65e+71: tmp = t_1 + t_0 elif mu <= 6.5e-215: tmp = t_2 elif mu <= 6.4e-157: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) elif mu <= 2.8e-104: tmp = t_2 elif mu <= 2.85e+187: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_1 + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0) tmp = 0.0 if (mu <= -1.65e+71) tmp = Float64(t_1 + t_0); elseif (mu <= 6.5e-215) tmp = t_2; elseif (mu <= 6.4e-157) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); elseif (mu <= 2.8e-104) tmp = t_2; elseif (mu <= 2.85e+187) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(t_1 + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (2.0 + (Ev / KbT)); t_1 = NdChar / (1.0 + exp((mu / KbT))); t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; tmp = 0.0; if (mu <= -1.65e+71) tmp = t_1 + t_0; elseif (mu <= 6.5e-215) tmp = t_2; elseif (mu <= 6.4e-157) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); elseif (mu <= 2.8e-104) tmp = t_2; elseif (mu <= 2.85e+187) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_1 + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[mu, -1.65e+71], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[mu, 6.5e-215], t$95$2, If[LessEqual[mu, 6.4e-157], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.8e-104], t$95$2, If[LessEqual[mu, 2.85e+187], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{if}\;mu \leq -1.65 \cdot 10^{+71}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;mu \leq 6.5 \cdot 10^{-215}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq 6.4 \cdot 10^{-157}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;mu \leq 2.8 \cdot 10^{-104}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq 2.85 \cdot 10^{+187}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_1 + NaChar \cdot 0.5\\
\end{array}
\end{array}
if mu < -1.6499999999999999e71Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.5%
Taylor expanded in Ev around 0 63.5%
Taylor expanded in mu around inf 49.0%
if -1.6499999999999999e71 < mu < 6.4999999999999999e-215 or 6.40000000000000041e-157 < mu < 2.8e-104Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.3%
Taylor expanded in Ev around 0 61.5%
Taylor expanded in Vef around inf 51.3%
if 6.4999999999999999e-215 < mu < 6.40000000000000041e-157Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.1%
Taylor expanded in EDonor around inf 70.1%
Taylor expanded in EDonor around 0 61.9%
if 2.8e-104 < mu < 2.8500000000000002e187Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 67.6%
Taylor expanded in KbT around inf 44.5%
*-commutative13.7%
Simplified44.5%
if 2.8500000000000002e187 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.5%
Taylor expanded in mu around inf 64.3%
Final simplification50.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 2.0 (/ Ev KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= mu -5.2e+71)
(+ t_1 t_0)
(if (<= mu -9.2e-296)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(if (<= mu 5.2e-114)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
(if (<= mu 1.2e-68)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= mu 1.66e+187)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
(+ t_1 (* NaChar 0.5)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double tmp;
if (mu <= -5.2e+71) {
tmp = t_1 + t_0;
} else if (mu <= -9.2e-296) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else if (mu <= 5.2e-114) {
tmp = t_0 + (NdChar / (1.0 + exp((Ec / -KbT))));
} else if (mu <= 1.2e-68) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (mu <= 1.66e+187) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (2.0d0 + (ev / kbt))
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
if (mu <= (-5.2d+71)) then
tmp = t_1 + t_0
else if (mu <= (-9.2d-296)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
else if (mu <= 5.2d-114) then
tmp = t_0 + (ndchar / (1.0d0 + exp((ec / -kbt))))
else if (mu <= 1.2d-68) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (mu <= 1.66d+187) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_1 + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double tmp;
if (mu <= -5.2e+71) {
tmp = t_1 + t_0;
} else if (mu <= -9.2e-296) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else if (mu <= 5.2e-114) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
} else if (mu <= 1.2e-68) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (mu <= 1.66e+187) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (2.0 + (Ev / KbT)) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) tmp = 0 if mu <= -5.2e+71: tmp = t_1 + t_0 elif mu <= -9.2e-296: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 elif mu <= 5.2e-114: tmp = t_0 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) elif mu <= 1.2e-68: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif mu <= 1.66e+187: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_1 + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) tmp = 0.0 if (mu <= -5.2e+71) tmp = Float64(t_1 + t_0); elseif (mu <= -9.2e-296) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); elseif (mu <= 5.2e-114) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))); elseif (mu <= 1.2e-68) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (mu <= 1.66e+187) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(t_1 + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (2.0 + (Ev / KbT)); t_1 = NdChar / (1.0 + exp((mu / KbT))); tmp = 0.0; if (mu <= -5.2e+71) tmp = t_1 + t_0; elseif (mu <= -9.2e-296) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; elseif (mu <= 5.2e-114) tmp = t_0 + (NdChar / (1.0 + exp((Ec / -KbT)))); elseif (mu <= 1.2e-68) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (mu <= 1.66e+187) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_1 + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -5.2e+71], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[mu, -9.2e-296], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 5.2e-114], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.2e-68], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.66e+187], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -5.2 \cdot 10^{+71}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;mu \leq -9.2 \cdot 10^{-296}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{elif}\;mu \leq 5.2 \cdot 10^{-114}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{elif}\;mu \leq 1.2 \cdot 10^{-68}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;mu \leq 1.66 \cdot 10^{+187}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_1 + NaChar \cdot 0.5\\
\end{array}
\end{array}
if mu < -5.19999999999999983e71Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.5%
Taylor expanded in Ev around 0 63.5%
Taylor expanded in mu around inf 49.0%
if -5.19999999999999983e71 < mu < -9.20000000000000016e-296Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.7%
Taylor expanded in Ev around 0 59.8%
Taylor expanded in Vef around inf 53.4%
if -9.20000000000000016e-296 < mu < 5.20000000000000026e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.5%
Taylor expanded in Ev around 0 59.6%
Taylor expanded in Ec around inf 52.1%
mul-1-neg43.8%
distribute-neg-frac43.8%
Simplified52.1%
if 5.20000000000000026e-114 < mu < 1.19999999999999996e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.4%
Taylor expanded in EDonor around inf 64.4%
if 1.19999999999999996e-68 < mu < 1.6600000000000001e187Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 64.4%
Taylor expanded in KbT around inf 41.9%
*-commutative14.0%
Simplified41.9%
if 1.6600000000000001e187 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.5%
Taylor expanded in mu around inf 64.3%
Final simplification51.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.8e-31) (not (<= NaChar 0.5)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(-
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu)))))
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.8e-31) || !(NaChar <= 0.5)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.8d-31)) .or. (.not. (nachar <= 0.5d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = (kbt * (nachar / (eaccept + (ev + (vef - mu))))) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.8e-31) || !(NaChar <= 0.5)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.8e-31) or not (NaChar <= 0.5): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.8e-31) || !(NaChar <= 0.5)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = Float64(Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu))))) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.8e-31) || ~((NaChar <= 0.5))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.8e-31], N[Not[LessEqual[NaChar, 0.5]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.8 \cdot 10^{-31} \lor \neg \left(NaChar \leq 0.5\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -4.8e-31 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 77.7%
Taylor expanded in mu around 0 66.1%
if -4.8e-31 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.9%
Taylor expanded in KbT around 0 77.4%
associate-/l*79.0%
associate--l+79.0%
associate--l+79.0%
Simplified79.0%
Final simplification72.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar 0.5)
(/
1.0
(/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))))
(if (<= NaChar -2.4e-30)
t_0
(if (<= NaChar 3.8e-145)
(-
(/ (* KbT NaChar) EAccept)
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(if (<= NaChar 0.5)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(* KbT (/ NaChar (+ EAccept (+ Ev (- Vef mu))))))
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 * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -2.4e-30) {
tmp = t_0;
} else if (NaChar <= 3.8e-145) {
tmp = ((KbT * NaChar) / EAccept) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
} else if (NaChar <= 0.5) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} 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 * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
if (nachar <= (-2.4d-30)) then
tmp = t_0
else if (nachar <= 3.8d-145) then
tmp = ((kbt * nachar) / eaccept) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
else if (nachar <= 0.5d0) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (kbt * (nachar / (eaccept + (ev + (vef - mu)))))
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 * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
double tmp;
if (NaChar <= -2.4e-30) {
tmp = t_0;
} else if (NaChar <= 3.8e-145) {
tmp = ((KbT * NaChar) / EAccept) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
} else if (NaChar <= 0.5) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu)))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) tmp = 0 if NaChar <= -2.4e-30: tmp = t_0 elif NaChar <= 3.8e-145: tmp = ((KbT * NaChar) / EAccept) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) elif NaChar <= 0.5: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))) tmp = 0.0 if (NaChar <= -2.4e-30) tmp = t_0; elseif (NaChar <= 3.8e-145) tmp = Float64(Float64(Float64(KbT * NaChar) / EAccept) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); elseif (NaChar <= 0.5) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT * Float64(NaChar / Float64(EAccept + Float64(Ev + Float64(Vef - mu)))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); tmp = 0.0; if (NaChar <= -2.4e-30) tmp = t_0; elseif (NaChar <= 3.8e-145) tmp = ((KbT * NaChar) / EAccept) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); elseif (NaChar <= 0.5) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (KbT * (NaChar / (EAccept + (Ev + (Vef - mu))))); 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 * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.4e-30], t$95$0, If[LessEqual[NaChar, 3.8e-145], N[(N[(N[(KbT * NaChar), $MachinePrecision] / EAccept), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.5], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;NaChar \leq -2.4 \cdot 10^{-30}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 3.8 \cdot 10^{-145}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{EAccept} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 0.5:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + KbT \cdot \frac{NaChar}{EAccept + \left(Ev + \left(Vef - mu\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -2.39999999999999985e-30 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 62.3%
*-commutative10.2%
Simplified62.3%
if -2.39999999999999985e-30 < NaChar < 3.8000000000000002e-145Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.4%
Taylor expanded in EAccept around inf 66.5%
if 3.8000000000000002e-145 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.2%
Taylor expanded in KbT around 0 66.3%
associate-/l*69.3%
associate--l+69.3%
associate--l+69.3%
Simplified69.3%
Taylor expanded in Vef around inf 57.9%
Final simplification63.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.06e-29) (not (<= NaChar 0.5)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(-
(/ NaChar (+ 2.0 (/ Ev KbT)))
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.06e-29) || !(NaChar <= 0.5)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.06d-29)) .or. (.not. (nachar <= 0.5d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else
tmp = (nachar / (2.0d0 + (ev / kbt))) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.06e-29) || !(NaChar <= 0.5)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.06e-29) or not (NaChar <= 0.5): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) else: tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.06e-29) || !(NaChar <= 0.5)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); else tmp = Float64(Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.06e-29) || ~((NaChar <= 0.5))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); else tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.06e-29], N[Not[LessEqual[NaChar, 0.5]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.06 \cdot 10^{-29} \lor \neg \left(NaChar \leq 0.5\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev}{KbT}} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -1.05999999999999995e-29 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 77.7%
Taylor expanded in mu around 0 66.1%
if -1.05999999999999995e-29 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.3%
Taylor expanded in Ev around 0 70.5%
Final simplification68.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5)))
(t_1 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))))
(if (<= NaChar -8.2e-22)
t_1
(if (<= NaChar -2.8e-276)
t_0
(if (<= NaChar -5.2e-295)
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))
(if (<= NaChar 8.6e-123) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
double t_1 = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -8.2e-22) {
tmp = t_1;
} else if (NaChar <= -2.8e-276) {
tmp = t_0;
} else if (NaChar <= -5.2e-295) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 8.6e-123) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
t_1 = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-8.2d-22)) then
tmp = t_1
else if (nachar <= (-2.8d-276)) then
tmp = t_0
else if (nachar <= (-5.2d-295)) then
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
else if (nachar <= 8.6d-123) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
double t_1 = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -8.2e-22) {
tmp = t_1;
} else if (NaChar <= -2.8e-276) {
tmp = t_0;
} else if (NaChar <= -5.2e-295) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 8.6e-123) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) t_1 = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -8.2e-22: tmp = t_1 elif NaChar <= -2.8e-276: tmp = t_0 elif NaChar <= -5.2e-295: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) elif NaChar <= 8.6e-123: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -8.2e-22) tmp = t_1; elseif (NaChar <= -2.8e-276) tmp = t_0; elseif (NaChar <= -5.2e-295) tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); elseif (NaChar <= 8.6e-123) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); t_1 = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -8.2e-22) tmp = t_1; elseif (NaChar <= -2.8e-276) tmp = t_0; elseif (NaChar <= -5.2e-295) tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); elseif (NaChar <= 8.6e-123) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8.2e-22], t$95$1, If[LessEqual[NaChar, -2.8e-276], t$95$0, If[LessEqual[NaChar, -5.2e-295], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8.6e-123], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
t_1 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -8.2 \cdot 10^{-22}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -2.8 \cdot 10^{-276}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -5.2 \cdot 10^{-295}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\mathbf{elif}\;NaChar \leq 8.6 \cdot 10^{-123}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -8.1999999999999999e-22 or 8.60000000000000064e-123 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 70.2%
Taylor expanded in KbT around inf 46.1%
*-commutative13.5%
Simplified46.1%
if -8.1999999999999999e-22 < NaChar < -2.79999999999999986e-276 or -5.1999999999999997e-295 < NaChar < 8.60000000000000064e-123Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.4%
Taylor expanded in EDonor around inf 42.3%
if -2.79999999999999986e-276 < NaChar < -5.1999999999999997e-295Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around 0 100.0%
associate-/l*100.0%
associate--l+100.0%
associate--l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 5.4%
*-commutative5.4%
Simplified5.4%
Taylor expanded in NdChar around 0 86.0%
Final simplification45.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))))
(if (<= NaChar -1.62e-24)
t_0
(if (<= NaChar -2.8e-276)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= NaChar -1.5e-294)
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))
(if (<= NaChar 2.4e+23)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (* NaChar 0.5))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.62e-24) {
tmp = t_0;
} else if (NaChar <= -2.8e-276) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= -1.5e-294) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 2.4e+23) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-1.62d-24)) then
tmp = t_0
else if (nachar <= (-2.8d-276)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (nachar <= (-1.5d-294)) then
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
else if (nachar <= 2.4d+23) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.62e-24) {
tmp = t_0;
} else if (NaChar <= -2.8e-276) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= -1.5e-294) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else if (NaChar <= 2.4e+23) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -1.62e-24: tmp = t_0 elif NaChar <= -2.8e-276: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif NaChar <= -1.5e-294: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) elif NaChar <= 2.4e+23: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -1.62e-24) tmp = t_0; elseif (NaChar <= -2.8e-276) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= -1.5e-294) tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); elseif (NaChar <= 2.4e+23) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -1.62e-24) tmp = t_0; elseif (NaChar <= -2.8e-276) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (NaChar <= -1.5e-294) tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); elseif (NaChar <= 2.4e+23) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.62e-24], t$95$0, If[LessEqual[NaChar, -2.8e-276], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.5e-294], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.4e+23], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -1.62 \cdot 10^{-24}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -2.8 \cdot 10^{-276}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq -1.5 \cdot 10^{-294}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\mathbf{elif}\;NaChar \leq 2.4 \cdot 10^{+23}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.62e-24 or 2.4e23 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 70.1%
Taylor expanded in KbT around inf 47.7%
*-commutative9.9%
Simplified47.7%
if -1.62e-24 < NaChar < -2.79999999999999986e-276Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.1%
Taylor expanded in EDonor around inf 43.4%
if -2.79999999999999986e-276 < NaChar < -1.4999999999999999e-294Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around 0 100.0%
associate-/l*100.0%
associate--l+100.0%
associate--l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 5.4%
*-commutative5.4%
Simplified5.4%
Taylor expanded in NdChar around 0 86.0%
if -1.4999999999999999e-294 < NaChar < 2.4e23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.4%
Taylor expanded in Vef around inf 44.0%
Final simplification46.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.8e+55) (not (<= NaChar 0.5)))
(+
(* NdChar 0.5)
(/ 1.0 (/ (+ 1.0 (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT))) NaChar)))
(-
(/ NaChar (+ 2.0 (/ Ev KbT)))
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.8e+55) || !(NaChar <= 0.5)) {
tmp = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
} else {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-2.8d+55)) .or. (.not. (nachar <= 0.5d0))) then
tmp = (ndchar * 0.5d0) + (1.0d0 / ((1.0d0 + exp(((vef - ((mu - ev) - eaccept)) / kbt))) / nachar))
else
tmp = (nachar / (2.0d0 + (ev / kbt))) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.8e+55) || !(NaChar <= 0.5)) {
tmp = (NdChar * 0.5) + (1.0 / ((1.0 + Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar));
} else {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.8e+55) or not (NaChar <= 0.5): tmp = (NdChar * 0.5) + (1.0 / ((1.0 + math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)) else: tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.8e+55) || !(NaChar <= 0.5)) tmp = Float64(Float64(NdChar * 0.5) + Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT))) / NaChar))); else tmp = Float64(Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.8e+55) || ~((NaChar <= 0.5))) tmp = (NdChar * 0.5) + (1.0 / ((1.0 + exp(((Vef - ((mu - Ev) - EAccept)) / KbT))) / NaChar)); else tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.8e+55], N[Not[LessEqual[NaChar, 0.5]], $MachinePrecision]], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.8 \cdot 10^{+55} \lor \neg \left(NaChar \leq 0.5\right):\\
\;\;\;\;NdChar \cdot 0.5 + \frac{1}{\frac{1 + e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}}{NaChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev}{KbT}} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -2.8000000000000001e55 or 0.5 < NaChar Initial program 99.9%
Simplified99.9%
clear-num99.8%
inv-pow99.8%
+-commutative99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
unpow-199.8%
+-commutative99.8%
Simplified99.8%
Taylor expanded in KbT around inf 67.1%
*-commutative10.0%
Simplified67.1%
if -2.8000000000000001e55 < NaChar < 0.5Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.5%
Taylor expanded in Ev around 0 66.4%
Final simplification66.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -2.6e-160) (not (<= NdChar 1.8e-69)))
(-
(* NaChar 0.5)
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar (+ 2.0 (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.6e-160) || !(NdChar <= 1.8e-69)) {
tmp = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-2.6d-160)) .or. (.not. (ndchar <= 1.8d-69))) then
tmp = (nachar * 0.5d0) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.6e-160) || !(NdChar <= 1.8e-69)) {
tmp = (NaChar * 0.5) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2.6e-160) or not (NdChar <= 1.8e-69): tmp = (NaChar * 0.5) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2.6e-160) || !(NdChar <= 1.8e-69)) tmp = Float64(Float64(NaChar * 0.5) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -2.6e-160) || ~((NdChar <= 1.8e-69))) tmp = (NaChar * 0.5) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2.6e-160], N[Not[LessEqual[NdChar, 1.8e-69]], $MachinePrecision]], N[(N[(NaChar * 0.5), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.6 \cdot 10^{-160} \lor \neg \left(NdChar \leq 1.8 \cdot 10^{-69}\right):\\
\;\;\;\;NaChar \cdot 0.5 - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if NdChar < -2.60000000000000003e-160 or 1.80000000000000009e-69 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.7%
if -2.60000000000000003e-160 < NdChar < 1.80000000000000009e-69Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 57.3%
Taylor expanded in EDonor around inf 50.1%
Taylor expanded in EDonor around 0 44.3%
Final simplification55.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))))
(if (<= mu -4.8e+73)
t_0
(if (<= mu -4.1e-57)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (* NaChar 0.5))
(if (<= mu 1.1e+187)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -4.8e+73) {
tmp = t_0;
} else if (mu <= -4.1e-57) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5);
} else if (mu <= 1.1e+187) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
if (mu <= (-4.8d+73)) then
tmp = t_0
else if (mu <= (-4.1d-57)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar * 0.5d0)
else if (mu <= 1.1d+187) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -4.8e+73) {
tmp = t_0;
} else if (mu <= -4.1e-57) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar * 0.5);
} else if (mu <= 1.1e+187) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) tmp = 0 if mu <= -4.8e+73: tmp = t_0 elif mu <= -4.1e-57: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar * 0.5) elif mu <= 1.1e+187: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)) tmp = 0.0 if (mu <= -4.8e+73) tmp = t_0; elseif (mu <= -4.1e-57) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar * 0.5)); elseif (mu <= 1.1e+187) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); tmp = 0.0; if (mu <= -4.8e+73) tmp = t_0; elseif (mu <= -4.1e-57) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5); elseif (mu <= 1.1e+187) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.8e+73], t$95$0, If[LessEqual[mu, -4.1e-57], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.1e+187], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{if}\;mu \leq -4.8 \cdot 10^{+73}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq -4.1 \cdot 10^{-57}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;mu \leq 1.1 \cdot 10^{+187}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -4.80000000000000004e73 or 1.0999999999999999e187 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.0%
Taylor expanded in mu around inf 52.1%
if -4.80000000000000004e73 < mu < -4.1000000000000001e-57Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.0%
Taylor expanded in Vef around inf 47.7%
if -4.1000000000000001e-57 < mu < 1.0999999999999999e187Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in KbT around inf 43.0%
*-commutative14.8%
Simplified43.0%
Final simplification45.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))))
(if (<= mu -3.25e+112)
t_0
(if (<= mu 2.2e-176)
(-
(/ NaChar (+ 2.0 (/ Ev KbT)))
(/ NdChar (- -1.0 (exp (/ EDonor KbT)))))
(if (<= mu 1.1e+187)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -3.25e+112) {
tmp = t_0;
} else if (mu <= 2.2e-176) {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp((EDonor / KbT))));
} else if (mu <= 1.1e+187) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
if (mu <= (-3.25d+112)) then
tmp = t_0
else if (mu <= 2.2d-176) then
tmp = (nachar / (2.0d0 + (ev / kbt))) - (ndchar / ((-1.0d0) - exp((edonor / kbt))))
else if (mu <= 1.1d+187) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -3.25e+112) {
tmp = t_0;
} else if (mu <= 2.2e-176) {
tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - Math.exp((EDonor / KbT))));
} else if (mu <= 1.1e+187) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) tmp = 0 if mu <= -3.25e+112: tmp = t_0 elif mu <= 2.2e-176: tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - math.exp((EDonor / KbT)))) elif mu <= 1.1e+187: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)) tmp = 0.0 if (mu <= -3.25e+112) tmp = t_0; elseif (mu <= 2.2e-176) tmp = Float64(Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) - Float64(NdChar / Float64(-1.0 - exp(Float64(EDonor / KbT))))); elseif (mu <= 1.1e+187) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); tmp = 0.0; if (mu <= -3.25e+112) tmp = t_0; elseif (mu <= 2.2e-176) tmp = (NaChar / (2.0 + (Ev / KbT))) - (NdChar / (-1.0 - exp((EDonor / KbT)))); elseif (mu <= 1.1e+187) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.25e+112], t$95$0, If[LessEqual[mu, 2.2e-176], N[(N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.1e+187], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{if}\;mu \leq -3.25 \cdot 10^{+112}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 2.2 \cdot 10^{-176}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev}{KbT}} - \frac{NdChar}{-1 - e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.1 \cdot 10^{+187}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -3.2499999999999999e112 or 1.0999999999999999e187 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.0%
Taylor expanded in mu around inf 56.7%
if -3.2499999999999999e112 < mu < 2.1999999999999999e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.3%
Taylor expanded in Ev around 0 61.9%
Taylor expanded in EDonor around inf 50.9%
if 2.1999999999999999e-176 < mu < 1.0999999999999999e187Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 64.8%
Taylor expanded in KbT around inf 42.1%
*-commutative13.7%
Simplified42.1%
Final simplification49.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))))
(if (<= mu -3.5e+112)
t_0
(if (<= mu -1.85e-301)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar (+ 2.0 (/ Ev KbT))))
(if (<= mu 1.12e+188)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -3.5e+112) {
tmp = t_0;
} else if (mu <= -1.85e-301) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (2.0 + (Ev / KbT)));
} else if (mu <= 1.12e+188) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
if (mu <= (-3.5d+112)) then
tmp = t_0
else if (mu <= (-1.85d-301)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (2.0d0 + (ev / kbt)))
else if (mu <= 1.12d+188) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
double tmp;
if (mu <= -3.5e+112) {
tmp = t_0;
} else if (mu <= -1.85e-301) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (2.0 + (Ev / KbT)));
} else if (mu <= 1.12e+188) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) tmp = 0 if mu <= -3.5e+112: tmp = t_0 elif mu <= -1.85e-301: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (2.0 + (Ev / KbT))) elif mu <= 1.12e+188: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)) tmp = 0.0 if (mu <= -3.5e+112) tmp = t_0; elseif (mu <= -1.85e-301) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))); elseif (mu <= 1.12e+188) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); tmp = 0.0; if (mu <= -3.5e+112) tmp = t_0; elseif (mu <= -1.85e-301) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (2.0 + (Ev / KbT))); elseif (mu <= 1.12e+188) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.5e+112], t$95$0, If[LessEqual[mu, -1.85e-301], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.12e+188], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{if}\;mu \leq -3.5 \cdot 10^{+112}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq -1.85 \cdot 10^{-301}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{elif}\;mu \leq 1.12 \cdot 10^{+188}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -3.49999999999999997e112 or 1.11999999999999996e188 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.0%
Taylor expanded in mu around inf 56.7%
if -3.49999999999999997e112 < mu < -1.8499999999999999e-301Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.2%
Taylor expanded in Ev around 0 60.7%
Taylor expanded in Vef around inf 51.9%
if -1.8499999999999999e-301 < mu < 1.11999999999999996e188Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 68.2%
Taylor expanded in KbT around inf 42.7%
*-commutative13.9%
Simplified42.7%
Final simplification49.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 2.0 (/ Ev KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= mu -1.6e+71)
(+ t_1 t_0)
(if (<= mu -4e-301)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(if (<= mu 3.9e+189)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))
(+ t_1 (* NaChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double tmp;
if (mu <= -1.6e+71) {
tmp = t_1 + t_0;
} else if (mu <= -4e-301) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else if (mu <= 3.9e+189) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (2.0d0 + (ev / kbt))
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
if (mu <= (-1.6d+71)) then
tmp = t_1 + t_0
else if (mu <= (-4d-301)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
else if (mu <= 3.9d+189) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = t_1 + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 + (Ev / KbT));
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double tmp;
if (mu <= -1.6e+71) {
tmp = t_1 + t_0;
} else if (mu <= -4e-301) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else if (mu <= 3.9e+189) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_1 + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (2.0 + (Ev / KbT)) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) tmp = 0 if mu <= -1.6e+71: tmp = t_1 + t_0 elif mu <= -4e-301: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 elif mu <= 3.9e+189: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = t_1 + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) tmp = 0.0 if (mu <= -1.6e+71) tmp = Float64(t_1 + t_0); elseif (mu <= -4e-301) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); elseif (mu <= 3.9e+189) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(t_1 + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (2.0 + (Ev / KbT)); t_1 = NdChar / (1.0 + exp((mu / KbT))); tmp = 0.0; if (mu <= -1.6e+71) tmp = t_1 + t_0; elseif (mu <= -4e-301) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; elseif (mu <= 3.9e+189) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = t_1 + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.6e+71], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[mu, -4e-301], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 3.9e+189], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.6 \cdot 10^{+71}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;mu \leq -4 \cdot 10^{-301}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{elif}\;mu \leq 3.9 \cdot 10^{+189}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_1 + NaChar \cdot 0.5\\
\end{array}
\end{array}
if mu < -1.60000000000000012e71Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.5%
Taylor expanded in Ev around 0 63.5%
Taylor expanded in mu around inf 49.0%
if -1.60000000000000012e71 < mu < -4.00000000000000027e-301Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.2%
Taylor expanded in Ev around 0 59.6%
Taylor expanded in Vef around inf 53.4%
if -4.00000000000000027e-301 < mu < 3.9e189Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 68.2%
Taylor expanded in KbT around inf 42.7%
*-commutative13.9%
Simplified42.7%
if 3.9e189 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.5%
Taylor expanded in mu around inf 64.3%
Final simplification49.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -5.7e-200) (not (<= NaChar 1.65e-142))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)) (/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.7e-200) || !(NaChar <= 1.65e-142)) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-5.7d-200)) .or. (.not. (nachar <= 1.65d-142))) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.7e-200) || !(NaChar <= 1.65e-142)) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -5.7e-200) or not (NaChar <= 1.65e-142): tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -5.7e-200) || !(NaChar <= 1.65e-142)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -5.7e-200) || ~((NaChar <= 1.65e-142))) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -5.7e-200], N[Not[LessEqual[NaChar, 1.65e-142]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.7 \cdot 10^{-200} \lor \neg \left(NaChar \leq 1.65 \cdot 10^{-142}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\end{array}
\end{array}
if NaChar < -5.69999999999999949e-200 or 1.6499999999999998e-142 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 71.2%
Taylor expanded in KbT around inf 44.0%
*-commutative14.8%
Simplified44.0%
if -5.69999999999999949e-200 < NaChar < 1.6499999999999998e-142Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.1%
Taylor expanded in KbT around 0 84.8%
associate-/l*86.3%
associate--l+86.3%
associate--l+86.3%
Simplified86.3%
Taylor expanded in KbT around inf 18.8%
*-commutative18.8%
Simplified18.8%
Taylor expanded in NdChar around 0 34.6%
Final simplification41.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -5.4e+172) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5.4e+172) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-5.4d+172)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5.4e+172) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -5.4e+172: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -5.4e+172) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -5.4e+172) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -5.4e+172], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -5.4 \cdot 10^{+172}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if Ev < -5.4e172Initial program 99.8%
Simplified99.8%
Taylor expanded in Ev around inf 93.3%
Taylor expanded in KbT around inf 53.5%
*-commutative25.4%
Simplified53.5%
if -5.4e172 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.5%
Taylor expanded in KbT around inf 37.6%
*-commutative14.5%
Simplified37.6%
Final simplification39.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -4e+46) (not (<= KbT 4.1e+38)))
(+
(/
NaChar
(+
1.0
(- (+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(* NdChar 0.5))
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -4e+46) || !(KbT <= 4.1e+38)) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-4d+46)) .or. (.not. (kbt <= 4.1d+38))) then
tmp = (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))) + (ndchar * 0.5d0)
else
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -4e+46) || !(KbT <= 4.1e+38)) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -4e+46) or not (KbT <= 4.1e+38): tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar * 0.5) else: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -4e+46) || !(KbT <= 4.1e+38)) tmp = Float64(Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -4e+46) || ~((KbT <= 4.1e+38))) tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar * 0.5); else tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -4e+46], N[Not[LessEqual[KbT, 4.1e+38]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4 \cdot 10^{+46} \lor \neg \left(KbT \leq 4.1 \cdot 10^{+38}\right):\\
\;\;\;\;\frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\end{array}
\end{array}
if KbT < -4e46 or 4.1000000000000003e38 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 71.7%
Taylor expanded in KbT around inf 55.3%
*-commutative25.4%
Simplified55.3%
if -4e46 < KbT < 4.1000000000000003e38Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in KbT around 0 56.0%
associate-/l*56.0%
associate--l+56.0%
associate--l+56.0%
Simplified56.0%
Taylor expanded in KbT around inf 9.6%
*-commutative9.6%
Simplified9.6%
Taylor expanded in NdChar around 0 22.8%
Final simplification35.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4.4e+46)
(+ (/ NaChar (+ 2.0 (/ Ev KbT))) (* NdChar 0.5))
(if (<= KbT 4.1e+38)
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))
(- (* NaChar 0.5) (/ 1.0 (- (/ Ec (* NdChar KbT)) (/ 2.0 NdChar)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4.4e+46) {
tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5);
} else if (KbT <= 4.1e+38) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else {
tmp = (NaChar * 0.5) - (1.0 / ((Ec / (NdChar * KbT)) - (2.0 / NdChar)));
}
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 <= (-4.4d+46)) then
tmp = (nachar / (2.0d0 + (ev / kbt))) + (ndchar * 0.5d0)
else if (kbt <= 4.1d+38) then
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
else
tmp = (nachar * 0.5d0) - (1.0d0 / ((ec / (ndchar * kbt)) - (2.0d0 / ndchar)))
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 <= -4.4e+46) {
tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5);
} else if (KbT <= 4.1e+38) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else {
tmp = (NaChar * 0.5) - (1.0 / ((Ec / (NdChar * KbT)) - (2.0 / NdChar)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4.4e+46: tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5) elif KbT <= 4.1e+38: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) else: tmp = (NaChar * 0.5) - (1.0 / ((Ec / (NdChar * KbT)) - (2.0 / NdChar))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4.4e+46) tmp = Float64(Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) + Float64(NdChar * 0.5)); elseif (KbT <= 4.1e+38) tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); else tmp = Float64(Float64(NaChar * 0.5) - Float64(1.0 / Float64(Float64(Ec / Float64(NdChar * KbT)) - Float64(2.0 / NdChar)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4.4e+46) tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5); elseif (KbT <= 4.1e+38) tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); else tmp = (NaChar * 0.5) - (1.0 / ((Ec / (NdChar * KbT)) - (2.0 / NdChar))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4.4e+46], N[(N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.1e+38], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar * 0.5), $MachinePrecision] - N[(1.0 / N[(N[(Ec / N[(NdChar * KbT), $MachinePrecision]), $MachinePrecision] - N[(2.0 / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.4 \cdot 10^{+46}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev}{KbT}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 4.1 \cdot 10^{+38}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5 - \frac{1}{\frac{Ec}{NdChar \cdot KbT} - \frac{2}{NdChar}}\\
\end{array}
\end{array}
if KbT < -4.4000000000000001e46Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 76.9%
Taylor expanded in Ev around 0 65.4%
Taylor expanded in KbT around inf 51.9%
*-commutative21.4%
Simplified51.9%
if -4.4000000000000001e46 < KbT < 4.1000000000000003e38Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in KbT around 0 56.0%
associate-/l*56.0%
associate--l+56.0%
associate--l+56.0%
Simplified56.0%
Taylor expanded in KbT around inf 9.6%
*-commutative9.6%
Simplified9.6%
Taylor expanded in NdChar around 0 22.8%
if 4.1000000000000003e38 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.2%
clear-num73.2%
inv-pow73.2%
associate-+r+73.2%
Applied egg-rr73.2%
unpow-173.2%
associate-+l+73.2%
associate-+r-73.2%
+-commutative73.2%
sub-neg73.2%
associate-+r+73.2%
mul-1-neg73.2%
mul-1-neg73.2%
associate-+r+73.2%
sub-neg73.2%
+-commutative73.2%
associate-+r-73.2%
Simplified73.2%
Taylor expanded in Ec around inf 58.7%
mul-1-neg58.7%
distribute-neg-frac58.7%
Simplified58.7%
Taylor expanded in Ec around 0 55.6%
+-commutative55.6%
mul-1-neg55.6%
unsub-neg55.6%
associate-*r/55.6%
metadata-eval55.6%
Simplified55.6%
Final simplification34.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.7e+51)
(+ (/ NaChar (+ 2.0 (/ Ev KbT))) (* NdChar 0.5))
(if (<= KbT 3.3e+38)
(/ (* KbT NaChar) (- (+ EAccept (+ Vef Ev)) mu))
(+ (* NdChar 0.5) (* NaChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.7e+51) {
tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5);
} else if (KbT <= 3.3e+38) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.7d+51)) then
tmp = (nachar / (2.0d0 + (ev / kbt))) + (ndchar * 0.5d0)
else if (kbt <= 3.3d+38) then
tmp = (kbt * nachar) / ((eaccept + (vef + ev)) - mu)
else
tmp = (ndchar * 0.5d0) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.7e+51) {
tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5);
} else if (KbT <= 3.3e+38) {
tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu);
} else {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.7e+51: tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5) elif KbT <= 3.3e+38: tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu) else: tmp = (NdChar * 0.5) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.7e+51) tmp = Float64(Float64(NaChar / Float64(2.0 + Float64(Ev / KbT))) + Float64(NdChar * 0.5)); elseif (KbT <= 3.3e+38) tmp = Float64(Float64(KbT * NaChar) / Float64(Float64(EAccept + Float64(Vef + Ev)) - mu)); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.7e+51) tmp = (NaChar / (2.0 + (Ev / KbT))) + (NdChar * 0.5); elseif (KbT <= 3.3e+38) tmp = (KbT * NaChar) / ((EAccept + (Vef + Ev)) - mu); else tmp = (NdChar * 0.5) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.7e+51], N[(N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.3e+38], N[(N[(KbT * NaChar), $MachinePrecision] / N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.7 \cdot 10^{+51}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev}{KbT}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 3.3 \cdot 10^{+38}:\\
\;\;\;\;\frac{KbT \cdot NaChar}{\left(EAccept + \left(Vef + Ev\right)\right) - mu}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + NaChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -1.69999999999999992e51Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 76.9%
Taylor expanded in Ev around 0 65.4%
Taylor expanded in KbT around inf 51.9%
*-commutative21.4%
Simplified51.9%
if -1.69999999999999992e51 < KbT < 3.2999999999999999e38Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in KbT around 0 56.0%
associate-/l*56.0%
associate--l+56.0%
associate--l+56.0%
Simplified56.0%
Taylor expanded in KbT around inf 9.6%
*-commutative9.6%
Simplified9.6%
Taylor expanded in NdChar around 0 22.8%
if 3.2999999999999999e38 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.2%
Taylor expanded in KbT around inf 55.5%
*-commutative29.4%
Simplified55.5%
Final simplification34.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar * 0.5d0) + (nachar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.8%
Taylor expanded in KbT around inf 28.4%
*-commutative15.8%
Simplified28.4%
Final simplification28.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = ndchar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.1%
Taylor expanded in KbT around 0 48.9%
associate-/l*50.2%
associate--l+50.2%
associate--l+50.2%
Simplified50.2%
Taylor expanded in KbT around inf 15.8%
*-commutative15.8%
Simplified15.8%
Taylor expanded in NdChar around inf 20.4%
Final simplification20.4%
herbie shell --seed 2024067
(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))))))