
(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 27 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 (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))) (/ NaChar (+ 1.0 (log (exp (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(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + log(exp(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(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + log(exp(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(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.log(Math.exp(Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.log(math.exp(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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + log(exp(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(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + log(exp(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[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Log[N[Exp[N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \log \left(e^{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\right)}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
add-log-exp100.0%
associate--l+100.0%
associate--l+100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT))))))
(t_3 (+ 1.0 (exp (/ Vef KbT))))
(t_4 (+ (/ NaChar t_3) (/ NdChar t_3)))
(t_5 (/ NaChar (+ 1.0 (exp (- (/ mu KbT)))))))
(if (<= Vef -2.85e+181)
t_4
(if (<= Vef -1.05e-116)
t_2
(if (<= Vef -9e-274)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_5)
(if (<= Vef 2.35e-256)
(+ t_1 t_0)
(if (<= Vef 1.05e-203)
(+ t_5 t_0)
(if (<= Vef 6.5e+127) t_2 t_4))))))))
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((-Ec / KbT)));
double t_1 = NaChar / (1.0 + exp((Ev / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))));
double t_3 = 1.0 + exp((Vef / KbT));
double t_4 = (NaChar / t_3) + (NdChar / t_3);
double t_5 = NaChar / (1.0 + exp(-(mu / KbT)));
double tmp;
if (Vef <= -2.85e+181) {
tmp = t_4;
} else if (Vef <= -1.05e-116) {
tmp = t_2;
} else if (Vef <= -9e-274) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_5;
} else if (Vef <= 2.35e-256) {
tmp = t_1 + t_0;
} else if (Vef <= 1.05e-203) {
tmp = t_5 + t_0;
} else if (Vef <= 6.5e+127) {
tmp = t_2;
} else {
tmp = t_4;
}
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) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-ec / kbt)))
t_1 = nachar / (1.0d0 + exp((ev / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt))))
t_3 = 1.0d0 + exp((vef / kbt))
t_4 = (nachar / t_3) + (ndchar / t_3)
t_5 = nachar / (1.0d0 + exp(-(mu / kbt)))
if (vef <= (-2.85d+181)) then
tmp = t_4
else if (vef <= (-1.05d-116)) then
tmp = t_2
else if (vef <= (-9d-274)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_5
else if (vef <= 2.35d-256) then
tmp = t_1 + t_0
else if (vef <= 1.05d-203) then
tmp = t_5 + t_0
else if (vef <= 6.5d+127) then
tmp = t_2
else
tmp = t_4
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((-Ec / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT))));
double t_3 = 1.0 + Math.exp((Vef / KbT));
double t_4 = (NaChar / t_3) + (NdChar / t_3);
double t_5 = NaChar / (1.0 + Math.exp(-(mu / KbT)));
double tmp;
if (Vef <= -2.85e+181) {
tmp = t_4;
} else if (Vef <= -1.05e-116) {
tmp = t_2;
} else if (Vef <= -9e-274) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_5;
} else if (Vef <= 2.35e-256) {
tmp = t_1 + t_0;
} else if (Vef <= 1.05e-203) {
tmp = t_5 + t_0;
} else if (Vef <= 6.5e+127) {
tmp = t_2;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-Ec / KbT))) t_1 = NaChar / (1.0 + math.exp((Ev / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) t_3 = 1.0 + math.exp((Vef / KbT)) t_4 = (NaChar / t_3) + (NdChar / t_3) t_5 = NaChar / (1.0 + math.exp(-(mu / KbT))) tmp = 0 if Vef <= -2.85e+181: tmp = t_4 elif Vef <= -1.05e-116: tmp = t_2 elif Vef <= -9e-274: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_5 elif Vef <= 2.35e-256: tmp = t_1 + t_0 elif Vef <= 1.05e-203: tmp = t_5 + t_0 elif Vef <= 6.5e+127: tmp = t_2 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT))))) t_3 = Float64(1.0 + exp(Float64(Vef / KbT))) t_4 = Float64(Float64(NaChar / t_3) + Float64(NdChar / t_3)) t_5 = Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT))))) tmp = 0.0 if (Vef <= -2.85e+181) tmp = t_4; elseif (Vef <= -1.05e-116) tmp = t_2; elseif (Vef <= -9e-274) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_5); elseif (Vef <= 2.35e-256) tmp = Float64(t_1 + t_0); elseif (Vef <= 1.05e-203) tmp = Float64(t_5 + t_0); elseif (Vef <= 6.5e+127) tmp = t_2; else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-Ec / KbT))); t_1 = NaChar / (1.0 + exp((Ev / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))); t_3 = 1.0 + exp((Vef / KbT)); t_4 = (NaChar / t_3) + (NdChar / t_3); t_5 = NaChar / (1.0 + exp(-(mu / KbT))); tmp = 0.0; if (Vef <= -2.85e+181) tmp = t_4; elseif (Vef <= -1.05e-116) tmp = t_2; elseif (Vef <= -9e-274) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_5; elseif (Vef <= 2.35e-256) tmp = t_1 + t_0; elseif (Vef <= 1.05e-203) tmp = t_5 + t_0; elseif (Vef <= 6.5e+127) tmp = t_2; else tmp = t_4; 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[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / t$95$3), $MachinePrecision] + N[(NdChar / t$95$3), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.85e+181], t$95$4, If[LessEqual[Vef, -1.05e-116], t$95$2, If[LessEqual[Vef, -9e-274], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$5), $MachinePrecision], If[LessEqual[Vef, 2.35e-256], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.05e-203], N[(t$95$5 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 6.5e+127], t$95$2, t$95$4]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
t_3 := 1 + e^{\frac{Vef}{KbT}}\\
t_4 := \frac{NaChar}{t_3} + \frac{NdChar}{t_3}\\
t_5 := \frac{NaChar}{1 + e^{-\frac{mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.85 \cdot 10^{+181}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -1.05 \cdot 10^{-116}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -9 \cdot 10^{-274}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_5\\
\mathbf{elif}\;Vef \leq 2.35 \cdot 10^{-256}:\\
\;\;\;\;t_1 + t_0\\
\mathbf{elif}\;Vef \leq 1.05 \cdot 10^{-203}:\\
\;\;\;\;t_5 + t_0\\
\mathbf{elif}\;Vef \leq 6.5 \cdot 10^{+127}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if Vef < -2.8500000000000001e181 or 6.5e127 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.4%
Taylor expanded in Ec around 0 87.8%
Taylor expanded in Vef around inf 81.8%
if -2.8500000000000001e181 < Vef < -1.05e-116 or 1.05000000000000001e-203 < Vef < 6.5e127Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.9%
Taylor expanded in Ec around 0 68.0%
if -1.05e-116 < Vef < -8.99999999999999982e-274Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.5%
neg-mul-188.5%
distribute-neg-frac88.5%
Simplified88.5%
Taylor expanded in mu around inf 79.8%
if -8.99999999999999982e-274 < Vef < 2.34999999999999991e-256Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in Ec around inf 66.2%
mul-1-neg43.9%
distribute-neg-frac43.9%
Simplified66.2%
if 2.34999999999999991e-256 < Vef < 1.05000000000000001e-203Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 94.3%
neg-mul-194.3%
distribute-neg-frac94.3%
Simplified94.3%
Taylor expanded in Ec around inf 84.7%
mul-1-neg45.7%
distribute-neg-frac45.7%
Simplified84.7%
Final simplification73.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -1.36e+55)
t_1
(if (<= mu -7.8e-44)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (or (<= mu -1.9e-48) (not (<= mu 2.8e+69)))
t_1
(+ t_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 t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -1.36e+55) {
tmp = t_1;
} else if (mu <= -7.8e-44) {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if ((mu <= -1.9e-48) || !(mu <= 2.8e+69)) {
tmp = t_1;
} else {
tmp = t_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) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-1.36d+55)) then
tmp = t_1
else if (mu <= (-7.8d-44)) then
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if ((mu <= (-1.9d-48)) .or. (.not. (mu <= 2.8d+69))) then
tmp = t_1
else
tmp = t_0 + (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 t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -1.36e+55) {
tmp = t_1;
} else if (mu <= -7.8e-44) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if ((mu <= -1.9e-48) || !(mu <= 2.8e+69)) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -1.36e+55: tmp = t_1 elif mu <= -7.8e-44: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif (mu <= -1.9e-48) or not (mu <= 2.8e+69): tmp = t_1 else: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -1.36e+55) tmp = t_1; elseif (mu <= -7.8e-44) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif ((mu <= -1.9e-48) || !(mu <= 2.8e+69)) tmp = t_1; else tmp = Float64(t_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) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -1.36e+55) tmp = t_1; elseif (mu <= -7.8e-44) tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif ((mu <= -1.9e-48) || ~((mu <= 2.8e+69))) tmp = t_1; else tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.36e+55], t$95$1, If[LessEqual[mu, -7.8e-44], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[mu, -1.9e-48], N[Not[LessEqual[mu, 2.8e+69]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.36 \cdot 10^{+55}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -7.8 \cdot 10^{-44}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq -1.9 \cdot 10^{-48} \lor \neg \left(mu \leq 2.8 \cdot 10^{+69}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if mu < -1.36e55 or -7.8000000000000004e-44 < mu < -1.90000000000000001e-48 or 2.79999999999999982e69 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.8%
if -1.36e55 < mu < -7.8000000000000004e-44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 71.8%
if -1.90000000000000001e-48 < mu < 2.79999999999999982e69Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.1%
Final simplification81.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))))))
(if (<= Vef -1.55e+22)
t_1
(if (<= Vef -2.4e-220)
t_0
(if (<= Vef 3.5e-274)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef 5.8e+16) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))));
double tmp;
if (Vef <= -1.55e+22) {
tmp = t_1;
} else if (Vef <= -2.4e-220) {
tmp = t_0;
} else if (Vef <= 3.5e-274) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= 5.8e+16) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
t_1 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt))))
if (vef <= (-1.55d+22)) then
tmp = t_1
else if (vef <= (-2.4d-220)) then
tmp = t_0
else if (vef <= 3.5d-274) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= 5.8d+16) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_1 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT))));
double tmp;
if (Vef <= -1.55e+22) {
tmp = t_1;
} else if (Vef <= -2.4e-220) {
tmp = t_0;
} else if (Vef <= 3.5e-274) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= 5.8e+16) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) t_1 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) tmp = 0 if Vef <= -1.55e+22: tmp = t_1 elif Vef <= -2.4e-220: tmp = t_0 elif Vef <= 3.5e-274: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= 5.8e+16: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT))))) tmp = 0.0 if (Vef <= -1.55e+22) tmp = t_1; elseif (Vef <= -2.4e-220) tmp = t_0; elseif (Vef <= 3.5e-274) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= 5.8e+16) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))); tmp = 0.0; if (Vef <= -1.55e+22) tmp = t_1; elseif (Vef <= -2.4e-220) tmp = t_0; elseif (Vef <= 3.5e-274) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= 5.8e+16) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.55e+22], t$95$1, If[LessEqual[Vef, -2.4e-220], t$95$0, If[LessEqual[Vef, 3.5e-274], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 5.8e+16], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.55 \cdot 10^{+22}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -2.4 \cdot 10^{-220}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;Vef \leq 3.5 \cdot 10^{-274}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 5.8 \cdot 10^{+16}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if Vef < -1.5500000000000001e22 or 5.8e16 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.9%
Taylor expanded in Ec around 0 85.1%
if -1.5500000000000001e22 < Vef < -2.4000000000000001e-220 or 3.49999999999999982e-274 < Vef < 5.8e16Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.1%
if -2.4000000000000001e-220 < Vef < 3.49999999999999982e-274Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.9%
Final simplification82.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -1.65e+55)
t_1
(if (<= mu -1.15e-47)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu -4.3e-167)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 2.85e+107)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef 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(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -1.65e+55) {
tmp = t_1;
} else if (mu <= -1.15e-47) {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= -4.3e-167) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 2.85e+107) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / 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(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-1.65d+55)) then
tmp = t_1
else if (mu <= (-1.15d-47)) then
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= (-4.3d-167)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 2.85d+107) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / 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(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -1.65e+55) {
tmp = t_1;
} else if (mu <= -1.15e-47) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= -4.3e-167) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 2.85e+107) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / 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(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -1.65e+55: tmp = t_1 elif mu <= -1.15e-47: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= -4.3e-167: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 2.85e+107: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / 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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -1.65e+55) tmp = t_1; elseif (mu <= -1.15e-47) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= -4.3e-167) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 2.85e+107) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / 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(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -1.65e+55) tmp = t_1; elseif (mu <= -1.15e-47) tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= -4.3e-167) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 2.85e+107) tmp = t_0 + (NaChar / (1.0 + exp((Vef / 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[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.65e+55], t$95$1, If[LessEqual[mu, -1.15e-47], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -4.3e-167], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.85e+107], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.65 \cdot 10^{+55}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -1.15 \cdot 10^{-47}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq -4.3 \cdot 10^{-167}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.85 \cdot 10^{+107}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if mu < -1.65e55 or 2.84999999999999986e107 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.1%
if -1.65e55 < mu < -1.14999999999999991e-47Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 69.2%
if -1.14999999999999991e-47 < mu < -4.2999999999999998e-167Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.0%
if -4.2999999999999998e-167 < mu < 2.84999999999999986e107Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.2%
Final simplification84.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT))))))
(t_2 (+ 1.0 (exp (/ Vef KbT))))
(t_3 (/ NaChar t_2)))
(if (<= NdChar -6.6e+149)
t_1
(if (<= NdChar -3.1e+56)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_3)
(if (<= NdChar -6e-163)
(+ t_3 (/ NdChar t_2))
(if (<= NdChar 8.5e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 3.3e+52)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ 1.0 (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NdChar 9.5e+277)
t_1
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double t_2 = 1.0 + exp((Vef / KbT));
double t_3 = NaChar / t_2;
double tmp;
if (NdChar <= -6.6e+149) {
tmp = t_1;
} else if (NdChar <= -3.1e+56) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_3;
} else if (NdChar <= -6e-163) {
tmp = t_3 + (NdChar / t_2);
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 3.3e+52) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
t_2 = 1.0d0 + exp((vef / kbt))
t_3 = nachar / t_2
if (ndchar <= (-6.6d+149)) then
tmp = t_1
else if (ndchar <= (-3.1d+56)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_3
else if (ndchar <= (-6d-163)) then
tmp = t_3 + (ndchar / t_2)
else if (ndchar <= 8.5d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 3.3d+52) then
tmp = t_0 + (nachar / (1.0d0 + (((ev / kbt) + ((eaccept / kbt) + (1.0d0 + (vef / kbt)))) - (mu / kbt))))
else if (ndchar <= 9.5d+277) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double t_2 = 1.0 + Math.exp((Vef / KbT));
double t_3 = NaChar / t_2;
double tmp;
if (NdChar <= -6.6e+149) {
tmp = t_1;
} else if (NdChar <= -3.1e+56) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_3;
} else if (NdChar <= -6e-163) {
tmp = t_3 + (NdChar / t_2);
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 3.3e+52) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) t_2 = 1.0 + math.exp((Vef / KbT)) t_3 = NaChar / t_2 tmp = 0 if NdChar <= -6.6e+149: tmp = t_1 elif NdChar <= -3.1e+56: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_3 elif NdChar <= -6e-163: tmp = t_3 + (NdChar / t_2) elif NdChar <= 8.5e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 3.3e+52: tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))) elif NdChar <= 9.5e+277: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) t_2 = Float64(1.0 + exp(Float64(Vef / KbT))) t_3 = Float64(NaChar / t_2) tmp = 0.0 if (NdChar <= -6.6e+149) tmp = t_1; elseif (NdChar <= -3.1e+56) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_3); elseif (NdChar <= -6e-163) tmp = Float64(t_3 + Float64(NdChar / t_2)); elseif (NdChar <= 8.5e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 3.3e+52) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); t_2 = 1.0 + exp((Vef / KbT)); t_3 = NaChar / t_2; tmp = 0.0; if (NdChar <= -6.6e+149) tmp = t_1; elseif (NdChar <= -3.1e+56) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_3; elseif (NdChar <= -6e-163) tmp = t_3 + (NdChar / t_2); elseif (NdChar <= 8.5e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 3.3e+52) tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / t$95$2), $MachinePrecision]}, If[LessEqual[NdChar, -6.6e+149], t$95$1, If[LessEqual[NdChar, -3.1e+56], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[NdChar, -6e-163], N[(t$95$3 + N[(NdChar / t$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.5e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.3e+52], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.5e+277], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
t_2 := 1 + e^{\frac{Vef}{KbT}}\\
t_3 := \frac{NaChar}{t_2}\\
\mathbf{if}\;NdChar \leq -6.6 \cdot 10^{+149}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -3.1 \cdot 10^{+56}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_3\\
\mathbf{elif}\;NdChar \leq -6 \cdot 10^{-163}:\\
\;\;\;\;t_3 + \frac{NdChar}{t_2}\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{+52}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+277}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -6.6e149 or 3.3e52 < NdChar < 9.4999999999999997e277Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.8%
Taylor expanded in Ev around 0 59.7%
unpow259.7%
unpow259.7%
Simplified59.7%
Taylor expanded in Ev around inf 66.8%
associate-*r/66.8%
unpow266.8%
unpow266.8%
Simplified66.8%
if -6.6e149 < NdChar < -3.10000000000000005e56Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 87.3%
Taylor expanded in Vef around inf 73.5%
if -3.10000000000000005e56 < NdChar < -6.0000000000000005e-163Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.9%
Taylor expanded in Ec around 0 77.2%
Taylor expanded in Vef around inf 72.8%
if -6.0000000000000005e-163 < NdChar < 8.5e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.2%
Taylor expanded in mu around 0 71.3%
if 8.5e-156 < NdChar < 3.3e52Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
if 9.4999999999999997e277 < NdChar Initial program 99.8%
neg-sub099.8%
associate--r-99.8%
+-commutative99.8%
neg-sub099.8%
sub-neg99.8%
associate--l-99.8%
unsub-neg99.8%
+-commutative99.8%
associate-+l+99.8%
Simplified99.8%
Taylor expanded in Ev around inf 82.4%
Taylor expanded in EDonor around inf 70.3%
Final simplification70.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 (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -1.25e+149)
t_2
(if (<= NdChar -4.5e+41)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (- (/ mu KbT))))))
(if (<= NdChar -5.5e-164)
(+ (/ NaChar t_0) (/ NdChar t_0))
(if (<= NdChar 3.8e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 1.5e+52)
(+
t_1
(/
NaChar
(+
1.0
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ 1.0 (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NdChar 9.5e+277)
t_2
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1.25e+149) {
tmp = t_2;
} else if (NdChar <= -4.5e+41) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(-(mu / KbT))));
} else if (NdChar <= -5.5e-164) {
tmp = (NaChar / t_0) + (NdChar / t_0);
} else if (NdChar <= 3.8e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 1.5e+52) {
tmp = t_1 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_2;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-1.25d+149)) then
tmp = t_2
else if (ndchar <= (-4.5d+41)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(-(mu / kbt))))
else if (ndchar <= (-5.5d-164)) then
tmp = (nachar / t_0) + (ndchar / t_0)
else if (ndchar <= 3.8d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 1.5d+52) then
tmp = t_1 + (nachar / (1.0d0 + (((ev / kbt) + ((eaccept / kbt) + (1.0d0 + (vef / kbt)))) - (mu / kbt))))
else if (ndchar <= 9.5d+277) then
tmp = t_2
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1.25e+149) {
tmp = t_2;
} else if (NdChar <= -4.5e+41) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(-(mu / KbT))));
} else if (NdChar <= -5.5e-164) {
tmp = (NaChar / t_0) + (NdChar / t_0);
} else if (NdChar <= 3.8e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 1.5e+52) {
tmp = t_1 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_2;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
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(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -1.25e+149: tmp = t_2 elif NdChar <= -4.5e+41: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(-(mu / KbT)))) elif NdChar <= -5.5e-164: tmp = (NaChar / t_0) + (NdChar / t_0) elif NdChar <= 3.8e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 1.5e+52: tmp = t_1 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))) elif NdChar <= 9.5e+277: tmp = t_2 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) 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(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -1.25e+149) tmp = t_2; elseif (NdChar <= -4.5e+41) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT)))))); elseif (NdChar <= -5.5e-164) tmp = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)); elseif (NdChar <= 3.8e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 1.5e+52) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 9.5e+277) tmp = t_2; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -1.25e+149) tmp = t_2; elseif (NdChar <= -4.5e+41) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(-(mu / KbT)))); elseif (NdChar <= -5.5e-164) tmp = (NaChar / t_0) + (NdChar / t_0); elseif (NdChar <= 3.8e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 1.5e+52) tmp = t_1 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))); elseif (NdChar <= 9.5e+277) tmp = t_2; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.25e+149], t$95$2, If[LessEqual[NdChar, -4.5e+41], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -5.5e-164], N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.8e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e+52], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.5e+277], t$95$2, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -1.25 \cdot 10^{+149}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq -4.5 \cdot 10^{+41}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{-\frac{mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq -5.5 \cdot 10^{-164}:\\
\;\;\;\;\frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{elif}\;NdChar \leq 3.8 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{+52}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+277}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.24999999999999998e149 or 1.5e52 < NdChar < 9.4999999999999997e277Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.8%
Taylor expanded in Ev around 0 59.7%
unpow259.7%
unpow259.7%
Simplified59.7%
Taylor expanded in Ev around inf 66.8%
associate-*r/66.8%
unpow266.8%
unpow266.8%
Simplified66.8%
if -1.24999999999999998e149 < NdChar < -4.5000000000000001e41Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.1%
neg-mul-185.1%
distribute-neg-frac85.1%
Simplified85.1%
Taylor expanded in mu around inf 74.1%
if -4.5000000000000001e41 < NdChar < -5.50000000000000027e-164Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.7%
Taylor expanded in Ec around 0 77.8%
Taylor expanded in Vef around inf 73.1%
if -5.50000000000000027e-164 < NdChar < 3.80000000000000008e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.2%
Taylor expanded in mu around 0 71.3%
if 3.80000000000000008e-156 < NdChar < 1.5e52Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
if 9.4999999999999997e277 < NdChar Initial program 99.8%
neg-sub099.8%
associate--r-99.8%
+-commutative99.8%
neg-sub099.8%
sub-neg99.8%
associate--l-99.8%
unsub-neg99.8%
+-commutative99.8%
associate-+l+99.8%
Simplified99.8%
Taylor expanded in Ev around inf 82.4%
Taylor expanded in EDonor around inf 70.3%
Final simplification70.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (- (/ mu KbT)))))))
(t_2 (+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_0)))
(if (<= mu -6e+224)
t_1
(if (<= mu -3.3e-109)
t_2
(if (<= mu -2.35e-191)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0)
(if (<= mu 3.2e+158) t_2 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(((Vef + (mu + EDonor)) / KbT)));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(-(mu / KbT))));
double t_2 = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0;
double tmp;
if (mu <= -6e+224) {
tmp = t_1;
} else if (mu <= -3.3e-109) {
tmp = t_2;
} else if (mu <= -2.35e-191) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0;
} else if (mu <= 3.2e+158) {
tmp = t_2;
} 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 = ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(-(mu / kbt))))
t_2 = (nachar / (1.0d0 + exp((vef / kbt)))) + t_0
if (mu <= (-6d+224)) then
tmp = t_1
else if (mu <= (-3.3d-109)) then
tmp = t_2
else if (mu <= (-2.35d-191)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + t_0
else if (mu <= 3.2d+158) then
tmp = t_2
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(((Vef + (mu + EDonor)) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(-(mu / KbT))));
double t_2 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
double tmp;
if (mu <= -6e+224) {
tmp = t_1;
} else if (mu <= -3.3e-109) {
tmp = t_2;
} else if (mu <= -2.35e-191) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_0;
} else if (mu <= 3.2e+158) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(-(mu / KbT)))) t_2 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_0 tmp = 0 if mu <= -6e+224: tmp = t_1 elif mu <= -3.3e-109: tmp = t_2 elif mu <= -2.35e-191: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_0 elif mu <= 3.2e+158: tmp = t_2 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(Vef + Float64(mu + EDonor)) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT)))))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0) tmp = 0.0 if (mu <= -6e+224) tmp = t_1; elseif (mu <= -3.3e-109) tmp = t_2; elseif (mu <= -2.35e-191) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_0); elseif (mu <= 3.2e+158) tmp = t_2; 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(((Vef + (mu + EDonor)) / KbT))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(-(mu / KbT)))); t_2 = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0; tmp = 0.0; if (mu <= -6e+224) tmp = t_1; elseif (mu <= -3.3e-109) tmp = t_2; elseif (mu <= -2.35e-191) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0; elseif (mu <= 3.2e+158) tmp = t_2; 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[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[mu, -6e+224], t$95$1, If[LessEqual[mu, -3.3e-109], t$95$2, If[LessEqual[mu, -2.35e-191], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 3.2e+158], t$95$2, t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{-\frac{mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t_0\\
\mathbf{if}\;mu \leq -6 \cdot 10^{+224}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -3.3 \cdot 10^{-109}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2.35 \cdot 10^{-191}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t_0\\
\mathbf{elif}\;mu \leq 3.2 \cdot 10^{+158}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if mu < -6.0000000000000002e224 or 3.19999999999999995e158 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.7%
neg-mul-183.7%
distribute-neg-frac83.7%
Simplified83.7%
Taylor expanded in mu around inf 81.8%
if -6.0000000000000002e224 < mu < -3.2999999999999999e-109 or -2.3499999999999999e-191 < mu < 3.19999999999999995e158Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.6%
Taylor expanded in Ec around 0 75.2%
if -3.2999999999999999e-109 < mu < -2.3499999999999999e-191Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.1%
Taylor expanded in Ec around 0 74.3%
Final simplification76.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) 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(((mu + ((Vef + EDonor) - 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(((mu + ((vef + edonor) - 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(((mu + ((Vef + EDonor) - 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(((mu + ((Vef + EDonor) - 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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - 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[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -9.6e+98)
t_1
(if (<= NdChar -1.95e-12)
(+
t_0
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (* (/ Ev KbT) (/ Ev KbT))))))))
(if (<= NdChar 8.5e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 4.5e+53)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ 1.0 (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NdChar 9.5e+277)
t_1
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -9.6e+98) {
tmp = t_1;
} else if (NdChar <= -1.95e-12) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 4.5e+53) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-9.6d+98)) then
tmp = t_1
else if (ndchar <= (-1.95d-12)) then
tmp = t_0 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev / kbt) * (ev / kbt)))))))
else if (ndchar <= 8.5d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 4.5d+53) then
tmp = t_0 + (nachar / (1.0d0 + (((ev / kbt) + ((eaccept / kbt) + (1.0d0 + (vef / kbt)))) - (mu / kbt))))
else if (ndchar <= 9.5d+277) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -9.6e+98) {
tmp = t_1;
} else if (NdChar <= -1.95e-12) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 4.5e+53) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -9.6e+98: tmp = t_1 elif NdChar <= -1.95e-12: tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))) elif NdChar <= 8.5e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 4.5e+53: tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))) elif NdChar <= 9.5e+277: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -9.6e+98) tmp = t_1; elseif (NdChar <= -1.95e-12) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev / KbT) * Float64(Ev / KbT)))))))); elseif (NdChar <= 8.5e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 4.5e+53) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -9.6e+98) tmp = t_1; elseif (NdChar <= -1.95e-12) tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))); elseif (NdChar <= 8.5e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 4.5e+53) tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9.6e+98], t$95$1, If[LessEqual[NdChar, -1.95e-12], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev / KbT), $MachinePrecision] * N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.5e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.5e+53], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.5e+277], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -9.6 \cdot 10^{+98}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -1.95 \cdot 10^{-12}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \left(\frac{Ev}{KbT} \cdot \frac{Ev}{KbT}\right)\right)\right)}\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 4.5 \cdot 10^{+53}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+277}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -9.5999999999999995e98 or 4.5000000000000002e53 < NdChar < 9.4999999999999997e277Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.5%
Taylor expanded in Ev around 0 57.8%
unpow257.8%
unpow257.8%
Simplified57.8%
Taylor expanded in Ev around inf 65.1%
associate-*r/65.1%
unpow265.1%
unpow265.1%
Simplified65.1%
if -9.5999999999999995e98 < NdChar < -1.94999999999999997e-12Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.2%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
Simplified60.9%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
times-frac61.1%
Simplified61.1%
if -1.94999999999999997e-12 < NdChar < 8.5e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
Taylor expanded in mu around 0 67.6%
if 8.5e-156 < NdChar < 4.5000000000000002e53Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
if 9.4999999999999997e277 < NdChar Initial program 99.8%
neg-sub099.8%
associate--r-99.8%
+-commutative99.8%
neg-sub099.8%
sub-neg99.8%
associate--l-99.8%
unsub-neg99.8%
+-commutative99.8%
associate-+l+99.8%
Simplified99.8%
Taylor expanded in Ev around inf 82.4%
Taylor expanded in EDonor around inf 70.3%
Final simplification66.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -1e+149)
t_1
(if (<= NdChar -2.06e-10)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= NdChar 8.5e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 3.8e+53)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ 1.0 (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NdChar 9.5e+277)
t_1
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1e+149) {
tmp = t_1;
} else if (NdChar <= -2.06e-10) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 3.8e+53) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-1d+149)) then
tmp = t_1
else if (ndchar <= (-2.06d-10)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
else if (ndchar <= 8.5d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 3.8d+53) then
tmp = t_0 + (nachar / (1.0d0 + (((ev / kbt) + ((eaccept / kbt) + (1.0d0 + (vef / kbt)))) - (mu / kbt))))
else if (ndchar <= 9.5d+277) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1e+149) {
tmp = t_1;
} else if (NdChar <= -2.06e-10) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 3.8e+53) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 9.5e+277) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -1e+149: tmp = t_1 elif NdChar <= -2.06e-10: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif NdChar <= 8.5e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 3.8e+53: tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))) elif NdChar <= 9.5e+277: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -1e+149) tmp = t_1; elseif (NdChar <= -2.06e-10) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (NdChar <= 8.5e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 3.8e+53) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -1e+149) tmp = t_1; elseif (NdChar <= -2.06e-10) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (NdChar <= 8.5e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 3.8e+53) tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))); elseif (NdChar <= 9.5e+277) tmp = t_1; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1e+149], t$95$1, If[LessEqual[NdChar, -2.06e-10], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.5e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.8e+53], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.5e+277], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -1 \cdot 10^{+149}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -2.06 \cdot 10^{-10}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 3.8 \cdot 10^{+53}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+277}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.00000000000000005e149 or 3.79999999999999997e53 < NdChar < 9.4999999999999997e277Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.8%
Taylor expanded in Ev around 0 59.7%
unpow259.7%
unpow259.7%
Simplified59.7%
Taylor expanded in Ev around inf 66.8%
associate-*r/66.8%
unpow266.8%
unpow266.8%
Simplified66.8%
if -1.00000000000000005e149 < NdChar < -2.0600000000000001e-10Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.4%
Taylor expanded in Vef around inf 69.9%
if -2.0600000000000001e-10 < NdChar < 8.5e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.4%
Taylor expanded in mu around 0 67.0%
if 8.5e-156 < NdChar < 3.79999999999999997e53Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
if 9.4999999999999997e277 < NdChar Initial program 99.8%
neg-sub099.8%
associate--r-99.8%
+-commutative99.8%
neg-sub099.8%
sub-neg99.8%
associate--l-99.8%
unsub-neg99.8%
+-commutative99.8%
associate-+l+99.8%
Simplified99.8%
Taylor expanded in Ev around inf 82.4%
Taylor expanded in EDonor around inf 70.3%
Final simplification67.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -1.4e+22) (not (<= Vef 1.95e+17)))
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1.4e+22) || !(Vef <= 1.95e+17)) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-1.4d+22)) .or. (.not. (vef <= 1.95d+17))) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt))))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1.4e+22) || !(Vef <= 1.95e+17)) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -1.4e+22) or not (Vef <= 1.95e+17): tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -1.4e+22) || !(Vef <= 1.95e+17)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -1.4e+22) || ~((Vef <= 1.95e+17))) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -1.4e+22], N[Not[LessEqual[Vef, 1.95e+17]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1.4 \cdot 10^{+22} \lor \neg \left(Vef \leq 1.95 \cdot 10^{+17}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.4e22 or 1.95e17 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.9%
Taylor expanded in Ec around 0 85.1%
if -1.4e22 < Vef < 1.95e17Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.1%
Final simplification81.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -5e+98)
t_1
(if (<= NdChar -8.5e-14)
(+
t_0
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (* (/ Ev KbT) (/ Ev KbT))))))))
(if (<= NdChar 8.5e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 4.5e+51)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ 1.0 (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NdChar 1.85e+272)
t_1
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -5e+98) {
tmp = t_1;
} else if (NdChar <= -8.5e-14) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 4.5e+51) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 1.85e+272) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-5d+98)) then
tmp = t_1
else if (ndchar <= (-8.5d-14)) then
tmp = t_0 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev / kbt) * (ev / kbt)))))))
else if (ndchar <= 8.5d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 4.5d+51) then
tmp = t_0 + (nachar / (1.0d0 + (((ev / kbt) + ((eaccept / kbt) + (1.0d0 + (vef / kbt)))) - (mu / kbt))))
else if (ndchar <= 1.85d+272) then
tmp = t_1
else
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -5e+98) {
tmp = t_1;
} else if (NdChar <= -8.5e-14) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 4.5e+51) {
tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT))));
} else if (NdChar <= 1.85e+272) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -5e+98: tmp = t_1 elif NdChar <= -8.5e-14: tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))) elif NdChar <= 8.5e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 4.5e+51: tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))) elif NdChar <= 1.85e+272: tmp = t_1 else: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -5e+98) tmp = t_1; elseif (NdChar <= -8.5e-14) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev / KbT) * Float64(Ev / KbT)))))))); elseif (NdChar <= 8.5e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 4.5e+51) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(1.0 + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 1.85e+272) tmp = t_1; else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -5e+98) tmp = t_1; elseif (NdChar <= -8.5e-14) tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))); elseif (NdChar <= 8.5e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 4.5e+51) tmp = t_0 + (NaChar / (1.0 + (((Ev / KbT) + ((EAccept / KbT) + (1.0 + (Vef / KbT)))) - (mu / KbT)))); elseif (NdChar <= 1.85e+272) tmp = t_1; else tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5e+98], t$95$1, If[LessEqual[NdChar, -8.5e-14], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev / KbT), $MachinePrecision] * N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.5e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.5e+51], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.85e+272], t$95$1, N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -5 \cdot 10^{+98}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -8.5 \cdot 10^{-14}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \left(\frac{Ev}{KbT} \cdot \frac{Ev}{KbT}\right)\right)\right)}\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 4.5 \cdot 10^{+51}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(1 + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 1.85 \cdot 10^{+272}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -4.9999999999999998e98 or 4.5e51 < NdChar < 1.8499999999999999e272Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.2%
Taylor expanded in Ev around 0 57.2%
unpow257.2%
unpow257.2%
Simplified57.2%
Taylor expanded in Ev around inf 64.6%
associate-*r/64.6%
unpow264.6%
unpow264.6%
Simplified64.6%
if -4.9999999999999998e98 < NdChar < -8.50000000000000038e-14Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.2%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
Simplified60.9%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
times-frac61.1%
Simplified61.1%
if -8.50000000000000038e-14 < NdChar < 8.5e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
Taylor expanded in mu around 0 67.6%
if 8.5e-156 < NdChar < 4.5e51Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
if 1.8499999999999999e272 < NdChar Initial program 99.8%
neg-sub099.8%
associate--r-99.8%
+-commutative99.8%
neg-sub099.8%
sub-neg99.8%
associate--l-99.8%
unsub-neg99.8%
+-commutative99.8%
associate-+l+99.8%
Simplified99.8%
Taylor expanded in Vef around inf 90.8%
Taylor expanded in Vef around 0 68.6%
Final simplification66.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -1.45e+98)
t_1
(if (<= NdChar -8.5e-12)
(+
t_0
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (* (/ Ev KbT) (/ Ev KbT))))))))
(if (<= NdChar 8.5e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 1.35e+53)
(+ t_0 (/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1.45e+98) {
tmp = t_1;
} else if (NdChar <= -8.5e-12) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 1.35e+53) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-1.45d+98)) then
tmp = t_1
else if (ndchar <= (-8.5d-12)) then
tmp = t_0 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev / kbt) * (ev / kbt)))))))
else if (ndchar <= 8.5d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 1.35d+53) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -1.45e+98) {
tmp = t_1;
} else if (NdChar <= -8.5e-12) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT)))))));
} else if (NdChar <= 8.5e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 1.35e+53) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -1.45e+98: tmp = t_1 elif NdChar <= -8.5e-12: tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))) elif NdChar <= 8.5e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 1.35e+53: tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -1.45e+98) tmp = t_1; elseif (NdChar <= -8.5e-12) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev / KbT) * Float64(Ev / KbT)))))))); elseif (NdChar <= 8.5e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 1.35e+53) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -1.45e+98) tmp = t_1; elseif (NdChar <= -8.5e-12) tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev / KbT) * (Ev / KbT))))))); elseif (NdChar <= 8.5e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 1.35e+53) tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.45e+98], t$95$1, If[LessEqual[NdChar, -8.5e-12], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev / KbT), $MachinePrecision] * N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.5e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.35e+53], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -1.45 \cdot 10^{+98}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -8.5 \cdot 10^{-12}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \left(\frac{Ev}{KbT} \cdot \frac{Ev}{KbT}\right)\right)\right)}\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 1.35 \cdot 10^{+53}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -1.45000000000000005e98 or 1.3500000000000001e53 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.3%
Taylor expanded in Ev around 0 56.6%
unpow256.6%
unpow256.6%
Simplified56.6%
Taylor expanded in Ev around inf 64.2%
associate-*r/64.2%
unpow264.2%
unpow264.2%
Simplified64.2%
if -1.45000000000000005e98 < NdChar < -8.4999999999999997e-12Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.2%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
Simplified60.9%
Taylor expanded in Ev around 0 60.9%
unpow260.9%
unpow260.9%
times-frac61.1%
Simplified61.1%
if -8.4999999999999997e-12 < NdChar < 8.5e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
Taylor expanded in mu around 0 67.6%
if 8.5e-156 < NdChar < 1.3500000000000001e53Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.1%
neg-mul-183.1%
distribute-neg-frac83.1%
Simplified83.1%
Taylor expanded in mu around 0 65.9%
mul-1-neg65.9%
unsub-neg65.9%
Simplified65.9%
Final simplification65.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (/ (* 0.5 (* Ev Ev)) (* KbT KbT)))))))
(if (<= NdChar -4.3e+89)
t_1
(if (<= NdChar -5.5e-14)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NdChar 5.8e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 7e+52)
(+ t_0 (/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -4.3e+89) {
tmp = t_1;
} else if (NdChar <= -5.5e-14) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 5.8e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 7e+52) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + ((0.5d0 * (ev * ev)) / (kbt * kbt))))
if (ndchar <= (-4.3d+89)) then
tmp = t_1
else if (ndchar <= (-5.5d-14)) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (ndchar <= 5.8d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 7d+52) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT))));
double tmp;
if (NdChar <= -4.3e+89) {
tmp = t_1;
} else if (NdChar <= -5.5e-14) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 5.8e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 7e+52) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))) tmp = 0 if NdChar <= -4.3e+89: tmp = t_1 elif NdChar <= -5.5e-14: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif NdChar <= 5.8e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 7e+52: tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(0.5 * Float64(Ev * Ev)) / Float64(KbT * KbT))))) tmp = 0.0 if (NdChar <= -4.3e+89) tmp = t_1; elseif (NdChar <= -5.5e-14) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NdChar <= 5.8e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 7e+52) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / (1.0 + ((0.5 * (Ev * Ev)) / (KbT * KbT)))); tmp = 0.0; if (NdChar <= -4.3e+89) tmp = t_1; elseif (NdChar <= -5.5e-14) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (NdChar <= 5.8e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 7e+52) tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(0.5 * N[(Ev * Ev), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4.3e+89], t$95$1, If[LessEqual[NdChar, -5.5e-14], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.8e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 7e+52], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + \frac{0.5 \cdot \left(Ev \cdot Ev\right)}{KbT \cdot KbT}}\\
\mathbf{if}\;NdChar \leq -4.3 \cdot 10^{+89}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -5.5 \cdot 10^{-14}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 7 \cdot 10^{+52}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -4.3000000000000002e89 or 7e52 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.9%
Taylor expanded in Ev around 0 56.5%
unpow256.5%
unpow256.5%
Simplified56.5%
Taylor expanded in Ev around inf 63.9%
associate-*r/63.9%
unpow263.9%
unpow263.9%
Simplified63.9%
if -4.3000000000000002e89 < NdChar < -5.49999999999999991e-14Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 93.1%
Taylor expanded in Vef around 0 72.3%
if -5.49999999999999991e-14 < NdChar < 5.80000000000000041e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
Taylor expanded in mu around 0 67.6%
if 5.80000000000000041e-156 < NdChar < 7e52Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.1%
neg-mul-183.1%
distribute-neg-frac83.1%
Simplified83.1%
Taylor expanded in mu around 0 65.9%
mul-1-neg65.9%
unsub-neg65.9%
Simplified65.9%
Final simplification66.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))))
(if (<= NdChar -1.65e-11)
t_1
(if (<= NdChar 3.75e-156)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(if (<= NdChar 2.9e+31)
(+ t_0 (/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -1.65e-11) {
tmp = t_1;
} else if (NdChar <= 3.75e-156) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 2.9e+31) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
if (ndchar <= (-1.65d-11)) then
tmp = t_1
else if (ndchar <= 3.75d-156) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else if (ndchar <= 2.9d+31) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -1.65e-11) {
tmp = t_1;
} else if (NdChar <= 3.75e-156) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else if (NdChar <= 2.9e+31) {
tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) tmp = 0 if NdChar <= -1.65e-11: tmp = t_1 elif NdChar <= 3.75e-156: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) elif NdChar <= 2.9e+31: tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / 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(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -1.65e-11) tmp = t_1; elseif (NdChar <= 3.75e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (NdChar <= 2.9e+31) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -1.65e-11) tmp = t_1; elseif (NdChar <= 3.75e-156) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); elseif (NdChar <= 2.9e+31) tmp = t_0 + (NaChar / (1.0 + (1.0 - (mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.65e-11], t$95$1, If[LessEqual[NdChar, 3.75e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.9e+31], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -1.65 \cdot 10^{-11}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 3.75 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 2.9 \cdot 10^{+31}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -1.6500000000000001e-11 or 2.9e31 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.1%
Taylor expanded in Vef around 0 64.5%
if -1.6500000000000001e-11 < NdChar < 3.74999999999999979e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
Taylor expanded in mu around 0 67.6%
if 3.74999999999999979e-156 < NdChar < 2.9e31Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.7%
neg-mul-184.7%
distribute-neg-frac84.7%
Simplified84.7%
Taylor expanded in mu around 0 68.2%
mul-1-neg68.2%
unsub-neg68.2%
Simplified68.2%
Final simplification66.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.5e-116) (not (<= NaChar 3.4e+69)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.5e-116) || !(NaChar <= 3.4e+69)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.5d-116)) .or. (.not. (nachar <= 3.4d+69))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.5e-116) || !(NaChar <= 3.4e+69)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.5e-116) or not (NaChar <= 3.4e+69): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.5e-116) || !(NaChar <= 3.4e+69)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.5e-116) || ~((NaChar <= 3.4e+69))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.5e-116], N[Not[LessEqual[NaChar, 3.4e+69]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.5 \cdot 10^{-116} \lor \neg \left(NaChar \leq 3.4 \cdot 10^{+69}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -4.50000000000000012e-116 or 3.39999999999999986e69 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.8%
Taylor expanded in mu around 0 59.2%
if -4.50000000000000012e-116 < NaChar < 3.39999999999999986e69Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.9%
Taylor expanded in Vef around 0 70.2%
Final simplification64.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.35e+149) (not (<= NdChar 2.05e-38)))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.35e+149) || !(NdChar <= 2.05e-38)) {
tmp = NdChar / (1.0 + exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.35d+149)) .or. (.not. (ndchar <= 2.05d-38))) then
tmp = ndchar / (1.0d0 + exp((-ec / kbt)))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.35e+149) || !(NdChar <= 2.05e-38)) {
tmp = NdChar / (1.0 + Math.exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.35e+149) or not (NdChar <= 2.05e-38): tmp = NdChar / (1.0 + math.exp((-Ec / KbT))) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.35e+149) || !(NdChar <= 2.05e-38)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.35e+149) || ~((NdChar <= 2.05e-38))) tmp = NdChar / (1.0 + exp((-Ec / KbT))); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.35e+149], N[Not[LessEqual[NdChar, 2.05e-38]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.35 \cdot 10^{+149} \lor \neg \left(NdChar \leq 2.05 \cdot 10^{-38}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -1.35e149 or 2.0499999999999999e-38 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.7%
Taylor expanded in Ec around inf 40.1%
mul-1-neg40.1%
distribute-neg-frac40.1%
Simplified40.1%
Taylor expanded in NdChar around inf 48.6%
mul-1-neg48.6%
distribute-frac-neg48.6%
Simplified48.6%
if -1.35e149 < NdChar < 2.0499999999999999e-38Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.3%
Taylor expanded in mu around 0 60.0%
Final simplification55.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.6e+14) (not (<= NdChar 4e-42)))
(+ (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))) (/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.6e+14) || !(NdChar <= 4e-42)) {
tmp = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.6d+14)) .or. (.not. (ndchar <= 4d-42))) then
tmp = (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.6e+14) || !(NdChar <= 4e-42)) {
tmp = (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.6e+14) or not (NdChar <= 4e-42): tmp = (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.6e+14) || !(NdChar <= 4e-42)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.6e+14) || ~((NdChar <= 4e-42))) tmp = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.6e+14], N[Not[LessEqual[NdChar, 4e-42]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.6 \cdot 10^{+14} \lor \neg \left(NdChar \leq 4 \cdot 10^{-42}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -1.6e14 or 4.00000000000000015e-42 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.7%
Taylor expanded in Ec around 0 54.5%
if -1.6e14 < NdChar < 4.00000000000000015e-42Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.3%
Taylor expanded in mu around 0 61.9%
Final simplification58.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -750000000000.0) (not (<= NdChar 1.7e-152)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -750000000000.0) || !(NdChar <= 1.7e-152)) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-750000000000.0d0)) .or. (.not. (ndchar <= 1.7d-152))) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -750000000000.0) || !(NdChar <= 1.7e-152)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -750000000000.0) or not (NdChar <= 1.7e-152): tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -750000000000.0) || !(NdChar <= 1.7e-152)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -750000000000.0) || ~((NdChar <= 1.7e-152))) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -750000000000.0], N[Not[LessEqual[NdChar, 1.7e-152]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -750000000000 \lor \neg \left(NdChar \leq 1.7 \cdot 10^{-152}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -7.5e11 or 1.69999999999999992e-152 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.1%
if -7.5e11 < NdChar < 1.69999999999999992e-152Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.8%
Taylor expanded in mu around 0 64.2%
Final simplification61.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))))
(if (<= KbT -6.5e-21)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))
(if (<= KbT -3.3e-264)
t_0
(if (<= KbT 1.7e-174)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar (/ KbT Vef)))
(if (<= KbT 1.15e+103)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((-Ec / KbT)));
double tmp;
if (KbT <= -6.5e-21) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else if (KbT <= -3.3e-264) {
tmp = t_0;
} else if (KbT <= 1.7e-174) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (KbT / Vef));
} else if (KbT <= 1.15e+103) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-ec / kbt)))
if (kbt <= (-6.5d-21)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else if (kbt <= (-3.3d-264)) then
tmp = t_0
else if (kbt <= 1.7d-174) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * (kbt / vef))
else if (kbt <= 1.15d+103) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((-Ec / KbT)));
double tmp;
if (KbT <= -6.5e-21) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else if (KbT <= -3.3e-264) {
tmp = t_0;
} else if (KbT <= 1.7e-174) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * (KbT / Vef));
} else if (KbT <= 1.15e+103) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-Ec / KbT))) tmp = 0 if KbT <= -6.5e-21: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) elif KbT <= -3.3e-264: tmp = t_0 elif KbT <= 1.7e-174: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * (KbT / Vef)) elif KbT <= 1.15e+103: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) tmp = 0.0 if (KbT <= -6.5e-21) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); elseif (KbT <= -3.3e-264) tmp = t_0; elseif (KbT <= 1.7e-174) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * Float64(KbT / Vef))); elseif (KbT <= 1.15e+103) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-Ec / KbT))); tmp = 0.0; if (KbT <= -6.5e-21) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); elseif (KbT <= -3.3e-264) tmp = t_0; elseif (KbT <= 1.7e-174) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (KbT / Vef)); elseif (KbT <= 1.15e+103) tmp = t_0; else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -6.5e-21], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.3e-264], t$95$0, If[LessEqual[KbT, 1.7e-174], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.15e+103], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{if}\;KbT \leq -6.5 \cdot 10^{-21}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -3.3 \cdot 10^{-264}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq 1.7 \cdot 10^{-174}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot \frac{KbT}{Vef}\\
\mathbf{elif}\;KbT \leq 1.15 \cdot 10^{+103}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -6.49999999999999987e-21Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.0%
Taylor expanded in Vef around inf 59.1%
Taylor expanded in Vef around 0 54.9%
if -6.49999999999999987e-21 < KbT < -3.30000000000000013e-264 or 1.7000000000000001e-174 < KbT < 1.15000000000000004e103Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around inf 32.9%
mul-1-neg32.9%
distribute-neg-frac32.9%
Simplified32.9%
Taylor expanded in NdChar around inf 43.2%
mul-1-neg43.2%
distribute-frac-neg43.2%
Simplified43.2%
if -3.30000000000000013e-264 < KbT < 1.7000000000000001e-174Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 58.7%
Taylor expanded in KbT around inf 35.0%
Taylor expanded in Vef around inf 41.2%
associate-/l*38.7%
Simplified38.7%
associate-/r/41.2%
Applied egg-rr41.2%
if 1.15000000000000004e103 < KbT Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.5%
Taylor expanded in EDonor around inf 65.6%
Final simplification48.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))))
(if (<= KbT -2.3e-103)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= KbT -9.2e-265)
t_0
(if (<= KbT 6.5e-177)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar (/ KbT Vef)))
(if (<= KbT 3.4e+101)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((-Ec / KbT)));
double tmp;
if (KbT <= -2.3e-103) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (KbT <= -9.2e-265) {
tmp = t_0;
} else if (KbT <= 6.5e-177) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (KbT / Vef));
} else if (KbT <= 3.4e+101) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-ec / kbt)))
if (kbt <= (-2.3d-103)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (kbt <= (-9.2d-265)) then
tmp = t_0
else if (kbt <= 6.5d-177) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * (kbt / vef))
else if (kbt <= 3.4d+101) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((-Ec / KbT)));
double tmp;
if (KbT <= -2.3e-103) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (KbT <= -9.2e-265) {
tmp = t_0;
} else if (KbT <= 6.5e-177) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * (KbT / Vef));
} else if (KbT <= 3.4e+101) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-Ec / KbT))) tmp = 0 if KbT <= -2.3e-103: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif KbT <= -9.2e-265: tmp = t_0 elif KbT <= 6.5e-177: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * (KbT / Vef)) elif KbT <= 3.4e+101: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) tmp = 0.0 if (KbT <= -2.3e-103) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (KbT <= -9.2e-265) tmp = t_0; elseif (KbT <= 6.5e-177) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * Float64(KbT / Vef))); elseif (KbT <= 3.4e+101) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-Ec / KbT))); tmp = 0.0; if (KbT <= -2.3e-103) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (KbT <= -9.2e-265) tmp = t_0; elseif (KbT <= 6.5e-177) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (KbT / Vef)); elseif (KbT <= 3.4e+101) tmp = t_0; else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.3e-103], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -9.2e-265], t$95$0, If[LessEqual[KbT, 6.5e-177], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.4e+101], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{if}\;KbT \leq -2.3 \cdot 10^{-103}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;KbT \leq -9.2 \cdot 10^{-265}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq 6.5 \cdot 10^{-177}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot \frac{KbT}{Vef}\\
\mathbf{elif}\;KbT \leq 3.4 \cdot 10^{+101}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -2.3000000000000001e-103Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.7%
Taylor expanded in Vef around inf 55.2%
Taylor expanded in Vef around 0 52.9%
if -2.3000000000000001e-103 < KbT < -9.1999999999999996e-265 or 6.4999999999999998e-177 < KbT < 3.40000000000000017e101Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.9%
Taylor expanded in Ec around inf 34.7%
mul-1-neg34.7%
distribute-neg-frac34.7%
Simplified34.7%
Taylor expanded in NdChar around inf 45.1%
mul-1-neg45.1%
distribute-frac-neg45.1%
Simplified45.1%
if -9.1999999999999996e-265 < KbT < 6.4999999999999998e-177Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 58.7%
Taylor expanded in KbT around inf 35.0%
Taylor expanded in Vef around inf 41.2%
associate-/l*38.7%
Simplified38.7%
associate-/r/41.2%
Applied egg-rr41.2%
if 3.40000000000000017e101 < KbT Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.5%
Taylor expanded in EDonor around inf 65.6%
Final simplification49.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -9.2e-116)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= NaChar 8.5e+77)
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(+ (/ NaChar (+ 1.0 (exp (- (/ mu KbT))))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -9.2e-116) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 8.5e+77) {
tmp = NdChar / (1.0 + exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + exp(-(mu / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-9.2d-116)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 8.5d+77) then
tmp = ndchar / (1.0d0 + exp((-ec / kbt)))
else
tmp = (nachar / (1.0d0 + exp(-(mu / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -9.2e-116) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 8.5e+77) {
tmp = NdChar / (1.0 + Math.exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp(-(mu / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -9.2e-116: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif NaChar <= 8.5e+77: tmp = NdChar / (1.0 + math.exp((-Ec / KbT))) else: tmp = (NaChar / (1.0 + math.exp(-(mu / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -9.2e-116) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 8.5e+77) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT))))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -9.2e-116) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 8.5e+77) tmp = NdChar / (1.0 + exp((-Ec / KbT))); else tmp = (NaChar / (1.0 + exp(-(mu / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -9.2e-116], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8.5e+77], N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -9.2 \cdot 10^{-116}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 8.5 \cdot 10^{+77}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{-\frac{mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -9.20000000000000006e-116Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.5%
Taylor expanded in KbT around inf 45.2%
if -9.20000000000000006e-116 < NaChar < 8.50000000000000018e77Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.1%
Taylor expanded in Ec around inf 44.8%
mul-1-neg44.8%
distribute-neg-frac44.8%
Simplified44.8%
Taylor expanded in NdChar around inf 46.9%
mul-1-neg46.9%
distribute-frac-neg46.9%
Simplified46.9%
if 8.50000000000000018e77 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.5%
neg-mul-168.5%
distribute-neg-frac68.5%
Simplified68.5%
Taylor expanded in KbT around inf 45.3%
Final simplification46.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -6.6e-118) (not (<= NaChar 9.5e+67))) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -6.6e-118) || !(NaChar <= 9.5e+67)) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = NdChar / (1.0 + exp((-Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-6.6d-118)) .or. (.not. (nachar <= 9.5d+67))) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = ndchar / (1.0d0 + exp((-ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -6.6e-118) || !(NaChar <= 9.5e+67)) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = NdChar / (1.0 + Math.exp((-Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -6.6e-118) or not (NaChar <= 9.5e+67): tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = NdChar / (1.0 + math.exp((-Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -6.6e-118) || !(NaChar <= 9.5e+67)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -6.6e-118) || ~((NaChar <= 9.5e+67))) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = NdChar / (1.0 + exp((-Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -6.6e-118], N[Not[LessEqual[NaChar, 9.5e+67]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -6.6 \cdot 10^{-118} \lor \neg \left(NaChar \leq 9.5 \cdot 10^{+67}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -6.5999999999999999e-118 or 9.5000000000000002e67 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.7%
Taylor expanded in KbT around inf 44.6%
if -6.5999999999999999e-118 < NaChar < 9.5000000000000002e67Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
Taylor expanded in Ec around inf 45.5%
mul-1-neg45.5%
distribute-neg-frac45.5%
Simplified45.5%
Taylor expanded in NdChar around inf 47.8%
mul-1-neg47.8%
distribute-frac-neg47.8%
Simplified47.8%
Final simplification46.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -4.3e-116)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= NaChar 3e+70)
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -4.3e-116) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3e+70) {
tmp = NdChar / (1.0 + exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-4.3d-116)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 3d+70) then
tmp = ndchar / (1.0d0 + exp((-ec / kbt)))
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -4.3e-116) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 3e+70) {
tmp = NdChar / (1.0 + Math.exp((-Ec / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -4.3e-116: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif NaChar <= 3e+70: tmp = NdChar / (1.0 + math.exp((-Ec / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -4.3e-116) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 3e+70) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -4.3e-116) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 3e+70) tmp = NdChar / (1.0 + exp((-Ec / KbT))); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -4.3e-116], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3e+70], N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.3 \cdot 10^{-116}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 3 \cdot 10^{+70}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -4.2999999999999997e-116Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.5%
Taylor expanded in KbT around inf 45.2%
if -4.2999999999999997e-116 < NaChar < 2.99999999999999976e70Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
Taylor expanded in Ec around inf 45.5%
mul-1-neg45.5%
distribute-neg-frac45.5%
Simplified45.5%
Taylor expanded in NdChar around inf 47.8%
mul-1-neg47.8%
distribute-frac-neg47.8%
Simplified47.8%
if 2.99999999999999976e70 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 71.2%
Taylor expanded in KbT around inf 43.3%
Final simplification46.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.6e+20)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 5.4e+104)
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(+
(/ NaChar 2.0)
(/ NdChar (+ (/ mu KbT) (+ (/ EDonor KbT) (+ (/ Vef KbT) 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.6e+20) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 5.4e+104) {
tmp = NdChar / (1.0 + exp((-Ec / KbT)));
} else {
tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + ((EDonor / KbT) + ((Vef / KbT) + 2.0))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-2.6d+20)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 5.4d+104) then
tmp = ndchar / (1.0d0 + exp((-ec / kbt)))
else
tmp = (nachar / 2.0d0) + (ndchar / ((mu / kbt) + ((edonor / kbt) + ((vef / kbt) + 2.0d0))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.6e+20) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 5.4e+104) {
tmp = NdChar / (1.0 + Math.exp((-Ec / KbT)));
} else {
tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + ((EDonor / KbT) + ((Vef / KbT) + 2.0))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.6e+20: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 5.4e+104: tmp = NdChar / (1.0 + math.exp((-Ec / KbT))) else: tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + ((EDonor / KbT) + ((Vef / KbT) + 2.0)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.6e+20) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 5.4e+104) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(Float64(mu / KbT) + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + 2.0))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -2.6e+20) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 5.4e+104) tmp = NdChar / (1.0 + exp((-Ec / KbT))); else tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + ((EDonor / KbT) + ((Vef / KbT) + 2.0)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.6e+20], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 5.4e+104], N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.6 \cdot 10^{+20}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 5.4 \cdot 10^{+104}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{\frac{mu}{KbT} + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + 2\right)\right)}\\
\end{array}
\end{array}
if KbT < -2.6e20Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.9%
Taylor expanded in Ec around inf 50.3%
mul-1-neg50.3%
distribute-neg-frac50.3%
Simplified50.3%
Taylor expanded in Ec around 0 50.6%
distribute-lft-out50.6%
Simplified50.6%
if -2.6e20 < KbT < 5.39999999999999969e104Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 38.6%
Taylor expanded in Ec around inf 29.5%
mul-1-neg29.5%
distribute-neg-frac29.5%
Simplified29.5%
Taylor expanded in NdChar around inf 38.7%
mul-1-neg38.7%
distribute-frac-neg38.7%
Simplified38.7%
if 5.39999999999999969e104 < KbT Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.5%
Taylor expanded in Ec around 0 71.7%
Taylor expanded in KbT around inf 58.3%
+-commutative58.3%
+-commutative58.3%
associate-+l+58.3%
Simplified58.3%
Final simplification43.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.7%
Taylor expanded in Ec around inf 37.8%
mul-1-neg37.8%
distribute-neg-frac37.8%
Simplified37.8%
Taylor expanded in Ec around 0 27.6%
distribute-lft-out27.6%
Simplified27.6%
Final simplification27.6%
herbie shell --seed 2023182
(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))))))