
(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 22 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 (+ 1.0 (exp (/ (+ Vef (- EAccept (- mu Ev))) 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 / (1.0 + exp(((Vef + (EAccept - (mu - Ev))) / 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 / (1.0d0 + exp(((vef + (eaccept - (mu - ev))) / 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 / (1.0 + Math.exp(((Vef + (EAccept - (mu - Ev))) / 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 / (1.0 + math.exp(((Vef + (EAccept - (mu - Ev))) / 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 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - Float64(mu - Ev))) / 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 / (1.0 + exp(((Vef + (EAccept - (mu - Ev))) / 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[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - N[(mu - Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(EAccept - \left(mu - Ev\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
div-inv100.0%
+-commutative100.0%
associate-+l-100.0%
Applied egg-rr100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
(if (<= NaChar -2.25e+53)
t_1
(if (<= NaChar -1.45e-42)
(+ (/ NdChar t_0) (/ NaChar t_0))
(if (<= NaChar -1.6e-167)
t_1
(if (<= NaChar 8.2e-147)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -2.25e+53) {
tmp = t_1;
} else if (NaChar <= -1.45e-42) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (NaChar <= -1.6e-167) {
tmp = t_1;
} else if (NaChar <= 8.2e-147) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
if (nachar <= (-2.25d+53)) then
tmp = t_1
else if (nachar <= (-1.45d-42)) then
tmp = (ndchar / t_0) + (nachar / t_0)
else if (nachar <= (-1.6d-167)) then
tmp = t_1
else if (nachar <= 8.2d-147) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -2.25e+53) {
tmp = t_1;
} else if (NaChar <= -1.45e-42) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (NaChar <= -1.6e-167) {
tmp = t_1;
} else if (NaChar <= 8.2e-147) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) tmp = 0 if NaChar <= -2.25e+53: tmp = t_1 elif NaChar <= -1.45e-42: tmp = (NdChar / t_0) + (NaChar / t_0) elif NaChar <= -1.6e-167: tmp = t_1 elif NaChar <= 8.2e-147: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) tmp = 0.0 if (NaChar <= -2.25e+53) tmp = t_1; elseif (NaChar <= -1.45e-42) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)); elseif (NaChar <= -1.6e-167) tmp = t_1; elseif (NaChar <= 8.2e-147) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); tmp = 0.0; if (NaChar <= -2.25e+53) tmp = t_1; elseif (NaChar <= -1.45e-42) tmp = (NdChar / t_0) + (NaChar / t_0); elseif (NaChar <= -1.6e-167) tmp = t_1; elseif (NaChar <= 8.2e-147) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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]}, If[LessEqual[NaChar, -2.25e+53], t$95$1, If[LessEqual[NaChar, -1.45e-42], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.6e-167], t$95$1, If[LessEqual[NaChar, 8.2e-147], 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[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.25 \cdot 10^{+53}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.45 \cdot 10^{-42}:\\
\;\;\;\;\frac{NdChar}{t\_0} + \frac{NaChar}{t\_0}\\
\mathbf{elif}\;NaChar \leq -1.6 \cdot 10^{-167}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 8.2 \cdot 10^{-147}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -2.2500000000000001e53 or -1.4500000000000001e-42 < NaChar < -1.6000000000000001e-167 or 8.1999999999999999e-147 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.9%
if -2.2500000000000001e53 < NaChar < -1.4500000000000001e-42Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in Vef around inf 100.0%
if -1.6000000000000001e-167 < NaChar < 8.1999999999999999e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.4%
Taylor expanded in EAccept around 0 70.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_0))
(t_2 (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_0))
(t_3 (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu -2e+234)
t_2
(if (<= mu 5.2e-107)
t_1
(if (<= mu 4e-68)
(+ (/ NdChar t_3) (/ NaChar t_3))
(if (<= mu 5.5e+153) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0;
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + t_0;
double t_3 = 1.0 + exp((Vef / KbT));
double tmp;
if (mu <= -2e+234) {
tmp = t_2;
} else if (mu <= 5.2e-107) {
tmp = t_1;
} else if (mu <= 4e-68) {
tmp = (NdChar / t_3) + (NaChar / t_3);
} else if (mu <= 5.5e+153) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_0
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_0
t_3 = 1.0d0 + exp((vef / kbt))
if (mu <= (-2d+234)) then
tmp = t_2
else if (mu <= 5.2d-107) then
tmp = t_1
else if (mu <= 4d-68) then
tmp = (ndchar / t_3) + (nachar / t_3)
else if (mu <= 5.5d+153) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_0;
double t_3 = 1.0 + Math.exp((Vef / KbT));
double tmp;
if (mu <= -2e+234) {
tmp = t_2;
} else if (mu <= 5.2e-107) {
tmp = t_1;
} else if (mu <= 4e-68) {
tmp = (NdChar / t_3) + (NaChar / t_3);
} else if (mu <= 5.5e+153) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_0 t_3 = 1.0 + math.exp((Vef / KbT)) tmp = 0 if mu <= -2e+234: tmp = t_2 elif mu <= 5.2e-107: tmp = t_1 elif mu <= 4e-68: tmp = (NdChar / t_3) + (NaChar / t_3) elif mu <= 5.5e+153: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_0) t_3 = Float64(1.0 + exp(Float64(Vef / KbT))) tmp = 0.0 if (mu <= -2e+234) tmp = t_2; elseif (mu <= 5.2e-107) tmp = t_1; elseif (mu <= 4e-68) tmp = Float64(Float64(NdChar / t_3) + Float64(NaChar / t_3)); elseif (mu <= 5.5e+153) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + t_0; t_3 = 1.0 + exp((Vef / KbT)); tmp = 0.0; if (mu <= -2e+234) tmp = t_2; elseif (mu <= 5.2e-107) tmp = t_1; elseif (mu <= 4e-68) tmp = (NdChar / t_3) + (NaChar / t_3); elseif (mu <= 5.5e+153) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2e+234], t$95$2, If[LessEqual[mu, 5.2e-107], t$95$1, If[LessEqual[mu, 4e-68], N[(N[(NdChar / t$95$3), $MachinePrecision] + N[(NaChar / t$95$3), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 5.5e+153], t$95$1, t$95$2]]]]]]]]
\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}{KbT}}} + t\_0\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t\_0\\
t_3 := 1 + e^{\frac{Vef}{KbT}}\\
\mathbf{if}\;mu \leq -2 \cdot 10^{+234}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq 5.2 \cdot 10^{-107}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 4 \cdot 10^{-68}:\\
\;\;\;\;\frac{NdChar}{t\_3} + \frac{NaChar}{t\_3}\\
\mathbf{elif}\;mu \leq 5.5 \cdot 10^{+153}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.00000000000000004e234 or 5.5000000000000003e153 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.4%
if -2.00000000000000004e234 < mu < 5.2000000000000001e-107 or 4.00000000000000027e-68 < mu < 5.5000000000000003e153Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.2%
if 5.2000000000000001e-107 < mu < 4.00000000000000027e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.7%
Taylor expanded in Vef around inf 83.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1)))
(if (<= EDonor -8e-83)
t_2
(if (<= EDonor 9.2e-234)
t_0
(if (<= EDonor 1.85e-169)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_1)
(if (<= EDonor 8e-75) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1;
double tmp;
if (EDonor <= -8e-83) {
tmp = t_2;
} else if (EDonor <= 9.2e-234) {
tmp = t_0;
} else if (EDonor <= 1.85e-169) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1;
} else if (EDonor <= 8e-75) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_1
if (edonor <= (-8d-83)) then
tmp = t_2
else if (edonor <= 9.2d-234) then
tmp = t_0
else if (edonor <= 1.85d-169) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_1
else if (edonor <= 8d-75) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_1;
double tmp;
if (EDonor <= -8e-83) {
tmp = t_2;
} else if (EDonor <= 9.2e-234) {
tmp = t_0;
} else if (EDonor <= 1.85e-169) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_1;
} else if (EDonor <= 8e-75) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_1 tmp = 0 if EDonor <= -8e-83: tmp = t_2 elif EDonor <= 9.2e-234: tmp = t_0 elif EDonor <= 1.85e-169: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_1 elif EDonor <= 8e-75: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_1) tmp = 0.0 if (EDonor <= -8e-83) tmp = t_2; elseif (EDonor <= 9.2e-234) tmp = t_0; elseif (EDonor <= 1.85e-169) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_1); elseif (EDonor <= 8e-75) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1; tmp = 0.0; if (EDonor <= -8e-83) tmp = t_2; elseif (EDonor <= 9.2e-234) tmp = t_0; elseif (EDonor <= 1.85e-169) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1; elseif (EDonor <= 8e-75) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[EDonor, -8e-83], t$95$2, If[LessEqual[EDonor, 9.2e-234], t$95$0, If[LessEqual[EDonor, 1.85e-169], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[EDonor, 8e-75], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_1\\
\mathbf{if}\;EDonor \leq -8 \cdot 10^{-83}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EDonor \leq 9.2 \cdot 10^{-234}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 1.85 \cdot 10^{-169}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t\_1\\
\mathbf{elif}\;EDonor \leq 8 \cdot 10^{-75}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EDonor < -8.0000000000000003e-83 or 7.9999999999999997e-75 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.9%
if -8.0000000000000003e-83 < EDonor < 9.19999999999999961e-234 or 1.8499999999999999e-169 < EDonor < 7.9999999999999997e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
if 9.19999999999999961e-234 < EDonor < 1.8499999999999999e-169Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -1.1e+172)
t_1
(if (<= Vef -6.3e+56)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= Vef -6.8e-19)
t_1
(if (<= Vef 1.15e+179)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -1.1e+172) {
tmp = t_1;
} else if (Vef <= -6.3e+56) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= -6.8e-19) {
tmp = t_1;
} else if (Vef <= 1.15e+179) {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-1.1d+172)) then
tmp = t_1
else if (vef <= (-6.3d+56)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else if (vef <= (-6.8d-19)) then
tmp = t_1
else if (vef <= 1.15d+179) then
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -1.1e+172) {
tmp = t_1;
} else if (Vef <= -6.3e+56) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= -6.8e-19) {
tmp = t_1;
} else if (Vef <= 1.15e+179) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -1.1e+172: tmp = t_1 elif Vef <= -6.3e+56: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif Vef <= -6.8e-19: tmp = t_1 elif Vef <= 1.15e+179: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -1.1e+172) tmp = t_1; elseif (Vef <= -6.3e+56) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (Vef <= -6.8e-19) tmp = t_1; elseif (Vef <= 1.15e+179) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -1.1e+172) tmp = t_1; elseif (Vef <= -6.3e+56) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); elseif (Vef <= -6.8e-19) tmp = t_1; elseif (Vef <= 1.15e+179) tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.1e+172], t$95$1, If[LessEqual[Vef, -6.3e+56], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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], If[LessEqual[Vef, -6.8e-19], t$95$1, If[LessEqual[Vef, 1.15e+179], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.1 \cdot 10^{+172}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -6.3 \cdot 10^{+56}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;Vef \leq -6.8 \cdot 10^{-19}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 1.15 \cdot 10^{+179}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.1000000000000001e172 or -6.3000000000000001e56 < Vef < -6.8000000000000004e-19 or 1.14999999999999997e179 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.2%
if -1.1000000000000001e172 < Vef < -6.3000000000000001e56Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 84.7%
if -6.8000000000000004e-19 < Vef < 1.14999999999999997e179Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= Vef -2.3e+183)
(+ t_1 (/ NaChar (+ 2.0 (/ Vef KbT))))
(if (<= Vef -8.5e-127)
(+
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
t_0)
(if (<= Vef -4.7e-228)
(+ t_1 (/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(if (<= Vef 1.8e-191)
(+ (/ NdChar (+ 2.0 (/ EDonor KbT))) t_0)
(if (<= Vef 8.6e+198)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(+
(/ NdChar (/ Vef KbT))
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double 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 (Vef <= -2.3e+183) {
tmp = t_1 + (NaChar / (2.0 + (Vef / KbT)));
} else if (Vef <= -8.5e-127) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_0;
} else if (Vef <= -4.7e-228) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (Vef <= 1.8e-191) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_0;
} else if (Vef <= 8.6e+198) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: 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 (vef <= (-2.3d+183)) then
tmp = t_1 + (nachar / (2.0d0 + (vef / kbt)))
else if (vef <= (-8.5d-127)) then
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + t_0
else if (vef <= (-4.7d-228)) then
tmp = t_1 + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else if (vef <= 1.8d-191) then
tmp = (ndchar / (2.0d0 + (edonor / kbt))) + t_0
else if (vef <= 8.6d+198) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar / (vef / kbt)) + (nachar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double 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 (Vef <= -2.3e+183) {
tmp = t_1 + (NaChar / (2.0 + (Vef / KbT)));
} else if (Vef <= -8.5e-127) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_0;
} else if (Vef <= -4.7e-228) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (Vef <= 1.8e-191) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_0;
} else if (Vef <= 8.6e+198) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + Math.exp((Vef / 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 Vef <= -2.3e+183: tmp = t_1 + (NaChar / (2.0 + (Vef / KbT))) elif Vef <= -8.5e-127: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_0 elif Vef <= -4.7e-228: tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) elif Vef <= 1.8e-191: tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_0 elif Vef <= 8.6e+198: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + math.exp((Vef / 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 (Vef <= -2.3e+183) tmp = Float64(t_1 + Float64(NaChar / Float64(2.0 + Float64(Vef / KbT)))); elseif (Vef <= -8.5e-127) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + t_0); elseif (Vef <= -4.7e-228) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); elseif (Vef <= 1.8e-191) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) + t_0); elseif (Vef <= 8.6e+198) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar / Float64(Vef / KbT)) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / 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 (Vef <= -2.3e+183) tmp = t_1 + (NaChar / (2.0 + (Vef / KbT))); elseif (Vef <= -8.5e-127) tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_0; elseif (Vef <= -4.7e-228) tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); elseif (Vef <= 1.8e-191) tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_0; elseif (Vef <= 8.6e+198) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + exp((Vef / 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[Vef, -2.3e+183], N[(t$95$1 + N[(NaChar / N[(2.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -8.5e-127], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, -4.7e-228], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.8e-191], N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 8.6e+198], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / 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}\;Vef \leq -2.3 \cdot 10^{+183}:\\
\;\;\;\;t\_1 + \frac{NaChar}{2 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;Vef \leq -8.5 \cdot 10^{-127}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + t\_0\\
\mathbf{elif}\;Vef \leq -4.7 \cdot 10^{-228}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{elif}\;Vef \leq 1.8 \cdot 10^{-191}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}} + t\_0\\
\mathbf{elif}\;Vef \leq 8.6 \cdot 10^{+198}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.2999999999999998e183Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 83.9%
Taylor expanded in Vef around 0 63.3%
if -2.2999999999999998e183 < Vef < -8.5e-127Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.5%
if -8.5e-127 < Vef < -4.7000000000000002e-228Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 81.6%
Taylor expanded in EAccept around 0 77.3%
if -4.7000000000000002e-228 < Vef < 1.8000000000000001e-191Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.9%
Taylor expanded in EDonor around 0 72.5%
if 1.8000000000000001e-191 < Vef < 8.59999999999999965e198Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.9%
Taylor expanded in EAccept around inf 67.0%
if 8.59999999999999965e198 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 96.9%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Vef around inf 73.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (+ (/ NdChar t_0) (/ NaChar t_0)))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= Vef -6.2e+171)
t_1
(if (<= Vef -5.9e+51)
(+ (/ NdChar (+ 2.0 (/ EDonor KbT))) t_2)
(if (<= Vef -145000.0)
t_1
(if (<= Vef -8.2e-128)
(+
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))
t_2)
(if (<= Vef 6e+178)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NdChar / t_0) + (NaChar / t_0);
double t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (Vef <= -6.2e+171) {
tmp = t_1;
} else if (Vef <= -5.9e+51) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_2;
} else if (Vef <= -145000.0) {
tmp = t_1;
} else if (Vef <= -8.2e-128) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_2;
} else if (Vef <= 6e+178) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (ndchar / t_0) + (nachar / t_0)
t_2 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (vef <= (-6.2d+171)) then
tmp = t_1
else if (vef <= (-5.9d+51)) then
tmp = (ndchar / (2.0d0 + (edonor / kbt))) + t_2
else if (vef <= (-145000.0d0)) then
tmp = t_1
else if (vef <= (-8.2d-128)) then
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + t_2
else if (vef <= 6d+178) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / t_0) + (NaChar / t_0);
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (Vef <= -6.2e+171) {
tmp = t_1;
} else if (Vef <= -5.9e+51) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_2;
} else if (Vef <= -145000.0) {
tmp = t_1;
} else if (Vef <= -8.2e-128) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_2;
} else if (Vef <= 6e+178) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NdChar / t_0) + (NaChar / t_0) t_2 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if Vef <= -6.2e+171: tmp = t_1 elif Vef <= -5.9e+51: tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_2 elif Vef <= -145000.0: tmp = t_1 elif Vef <= -8.2e-128: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_2 elif Vef <= 6e+178: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (Vef <= -6.2e+171) tmp = t_1; elseif (Vef <= -5.9e+51) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) + t_2); elseif (Vef <= -145000.0) tmp = t_1; elseif (Vef <= -8.2e-128) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + t_2); elseif (Vef <= 6e+178) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NdChar / t_0) + (NaChar / t_0); t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (Vef <= -6.2e+171) tmp = t_1; elseif (Vef <= -5.9e+51) tmp = (NdChar / (2.0 + (EDonor / KbT))) + t_2; elseif (Vef <= -145000.0) tmp = t_1; elseif (Vef <= -8.2e-128) tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + t_2; elseif (Vef <= 6e+178) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6.2e+171], t$95$1, If[LessEqual[Vef, -5.9e+51], N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision], If[LessEqual[Vef, -145000.0], t$95$1, If[LessEqual[Vef, -8.2e-128], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision], If[LessEqual[Vef, 6e+178], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{t\_0} + \frac{NaChar}{t\_0}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -6.2 \cdot 10^{+171}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -5.9 \cdot 10^{+51}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}} + t\_2\\
\mathbf{elif}\;Vef \leq -145000:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -8.2 \cdot 10^{-128}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + t\_2\\
\mathbf{elif}\;Vef \leq 6 \cdot 10^{+178}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -6.1999999999999998e171 or -5.89999999999999983e51 < Vef < -145000 or 6.00000000000000031e178 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 92.1%
Taylor expanded in Vef around inf 80.9%
if -6.1999999999999998e171 < Vef < -5.89999999999999983e51Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 84.7%
Taylor expanded in EDonor around 0 60.2%
if -145000 < Vef < -8.1999999999999999e-128Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.9%
if -8.1999999999999999e-128 < Vef < 6.00000000000000031e178Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.2%
Taylor expanded in EAccept around inf 65.3%
(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%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -2.65e+41)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev -4.6e-76)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ Vef KbT))))
(+
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ 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) {
double tmp;
if (Ev <= -2.65e+41) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= -4.6e-76) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
} else {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-2.65d+41)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= (-4.6d-76)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (vef / kbt)))
else
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.65e+41) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= -4.6e-76) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
} else {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.65e+41: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= -4.6e-76: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))) else: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.65e+41) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= -4.6e-76) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -2.65e+41) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= -4.6e-76) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))); else tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.65e+41], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -4.6e-76], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $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}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.65 \cdot 10^{+41}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -4.6 \cdot 10^{-76}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if Ev < -2.6499999999999998e41Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.2%
Taylor expanded in Ev around inf 63.2%
if -2.6499999999999998e41 < Ev < -4.60000000000000012e-76Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 75.8%
Taylor expanded in Vef around 0 66.5%
if -4.60000000000000012e-76 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -7.2e+200)
(+ t_1 (/ NaChar (+ 2.0 (/ Vef KbT))))
(if (<= NdChar -2.1e+184)
t_0
(if (<= NdChar -3.4e-17)
(+ t_1 (/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(if (<= NdChar 5.6e+134) t_0 (+ t_1 (* 0.5 NaChar))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -7.2e+200) {
tmp = t_1 + (NaChar / (2.0 + (Vef / KbT)));
} else if (NdChar <= -2.1e+184) {
tmp = t_0;
} else if (NdChar <= -3.4e-17) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (NdChar <= 5.6e+134) {
tmp = t_0;
} else {
tmp = t_1 + (0.5 * NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-7.2d+200)) then
tmp = t_1 + (nachar / (2.0d0 + (vef / kbt)))
else if (ndchar <= (-2.1d+184)) then
tmp = t_0
else if (ndchar <= (-3.4d-17)) then
tmp = t_1 + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else if (ndchar <= 5.6d+134) then
tmp = t_0
else
tmp = t_1 + (0.5d0 * nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (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 (NdChar <= -7.2e+200) {
tmp = t_1 + (NaChar / (2.0 + (Vef / KbT)));
} else if (NdChar <= -2.1e+184) {
tmp = t_0;
} else if (NdChar <= -3.4e-17) {
tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (NdChar <= 5.6e+134) {
tmp = t_0;
} else {
tmp = t_1 + (0.5 * NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (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 NdChar <= -7.2e+200: tmp = t_1 + (NaChar / (2.0 + (Vef / KbT))) elif NdChar <= -2.1e+184: tmp = t_0 elif NdChar <= -3.4e-17: tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) elif NdChar <= 5.6e+134: tmp = t_0 else: tmp = t_1 + (0.5 * NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + 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 (NdChar <= -7.2e+200) tmp = Float64(t_1 + Float64(NaChar / Float64(2.0 + Float64(Vef / KbT)))); elseif (NdChar <= -2.1e+184) tmp = t_0; elseif (NdChar <= -3.4e-17) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); elseif (NdChar <= 5.6e+134) tmp = t_0; else tmp = Float64(t_1 + Float64(0.5 * NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -7.2e+200) tmp = t_1 + (NaChar / (2.0 + (Vef / KbT))); elseif (NdChar <= -2.1e+184) tmp = t_0; elseif (NdChar <= -3.4e-17) tmp = t_1 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); elseif (NdChar <= 5.6e+134) tmp = t_0; else tmp = t_1 + (0.5 * NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $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]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -7.2e+200], N[(t$95$1 + N[(NaChar / N[(2.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -2.1e+184], t$95$0, If[LessEqual[NdChar, -3.4e-17], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.6e+134], t$95$0, N[(t$95$1 + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + \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}\;NdChar \leq -7.2 \cdot 10^{+200}:\\
\;\;\;\;t\_1 + \frac{NaChar}{2 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;NdChar \leq -2.1 \cdot 10^{+184}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -3.4 \cdot 10^{-17}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 5.6 \cdot 10^{+134}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1 + 0.5 \cdot NaChar\\
\end{array}
\end{array}
if NdChar < -7.1999999999999995e200Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.7%
Taylor expanded in Vef around 0 76.3%
if -7.1999999999999995e200 < NdChar < -2.1e184 or -3.3999999999999998e-17 < NdChar < 5.5999999999999997e134Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.1%
if -2.1e184 < NdChar < -3.3999999999999998e-17Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.6%
Taylor expanded in EAccept around 0 61.9%
if 5.5999999999999997e134 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 2.0 (/ EDonor KbT)))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ Vef KbT))))))
(if (<= NdChar -9e+21)
t_1
(if (<= NdChar 8.5e-71)
t_0
(if (<= NdChar 4.7e-26) t_1 (if (<= NdChar 2.7e+40) 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 / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
double tmp;
if (NdChar <= -9e+21) {
tmp = t_1;
} else if (NdChar <= 8.5e-71) {
tmp = t_0;
} else if (NdChar <= 4.7e-26) {
tmp = t_1;
} else if (NdChar <= 2.7e+40) {
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 / (2.0d0 + (edonor / kbt))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (vef / kbt)))
if (ndchar <= (-9d+21)) then
tmp = t_1
else if (ndchar <= 8.5d-71) then
tmp = t_0
else if (ndchar <= 4.7d-26) then
tmp = t_1
else if (ndchar <= 2.7d+40) 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 / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
double tmp;
if (NdChar <= -9e+21) {
tmp = t_1;
} else if (NdChar <= 8.5e-71) {
tmp = t_0;
} else if (NdChar <= 4.7e-26) {
tmp = t_1;
} else if (NdChar <= 2.7e+40) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))) tmp = 0 if NdChar <= -9e+21: tmp = t_1 elif NdChar <= 8.5e-71: tmp = t_0 elif NdChar <= 4.7e-26: tmp = t_1 elif NdChar <= 2.7e+40: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NdChar <= -9e+21) tmp = t_1; elseif (NdChar <= 8.5e-71) tmp = t_0; elseif (NdChar <= 4.7e-26) tmp = t_1; elseif (NdChar <= 2.7e+40) 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 / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))); tmp = 0.0; if (NdChar <= -9e+21) tmp = t_1; elseif (NdChar <= 8.5e-71) tmp = t_0; elseif (NdChar <= 4.7e-26) tmp = t_1; elseif (NdChar <= 2.7e+40) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $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]}, 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[(2.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9e+21], t$95$1, If[LessEqual[NdChar, 8.5e-71], t$95$0, If[LessEqual[NdChar, 4.7e-26], t$95$1, If[LessEqual[NdChar, 2.7e+40], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{2 + \frac{EDonor}{KbT}} + \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}}} + \frac{NaChar}{2 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NdChar \leq -9 \cdot 10^{+21}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-71}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 4.7 \cdot 10^{-26}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 2.7 \cdot 10^{+40}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NdChar < -9e21 or 8.49999999999999988e-71 < NdChar < 4.69999999999999989e-26 or 2.70000000000000009e40 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.1%
Taylor expanded in Vef around 0 62.8%
if -9e21 < NdChar < 8.49999999999999988e-71 or 4.69999999999999989e-26 < NdChar < 2.70000000000000009e40Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.9%
Taylor expanded in EDonor around 0 69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= NaChar -3.6e+53)
(+ (/ NdChar 2.0) (* NaChar (/ 1.0 t_0)))
(if (<= NaChar 1.1e+23)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 2.0 (/ Vef KbT))))
(+ (/ NdChar 2.0) (/ NaChar 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 = 1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if (NaChar <= -3.6e+53) {
tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0));
} else if (NaChar <= 1.1e+23) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / t_0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))
if (nachar <= (-3.6d+53)) then
tmp = (ndchar / 2.0d0) + (nachar * (1.0d0 / t_0))
else if (nachar <= 1.1d+23) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (2.0d0 + (vef / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / 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 = 1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if (NaChar <= -3.6e+53) {
tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0));
} else if (NaChar <= 1.1e+23) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / t_0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) tmp = 0 if NaChar <= -3.6e+53: tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0)) elif NaChar <= 1.1e+23: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / t_0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))) tmp = 0.0 if (NaChar <= -3.6e+53) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar * Float64(1.0 / t_0))); elseif (NaChar <= 1.1e+23) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(2.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / t_0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)); tmp = 0.0; if (NaChar <= -3.6e+53) tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0)); elseif (NaChar <= 1.1e+23) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (2.0 + (Vef / KbT))); else tmp = (NdChar / 2.0) + (NaChar / t_0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3.6e+53], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.1e+23], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\\
\mathbf{if}\;NaChar \leq -3.6 \cdot 10^{+53}:\\
\;\;\;\;\frac{NdChar}{2} + NaChar \cdot \frac{1}{t\_0}\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{+23}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{t\_0}\\
\end{array}
\end{array}
if NaChar < -3.6e53Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.9%
div-inv63.0%
Applied egg-rr63.0%
if -3.6e53 < NaChar < 1.10000000000000004e23Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.6%
Taylor expanded in Vef around 0 63.6%
if 1.10000000000000004e23 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* 0.5 NaChar))))
(if (<= NdChar -1.1e+145)
t_0
(if (<= NdChar 8e+197)
(+
(/ NdChar 2.0)
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (0.5 * NaChar);
double tmp;
if (NdChar <= -1.1e+145) {
tmp = t_0;
} else if (NdChar <= 8e+197) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (0.5d0 * nachar)
if (ndchar <= (-1.1d+145)) then
tmp = t_0
else if (ndchar <= 8d+197) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (0.5 * NaChar);
double tmp;
if (NdChar <= -1.1e+145) {
tmp = t_0;
} else if (NdChar <= 8e+197) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (0.5 * NaChar) tmp = 0 if NdChar <= -1.1e+145: tmp = t_0 elif NdChar <= 8e+197: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(0.5 * NaChar)) tmp = 0.0 if (NdChar <= -1.1e+145) tmp = t_0; elseif (NdChar <= 8e+197) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (0.5 * NaChar); tmp = 0.0; if (NdChar <= -1.1e+145) tmp = t_0; elseif (NdChar <= 8e+197) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.1e+145], t$95$0, If[LessEqual[NdChar, 8e+197], N[(N[(NdChar / 2.0), $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], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + 0.5 \cdot NaChar\\
\mathbf{if}\;NdChar \leq -1.1 \cdot 10^{+145}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 8 \cdot 10^{+197}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -1.10000000000000004e145 or 7.9999999999999996e197 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.8%
Taylor expanded in KbT around inf 51.3%
if -1.10000000000000004e145 < NdChar < 7.9999999999999996e197Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar 2.0)
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
(if (<= NaChar -1.12e+50)
t_0
(if (<= NaChar 1.52e+22)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* 0.5 NaChar))
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 / 2.0) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -1.12e+50) {
tmp = t_0;
} else if (NaChar <= 1.52e+22) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
if (nachar <= (-1.12d+50)) then
tmp = t_0
else if (nachar <= 1.52d+22) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (0.5d0 * nachar)
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 / 2.0) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -1.12e+50) {
tmp = t_0;
} else if (NaChar <= 1.52e+22) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / 2.0) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) tmp = 0 if NaChar <= -1.12e+50: tmp = t_0 elif NaChar <= 1.52e+22: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) tmp = 0.0 if (NaChar <= -1.12e+50) tmp = t_0; elseif (NaChar <= 1.52e+22) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(0.5 * NaChar)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / 2.0) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); tmp = 0.0; if (NaChar <= -1.12e+50) tmp = t_0; elseif (NaChar <= 1.52e+22) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar); 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 / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.12e+50], t$95$0, If[LessEqual[NaChar, 1.52e+22], 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[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.12 \cdot 10^{+50}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 1.52 \cdot 10^{+22}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + 0.5 \cdot NaChar\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.1199999999999999e50 or 1.52e22 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.7%
if -1.1199999999999999e50 < NaChar < 1.52e22Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= NaChar -1.7e+50)
(+ (/ NdChar 2.0) (* NaChar (/ 1.0 t_0)))
(if (<= NaChar 4.2e+20)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* 0.5 NaChar))
(+ (/ NdChar 2.0) (/ NaChar 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 = 1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if (NaChar <= -1.7e+50) {
tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0));
} else if (NaChar <= 4.2e+20) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / t_0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))
if (nachar <= (-1.7d+50)) then
tmp = (ndchar / 2.0d0) + (nachar * (1.0d0 / t_0))
else if (nachar <= 4.2d+20) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (0.5d0 * nachar)
else
tmp = (ndchar / 2.0d0) + (nachar / 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 = 1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT));
double tmp;
if (NaChar <= -1.7e+50) {
tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0));
} else if (NaChar <= 4.2e+20) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / t_0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) tmp = 0 if NaChar <= -1.7e+50: tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0)) elif NaChar <= 4.2e+20: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar) else: tmp = (NdChar / 2.0) + (NaChar / t_0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))) tmp = 0.0 if (NaChar <= -1.7e+50) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar * Float64(1.0 / t_0))); elseif (NaChar <= 4.2e+20) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(0.5 * NaChar)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / t_0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)); tmp = 0.0; if (NaChar <= -1.7e+50) tmp = (NdChar / 2.0) + (NaChar * (1.0 / t_0)); elseif (NaChar <= 4.2e+20) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (0.5 * NaChar); else tmp = (NdChar / 2.0) + (NaChar / t_0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.7e+50], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.2e+20], 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[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\\
\mathbf{if}\;NaChar \leq -1.7 \cdot 10^{+50}:\\
\;\;\;\;\frac{NdChar}{2} + NaChar \cdot \frac{1}{t\_0}\\
\mathbf{elif}\;NaChar \leq 4.2 \cdot 10^{+20}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + 0.5 \cdot NaChar\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{t\_0}\\
\end{array}
\end{array}
if NaChar < -1.6999999999999999e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.1%
div-inv62.2%
Applied egg-rr62.2%
if -1.6999999999999999e50 < NaChar < 4.2e20Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
if 4.2e20 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (/ Vef KbT)) (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -6.8e+73)
t_0
(if (<= Vef 7.3e+183)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -6.8e+73) {
tmp = t_0;
} else if (Vef <= 7.3e+183) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (vef / kbt)) + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-6.8d+73)) then
tmp = t_0
else if (vef <= 7.3d+183) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -6.8e+73) {
tmp = t_0;
} else if (Vef <= 7.3e+183) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -6.8e+73: tmp = t_0 elif Vef <= 7.3e+183: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(Vef / KbT)) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -6.8e+73) tmp = t_0; elseif (Vef <= 7.3e+183) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (Vef / KbT)) + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -6.8e+73) tmp = t_0; elseif (Vef <= 7.3e+183) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6.8e+73], t$95$0, If[LessEqual[Vef, 7.3e+183], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{\frac{Vef}{KbT}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -6.8 \cdot 10^{+73}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 7.3 \cdot 10^{+183}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -6.8000000000000003e73 or 7.2999999999999999e183 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.5%
Taylor expanded in KbT around inf 41.1%
Taylor expanded in Vef around inf 55.8%
if -6.8000000000000003e73 < Vef < 7.2999999999999999e183Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.3%
Taylor expanded in EAccept around inf 43.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 6.5e-245)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 1.22e-17)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6.5e-245) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 1.22e-17) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 6.5d-245) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 1.22d-17) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6.5e-245) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 1.22e-17) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 6.5e-245: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 1.22e-17: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 6.5e-245) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 1.22e-17) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 6.5e-245) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 1.22e-17) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 6.5e-245], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.22e-17], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 6.5 \cdot 10^{-245}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.22 \cdot 10^{-17}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 6.5000000000000004e-245Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.3%
Taylor expanded in Ev around inf 41.3%
if 6.5000000000000004e-245 < EAccept < 1.22e-17Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.7%
Taylor expanded in Vef around inf 47.5%
if 1.22e-17 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.2%
Taylor expanded in EAccept around inf 34.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -3.2e-272) (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))) (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.2e-272) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Ev / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-3.2d-272)) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((ev / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.2e-272) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -3.2e-272: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -3.2e-272) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -3.2e-272) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -3.2e-272], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.2 \cdot 10^{-272}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if KbT < -3.2e-272Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.3%
Taylor expanded in EAccept around inf 36.2%
if -3.2e-272 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.7%
Taylor expanded in Ev around inf 37.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 1.02e-16) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* 0.5 NaChar)) (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.02e-16) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (0.5 * NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.02d-16) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (0.5d0 * nachar)
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.02e-16) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (0.5 * NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.02e-16: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (0.5 * NaChar) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.02e-16) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(0.5 * NaChar)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.02e-16) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (0.5 * NaChar); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.02e-16], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.02 \cdot 10^{-16}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + 0.5 \cdot NaChar\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.0200000000000001e-16Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.9%
Taylor expanded in KbT around inf 41.0%
if 1.0200000000000001e-16 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.2%
Taylor expanded in EAccept around inf 34.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / 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 / 2.0d0) + (nachar / (1.0d0 + exp((eaccept / 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 / 2.0) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / 2.0) + (NaChar / (1.0 + math.exp((EAccept / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / 2.0) + (NaChar / (1.0 + exp((EAccept / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{2} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.5%
Taylor expanded in EAccept around inf 37.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar 2.0) (* 0.5 NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (0.5 * 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 = (ndchar / 2.0d0) + (0.5d0 * 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 (NdChar / 2.0) + (0.5 * NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / 2.0) + (0.5 * NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / 2.0) + Float64(0.5 * NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / 2.0) + (0.5 * NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / 2.0), $MachinePrecision] + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{2} + 0.5 \cdot NaChar
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.5%
Taylor expanded in KbT around inf 29.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 NaChar))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * 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 * 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 * NaChar;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * NaChar
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * NaChar) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * NaChar; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * NaChar), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot NaChar
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.0%
Taylor expanded in KbT around inf 38.0%
Taylor expanded in EDonor around 0 28.3%
Taylor expanded in NdChar around 0 20.6%
herbie shell --seed 2024076 -o generate:simplify
(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))))))