
(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 24 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 (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev 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 + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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 + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - 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 + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - 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(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_2 (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_1)))
(if (<= Vef -7e+177)
t_2
(if (<= Vef -1.25e+68)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1)
(if (<= Vef -1.8e-146)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= Vef 1.4e-260)
t_0
(if (<= Vef 5.8e-173)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 1.22e+38) t_0 t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_1;
double tmp;
if (Vef <= -7e+177) {
tmp = t_2;
} else if (Vef <= -1.25e+68) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1;
} else if (Vef <= -1.8e-146) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.4e-260) {
tmp = t_0;
} else if (Vef <= 5.8e-173) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 1.22e+38) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_1 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_2 = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_1
if (vef <= (-7d+177)) then
tmp = t_2
else if (vef <= (-1.25d+68)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_1
else if (vef <= (-1.8d-146)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (vef <= 1.4d-260) then
tmp = t_0
else if (vef <= 5.8d-173) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 1.22d+38) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_1;
double tmp;
if (Vef <= -7e+177) {
tmp = t_2;
} else if (Vef <= -1.25e+68) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_1;
} else if (Vef <= -1.8e-146) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (Vef <= 1.4e-260) {
tmp = t_0;
} else if (Vef <= 5.8e-173) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 1.22e+38) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_1 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_2 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_1 tmp = 0 if Vef <= -7e+177: tmp = t_2 elif Vef <= -1.25e+68: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_1 elif Vef <= -1.8e-146: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif Vef <= 1.4e-260: tmp = t_0 elif Vef <= 5.8e-173: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 1.22e+38: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_1) tmp = 0.0 if (Vef <= -7e+177) tmp = t_2; elseif (Vef <= -1.25e+68) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_1); elseif (Vef <= -1.8e-146) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (Vef <= 1.4e-260) tmp = t_0; elseif (Vef <= 5.8e-173) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 1.22e+38) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_1 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_1; tmp = 0.0; if (Vef <= -7e+177) tmp = t_2; elseif (Vef <= -1.25e+68) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1; elseif (Vef <= -1.8e-146) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (Vef <= 1.4e-260) tmp = t_0; elseif (Vef <= 5.8e-173) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 1.22e+38) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[Vef, -7e+177], t$95$2, If[LessEqual[Vef, -1.25e+68], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[Vef, -1.8e-146], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.4e-260], t$95$0, If[LessEqual[Vef, 5.8e-173], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.22e+38], t$95$0, t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t_1\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+177}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -1.25 \cdot 10^{+68}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_1\\
\mathbf{elif}\;Vef \leq -1.8 \cdot 10^{-146}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq 1.4 \cdot 10^{-260}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;Vef \leq 5.8 \cdot 10^{-173}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.22 \cdot 10^{+38}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= mu -1.6e+113)
t_0
(if (<= mu -6e-65)
t_1
(if (<= mu 1.75e-245)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= mu 3.85e-140)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(if (<= mu 4.9e-58)
t_1
(if (<= mu 7e+45)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0)))
t_0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -1.6e+113) {
tmp = t_0;
} else if (mu <= -6e-65) {
tmp = t_1;
} else if (mu <= 1.75e-245) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 3.85e-140) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
} else if (mu <= 4.9e-58) {
tmp = t_1;
} else if (mu <= 7e+45) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (mu <= (-1.6d+113)) then
tmp = t_0
else if (mu <= (-6d-65)) then
tmp = t_1
else if (mu <= 1.75d-245) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (mu <= 3.85d-140) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
else if (mu <= 4.9d-58) then
tmp = t_1
else if (mu <= 7d+45) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -1.6e+113) {
tmp = t_0;
} else if (mu <= -6e-65) {
tmp = t_1;
} else if (mu <= 1.75e-245) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 3.85e-140) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else if (mu <= 4.9e-58) {
tmp = t_1;
} else if (mu <= 7e+45) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if mu <= -1.6e+113: tmp = t_0 elif mu <= -6e-65: tmp = t_1 elif mu <= 1.75e-245: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif mu <= 3.85e-140: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) elif mu <= 4.9e-58: tmp = t_1 elif mu <= 7e+45: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (mu <= -1.6e+113) tmp = t_0; elseif (mu <= -6e-65) tmp = t_1; elseif (mu <= 1.75e-245) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (mu <= 3.85e-140) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); elseif (mu <= 4.9e-58) tmp = t_1; elseif (mu <= 7e+45) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (mu <= -1.6e+113) tmp = t_0; elseif (mu <= -6e-65) tmp = t_1; elseif (mu <= 1.75e-245) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (mu <= 3.85e-140) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); elseif (mu <= 4.9e-58) tmp = t_1; elseif (mu <= 7e+45) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.6e+113], t$95$0, If[LessEqual[mu, -6e-65], t$95$1, If[LessEqual[mu, 1.75e-245], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.85e-140], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4.9e-58], t$95$1, If[LessEqual[mu, 7e+45], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.6 \cdot 10^{+113}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq -6 \cdot 10^{-65}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 1.75 \cdot 10^{-245}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;mu \leq 3.85 \cdot 10^{-140}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;mu \leq 4.9 \cdot 10^{-58}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 7 \cdot 10^{+45}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -2.4e+46)
t_1
(if (<= mu -2.55e-258)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu 6.5e+93)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -2.4e+46) {
tmp = t_1;
} else if (mu <= -2.55e-258) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= 6.5e+93) {
tmp = t_0 + (NdChar / (1.0 + exp((-Ec / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-2.4d+46)) then
tmp = t_1
else if (mu <= (-2.55d-258)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= 6.5d+93) then
tmp = t_0 + (ndchar / (1.0d0 + exp((-ec / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -2.4e+46) {
tmp = t_1;
} else if (mu <= -2.55e-258) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= 6.5e+93) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -2.4e+46: tmp = t_1 elif mu <= -2.55e-258: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= 6.5e+93: tmp = t_0 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -2.4e+46) tmp = t_1; elseif (mu <= -2.55e-258) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= 6.5e+93) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -2.4e+46) tmp = t_1; elseif (mu <= -2.55e-258) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= 6.5e+93) tmp = t_0 + (NdChar / (1.0 + exp((-Ec / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.4e+46], t$95$1, If[LessEqual[mu, -2.55e-258], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 6.5e+93], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.4 \cdot 10^{+46}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -2.55 \cdot 10^{-258}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq 6.5 \cdot 10^{+93}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= Vef -7e+177)
(+ t_1 t_0)
(if (<= Vef -9e-147)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 3.9e+38)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (Vef <= -7e+177) {
tmp = t_1 + t_0;
} else if (Vef <= -9e-147) {
tmp = t_1 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 3.9e+38) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (vef <= (-7d+177)) then
tmp = t_1 + t_0
else if (vef <= (-9d-147)) then
tmp = t_1 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 3.9d+38) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (Vef <= -7e+177) {
tmp = t_1 + t_0;
} else if (Vef <= -9e-147) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 3.9e+38) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if Vef <= -7e+177: tmp = t_1 + t_0 elif Vef <= -9e-147: tmp = t_1 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 3.9e+38: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (Vef <= -7e+177) tmp = Float64(t_1 + t_0); elseif (Vef <= -9e-147) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 3.9e+38) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (Vef <= -7e+177) tmp = t_1 + t_0; elseif (Vef <= -9e-147) tmp = t_1 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 3.9e+38) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7e+177], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, -9e-147], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.9e+38], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+177}:\\
\;\;\;\;t_1 + t_0\\
\mathbf{elif}\;Vef \leq -9 \cdot 10^{-147}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 3.9 \cdot 10^{+38}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= Vef -7e+177)
t_0
(if (<= Vef 1.6e-47)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 2.65e+38)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -7e+177) {
tmp = t_0;
} else if (Vef <= 1.6e-47) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 2.65e+38) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (vef <= (-7d+177)) then
tmp = t_0
else if (vef <= 1.6d-47) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 2.65d+38) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -7e+177) {
tmp = t_0;
} else if (Vef <= 1.6e-47) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 2.65e+38) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if Vef <= -7e+177: tmp = t_0 elif Vef <= 1.6e-47: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 2.65e+38: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (Vef <= -7e+177) tmp = t_0; elseif (Vef <= 1.6e-47) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 2.65e+38) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (Vef <= -7e+177) tmp = t_0; elseif (Vef <= 1.6e-47) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 2.65e+38) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7e+177], t$95$0, If[LessEqual[Vef, 1.6e-47], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.65e+38], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+177}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;Vef \leq 1.6 \cdot 10^{-47}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 2.65 \cdot 10^{+38}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= Vef -1.45e+180)
(+ t_1 t_0)
(if (<= Vef 5e-44)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 5.5e+37)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (Vef <= -1.45e+180) {
tmp = t_1 + t_0;
} else if (Vef <= 5e-44) {
tmp = t_1 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 5.5e+37) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (vef <= (-1.45d+180)) then
tmp = t_1 + t_0
else if (vef <= 5d-44) then
tmp = t_1 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 5.5d+37) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (Vef <= -1.45e+180) {
tmp = t_1 + t_0;
} else if (Vef <= 5e-44) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 5.5e+37) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if Vef <= -1.45e+180: tmp = t_1 + t_0 elif Vef <= 5e-44: tmp = t_1 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 5.5e+37: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (Vef <= -1.45e+180) tmp = Float64(t_1 + t_0); elseif (Vef <= 5e-44) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 5.5e+37) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (Vef <= -1.45e+180) tmp = t_1 + t_0; elseif (Vef <= 5e-44) tmp = t_1 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 5.5e+37) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.45e+180], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 5e-44], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 5.5e+37], 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], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.45 \cdot 10^{+180}:\\
\;\;\;\;t_1 + t_0\\
\mathbf{elif}\;Vef \leq 5 \cdot 10^{-44}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 5.5 \cdot 10^{+37}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= mu -8.8e+43) (not (<= mu 6.5e-132)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -8.8e+43) || !(mu <= 6.5e-132)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((mu <= (-8.8d+43)) .or. (.not. (mu <= 6.5d-132))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -8.8e+43) || !(mu <= 6.5e-132)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (mu <= -8.8e+43) or not (mu <= 6.5e-132): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((mu <= -8.8e+43) || !(mu <= 6.5e-132)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((mu <= -8.8e+43) || ~((mu <= 6.5e-132))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[mu, -8.8e+43], N[Not[LessEqual[mu, 6.5e-132]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -8.8 \cdot 10^{+43} \lor \neg \left(mu \leq 6.5 \cdot 10^{-132}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= mu -1.25e+113)
t_0
(if (<= mu -3e-20)
(+ t_1 (/ 1.0 (/ (- 2.0 (/ Ec KbT)) NdChar)))
(if (<= mu 2.1e-250)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= mu 3.8e+45) (+ t_1 (/ NdChar (+ (/ Vef KbT) 2.0))) t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (mu <= -1.25e+113) {
tmp = t_0;
} else if (mu <= -3e-20) {
tmp = t_1 + (1.0 / ((2.0 - (Ec / KbT)) / NdChar));
} else if (mu <= 2.1e-250) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 3.8e+45) {
tmp = t_1 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (mu <= (-1.25d+113)) then
tmp = t_0
else if (mu <= (-3d-20)) then
tmp = t_1 + (1.0d0 / ((2.0d0 - (ec / kbt)) / ndchar))
else if (mu <= 2.1d-250) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (mu <= 3.8d+45) then
tmp = t_1 + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (mu <= -1.25e+113) {
tmp = t_0;
} else if (mu <= -3e-20) {
tmp = t_1 + (1.0 / ((2.0 - (Ec / KbT)) / NdChar));
} else if (mu <= 2.1e-250) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (mu <= 3.8e+45) {
tmp = t_1 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if mu <= -1.25e+113: tmp = t_0 elif mu <= -3e-20: tmp = t_1 + (1.0 / ((2.0 - (Ec / KbT)) / NdChar)) elif mu <= 2.1e-250: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif mu <= 3.8e+45: tmp = t_1 + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (mu <= -1.25e+113) tmp = t_0; elseif (mu <= -3e-20) tmp = Float64(t_1 + Float64(1.0 / Float64(Float64(2.0 - Float64(Ec / KbT)) / NdChar))); elseif (mu <= 2.1e-250) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (mu <= 3.8e+45) tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (mu <= -1.25e+113) tmp = t_0; elseif (mu <= -3e-20) tmp = t_1 + (1.0 / ((2.0 - (Ec / KbT)) / NdChar)); elseif (mu <= 2.1e-250) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (mu <= 3.8e+45) tmp = t_1 + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.25e+113], t$95$0, If[LessEqual[mu, -3e-20], N[(t$95$1 + N[(1.0 / N[(N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.1e-250], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.8e+45], N[(t$95$1 + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -1.25 \cdot 10^{+113}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq -3 \cdot 10^{-20}:\\
\;\;\;\;t_1 + \frac{1}{\frac{2 - \frac{Ec}{KbT}}{NdChar}}\\
\mathbf{elif}\;mu \leq 2.1 \cdot 10^{-250}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;mu \leq 3.8 \cdot 10^{+45}:\\
\;\;\;\;t_1 + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= NdChar -3.2e-39)
(+
t_0
(/
1.0
(/
(+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (- (/ Ev KbT) (/ mu KbT))))
NaChar)))
(if (<= NdChar 3.8e+25)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0)))
(+ t_0 (/ 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(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -3.2e-39) {
tmp = t_0 + (1.0 / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + ((Ev / KbT) - (mu / KbT)))) / NaChar));
} else if (NdChar <= 3.8e+25) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0 + (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(((mu + (edonor + (vef - ec))) / kbt)))
if (ndchar <= (-3.2d-39)) then
tmp = t_0 + (1.0d0 / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + ((ev / kbt) - (mu / kbt)))) / nachar))
else if (ndchar <= 3.8d+25) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_0 + (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(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -3.2e-39) {
tmp = t_0 + (1.0 / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + ((Ev / KbT) - (mu / KbT)))) / NaChar));
} else if (NdChar <= 3.8e+25) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -3.2e-39: tmp = t_0 + (1.0 / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + ((Ev / KbT) - (mu / KbT)))) / NaChar)) elif NdChar <= 3.8e+25: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_0 + (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(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -3.2e-39) tmp = Float64(t_0 + Float64(1.0 / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) - Float64(mu / KbT)))) / NaChar))); elseif (NdChar <= 3.8e+25) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(t_0 + 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(((mu + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -3.2e-39) tmp = t_0 + (1.0 / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + ((Ev / KbT) - (mu / KbT)))) / NaChar)); elseif (NdChar <= 3.8e+25) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_0 + (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[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.2e-39], N[(t$95$0 + N[(1.0 / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.8e+25], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -3.2 \cdot 10^{-39}:\\
\;\;\;\;t_0 + \frac{1}{\frac{\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} - \frac{mu}{KbT}\right)\right)}{NaChar}}\\
\mathbf{elif}\;NdChar \leq 3.8 \cdot 10^{+25}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= NdChar -2.9e-39)
(+
t_0
(/
NaChar
(- (+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= NdChar 5e+25)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0)))
(+ t_0 (/ 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(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -2.9e-39) {
tmp = t_0 + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NdChar <= 5e+25) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0 + (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(((mu + (edonor + (vef - ec))) / kbt)))
if (ndchar <= (-2.9d-39)) then
tmp = t_0 + (nachar / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (ndchar <= 5d+25) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_0 + (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(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -2.9e-39) {
tmp = t_0 + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NdChar <= 5e+25) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -2.9e-39: tmp = t_0 + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif NdChar <= 5e+25: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_0 + (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(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -2.9e-39) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (NdChar <= 5e+25) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(t_0 + 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(((mu + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -2.9e-39) tmp = t_0 + (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (NdChar <= 5e+25) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_0 + (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[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.9e-39], N[(t$95$0 + N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5e+25], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -2.9 \cdot 10^{-39}:\\
\;\;\;\;t_0 + \frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 5 \cdot 10^{+25}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -3.5e-39) (not (<= NdChar 2.6e+26)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ 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 ((NdChar <= -3.5e-39) || !(NdChar <= 2.6e+26)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((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 ((ndchar <= (-3.5d-39)) .or. (.not. (ndchar <= 2.6d+26))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((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 ((NdChar <= -3.5e-39) || !(NdChar <= 2.6e+26)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -3.5e-39) or not (NdChar <= 2.6e+26): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -3.5e-39) || !(NdChar <= 2.6e+26)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / 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 ((NdChar <= -3.5e-39) || ~((NdChar <= 2.6e+26))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -3.5e-39], N[Not[LessEqual[NdChar, 2.6e+26]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -3.5 \cdot 10^{-39} \lor \neg \left(NdChar \leq 2.6 \cdot 10^{+26}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -2.9e-39) (not (<= NdChar 3.8e+25)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar (- 2.0 (/ 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 ((NdChar <= -2.9e-39) || !(NdChar <= 3.8e+25)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 - (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 ((ndchar <= (-2.9d-39)) .or. (.not. (ndchar <= 3.8d+25))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / (2.0d0 - (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 ((NdChar <= -2.9e-39) || !(NdChar <= 3.8e+25)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2.9e-39) or not (NdChar <= 3.8e+25): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2.9e-39) || !(NdChar <= 3.8e+25)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -2.9e-39) || ~((NdChar <= 3.8e+25))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2.9e-39], N[Not[LessEqual[NdChar, 3.8e+25]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $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 + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.9 \cdot 10^{-39} \lor \neg \left(NdChar \leq 3.8 \cdot 10^{+25}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar 2.0))))
(if (<= NdChar -9.5e+42)
t_0
(if (<= NdChar 62000000000000.0)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar 2.0))
(if (<= NdChar 5.8e+101)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.05e+152)
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)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -9.5e+42) {
tmp = t_0;
} else if (NdChar <= 62000000000000.0) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 5.8e+101) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.05e+152) {
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)))) + (nachar / 2.0d0)
if (ndchar <= (-9.5d+42)) then
tmp = t_0
else if (ndchar <= 62000000000000.0d0) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / 2.0d0)
else if (ndchar <= 5.8d+101) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.05d+152) 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)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -9.5e+42) {
tmp = t_0;
} else if (NdChar <= 62000000000000.0) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 5.8e+101) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.05e+152) {
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)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -9.5e+42: tmp = t_0 elif NdChar <= 62000000000000.0: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0) elif NdChar <= 5.8e+101: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.05e+152: 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(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -9.5e+42) tmp = t_0; elseif (NdChar <= 62000000000000.0) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / 2.0)); elseif (NdChar <= 5.8e+101) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.05e+152) 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)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -9.5e+42) tmp = t_0; elseif (NdChar <= 62000000000000.0) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0); elseif (NdChar <= 5.8e+101) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.05e+152) 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[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9.5e+42], t$95$0, If[LessEqual[NdChar, 62000000000000.0], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.8e+101], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e+152], 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}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -9.5 \cdot 10^{+42}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 62000000000000:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{+101}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+152}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -2e-39) (not (<= NdChar 4.6e+25)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev 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 ((NdChar <= -2e-39) || !(NdChar <= 4.6e+25)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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 ((ndchar <= (-2d-39)) .or. (.not. (ndchar <= 4.6d+25))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - 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 ((NdChar <= -2e-39) || !(NdChar <= 4.6e+25)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2e-39) or not (NdChar <= 4.6e+25): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2e-39) || !(NdChar <= 4.6e+25)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - 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 ((NdChar <= -2e-39) || ~((NdChar <= 4.6e+25))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2e-39], N[Not[LessEqual[NdChar, 4.6e+25]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2 \cdot 10^{-39} \lor \neg \left(NdChar \leq 4.6 \cdot 10^{+25}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar 2.0))))
(if (<= KbT -2.05e-14)
t_0
(if (<= KbT 9.6e-163)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= KbT 7.8e-54)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (/ (- mu) KbT)))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -2.05e-14) {
tmp = t_0;
} else if (KbT <= 9.6e-163) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (KbT <= 7.8e-54) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (-mu / KbT));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / 2.0d0)
if (kbt <= (-2.05d-14)) then
tmp = t_0
else if (kbt <= 9.6d-163) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (kbt <= 7.8d-54) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (-mu / kbt))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -2.05e-14) {
tmp = t_0;
} else if (KbT <= 9.6e-163) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (KbT <= 7.8e-54) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (-mu / KbT));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / 2.0) tmp = 0 if KbT <= -2.05e-14: tmp = t_0 elif KbT <= 9.6e-163: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif KbT <= 7.8e-54: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (-mu / KbT)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -2.05e-14) tmp = t_0; elseif (KbT <= 9.6e-163) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (KbT <= 7.8e-54) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(-mu) / KbT))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -2.05e-14) tmp = t_0; elseif (KbT <= 9.6e-163) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (KbT <= 7.8e-54) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (-mu / KbT)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.05e-14], t$95$0, If[LessEqual[KbT, 9.6e-163], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.8e-54], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[((-mu) / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -2.05 \cdot 10^{-14}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq 9.6 \cdot 10^{-163}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;KbT \leq 7.8 \cdot 10^{-54}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{-mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -5e-15)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar 2.0))
(if (<= KbT -3.7e-287)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ (/ EAccept 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 <= -5e-15) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= -3.7e-287) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / 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 <= (-5d-15)) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / 2.0d0)
else if (kbt <= (-3.7d-287)) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((eaccept / 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 <= -5e-15) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= -3.7e-287) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -5e-15: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / 2.0) elif KbT <= -3.7e-287: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -5e-15) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / 2.0)); elseif (KbT <= -3.7e-287) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / 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 <= -5e-15) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0); elseif (KbT <= -3.7e-287) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5e-15], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.7e-287], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5 \cdot 10^{-15}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq -3.7 \cdot 10^{-287}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (or (<= KbT -1.85e-14) (not (<= KbT 3e-62)))
(+ t_0 (* NdChar 0.5))
t_0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if ((KbT <= -1.85e-14) || !(KbT <= 3e-62)) {
tmp = t_0 + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((eaccept / kbt)))
if ((kbt <= (-1.85d-14)) .or. (.not. (kbt <= 3d-62))) then
tmp = t_0 + (ndchar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if ((KbT <= -1.85e-14) || !(KbT <= 3e-62)) {
tmp = t_0 + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if (KbT <= -1.85e-14) or not (KbT <= 3e-62): tmp = t_0 + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if ((KbT <= -1.85e-14) || !(KbT <= 3e-62)) tmp = Float64(t_0 + Float64(NdChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if ((KbT <= -1.85e-14) || ~((KbT <= 3e-62))) tmp = t_0 + (NdChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[KbT, -1.85e-14], N[Not[LessEqual[KbT, 3e-62]], $MachinePrecision]], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.85 \cdot 10^{-14} \lor \neg \left(KbT \leq 3 \cdot 10^{-62}\right):\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= KbT -1.06e-14)
(+ t_0 (* NdChar 0.5))
(if (<= KbT 1.85e-62)
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 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if (KbT <= -1.06e-14) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= 1.85e-62) {
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 = nachar / (1.0d0 + exp((eaccept / kbt)))
if (kbt <= (-1.06d-14)) then
tmp = t_0 + (ndchar * 0.5d0)
else if (kbt <= 1.85d-62) 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 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if (KbT <= -1.06e-14) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= 1.85e-62) {
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 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if KbT <= -1.06e-14: tmp = t_0 + (NdChar * 0.5) elif KbT <= 1.85e-62: 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(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (KbT <= -1.06e-14) tmp = Float64(t_0 + Float64(NdChar * 0.5)); elseif (KbT <= 1.85e-62) 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 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if (KbT <= -1.06e-14) tmp = t_0 + (NdChar * 0.5); elseif (KbT <= 1.85e-62) 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[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.06e-14], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.85e-62], 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{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.06 \cdot 10^{-14}:\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.85 \cdot 10^{-62}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= KbT -2.05e-14)
(+ t_0 (* NdChar 0.5))
(if (<= KbT 7.6e-140)
t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if (KbT <= -2.05e-14) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= 7.6e-140) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((eaccept / kbt)))
if (kbt <= (-2.05d-14)) then
tmp = t_0 + (ndchar * 0.5d0)
else if (kbt <= 7.6d-140) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if (KbT <= -2.05e-14) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= 7.6e-140) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if KbT <= -2.05e-14: tmp = t_0 + (NdChar * 0.5) elif KbT <= 7.6e-140: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (KbT <= -2.05e-14) tmp = Float64(t_0 + Float64(NdChar * 0.5)); elseif (KbT <= 7.6e-140) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if (KbT <= -2.05e-14) tmp = t_0 + (NdChar * 0.5); elseif (KbT <= 7.6e-140) tmp = t_0; else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.05e-14], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.6e-140], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;KbT \leq -2.05 \cdot 10^{-14}:\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 7.6 \cdot 10^{-140}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.62e-14)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar 2.0))
(if (<= KbT 7.6e-138)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.62e-14) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= 7.6e-138) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.62d-14)) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / 2.0d0)
else if (kbt <= 7.6d-138) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.62e-14) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= 7.6e-138) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.62e-14: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / 2.0) elif KbT <= 7.6e-138: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.62e-14) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / 2.0)); elseif (KbT <= 7.6e-138) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.62e-14) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0); elseif (KbT <= 7.6e-138) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.62e-14], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.6e-138], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.62 \cdot 10^{-14}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 7.6 \cdot 10^{-138}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -3.3e+230) (not (<= KbT 1.85e+47))) (+ (* NaChar 0.5) (/ NdChar (+ (/ mu KbT) 2.0))) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.3e+230) || !(KbT <= 1.85e+47)) {
tmp = (NaChar * 0.5) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-3.3d+230)) .or. (.not. (kbt <= 1.85d+47))) then
tmp = (nachar * 0.5d0) + (ndchar / ((mu / kbt) + 2.0d0))
else
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.3e+230) || !(KbT <= 1.85e+47)) {
tmp = (NaChar * 0.5) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.3e+230) or not (KbT <= 1.85e+47): tmp = (NaChar * 0.5) + (NdChar / ((mu / KbT) + 2.0)) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.3e+230) || !(KbT <= 1.85e+47)) tmp = Float64(Float64(NaChar * 0.5) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.3e+230) || ~((KbT <= 1.85e+47))) tmp = (NaChar * 0.5) + (NdChar / ((mu / KbT) + 2.0)); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.3e+230], N[Not[LessEqual[KbT, 1.85e+47]], $MachinePrecision]], N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.3 \cdot 10^{+230} \lor \neg \left(KbT \leq 1.85 \cdot 10^{+47}\right):\\
\;\;\;\;NaChar \cdot 0.5 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= mu -1.3e-128)
(* 0.5 (+ NdChar NaChar))
(+
(/
NaChar
(- (+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT)))
(/ NdChar (+ (/ EDonor KbT) (+ (/ mu 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 (mu <= -1.3e-128) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / ((EDonor / KbT) + ((mu / 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 (mu <= (-1.3d-128)) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = (nachar / ((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) - (mu / kbt))) + (ndchar / ((edonor / kbt) + ((mu / 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 (mu <= -1.3e-128) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / ((EDonor / KbT) + ((mu / KbT) + ((Vef / KbT) + 2.0))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= -1.3e-128: tmp = 0.5 * (NdChar + NaChar) else: tmp = (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / ((EDonor / KbT) + ((mu / KbT) + ((Vef / KbT) + 2.0)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= -1.3e-128) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + Float64(Float64(mu / 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 (mu <= -1.3e-128) tmp = 0.5 * (NdChar + NaChar); else tmp = (NaChar / ((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) + (NdChar / ((EDonor / KbT) + ((mu / KbT) + ((Vef / KbT) + 2.0)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, -1.3e-128], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -1.3 \cdot 10^{-128}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}} + \frac{NdChar}{\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \left(\frac{Vef}{KbT} + 2\right)\right)}\\
\end{array}
\end{array}
(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}
herbie shell --seed 2023343
(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))))))