
(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 23 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ 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 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))))
(if (<= NaChar -8e+26)
t_0
(if (<= NaChar -8e-15)
t_1
(if (<= NaChar -7.2e-49)
t_0
(if (<= NaChar -1.25e-151)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NaChar 0.00038)
t_1
(if (or (<= NaChar 1.2e+198) (not (<= NaChar 2.25e+227)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
t_0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -8e+26) {
tmp = t_0;
} else if (NaChar <= -8e-15) {
tmp = t_1;
} else if (NaChar <= -7.2e-49) {
tmp = t_0;
} else if (NaChar <= -1.25e-151) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NaChar <= 0.00038) {
tmp = t_1;
} else if ((NaChar <= 1.2e+198) || !(NaChar <= 2.25e+227)) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / 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 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
if (nachar <= (-8d+26)) then
tmp = t_0
else if (nachar <= (-8d-15)) then
tmp = t_1
else if (nachar <= (-7.2d-49)) then
tmp = t_0
else if (nachar <= (-1.25d-151)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (nachar <= 0.00038d0) then
tmp = t_1
else if ((nachar <= 1.2d+198) .or. (.not. (nachar <= 2.25d+227))) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -8e+26) {
tmp = t_0;
} else if (NaChar <= -8e-15) {
tmp = t_1;
} else if (NaChar <= -7.2e-49) {
tmp = t_0;
} else if (NaChar <= -1.25e-151) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NaChar <= 0.00038) {
tmp = t_1;
} else if ((NaChar <= 1.2e+198) || !(NaChar <= 2.25e+227)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) tmp = 0 if NaChar <= -8e+26: tmp = t_0 elif NaChar <= -8e-15: tmp = t_1 elif NaChar <= -7.2e-49: tmp = t_0 elif NaChar <= -1.25e-151: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NaChar <= 0.00038: tmp = t_1 elif (NaChar <= 1.2e+198) or not (NaChar <= 2.25e+227): tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -8e+26) tmp = t_0; elseif (NaChar <= -8e-15) tmp = t_1; elseif (NaChar <= -7.2e-49) tmp = t_0; elseif (NaChar <= -1.25e-151) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NaChar <= 0.00038) tmp = t_1; elseif ((NaChar <= 1.2e+198) || !(NaChar <= 2.25e+227)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -8e+26) tmp = t_0; elseif (NaChar <= -8e-15) tmp = t_1; elseif (NaChar <= -7.2e-49) tmp = t_0; elseif (NaChar <= -1.25e-151) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NaChar <= 0.00038) tmp = t_1; elseif ((NaChar <= 1.2e+198) || ~((NaChar <= 2.25e+227))) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8e+26], t$95$0, If[LessEqual[NaChar, -8e-15], t$95$1, If[LessEqual[NaChar, -7.2e-49], t$95$0, If[LessEqual[NaChar, -1.25e-151], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 0.00038], t$95$1, If[Or[LessEqual[NaChar, 1.2e+198], N[Not[LessEqual[NaChar, 2.25e+227]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -8 \cdot 10^{+26}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -8 \cdot 10^{-15}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -7.2 \cdot 10^{-49}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.25 \cdot 10^{-151}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 0.00038:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.2 \cdot 10^{+198} \lor \neg \left(NaChar \leq 2.25 \cdot 10^{+227}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -8.00000000000000038e26 or -8.0000000000000006e-15 < NaChar < -7.19999999999999939e-49 or 1.2000000000000001e198 < NaChar < 2.25e227Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.9%
Taylor expanded in Vef around inf 49.4%
Taylor expanded in NdChar around 0 84.4%
Simplified84.4%
if -8.00000000000000038e26 < NaChar < -8.0000000000000006e-15 or -1.25000000000000001e-151 < NaChar < 3.8000000000000002e-4Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.4%
Taylor expanded in Ev around 0 72.7%
if -7.19999999999999939e-49 < NaChar < -1.25000000000000001e-151Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.4%
Taylor expanded in mu around inf 81.8%
associate-*r/46.9%
mul-1-neg46.9%
Simplified81.8%
if 3.8000000000000002e-4 < NaChar < 1.2000000000000001e198 or 2.25e227 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.2%
Taylor expanded in EAccept around 0 69.9%
Final simplification75.5%
(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 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))))
(if (<= NaChar -9e+27)
t_1
(if (<= NaChar -9.5e-15)
t_2
(if (<= NaChar -4.1e-27)
t_1
(if (<= NaChar -1.22e-151)
t_0
(if (<= NaChar 3.6e-37)
t_2
(if (or (<= NaChar 3.8e+95) (not (<= NaChar 1.85e+201)))
t_1
t_0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -9e+27) {
tmp = t_1;
} else if (NaChar <= -9.5e-15) {
tmp = t_2;
} else if (NaChar <= -4.1e-27) {
tmp = t_1;
} else if (NaChar <= -1.22e-151) {
tmp = t_0;
} else if (NaChar <= 3.6e-37) {
tmp = t_2;
} else if ((NaChar <= 3.8e+95) || !(NaChar <= 1.85e+201)) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_2 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
if (nachar <= (-9d+27)) then
tmp = t_1
else if (nachar <= (-9.5d-15)) then
tmp = t_2
else if (nachar <= (-4.1d-27)) then
tmp = t_1
else if (nachar <= (-1.22d-151)) then
tmp = t_0
else if (nachar <= 3.6d-37) then
tmp = t_2
else if ((nachar <= 3.8d+95) .or. (.not. (nachar <= 1.85d+201))) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -9e+27) {
tmp = t_1;
} else if (NaChar <= -9.5e-15) {
tmp = t_2;
} else if (NaChar <= -4.1e-27) {
tmp = t_1;
} else if (NaChar <= -1.22e-151) {
tmp = t_0;
} else if (NaChar <= 3.6e-37) {
tmp = t_2;
} else if ((NaChar <= 3.8e+95) || !(NaChar <= 1.85e+201)) {
tmp = t_1;
} 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 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_2 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) tmp = 0 if NaChar <= -9e+27: tmp = t_1 elif NaChar <= -9.5e-15: tmp = t_2 elif NaChar <= -4.1e-27: tmp = t_1 elif NaChar <= -1.22e-151: tmp = t_0 elif NaChar <= 3.6e-37: tmp = t_2 elif (NaChar <= 3.8e+95) or not (NaChar <= 1.85e+201): tmp = t_1 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(Float64(-mu) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -9e+27) tmp = t_1; elseif (NaChar <= -9.5e-15) tmp = t_2; elseif (NaChar <= -4.1e-27) tmp = t_1; elseif (NaChar <= -1.22e-151) tmp = t_0; elseif (NaChar <= 3.6e-37) tmp = t_2; elseif ((NaChar <= 3.8e+95) || !(NaChar <= 1.85e+201)) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_2 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -9e+27) tmp = t_1; elseif (NaChar <= -9.5e-15) tmp = t_2; elseif (NaChar <= -4.1e-27) tmp = t_1; elseif (NaChar <= -1.22e-151) tmp = t_0; elseif (NaChar <= 3.6e-37) tmp = t_2; elseif ((NaChar <= 3.8e+95) || ~((NaChar <= 1.85e+201))) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(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[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = 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[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -9e+27], t$95$1, If[LessEqual[NaChar, -9.5e-15], t$95$2, If[LessEqual[NaChar, -4.1e-27], t$95$1, If[LessEqual[NaChar, -1.22e-151], t$95$0, If[LessEqual[NaChar, 3.6e-37], t$95$2, If[Or[LessEqual[NaChar, 3.8e+95], N[Not[LessEqual[NaChar, 1.85e+201]], $MachinePrecision]], t$95$1, 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 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -9 \cdot 10^{+27}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -9.5 \cdot 10^{-15}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -4.1 \cdot 10^{-27}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.22 \cdot 10^{-151}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 3.6 \cdot 10^{-37}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 3.8 \cdot 10^{+95} \lor \neg \left(NaChar \leq 1.85 \cdot 10^{+201}\right):\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -8.9999999999999998e27 or -9.5000000000000005e-15 < NaChar < -4.0999999999999999e-27 or 3.60000000000000007e-37 < NaChar < 3.7999999999999999e95 or 1.8499999999999999e201 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.1%
Taylor expanded in Vef around inf 46.5%
Taylor expanded in NdChar around 0 78.9%
Simplified78.9%
if -8.9999999999999998e27 < NaChar < -9.5000000000000005e-15 or -1.21999999999999997e-151 < NaChar < 3.60000000000000007e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.8%
Taylor expanded in Ev around 0 73.4%
if -4.0999999999999999e-27 < NaChar < -1.21999999999999997e-151 or 3.7999999999999999e95 < NaChar < 1.8499999999999999e201Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.9%
Taylor expanded in mu around inf 76.1%
associate-*r/57.3%
mul-1-neg57.3%
Simplified76.1%
Final simplification76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))))
(if (<= NaChar -4.8e+31)
t_0
(if (<= NaChar -1.05e-14)
t_1
(if (<= NaChar -3.9e-59)
t_0
(if (<= NaChar -1.25e-151)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NaChar 1.2e-37)
t_1
(if (or (<= NaChar 1.02e+126) (not (<= NaChar 2.05e+201)))
t_0
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -4.8e+31) {
tmp = t_0;
} else if (NaChar <= -1.05e-14) {
tmp = t_1;
} else if (NaChar <= -3.9e-59) {
tmp = t_0;
} else if (NaChar <= -1.25e-151) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NaChar <= 1.2e-37) {
tmp = t_1;
} else if ((NaChar <= 1.02e+126) || !(NaChar <= 2.05e+201)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
if (nachar <= (-4.8d+31)) then
tmp = t_0
else if (nachar <= (-1.05d-14)) then
tmp = t_1
else if (nachar <= (-3.9d-59)) then
tmp = t_0
else if (nachar <= (-1.25d-151)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (nachar <= 1.2d-37) then
tmp = t_1
else if ((nachar <= 1.02d+126) .or. (.not. (nachar <= 2.05d+201))) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
double tmp;
if (NaChar <= -4.8e+31) {
tmp = t_0;
} else if (NaChar <= -1.05e-14) {
tmp = t_1;
} else if (NaChar <= -3.9e-59) {
tmp = t_0;
} else if (NaChar <= -1.25e-151) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NaChar <= 1.2e-37) {
tmp = t_1;
} else if ((NaChar <= 1.02e+126) || !(NaChar <= 2.05e+201)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) tmp = 0 if NaChar <= -4.8e+31: tmp = t_0 elif NaChar <= -1.05e-14: tmp = t_1 elif NaChar <= -3.9e-59: tmp = t_0 elif NaChar <= -1.25e-151: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NaChar <= 1.2e-37: tmp = t_1 elif (NaChar <= 1.02e+126) or not (NaChar <= 2.05e+201): tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -4.8e+31) tmp = t_0; elseif (NaChar <= -1.05e-14) tmp = t_1; elseif (NaChar <= -3.9e-59) tmp = t_0; elseif (NaChar <= -1.25e-151) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NaChar <= 1.2e-37) tmp = t_1; elseif ((NaChar <= 1.02e+126) || !(NaChar <= 2.05e+201)) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -4.8e+31) tmp = t_0; elseif (NaChar <= -1.05e-14) tmp = t_1; elseif (NaChar <= -3.9e-59) tmp = t_0; elseif (NaChar <= -1.25e-151) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NaChar <= 1.2e-37) tmp = t_1; elseif ((NaChar <= 1.02e+126) || ~((NaChar <= 2.05e+201))) tmp = t_0; else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.8e+31], t$95$0, If[LessEqual[NaChar, -1.05e-14], t$95$1, If[LessEqual[NaChar, -3.9e-59], t$95$0, If[LessEqual[NaChar, -1.25e-151], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.2e-37], t$95$1, If[Or[LessEqual[NaChar, 1.02e+126], N[Not[LessEqual[NaChar, 2.05e+201]], $MachinePrecision]], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -4.8 \cdot 10^{+31}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.05 \cdot 10^{-14}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -3.9 \cdot 10^{-59}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.25 \cdot 10^{-151}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.2 \cdot 10^{-37}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.02 \cdot 10^{+126} \lor \neg \left(NaChar \leq 2.05 \cdot 10^{+201}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -4.79999999999999965e31 or -1.0499999999999999e-14 < NaChar < -3.90000000000000019e-59 or 1.19999999999999995e-37 < NaChar < 1.02e126 or 2.0500000000000001e201 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.3%
Taylor expanded in Vef around inf 44.5%
Taylor expanded in NdChar around 0 77.3%
Simplified77.3%
if -4.79999999999999965e31 < NaChar < -1.0499999999999999e-14 or -1.25000000000000001e-151 < NaChar < 1.19999999999999995e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.8%
Taylor expanded in Ev around 0 73.4%
if -3.90000000000000019e-59 < NaChar < -1.25000000000000001e-151Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.4%
Taylor expanded in mu around inf 81.8%
associate-*r/46.9%
mul-1-neg46.9%
Simplified81.8%
if 1.02e126 < NaChar < 2.0500000000000001e201Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.3%
Taylor expanded in Ec around inf 78.3%
associate-*r/78.3%
mul-1-neg78.3%
Simplified78.3%
Final simplification76.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -5.2e+145)
t_2
(if (<= EDonor -1.35e+42)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= EDonor -9e-5)
t_0
(if (<= EDonor 3.3e-32)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_1)
(if (<= EDonor 1.35e+16)
t_0
(if (<= EDonor 3.4e+97)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -5.2e+145) {
tmp = t_2;
} else if (EDonor <= -1.35e+42) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (EDonor <= -9e-5) {
tmp = t_0;
} else if (EDonor <= 3.3e-32) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_1;
} else if (EDonor <= 1.35e+16) {
tmp = t_0;
} else if (EDonor <= 3.4e+97) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-5.2d+145)) then
tmp = t_2
else if (edonor <= (-1.35d+42)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
else if (edonor <= (-9d-5)) then
tmp = t_0
else if (edonor <= 3.3d-32) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_1
else if (edonor <= 1.35d+16) then
tmp = t_0
else if (edonor <= 3.4d+97) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -5.2e+145) {
tmp = t_2;
} else if (EDonor <= -1.35e+42) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (EDonor <= -9e-5) {
tmp = t_0;
} else if (EDonor <= 3.3e-32) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_1;
} else if (EDonor <= 1.35e+16) {
tmp = t_0;
} else if (EDonor <= 3.4e+97) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -5.2e+145: tmp = t_2 elif EDonor <= -1.35e+42: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) elif EDonor <= -9e-5: tmp = t_0 elif EDonor <= 3.3e-32: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_1 elif EDonor <= 1.35e+16: tmp = t_0 elif EDonor <= 3.4e+97: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -5.2e+145) tmp = t_2; elseif (EDonor <= -1.35e+42) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (EDonor <= -9e-5) tmp = t_0; elseif (EDonor <= 3.3e-32) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_1); elseif (EDonor <= 1.35e+16) tmp = t_0; elseif (EDonor <= 3.4e+97) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -5.2e+145) tmp = t_2; elseif (EDonor <= -1.35e+42) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (EDonor <= -9e-5) tmp = t_0; elseif (EDonor <= 3.3e-32) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_1; elseif (EDonor <= 1.35e+16) tmp = t_0; elseif (EDonor <= 3.4e+97) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -5.2e+145], t$95$2, If[LessEqual[EDonor, -1.35e+42], 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[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -9e-5], t$95$0, If[LessEqual[EDonor, 3.3e-32], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[EDonor, 1.35e+16], t$95$0, If[LessEqual[EDonor, 3.4e+97], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -5.2 \cdot 10^{+145}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EDonor \leq -1.35 \cdot 10^{+42}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;EDonor \leq -9 \cdot 10^{-5}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 3.3 \cdot 10^{-32}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_1\\
\mathbf{elif}\;EDonor \leq 1.35 \cdot 10^{+16}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 3.4 \cdot 10^{+97}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EDonor < -5.20000000000000005e145 or 3.4000000000000001e97 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.9%
Taylor expanded in EAccept around 0 75.9%
if -5.20000000000000005e145 < EDonor < -1.35e42Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 84.2%
Taylor expanded in Ev around 0 80.8%
if -1.35e42 < EDonor < -9.00000000000000057e-5 or 3.30000000000000025e-32 < EDonor < 1.35e16Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.2%
Taylor expanded in Vef around inf 41.2%
Taylor expanded in NdChar around 0 81.1%
Simplified81.1%
if -9.00000000000000057e-5 < EDonor < 3.30000000000000025e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.7%
Taylor expanded in EAccept around 0 74.8%
if 1.35e16 < EDonor < 3.4000000000000001e97Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.5%
Taylor expanded in mu around inf 69.0%
Final simplification75.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= Ev -1.9e+121)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev -1.65e-196)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (or (<= Ev 3.5e-300) (not (<= Ev 5.5e-210)))
(+ t_1 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(+ t_0 (/ NdChar (+ 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -1.9e+121) {
tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= -1.65e-196) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if ((Ev <= 3.5e-300) || !(Ev <= 5.5e-210)) {
tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / (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) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ev <= (-1.9d+121)) then
tmp = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= (-1.65d-196)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if ((ev <= 3.5d-300) .or. (.not. (ev <= 5.5d-210))) then
tmp = t_1 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_0 + (ndchar / (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 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -1.9e+121) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= -1.65e-196) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if ((Ev <= 3.5e-300) || !(Ev <= 5.5e-210)) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if Ev <= -1.9e+121: tmp = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= -1.65e-196: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif (Ev <= 3.5e-300) or not (Ev <= 5.5e-210): tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (Ev <= -1.9e+121) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= -1.65e-196) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif ((Ev <= 3.5e-300) || !(Ev <= 5.5e-210)) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (Ev <= -1.9e+121) tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= -1.65e-196) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif ((Ev <= 3.5e-300) || ~((Ev <= 5.5e-210))) tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_0 + (NdChar / (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[(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[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1.9e+121], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.65e-196], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[Ev, 3.5e-300], N[Not[LessEqual[Ev, 5.5e-210]], $MachinePrecision]], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;Ev \leq -1.9 \cdot 10^{+121}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.65 \cdot 10^{-196}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Ev \leq 3.5 \cdot 10^{-300} \lor \neg \left(Ev \leq 5.5 \cdot 10^{-210}\right):\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if Ev < -1.9e121Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 93.4%
if -1.9e121 < Ev < -1.64999999999999999e-196Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 69.5%
if -1.64999999999999999e-196 < Ev < 3.5000000000000002e-300 or 5.50000000000000024e-210 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 81.4%
if 3.5000000000000002e-300 < Ev < 5.50000000000000024e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 90.1%
Final simplification81.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= Vef -1.6e+109)
t_1
(if (<= Vef 8e-278)
t_0
(if (<= Vef 1.45e-111)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 2.6e+131) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -1.6e+109) {
tmp = t_1;
} else if (Vef <= 8e-278) {
tmp = t_0;
} else if (Vef <= 1.45e-111) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 2.6e+131) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_1 = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (vef <= (-1.6d+109)) then
tmp = t_1
else if (vef <= 8d-278) then
tmp = t_0
else if (vef <= 1.45d-111) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 2.6d+131) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -1.6e+109) {
tmp = t_1;
} else if (Vef <= 8e-278) {
tmp = t_0;
} else if (Vef <= 1.45e-111) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 2.6e+131) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_1 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if Vef <= -1.6e+109: tmp = t_1 elif Vef <= 8e-278: tmp = t_0 elif Vef <= 1.45e-111: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 2.6e+131: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (Vef <= -1.6e+109) tmp = t_1; elseif (Vef <= 8e-278) tmp = t_0; elseif (Vef <= 1.45e-111) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 2.6e+131) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (Vef <= -1.6e+109) tmp = t_1; elseif (Vef <= 8e-278) tmp = t_0; elseif (Vef <= 1.45e-111) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 2.6e+131) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.6e+109], t$95$1, If[LessEqual[Vef, 8e-278], t$95$0, If[LessEqual[Vef, 1.45e-111], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.6e+131], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.6 \cdot 10^{+109}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 8 \cdot 10^{-278}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 1.45 \cdot 10^{-111}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 2.6 \cdot 10^{+131}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.6000000000000001e109 or 2.6e131 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.5%
Taylor expanded in EAccept around 0 85.3%
if -1.6000000000000001e109 < Vef < 7.9999999999999995e-278 or 1.45000000000000001e-111 < Vef < 2.6e131Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.0%
if 7.9999999999999995e-278 < Vef < 1.45000000000000001e-111Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.7%
Taylor expanded in mu around inf 76.1%
associate-*r/51.9%
mul-1-neg51.9%
Simplified76.1%
Final simplification78.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -3.7e+105)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= Vef -4.4e-66)
t_1
(if (<= Vef -1e-260)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 1.36e+77) t_1 (+ 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double t_2 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -3.7e+105) {
tmp = t_2 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -4.4e-66) {
tmp = t_1;
} else if (Vef <= -1e-260) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 1.36e+77) {
tmp = t_1;
} else {
tmp = t_0 + t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
t_2 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-3.7d+105)) then
tmp = t_2 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (vef <= (-4.4d-66)) then
tmp = t_1
else if (vef <= (-1d-260)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 1.36d+77) then
tmp = t_1
else
tmp = t_0 + t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_2 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -3.7e+105) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -4.4e-66) {
tmp = t_1;
} else if (Vef <= -1e-260) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 1.36e+77) {
tmp = t_1;
} else {
tmp = t_0 + t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) t_2 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -3.7e+105: tmp = t_2 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif Vef <= -4.4e-66: tmp = t_1 elif Vef <= -1e-260: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 1.36e+77: tmp = t_1 else: tmp = t_0 + t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -3.7e+105) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (Vef <= -4.4e-66) tmp = t_1; elseif (Vef <= -1e-260) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 1.36e+77) tmp = t_1; else tmp = Float64(t_0 + t_2); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); t_2 = NdChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -3.7e+105) tmp = t_2 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (Vef <= -4.4e-66) tmp = t_1; elseif (Vef <= -1e-260) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 1.36e+77) tmp = t_1; else tmp = t_0 + t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.7e+105], 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[Vef, -4.4e-66], t$95$1, If[LessEqual[Vef, -1e-260], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.36e+77], t$95$1, N[(t$95$0 + t$95$2), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.7 \cdot 10^{+105}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq -4.4 \cdot 10^{-66}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -1 \cdot 10^{-260}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.36 \cdot 10^{+77}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0 + t\_2\\
\end{array}
\end{array}
if Vef < -3.69999999999999985e105Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.9%
Taylor expanded in EAccept around 0 78.9%
if -3.69999999999999985e105 < Vef < -4.4000000000000002e-66 or -9.99999999999999961e-261 < Vef < 1.3599999999999999e77Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.0%
if -4.4000000000000002e-66 < Vef < -9.99999999999999961e-261Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.2%
if 1.3599999999999999e77 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.7%
Final simplification83.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= NaChar -2.6e+26)
t_0
(if (<= NaChar 1.35e-38)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))
(if (or (<= NaChar 1.3e+98) (not (<= NaChar 4.3e+197)))
t_0
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ 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 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.6e+26) {
tmp = t_0;
} else if (NaChar <= 1.35e-38) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if ((NaChar <= 1.3e+98) || !(NaChar <= 4.3e+197)) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (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 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (nachar <= (-2.6d+26)) then
tmp = t_0
else if (nachar <= 1.35d-38) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
else if ((nachar <= 1.3d+98) .or. (.not. (nachar <= 4.3d+197))) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (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 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.6e+26) {
tmp = t_0;
} else if (NaChar <= 1.35e-38) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if ((NaChar <= 1.3e+98) || !(NaChar <= 4.3e+197)) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if NaChar <= -2.6e+26: tmp = t_0 elif NaChar <= 1.35e-38: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) elif (NaChar <= 1.3e+98) or not (NaChar <= 4.3e+197): tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -2.6e+26) tmp = t_0; elseif (NaChar <= 1.35e-38) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif ((NaChar <= 1.3e+98) || !(NaChar <= 4.3e+197)) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -2.6e+26) tmp = t_0; elseif (NaChar <= 1.35e-38) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); elseif ((NaChar <= 1.3e+98) || ~((NaChar <= 4.3e+197))) tmp = t_0; else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (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[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.6e+26], t$95$0, If[LessEqual[NaChar, 1.35e-38], 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[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 1.3e+98], N[Not[LessEqual[NaChar, 4.3e+197]], $MachinePrecision]], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.6 \cdot 10^{+26}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.35 \cdot 10^{-38}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{+98} \lor \neg \left(NaChar \leq 4.3 \cdot 10^{+197}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -2.60000000000000002e26 or 1.35000000000000003e-38 < NaChar < 1.3e98 or 4.29999999999999996e197 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.3%
Taylor expanded in Vef around inf 46.4%
Taylor expanded in NdChar around 0 77.6%
Simplified77.6%
if -2.60000000000000002e26 < NaChar < 1.35000000000000003e-38Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.5%
Taylor expanded in Ev around 0 71.8%
if 1.3e98 < NaChar < 4.29999999999999996e197Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.1%
Taylor expanded in mu around inf 72.7%
associate-*r/72.7%
mul-1-neg72.7%
Simplified72.7%
Final simplification74.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -1.02e-14)
t_1
(if (<= Vef 7.7e-277)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 9.6e-113)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 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 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -1.02e-14) {
tmp = t_1;
} else if (Vef <= 7.7e-277) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 9.6e-113) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (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 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-1.02d-14)) then
tmp = t_1
else if (vef <= 7.7d-277) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 9.6d-113) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (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 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -1.02e-14) {
tmp = t_1;
} else if (Vef <= 7.7e-277) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 9.6e-113) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (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 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -1.02e-14: tmp = t_1 elif Vef <= 7.7e-277: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 9.6e-113: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (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(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -1.02e-14) tmp = t_1; elseif (Vef <= 7.7e-277) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 9.6e-113) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(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 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -1.02e-14) tmp = t_1; elseif (Vef <= 7.7e-277) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 9.6e-113) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (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[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.02e-14], t$95$1, If[LessEqual[Vef, 7.7e-277], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9.6e-113], 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], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.02 \cdot 10^{-14}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 7.7 \cdot 10^{-277}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9.6 \cdot 10^{-113}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.02e-14 or 9.60000000000000049e-113 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.4%
if -1.02e-14 < Vef < 7.69999999999999972e-277Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.5%
if 7.69999999999999972e-277 < Vef < 9.60000000000000049e-113Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.1%
Taylor expanded in mu around inf 77.0%
associate-*r/51.9%
mul-1-neg51.9%
Simplified77.0%
Final simplification79.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= KbT -1.85e+130)
t_1
(if (<= KbT -6.6e-130)
t_0
(if (<= KbT -1.4e-265)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(if (<= KbT 3.2e+136) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -1.85e+130) {
tmp = t_1;
} else if (KbT <= -6.6e-130) {
tmp = t_0;
} else if (KbT <= -1.4e-265) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else if (KbT <= 3.2e+136) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (kbt <= (-1.85d+130)) then
tmp = t_1
else if (kbt <= (-6.6d-130)) then
tmp = t_0
else if (kbt <= (-1.4d-265)) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else if (kbt <= 3.2d+136) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -1.85e+130) {
tmp = t_1;
} else if (KbT <= -6.6e-130) {
tmp = t_0;
} else if (KbT <= -1.4e-265) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else if (KbT <= 3.2e+136) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if KbT <= -1.85e+130: tmp = t_1 elif KbT <= -6.6e-130: tmp = t_0 elif KbT <= -1.4e-265: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) elif KbT <= 3.2e+136: tmp = t_0 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(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -1.85e+130) tmp = t_1; elseif (KbT <= -6.6e-130) tmp = t_0; elseif (KbT <= -1.4e-265) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); elseif (KbT <= 3.2e+136) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -1.85e+130) tmp = t_1; elseif (KbT <= -6.6e-130) tmp = t_0; elseif (KbT <= -1.4e-265) tmp = NdChar / (1.0 + exp((EDonor / KbT))); elseif (KbT <= 3.2e+136) 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[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.85e+130], t$95$1, If[LessEqual[KbT, -6.6e-130], t$95$0, If[LessEqual[KbT, -1.4e-265], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.2e+136], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -1.85 \cdot 10^{+130}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq -6.6 \cdot 10^{-130}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -1.4 \cdot 10^{-265}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;KbT \leq 3.2 \cdot 10^{+136}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if KbT < -1.8500000000000001e130 or 3.19999999999999988e136 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 86.0%
Taylor expanded in Ev around 0 78.9%
if -1.8500000000000001e130 < KbT < -6.59999999999999961e-130 or -1.40000000000000012e-265 < KbT < 3.19999999999999988e136Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in Vef around inf 41.7%
Taylor expanded in NdChar around 0 65.5%
Simplified65.5%
if -6.59999999999999961e-130 < KbT < -1.40000000000000012e-265Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.1%
Taylor expanded in EDonor around inf 49.2%
Taylor expanded in Ev around 0 24.9%
Taylor expanded in NdChar around inf 59.7%
Final simplification69.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= NaChar -3.8e+25)
t_0
(if (<= NaChar 1.8e-41)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (or (<= NaChar 1.8e+148) (not (<= NaChar 6e+181)))
t_0
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -3.8e+25) {
tmp = t_0;
} else if (NaChar <= 1.8e-41) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NaChar <= 1.8e+148) || !(NaChar <= 6e+181)) {
tmp = t_0;
} else {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (nachar <= (-3.8d+25)) then
tmp = t_0
else if (nachar <= 1.8d-41) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if ((nachar <= 1.8d+148) .or. (.not. (nachar <= 6d+181))) then
tmp = t_0
else
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -3.8e+25) {
tmp = t_0;
} else if (NaChar <= 1.8e-41) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NaChar <= 1.8e+148) || !(NaChar <= 6e+181)) {
tmp = t_0;
} else {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if NaChar <= -3.8e+25: tmp = t_0 elif NaChar <= 1.8e-41: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif (NaChar <= 1.8e+148) or not (NaChar <= 6e+181): tmp = t_0 else: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -3.8e+25) tmp = t_0; elseif (NaChar <= 1.8e-41) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif ((NaChar <= 1.8e+148) || !(NaChar <= 6e+181)) tmp = t_0; else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -3.8e+25) tmp = t_0; elseif (NaChar <= 1.8e-41) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif ((NaChar <= 1.8e+148) || ~((NaChar <= 6e+181))) tmp = t_0; else tmp = NdChar / (1.0 + exp((EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3.8e+25], t$95$0, If[LessEqual[NaChar, 1.8e-41], 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[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 1.8e+148], N[Not[LessEqual[NaChar, 6e+181]], $MachinePrecision]], t$95$0, N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -3.8 \cdot 10^{+25}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.8 \cdot 10^{-41}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 1.8 \cdot 10^{+148} \lor \neg \left(NaChar \leq 6 \cdot 10^{+181}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -3.8e25 or 1.8e-41 < NaChar < 1.80000000000000003e148 or 6.00000000000000024e181 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.5%
Taylor expanded in Vef around inf 44.8%
Taylor expanded in NdChar around 0 75.2%
Simplified75.2%
if -3.8e25 < NaChar < 1.8e-41Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 79.7%
Taylor expanded in EAccept around 0 71.3%
if 1.80000000000000003e148 < NaChar < 6.00000000000000024e181Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 100.0%
Taylor expanded in EDonor around inf 100.0%
Taylor expanded in Ev around 0 60.7%
Taylor expanded in NdChar around inf 100.0%
Final simplification73.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= KbT -1.3e+134)
(+ t_1 (/ NaChar 2.0))
(if (<= KbT -2.15e-131)
t_0
(if (<= KbT -3.5e-266)
t_1
(if (<= KbT 7.5e+137)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (KbT <= -1.3e+134) {
tmp = t_1 + (NaChar / 2.0);
} else if (KbT <= -2.15e-131) {
tmp = t_0;
} else if (KbT <= -3.5e-266) {
tmp = t_1;
} else if (KbT <= 7.5e+137) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (kbt <= (-1.3d+134)) then
tmp = t_1 + (nachar / 2.0d0)
else if (kbt <= (-2.15d-131)) then
tmp = t_0
else if (kbt <= (-3.5d-266)) then
tmp = t_1
else if (kbt <= 7.5d+137) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (KbT <= -1.3e+134) {
tmp = t_1 + (NaChar / 2.0);
} else if (KbT <= -2.15e-131) {
tmp = t_0;
} else if (KbT <= -3.5e-266) {
tmp = t_1;
} else if (KbT <= 7.5e+137) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if KbT <= -1.3e+134: tmp = t_1 + (NaChar / 2.0) elif KbT <= -2.15e-131: tmp = t_0 elif KbT <= -3.5e-266: tmp = t_1 elif KbT <= 7.5e+137: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (KbT <= -1.3e+134) tmp = Float64(t_1 + Float64(NaChar / 2.0)); elseif (KbT <= -2.15e-131) tmp = t_0; elseif (KbT <= -3.5e-266) tmp = t_1; elseif (KbT <= 7.5e+137) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (KbT <= -1.3e+134) tmp = t_1 + (NaChar / 2.0); elseif (KbT <= -2.15e-131) tmp = t_0; elseif (KbT <= -3.5e-266) tmp = t_1; elseif (KbT <= 7.5e+137) tmp = t_0; else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.3e+134], N[(t$95$1 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -2.15e-131], t$95$0, If[LessEqual[KbT, -3.5e-266], t$95$1, If[LessEqual[KbT, 7.5e+137], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.3 \cdot 10^{+134}:\\
\;\;\;\;t\_1 + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq -2.15 \cdot 10^{-131}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -3.5 \cdot 10^{-266}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 7.5 \cdot 10^{+137}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -1.3000000000000001e134Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 86.2%
Taylor expanded in EDonor around inf 74.9%
Taylor expanded in Ev around 0 66.6%
if -1.3000000000000001e134 < KbT < -2.15000000000000009e-131 or -3.50000000000000029e-266 < KbT < 7.50000000000000025e137Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in Vef around inf 41.2%
Taylor expanded in NdChar around 0 65.1%
Simplified65.1%
if -2.15000000000000009e-131 < KbT < -3.50000000000000029e-266Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.1%
Taylor expanded in EDonor around inf 49.2%
Taylor expanded in Ev around 0 24.9%
Taylor expanded in NdChar around inf 59.7%
if 7.50000000000000025e137 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 89.5%
Taylor expanded in Ev around 0 85.1%
Taylor expanded in mu around inf 79.7%
Final simplification66.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -1.45e+134)
(+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) (/ NdChar 2.0))
(if (<= KbT -2.15e-131)
t_0
(if (<= KbT -1.7e-265)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(if (<= KbT 6.2e+136)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -1.45e+134) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -2.15e-131) {
tmp = t_0;
} else if (KbT <= -1.7e-265) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else if (KbT <= 6.2e+136) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-1.45d+134)) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= (-2.15d-131)) then
tmp = t_0
else if (kbt <= (-1.7d-265)) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else if (kbt <= 6.2d+136) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -1.45e+134) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -2.15e-131) {
tmp = t_0;
} else if (KbT <= -1.7e-265) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else if (KbT <= 6.2e+136) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -1.45e+134: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) elif KbT <= -2.15e-131: tmp = t_0 elif KbT <= -1.7e-265: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) elif KbT <= 6.2e+136: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -1.45e+134) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= -2.15e-131) tmp = t_0; elseif (KbT <= -1.7e-265) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); elseif (KbT <= 6.2e+136) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -1.45e+134) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); elseif (KbT <= -2.15e-131) tmp = t_0; elseif (KbT <= -1.7e-265) tmp = NdChar / (1.0 + exp((EDonor / KbT))); elseif (KbT <= 6.2e+136) tmp = t_0; else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.45e+134], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -2.15e-131], t$95$0, If[LessEqual[KbT, -1.7e-265], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 6.2e+136], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.45 \cdot 10^{+134}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -2.15 \cdot 10^{-131}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -1.7 \cdot 10^{-265}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;KbT \leq 6.2 \cdot 10^{+136}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -1.45000000000000006e134Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.5%
Taylor expanded in EAccept around 0 70.3%
if -1.45000000000000006e134 < KbT < -2.15000000000000009e-131 or -1.7e-265 < KbT < 6.19999999999999967e136Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in Vef around inf 41.2%
Taylor expanded in NdChar around 0 65.1%
Simplified65.1%
if -2.15000000000000009e-131 < KbT < -1.7e-265Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.1%
Taylor expanded in EDonor around inf 49.2%
Taylor expanded in Ev around 0 24.9%
Taylor expanded in NdChar around inf 59.7%
if 6.19999999999999967e136 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 89.5%
Taylor expanded in Ev around 0 85.1%
Taylor expanded in mu around inf 79.7%
Final simplification67.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -1.6e+134)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar 2.0))
(if (<= KbT -6.6e-130)
t_0
(if (<= KbT -1.7e-265)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(if (<= KbT 5.8e+137)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -1.6e+134) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -6.6e-130) {
tmp = t_0;
} else if (KbT <= -1.7e-265) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else if (KbT <= 5.8e+137) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-1.6d+134)) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= (-6.6d-130)) then
tmp = t_0
else if (kbt <= (-1.7d-265)) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else if (kbt <= 5.8d+137) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -1.6e+134) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -6.6e-130) {
tmp = t_0;
} else if (KbT <= -1.7e-265) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else if (KbT <= 5.8e+137) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -1.6e+134: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0) elif KbT <= -6.6e-130: tmp = t_0 elif KbT <= -1.7e-265: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) elif KbT <= 5.8e+137: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -1.6e+134) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= -6.6e-130) tmp = t_0; elseif (KbT <= -1.7e-265) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); elseif (KbT <= 5.8e+137) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -1.6e+134) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0); elseif (KbT <= -6.6e-130) tmp = t_0; elseif (KbT <= -1.7e-265) tmp = NdChar / (1.0 + exp((EDonor / KbT))); elseif (KbT <= 5.8e+137) tmp = t_0; else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.6e+134], 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 / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -6.6e-130], t$95$0, If[LessEqual[KbT, -1.7e-265], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 5.8e+137], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.6 \cdot 10^{+134}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -6.6 \cdot 10^{-130}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -1.7 \cdot 10^{-265}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;KbT \leq 5.8 \cdot 10^{+137}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -1.6e134Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.5%
if -1.6e134 < KbT < -6.59999999999999961e-130 or -1.7e-265 < KbT < 5.79999999999999969e137Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in Vef around inf 41.2%
Taylor expanded in NdChar around 0 65.1%
Simplified65.1%
if -6.59999999999999961e-130 < KbT < -1.7e-265Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.1%
Taylor expanded in EDonor around inf 49.2%
Taylor expanded in Ev around 0 24.9%
Taylor expanded in NdChar around inf 59.7%
if 5.79999999999999969e137 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 89.5%
Taylor expanded in Ev around 0 85.1%
Taylor expanded in mu around inf 79.7%
Final simplification67.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_1 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))))
(if (<= KbT -3e+134)
t_1
(if (<= KbT -7.6e+23)
t_0
(if (<= KbT -2.4e-69)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 1.05e+29) 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)));
double t_1 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
double tmp;
if (KbT <= -3e+134) {
tmp = t_1;
} else if (KbT <= -7.6e+23) {
tmp = t_0;
} else if (KbT <= -2.4e-69) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.05e+29) {
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)))
t_1 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
if (kbt <= (-3d+134)) then
tmp = t_1
else if (kbt <= (-7.6d+23)) then
tmp = t_0
else if (kbt <= (-2.4d-69)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 1.05d+29) 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)));
double t_1 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
double tmp;
if (KbT <= -3e+134) {
tmp = t_1;
} else if (KbT <= -7.6e+23) {
tmp = t_0;
} else if (KbT <= -2.4e-69) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.05e+29) {
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))) t_1 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) tmp = 0 if KbT <= -3e+134: tmp = t_1 elif KbT <= -7.6e+23: tmp = t_0 elif KbT <= -2.4e-69: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 1.05e+29: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (KbT <= -3e+134) tmp = t_1; elseif (KbT <= -7.6e+23) tmp = t_0; elseif (KbT <= -2.4e-69) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 1.05e+29) 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))); t_1 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (KbT <= -3e+134) tmp = t_1; elseif (KbT <= -7.6e+23) tmp = t_0; elseif (KbT <= -2.4e-69) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 1.05e+29) 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[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -3e+134], t$95$1, If[LessEqual[KbT, -7.6e+23], t$95$0, If[LessEqual[KbT, -2.4e-69], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.05e+29], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;KbT \leq -3 \cdot 10^{+134}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq -7.6 \cdot 10^{+23}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -2.4 \cdot 10^{-69}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 1.05 \cdot 10^{+29}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if KbT < -2.99999999999999997e134 or 1.0500000000000001e29 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.2%
Taylor expanded in Ev around inf 61.4%
if -2.99999999999999997e134 < KbT < -7.5999999999999995e23 or -2.4000000000000001e-69 < KbT < 1.0500000000000001e29Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 63.5%
Taylor expanded in EDonor around inf 38.6%
Taylor expanded in Ev around 0 21.5%
Taylor expanded in NdChar around inf 38.6%
if -7.5999999999999995e23 < KbT < -2.4000000000000001e-69Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.7%
Taylor expanded in EAccept around inf 30.5%
Final simplification46.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -7e+28) (not (<= NaChar 1.6e-39)))
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7e+28) || !(NaChar <= 1.6e-39)) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-7d+28)) .or. (.not. (nachar <= 1.6d-39))) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7e+28) || !(NaChar <= 1.6e-39)) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -7e+28) or not (NaChar <= 1.6e-39): tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -7e+28) || !(NaChar <= 1.6e-39)) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -7e+28) || ~((NaChar <= 1.6e-39))) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -7e+28], N[Not[LessEqual[NaChar, 1.6e-39]], $MachinePrecision]], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7 \cdot 10^{+28} \lor \neg \left(NaChar \leq 1.6 \cdot 10^{-39}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -6.9999999999999999e28 or 1.5999999999999999e-39 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.2%
Taylor expanded in Vef around inf 43.2%
Taylor expanded in NdChar around 0 72.3%
Simplified72.3%
if -6.9999999999999999e28 < NaChar < 1.5999999999999999e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.5%
Taylor expanded in Ev around 0 71.8%
Final simplification72.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= EDonor -8e+104) (not (<= EDonor 2.4e-117))) (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -8e+104) || !(EDonor <= 2.4e-117)) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((edonor <= (-8d+104)) .or. (.not. (edonor <= 2.4d-117))) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -8e+104) || !(EDonor <= 2.4e-117)) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (EDonor <= -8e+104) or not (EDonor <= 2.4e-117): tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((EDonor <= -8e+104) || !(EDonor <= 2.4e-117)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((EDonor <= -8e+104) || ~((EDonor <= 2.4e-117))) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[EDonor, -8e+104], N[Not[LessEqual[EDonor, 2.4e-117]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -8 \cdot 10^{+104} \lor \neg \left(EDonor \leq 2.4 \cdot 10^{-117}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EDonor < -8e104 or 2.40000000000000014e-117 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.6%
Taylor expanded in EDonor around inf 53.3%
Taylor expanded in Ev around 0 35.5%
Taylor expanded in NdChar around inf 45.4%
if -8e104 < EDonor < 2.40000000000000014e-117Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.5%
Taylor expanded in EAccept around inf 42.8%
Final simplification44.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= KbT -9.5e+175)
(+ t_0 (/ NaChar 2.0))
(if (<= KbT 9.2e+29)
t_0
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (KbT <= -9.5e+175) {
tmp = t_0 + (NaChar / 2.0);
} else if (KbT <= 9.2e+29) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (kbt <= (-9.5d+175)) then
tmp = t_0 + (nachar / 2.0d0)
else if (kbt <= 9.2d+29) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (KbT <= -9.5e+175) {
tmp = t_0 + (NaChar / 2.0);
} else if (KbT <= 9.2e+29) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if KbT <= -9.5e+175: tmp = t_0 + (NaChar / 2.0) elif KbT <= 9.2e+29: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (KbT <= -9.5e+175) tmp = Float64(t_0 + Float64(NaChar / 2.0)); elseif (KbT <= 9.2e+29) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (KbT <= -9.5e+175) tmp = t_0 + (NaChar / 2.0); elseif (KbT <= 9.2e+29) tmp = t_0; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9.5e+175], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 9.2e+29], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;KbT \leq -9.5 \cdot 10^{+175}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 9.2 \cdot 10^{+29}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -9.5000000000000006e175Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.7%
Taylor expanded in EDonor around inf 74.5%
Taylor expanded in Ev around 0 70.8%
if -9.5000000000000006e175 < KbT < 9.2000000000000004e29Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 63.2%
Taylor expanded in EDonor around inf 38.7%
Taylor expanded in Ev around 0 22.2%
Taylor expanded in NdChar around inf 35.9%
if 9.2000000000000004e29 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.6%
Taylor expanded in Ev around inf 59.3%
Final simplification45.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= KbT -8.2e+178)
(+ t_0 (/ NaChar 2.0))
(if (<= KbT 3.6e+29)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (KbT <= -8.2e+178) {
tmp = t_0 + (NaChar / 2.0);
} else if (KbT <= 3.6e+29) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (kbt <= (-8.2d+178)) then
tmp = t_0 + (nachar / 2.0d0)
else if (kbt <= 3.6d+29) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (KbT <= -8.2e+178) {
tmp = t_0 + (NaChar / 2.0);
} else if (KbT <= 3.6e+29) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if KbT <= -8.2e+178: tmp = t_0 + (NaChar / 2.0) elif KbT <= 3.6e+29: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (KbT <= -8.2e+178) tmp = Float64(t_0 + Float64(NaChar / 2.0)); elseif (KbT <= 3.6e+29) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (KbT <= -8.2e+178) tmp = t_0 + (NaChar / 2.0); elseif (KbT <= 3.6e+29) tmp = t_0; else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8.2e+178], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.6e+29], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;KbT \leq -8.2 \cdot 10^{+178}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 3.6 \cdot 10^{+29}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -8.19999999999999993e178Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.7%
Taylor expanded in EDonor around inf 74.5%
Taylor expanded in Ev around 0 70.8%
if -8.19999999999999993e178 < KbT < 3.59999999999999976e29Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 63.2%
Taylor expanded in EDonor around inf 38.7%
Taylor expanded in Ev around 0 22.2%
Taylor expanded in NdChar around inf 35.9%
if 3.59999999999999976e29 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 80.3%
Taylor expanded in Ev around 0 71.6%
Taylor expanded in mu around inf 60.6%
Final simplification45.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.02e+176)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 1.4e+34)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(+ (/ NaChar (+ (/ EAccept KbT) 2.0)) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.02e+176) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.4e+34) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = (NaChar / ((EAccept / KbT) + 2.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.02d+176)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 1.4d+34) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = (nachar / ((eaccept / kbt) + 2.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.02e+176) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.4e+34) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = (NaChar / ((EAccept / KbT) + 2.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.02e+176: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 1.4e+34: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = (NaChar / ((EAccept / KbT) + 2.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.02e+176) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 1.4e+34) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = Float64(Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.02e+176) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 1.4e+34) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = (NaChar / ((EAccept / KbT) + 2.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.02e+176], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.4e+34], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.02 \cdot 10^{+176}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 1.4 \cdot 10^{+34}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{EAccept}{KbT} + 2} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -1.02000000000000001e176Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.7%
Taylor expanded in EDonor around inf 74.5%
Taylor expanded in Ev around 0 70.8%
Taylor expanded in EDonor around 0 62.7%
distribute-lft-out62.7%
Simplified62.7%
if -1.02000000000000001e176 < KbT < 1.40000000000000004e34Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 63.2%
Taylor expanded in EDonor around inf 38.7%
Taylor expanded in Ev around 0 22.2%
Taylor expanded in NdChar around inf 35.9%
if 1.40000000000000004e34 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.6%
Taylor expanded in EAccept around inf 55.0%
Taylor expanded in EAccept around 0 51.4%
Final simplification42.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.8%
Taylor expanded in EDonor around inf 48.5%
Taylor expanded in Ev around 0 35.7%
Taylor expanded in EDonor around 0 28.5%
distribute-lft-out28.5%
Simplified28.5%
Final simplification28.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 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 = 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 NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.8%
Taylor expanded in EDonor around inf 48.5%
Taylor expanded in Ev around 0 35.7%
Taylor expanded in NdChar around 0 17.3%
*-commutative17.3%
Simplified17.3%
Final simplification17.3%
herbie shell --seed 2024052
(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))))))