
(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 25 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_2
(+
t_1
(/
NdChar
(-
(+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT))))
(/ Ec KbT)))))
(t_3 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_4 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Vef -6.5e+117)
t_4
(if (<= Vef -1.35e-57)
t_2
(if (<= Vef -1.5e-75)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -1.8e-162)
t_2
(if (<= Vef -7.2e-234)
(+ t_3 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef -1.05e-302)
t_2
(if (<= Vef 7e-107)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) t_3)
(if (<= Vef 1e-84)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))
(if (<= Vef 2.2e+89)
(+ t_1 (/ NdChar (+ (/ EDonor KbT) 2.0)))
t_4)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double t_3 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_4 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -6.5e+117) {
tmp = t_4;
} else if (Vef <= -1.35e-57) {
tmp = t_2;
} else if (Vef <= -1.5e-75) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.8e-162) {
tmp = t_2;
} else if (Vef <= -7.2e-234) {
tmp = t_3 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= -1.05e-302) {
tmp = t_2;
} else if (Vef <= 7e-107) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + t_3;
} else if (Vef <= 1e-84) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else if (Vef <= 2.2e+89) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_4;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_2 = t_1 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
t_3 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_4 = (nachar / t_0) + (ndchar / t_0)
if (vef <= (-6.5d+117)) then
tmp = t_4
else if (vef <= (-1.35d-57)) then
tmp = t_2
else if (vef <= (-1.5d-75)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-1.8d-162)) then
tmp = t_2
else if (vef <= (-7.2d-234)) then
tmp = t_3 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= (-1.05d-302)) then
tmp = t_2
else if (vef <= 7d-107) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + t_3
else if (vef <= 1d-84) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
else if (vef <= 2.2d+89) then
tmp = t_1 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_4
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double t_3 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_4 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -6.5e+117) {
tmp = t_4;
} else if (Vef <= -1.35e-57) {
tmp = t_2;
} else if (Vef <= -1.5e-75) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.8e-162) {
tmp = t_2;
} else if (Vef <= -7.2e-234) {
tmp = t_3 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= -1.05e-302) {
tmp = t_2;
} else if (Vef <= 7e-107) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + t_3;
} else if (Vef <= 1e-84) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else if (Vef <= 2.2e+89) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) t_3 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_4 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Vef <= -6.5e+117: tmp = t_4 elif Vef <= -1.35e-57: tmp = t_2 elif Vef <= -1.5e-75: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -1.8e-162: tmp = t_2 elif Vef <= -7.2e-234: tmp = t_3 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= -1.05e-302: tmp = t_2 elif Vef <= 7e-107: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + t_3 elif Vef <= 1e-84: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT)))) elif Vef <= 2.2e+89: tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_4 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Vef <= -6.5e+117) tmp = t_4; elseif (Vef <= -1.35e-57) tmp = t_2; elseif (Vef <= -1.5e-75) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -1.8e-162) tmp = t_2; elseif (Vef <= -7.2e-234) tmp = Float64(t_3 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= -1.05e-302) tmp = t_2; elseif (Vef <= 7e-107) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + t_3); elseif (Vef <= 1e-84) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); elseif (Vef <= 2.2e+89) tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); t_3 = NdChar / (1.0 + exp((EDonor / KbT))); t_4 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Vef <= -6.5e+117) tmp = t_4; elseif (Vef <= -1.35e-57) tmp = t_2; elseif (Vef <= -1.5e-75) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -1.8e-162) tmp = t_2; elseif (Vef <= -7.2e-234) tmp = t_3 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= -1.05e-302) tmp = t_2; elseif (Vef <= 7e-107) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + t_3; elseif (Vef <= 1e-84) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT)))); elseif (Vef <= 2.2e+89) tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6.5e+117], t$95$4, If[LessEqual[Vef, -1.35e-57], t$95$2, If[LessEqual[Vef, -1.5e-75], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.8e-162], t$95$2, If[LessEqual[Vef, -7.2e-234], N[(t$95$3 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.05e-302], t$95$2, If[LessEqual[Vef, 7e-107], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[Vef, 1e-84], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.2e+89], N[(t$95$1 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$4]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_4 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -6.5 \cdot 10^{+117}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -1.35 \cdot 10^{-57}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -1.5 \cdot 10^{-75}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -1.8 \cdot 10^{-162}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -7.2 \cdot 10^{-234}:\\
\;\;\;\;t_3 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq -1.05 \cdot 10^{-302}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 7 \cdot 10^{-107}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + t_3\\
\mathbf{elif}\;Vef \leq 10^{-84}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;Vef \leq 2.2 \cdot 10^{+89}:\\
\;\;\;\;t_1 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if Vef < -6.5000000000000004e117 or 2.2e89 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.8%
Taylor expanded in Vef around inf 76.6%
if -6.5000000000000004e117 < Vef < -1.3500000000000001e-57 or -1.4999999999999999e-75 < Vef < -1.7999999999999999e-162 or -7.1999999999999997e-234 < Vef < -1.05000000000000006e-302Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.2%
if -1.3500000000000001e-57 < Vef < -1.4999999999999999e-75Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -1.7999999999999999e-162 < Vef < -7.1999999999999997e-234Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 95.9%
Taylor expanded in Ev around inf 82.5%
if -1.05000000000000006e-302 < Vef < 6.99999999999999971e-107Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.1%
neg-mul-180.1%
distribute-neg-frac80.1%
Simplified80.1%
Taylor expanded in EDonor around inf 59.3%
if 6.99999999999999971e-107 < Vef < 1e-84Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.5%
neg-mul-186.5%
distribute-neg-frac86.5%
Simplified86.5%
Taylor expanded in mu around inf 67.4%
Taylor expanded in mu around 0 67.4%
mul-1-neg67.4%
unsub-neg67.4%
Simplified67.4%
if 1e-84 < Vef < 2.2e89Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.8%
Taylor expanded in EDonor around 0 72.8%
Final simplification72.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_4 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Vef -3e+117)
t_4
(if (<= Vef -1.05e-53)
(+
t_3
(/
NdChar
(- (+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT)))) (/ Ec KbT))))
(if (<= Vef -2.2e-73)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -7.8e-162)
t_2
(if (<= Vef -3e-251)
t_1
(if (<= Vef 6e-254)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (- (/ Ec KbT))))))
(if (<= Vef 1.4e-198)
t_1
(if (<= Vef 3.6e-55)
t_2
(if (<= Vef 6.4e+86)
(+ t_3 (/ NdChar (+ (/ EDonor KbT) 2.0)))
t_4)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double t_2 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double t_3 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_4 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -3e+117) {
tmp = t_4;
} else if (Vef <= -1.05e-53) {
tmp = t_3 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -2.2e-73) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -7.8e-162) {
tmp = t_2;
} else if (Vef <= -3e-251) {
tmp = t_1;
} else if (Vef <= 6e-254) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp(-(Ec / KbT))));
} else if (Vef <= 1.4e-198) {
tmp = t_1;
} else if (Vef <= 3.6e-55) {
tmp = t_2;
} else if (Vef <= 6.4e+86) {
tmp = t_3 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_4;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
t_2 = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
t_3 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_4 = (nachar / t_0) + (ndchar / t_0)
if (vef <= (-3d+117)) then
tmp = t_4
else if (vef <= (-1.05d-53)) then
tmp = t_3 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
else if (vef <= (-2.2d-73)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-7.8d-162)) then
tmp = t_2
else if (vef <= (-3d-251)) then
tmp = t_1
else if (vef <= 6d-254) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp(-(ec / kbt))))
else if (vef <= 1.4d-198) then
tmp = t_1
else if (vef <= 3.6d-55) then
tmp = t_2
else if (vef <= 6.4d+86) then
tmp = t_3 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_4
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_2 = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_3 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_4 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -3e+117) {
tmp = t_4;
} else if (Vef <= -1.05e-53) {
tmp = t_3 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -2.2e-73) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -7.8e-162) {
tmp = t_2;
} else if (Vef <= -3e-251) {
tmp = t_1;
} else if (Vef <= 6e-254) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp(-(Ec / KbT))));
} else if (Vef <= 1.4e-198) {
tmp = t_1;
} else if (Vef <= 3.6e-55) {
tmp = t_2;
} else if (Vef <= 6.4e+86) {
tmp = t_3 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_2 = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) t_3 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_4 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Vef <= -3e+117: tmp = t_4 elif Vef <= -1.05e-53: tmp = t_3 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) elif Vef <= -2.2e-73: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -7.8e-162: tmp = t_2 elif Vef <= -3e-251: tmp = t_1 elif Vef <= 6e-254: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp(-(Ec / KbT)))) elif Vef <= 1.4e-198: tmp = t_1 elif Vef <= 3.6e-55: tmp = t_2 elif Vef <= 6.4e+86: tmp = t_3 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_4 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Vef <= -3e+117) tmp = t_4; elseif (Vef <= -1.05e-53) tmp = Float64(t_3 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))); elseif (Vef <= -2.2e-73) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -7.8e-162) tmp = t_2; elseif (Vef <= -3e-251) tmp = t_1; elseif (Vef <= 6e-254) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(-Float64(Ec / KbT)))))); elseif (Vef <= 1.4e-198) tmp = t_1; elseif (Vef <= 3.6e-55) tmp = t_2; elseif (Vef <= 6.4e+86) tmp = Float64(t_3 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); t_2 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); t_3 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_4 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Vef <= -3e+117) tmp = t_4; elseif (Vef <= -1.05e-53) tmp = t_3 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); elseif (Vef <= -2.2e-73) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -7.8e-162) tmp = t_2; elseif (Vef <= -3e-251) tmp = t_1; elseif (Vef <= 6e-254) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp(-(Ec / KbT)))); elseif (Vef <= 1.4e-198) tmp = t_1; elseif (Vef <= 3.6e-55) tmp = t_2; elseif (Vef <= 6.4e+86) tmp = t_3 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3e+117], t$95$4, If[LessEqual[Vef, -1.05e-53], N[(t$95$3 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -2.2e-73], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -7.8e-162], t$95$2, If[LessEqual[Vef, -3e-251], t$95$1, If[LessEqual[Vef, 6e-254], 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[Vef, 1.4e-198], t$95$1, If[LessEqual[Vef, 3.6e-55], t$95$2, If[LessEqual[Vef, 6.4e+86], N[(t$95$3 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$4]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_4 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -3 \cdot 10^{+117}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -1.05 \cdot 10^{-53}:\\
\;\;\;\;t_3 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;Vef \leq -2.2 \cdot 10^{-73}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -7.8 \cdot 10^{-162}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -3 \cdot 10^{-251}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 6 \cdot 10^{-254}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{-\frac{Ec}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.4 \cdot 10^{-198}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 3.6 \cdot 10^{-55}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 6.4 \cdot 10^{+86}:\\
\;\;\;\;t_3 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if Vef < -3e117 or 6.4000000000000001e86 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.8%
Taylor expanded in Vef around inf 76.6%
if -3e117 < Vef < -1.04999999999999989e-53Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.4%
if -1.04999999999999989e-53 < Vef < -2.2e-73Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -2.2e-73 < Vef < -7.7999999999999999e-162 or 1.4e-198 < Vef < 3.6000000000000001e-55Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.1%
neg-mul-189.1%
distribute-neg-frac89.1%
Simplified89.1%
Taylor expanded in mu around inf 84.1%
if -7.7999999999999999e-162 < Vef < -2.9999999999999999e-251 or 6.00000000000000023e-254 < Vef < 1.4e-198Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 92.2%
Taylor expanded in Ev around inf 77.6%
if -2.9999999999999999e-251 < Vef < 6.00000000000000023e-254Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 58.8%
Taylor expanded in Ec around inf 58.8%
associate-*r/58.8%
mul-1-neg58.8%
Simplified58.8%
if 3.6000000000000001e-55 < Vef < 6.4000000000000001e86Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.6%
Taylor expanded in EDonor around 0 72.0%
Final simplification74.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(t_3 (+ t_2 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_4 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_5 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Vef -8.2e+116)
t_5
(if (<= Vef -1.42e-54)
(+
t_4
(/
NdChar
(- (+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT)))) (/ Ec KbT))))
(if (<= Vef -1.5e-75)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -8.2e-162)
t_3
(if (<= Vef 1.75e-293)
t_1
(if (<= Vef 7e-254)
(+ t_2 (/ NdChar (+ 1.0 (exp (- (/ Ec KbT))))))
(if (<= Vef 6.2e-196)
t_1
(if (<= Vef 3.6e-55)
t_3
(if (<= Vef 3.3e+87)
(+ t_4 (/ NdChar (+ (/ EDonor KbT) 2.0)))
t_5)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double t_2 = NaChar / (1.0 + exp((-mu / KbT)));
double t_3 = t_2 + (NdChar / (1.0 + exp((mu / KbT))));
double t_4 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_5 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -8.2e+116) {
tmp = t_5;
} else if (Vef <= -1.42e-54) {
tmp = t_4 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -1.5e-75) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -8.2e-162) {
tmp = t_3;
} else if (Vef <= 1.75e-293) {
tmp = t_1;
} else if (Vef <= 7e-254) {
tmp = t_2 + (NdChar / (1.0 + exp(-(Ec / KbT))));
} else if (Vef <= 6.2e-196) {
tmp = t_1;
} else if (Vef <= 3.6e-55) {
tmp = t_3;
} else if (Vef <= 3.3e+87) {
tmp = t_4 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
t_2 = nachar / (1.0d0 + exp((-mu / kbt)))
t_3 = t_2 + (ndchar / (1.0d0 + exp((mu / kbt))))
t_4 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_5 = (nachar / t_0) + (ndchar / t_0)
if (vef <= (-8.2d+116)) then
tmp = t_5
else if (vef <= (-1.42d-54)) then
tmp = t_4 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
else if (vef <= (-1.5d-75)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-8.2d-162)) then
tmp = t_3
else if (vef <= 1.75d-293) then
tmp = t_1
else if (vef <= 7d-254) then
tmp = t_2 + (ndchar / (1.0d0 + exp(-(ec / kbt))))
else if (vef <= 6.2d-196) then
tmp = t_1
else if (vef <= 3.6d-55) then
tmp = t_3
else if (vef <= 3.3d+87) then
tmp = t_4 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_5
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_2 = NaChar / (1.0 + Math.exp((-mu / KbT)));
double t_3 = t_2 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_4 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_5 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -8.2e+116) {
tmp = t_5;
} else if (Vef <= -1.42e-54) {
tmp = t_4 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -1.5e-75) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -8.2e-162) {
tmp = t_3;
} else if (Vef <= 1.75e-293) {
tmp = t_1;
} else if (Vef <= 7e-254) {
tmp = t_2 + (NdChar / (1.0 + Math.exp(-(Ec / KbT))));
} else if (Vef <= 6.2e-196) {
tmp = t_1;
} else if (Vef <= 3.6e-55) {
tmp = t_3;
} else if (Vef <= 3.3e+87) {
tmp = t_4 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_2 = NaChar / (1.0 + math.exp((-mu / KbT))) t_3 = t_2 + (NdChar / (1.0 + math.exp((mu / KbT)))) t_4 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_5 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Vef <= -8.2e+116: tmp = t_5 elif Vef <= -1.42e-54: tmp = t_4 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) elif Vef <= -1.5e-75: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -8.2e-162: tmp = t_3 elif Vef <= 1.75e-293: tmp = t_1 elif Vef <= 7e-254: tmp = t_2 + (NdChar / (1.0 + math.exp(-(Ec / KbT)))) elif Vef <= 6.2e-196: tmp = t_1 elif Vef <= 3.6e-55: tmp = t_3 elif Vef <= 3.3e+87: tmp = t_4 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) t_3 = Float64(t_2 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_4 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_5 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Vef <= -8.2e+116) tmp = t_5; elseif (Vef <= -1.42e-54) tmp = Float64(t_4 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))); elseif (Vef <= -1.5e-75) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -8.2e-162) tmp = t_3; elseif (Vef <= 1.75e-293) tmp = t_1; elseif (Vef <= 7e-254) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + exp(Float64(-Float64(Ec / KbT)))))); elseif (Vef <= 6.2e-196) tmp = t_1; elseif (Vef <= 3.6e-55) tmp = t_3; elseif (Vef <= 3.3e+87) tmp = Float64(t_4 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = t_5; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); t_2 = NaChar / (1.0 + exp((-mu / KbT))); t_3 = t_2 + (NdChar / (1.0 + exp((mu / KbT)))); t_4 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_5 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Vef <= -8.2e+116) tmp = t_5; elseif (Vef <= -1.42e-54) tmp = t_4 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); elseif (Vef <= -1.5e-75) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -8.2e-162) tmp = t_3; elseif (Vef <= 1.75e-293) tmp = t_1; elseif (Vef <= 7e-254) tmp = t_2 + (NdChar / (1.0 + exp(-(Ec / KbT)))); elseif (Vef <= 6.2e-196) tmp = t_1; elseif (Vef <= 3.6e-55) tmp = t_3; elseif (Vef <= 3.3e+87) tmp = t_4 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -8.2e+116], t$95$5, If[LessEqual[Vef, -1.42e-54], N[(t$95$4 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.5e-75], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -8.2e-162], t$95$3, If[LessEqual[Vef, 1.75e-293], t$95$1, If[LessEqual[Vef, 7e-254], N[(t$95$2 + N[(NdChar / N[(1.0 + N[Exp[(-N[(Ec / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.2e-196], t$95$1, If[LessEqual[Vef, 3.6e-55], t$95$3, If[LessEqual[Vef, 3.3e+87], N[(t$95$4 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$5]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_3 := t_2 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_4 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_5 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -8.2 \cdot 10^{+116}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;Vef \leq -1.42 \cdot 10^{-54}:\\
\;\;\;\;t_4 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;Vef \leq -1.5 \cdot 10^{-75}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -8.2 \cdot 10^{-162}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq 1.75 \cdot 10^{-293}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 7 \cdot 10^{-254}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 + e^{-\frac{Ec}{KbT}}}\\
\mathbf{elif}\;Vef \leq 6.2 \cdot 10^{-196}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 3.6 \cdot 10^{-55}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq 3.3 \cdot 10^{+87}:\\
\;\;\;\;t_4 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_5\\
\end{array}
\end{array}
if Vef < -8.1999999999999996e116 or 3.3000000000000001e87 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.8%
Taylor expanded in Vef around inf 76.6%
if -8.1999999999999996e116 < Vef < -1.4199999999999999e-54Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.4%
if -1.4199999999999999e-54 < Vef < -1.4999999999999999e-75Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -1.4999999999999999e-75 < Vef < -8.20000000000000039e-162 or 6.19999999999999986e-196 < Vef < 3.6000000000000001e-55Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.1%
neg-mul-189.1%
distribute-neg-frac89.1%
Simplified89.1%
Taylor expanded in mu around inf 84.1%
if -8.20000000000000039e-162 < Vef < 1.7500000000000001e-293 or 7.00000000000000014e-254 < Vef < 6.19999999999999986e-196Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 89.4%
Taylor expanded in Ev around inf 72.7%
if 1.7500000000000001e-293 < Vef < 7.00000000000000014e-254Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 87.9%
neg-mul-187.9%
distribute-neg-frac87.9%
Simplified87.9%
Taylor expanded in Ec around inf 87.9%
associate-*r/77.8%
mul-1-neg77.8%
Simplified87.9%
if 3.6000000000000001e-55 < Vef < 3.3000000000000001e87Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.6%
Taylor expanded in EDonor around 0 72.0%
Final simplification75.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))))
(if (<= mu -2.1e+95)
t_2
(if (<= mu -2200.0)
t_0
(if (<= mu -2.9e-110)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu 1.45e+178) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((-mu / KbT))));
double tmp;
if (mu <= -2.1e+95) {
tmp = t_2;
} else if (mu <= -2200.0) {
tmp = t_0;
} else if (mu <= -2.9e-110) {
tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= 1.45e+178) {
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 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((-mu / kbt))))
if (mu <= (-2.1d+95)) then
tmp = t_2
else if (mu <= (-2200.0d0)) then
tmp = t_0
else if (mu <= (-2.9d-110)) then
tmp = t_1 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= 1.45d+178) 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 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double tmp;
if (mu <= -2.1e+95) {
tmp = t_2;
} else if (mu <= -2200.0) {
tmp = t_0;
} else if (mu <= -2.9e-110) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= 1.45e+178) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((-mu / KbT)))) tmp = 0 if mu <= -2.1e+95: tmp = t_2 elif mu <= -2200.0: tmp = t_0 elif mu <= -2.9e-110: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= 1.45e+178: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) tmp = 0.0 if (mu <= -2.1e+95) tmp = t_2; elseif (mu <= -2200.0) tmp = t_0; elseif (mu <= -2.9e-110) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= 1.45e+178) 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 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((-mu / KbT)))); tmp = 0.0; if (mu <= -2.1e+95) tmp = t_2; elseif (mu <= -2200.0) tmp = t_0; elseif (mu <= -2.9e-110) tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= 1.45e+178) 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[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.1e+95], t$95$2, If[LessEqual[mu, -2200.0], t$95$0, If[LessEqual[mu, -2.9e-110], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.45e+178], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.1 \cdot 10^{+95}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2200:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq -2.9 \cdot 10^{-110}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.45 \cdot 10^{+178}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -2.1e95 or 1.45e178 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.9%
neg-mul-192.9%
distribute-neg-frac92.9%
Simplified92.9%
if -2.1e95 < mu < -2200 or -2.9000000000000002e-110 < mu < 1.45e178Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.8%
if -2200 < mu < -2.9000000000000002e-110Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 89.8%
Final simplification86.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_3 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Vef -7.2e+116)
t_3
(if (<= Vef -4e-53)
(+
t_2
(/
NdChar
(- (+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT)))) (/ Ec KbT))))
(if (<= Vef -3.2e-75)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -8.4e-162)
t_1
(if (<= Vef 3.4e-198)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 7.5e-55)
t_1
(if (<= Vef 8e+86)
(+ t_2 (/ NdChar (+ (/ EDonor KbT) 2.0)))
t_3)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double t_2 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -7.2e+116) {
tmp = t_3;
} else if (Vef <= -4e-53) {
tmp = t_2 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -3.2e-75) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -8.4e-162) {
tmp = t_1;
} else if (Vef <= 3.4e-198) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 7.5e-55) {
tmp = t_1;
} else if (Vef <= 8e+86) {
tmp = t_2 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
t_2 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_3 = (nachar / t_0) + (ndchar / t_0)
if (vef <= (-7.2d+116)) then
tmp = t_3
else if (vef <= (-4d-53)) then
tmp = t_2 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
else if (vef <= (-3.2d-75)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-8.4d-162)) then
tmp = t_1
else if (vef <= 3.4d-198) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 7.5d-55) then
tmp = t_1
else if (vef <= 8d+86) then
tmp = t_2 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_2 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -7.2e+116) {
tmp = t_3;
} else if (Vef <= -4e-53) {
tmp = t_2 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
} else if (Vef <= -3.2e-75) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -8.4e-162) {
tmp = t_1;
} else if (Vef <= 3.4e-198) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 7.5e-55) {
tmp = t_1;
} else if (Vef <= 8e+86) {
tmp = t_2 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) t_2 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_3 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Vef <= -7.2e+116: tmp = t_3 elif Vef <= -4e-53: tmp = t_2 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) elif Vef <= -3.2e-75: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -8.4e-162: tmp = t_1 elif Vef <= 3.4e-198: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 7.5e-55: tmp = t_1 elif Vef <= 8e+86: tmp = t_2 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_3 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Vef <= -7.2e+116) tmp = t_3; elseif (Vef <= -4e-53) tmp = Float64(t_2 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))); elseif (Vef <= -3.2e-75) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -8.4e-162) tmp = t_1; elseif (Vef <= 3.4e-198) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 7.5e-55) tmp = t_1; elseif (Vef <= 8e+86) tmp = Float64(t_2 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); t_2 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_3 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Vef <= -7.2e+116) tmp = t_3; elseif (Vef <= -4e-53) tmp = t_2 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); elseif (Vef <= -3.2e-75) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -8.4e-162) tmp = t_1; elseif (Vef <= 3.4e-198) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 7.5e-55) tmp = t_1; elseif (Vef <= 8e+86) tmp = t_2 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7.2e+116], t$95$3, If[LessEqual[Vef, -4e-53], N[(t$95$2 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -3.2e-75], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -8.4e-162], t$95$1, If[LessEqual[Vef, 3.4e-198], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7.5e-55], t$95$1, If[LessEqual[Vef, 8e+86], N[(t$95$2 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_3 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -7.2 \cdot 10^{+116}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -4 \cdot 10^{-53}:\\
\;\;\;\;t_2 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{-75}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -8.4 \cdot 10^{-162}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 3.4 \cdot 10^{-198}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 7.5 \cdot 10^{-55}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 8 \cdot 10^{+86}:\\
\;\;\;\;t_2 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -7.19999999999999941e116 or 8.0000000000000001e86 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.8%
Taylor expanded in Vef around inf 76.6%
if -7.19999999999999941e116 < Vef < -4.00000000000000012e-53Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.4%
if -4.00000000000000012e-53 < Vef < -3.19999999999999977e-75Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -3.19999999999999977e-75 < Vef < -8.4e-162 or 3.3999999999999998e-198 < Vef < 7.50000000000000023e-55Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.1%
neg-mul-189.1%
distribute-neg-frac89.1%
Simplified89.1%
Taylor expanded in mu around inf 84.1%
if -8.4e-162 < Vef < 3.3999999999999998e-198Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.6%
Taylor expanded in Ev around inf 67.2%
if 7.50000000000000023e-55 < Vef < 8.0000000000000001e86Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.6%
Taylor expanded in EDonor around 0 72.0%
Final simplification74.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= mu -4.2e+179)
t_0
(if (<= mu -2200.0)
t_1
(if (<= mu -1.66e-109)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= mu 1.3e+241) t_1 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
double t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (mu <= -4.2e+179) {
tmp = t_0;
} else if (mu <= -2200.0) {
tmp = t_1;
} else if (mu <= -1.66e-109) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (mu <= 1.3e+241) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
t_1 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (mu <= (-4.2d+179)) then
tmp = t_0
else if (mu <= (-2200.0d0)) then
tmp = t_1
else if (mu <= (-1.66d-109)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (mu <= 1.3d+241) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (mu <= -4.2e+179) {
tmp = t_0;
} else if (mu <= -2200.0) {
tmp = t_1;
} else if (mu <= -1.66e-109) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (mu <= 1.3e+241) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) t_1 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if mu <= -4.2e+179: tmp = t_0 elif mu <= -2200.0: tmp = t_1 elif mu <= -1.66e-109: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif mu <= 1.3e+241: tmp = t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (mu <= -4.2e+179) tmp = t_0; elseif (mu <= -2200.0) tmp = t_1; elseif (mu <= -1.66e-109) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (mu <= 1.3e+241) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); t_1 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (mu <= -4.2e+179) tmp = t_0; elseif (mu <= -2200.0) tmp = t_1; elseif (mu <= -1.66e-109) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (mu <= 1.3e+241) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.2e+179], t$95$0, If[LessEqual[mu, -2200.0], t$95$1, If[LessEqual[mu, -1.66e-109], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.3e+241], t$95$1, t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -4.2 \cdot 10^{+179}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq -2200:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -1.66 \cdot 10^{-109}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;mu \leq 1.3 \cdot 10^{+241}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if mu < -4.1999999999999997e179 or 1.30000000000000004e241 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 93.1%
neg-mul-193.1%
distribute-neg-frac93.1%
Simplified93.1%
Taylor expanded in mu around inf 86.0%
if -4.1999999999999997e179 < mu < -2200 or -1.65999999999999997e-109 < mu < 1.30000000000000004e241Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.5%
if -2200 < mu < -1.65999999999999997e-109Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.8%
Taylor expanded in Vef around 0 90.8%
Final simplification82.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -6e+169)
t_2
(if (<= mu -2200.0)
t_1
(if (<= mu -1.66e-109)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= mu 1.5e+127) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -6e+169) {
tmp = t_2;
} else if (mu <= -2200.0) {
tmp = t_1;
} else if (mu <= -1.66e-109) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (mu <= 1.5e+127) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-6d+169)) then
tmp = t_2
else if (mu <= (-2200.0d0)) then
tmp = t_1
else if (mu <= (-1.66d-109)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (mu <= 1.5d+127) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -6e+169) {
tmp = t_2;
} else if (mu <= -2200.0) {
tmp = t_1;
} else if (mu <= -1.66e-109) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (mu <= 1.5e+127) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -6e+169: tmp = t_2 elif mu <= -2200.0: tmp = t_1 elif mu <= -1.66e-109: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif mu <= 1.5e+127: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -6e+169) tmp = t_2; elseif (mu <= -2200.0) tmp = t_1; elseif (mu <= -1.66e-109) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (mu <= 1.5e+127) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -6e+169) tmp = t_2; elseif (mu <= -2200.0) tmp = t_1; elseif (mu <= -1.66e-109) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (mu <= 1.5e+127) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -6e+169], t$95$2, If[LessEqual[mu, -2200.0], t$95$1, If[LessEqual[mu, -1.66e-109], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.5e+127], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -6 \cdot 10^{+169}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2200:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -1.66 \cdot 10^{-109}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;mu \leq 1.5 \cdot 10^{+127}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -5.9999999999999999e169 or 1.5000000000000001e127 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.3%
if -5.9999999999999999e169 < mu < -2200 or -1.65999999999999997e-109 < mu < 1.5000000000000001e127Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.1%
if -2200 < mu < -1.65999999999999997e-109Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.8%
Taylor expanded in Vef around 0 90.8%
Final simplification83.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -4.05e+170)
t_2
(if (<= mu -2800.0)
t_1
(if (<= mu -1.65e-109)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu 1.05e+128) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -4.05e+170) {
tmp = t_2;
} else if (mu <= -2800.0) {
tmp = t_1;
} else if (mu <= -1.65e-109) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= 1.05e+128) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-4.05d+170)) then
tmp = t_2
else if (mu <= (-2800.0d0)) then
tmp = t_1
else if (mu <= (-1.65d-109)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= 1.05d+128) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -4.05e+170) {
tmp = t_2;
} else if (mu <= -2800.0) {
tmp = t_1;
} else if (mu <= -1.65e-109) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= 1.05e+128) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -4.05e+170: tmp = t_2 elif mu <= -2800.0: tmp = t_1 elif mu <= -1.65e-109: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= 1.05e+128: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -4.05e+170) tmp = t_2; elseif (mu <= -2800.0) tmp = t_1; elseif (mu <= -1.65e-109) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= 1.05e+128) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -4.05e+170) tmp = t_2; elseif (mu <= -2800.0) tmp = t_1; elseif (mu <= -1.65e-109) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= 1.05e+128) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.05e+170], t$95$2, If[LessEqual[mu, -2800.0], t$95$1, If[LessEqual[mu, -1.65e-109], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.05e+128], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -4.05 \cdot 10^{+170}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2800:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -1.65 \cdot 10^{-109}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.05 \cdot 10^{+128}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -4.04999999999999982e170 or 1.05e128 < mu Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.3%
if -4.04999999999999982e170 < mu < -2800 or -1.64999999999999995e-109 < mu < 1.05e128Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.1%
if -2800 < mu < -1.64999999999999995e-109Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 89.8%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= Ev -3.8e+148)
t_2
(if (<= Ev -2.35e+95)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Ev -1.8e+40)
t_2
(if (<= Ev 2.7e-300)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_1 (/ 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 t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (Ev <= -3.8e+148) {
tmp = t_2;
} else if (Ev <= -2.35e+95) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Ev <= -1.8e+40) {
tmp = t_2;
} else if (Ev <= 2.7e-300) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_1 + (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) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
if (ev <= (-3.8d+148)) then
tmp = t_2
else if (ev <= (-2.35d+95)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (ev <= (-1.8d+40)) then
tmp = t_2
else if (ev <= 2.7d-300) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_1 + (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 t_0 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (Ev <= -3.8e+148) {
tmp = t_2;
} else if (Ev <= -2.35e+95) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Ev <= -1.8e+40) {
tmp = t_2;
} else if (Ev <= 2.7e-300) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if Ev <= -3.8e+148: tmp = t_2 elif Ev <= -2.35e+95: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Ev <= -1.8e+40: tmp = t_2 elif Ev <= 2.7e-300: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (Ev <= -3.8e+148) tmp = t_2; elseif (Ev <= -2.35e+95) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Ev <= -1.8e+40) tmp = t_2; elseif (Ev <= 2.7e-300) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_1 + 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) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (Ev <= -3.8e+148) tmp = t_2; elseif (Ev <= -2.35e+95) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Ev <= -1.8e+40) tmp = t_2; elseif (Ev <= 2.7e-300) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -3.8e+148], t$95$2, If[LessEqual[Ev, -2.35e+95], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.8e+40], t$95$2, If[LessEqual[Ev, 2.7e-300], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;Ev \leq -3.8 \cdot 10^{+148}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Ev \leq -2.35 \cdot 10^{+95}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.8 \cdot 10^{+40}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Ev \leq 2.7 \cdot 10^{-300}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -3.7999999999999998e148 or -2.34999999999999986e95 < Ev < -1.79999999999999998e40Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.9%
if -3.7999999999999998e148 < Ev < -2.34999999999999986e95Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
if -1.79999999999999998e40 < Ev < 2.69999999999999995e-300Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.4%
if 2.69999999999999995e-300 < Ev Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 67.3%
Final simplification75.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_2
(+
t_1
(/
NdChar
(-
(+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT))))
(/ Ec KbT)))))
(t_3 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Vef -1.92e+117)
t_3
(if (<= Vef -7.5e-57)
t_2
(if (<= Vef -1.12e-73)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -1.65e-162)
t_2
(if (<= Vef 4.4e-121)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 3.9e+89)
(+ t_1 (/ NdChar (+ (/ EDonor KbT) 2.0)))
t_3))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -1.92e+117) {
tmp = t_3;
} else if (Vef <= -7.5e-57) {
tmp = t_2;
} else if (Vef <= -1.12e-73) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.65e-162) {
tmp = t_2;
} else if (Vef <= 4.4e-121) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 3.9e+89) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_2 = t_1 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
t_3 = (nachar / t_0) + (ndchar / t_0)
if (vef <= (-1.92d+117)) then
tmp = t_3
else if (vef <= (-7.5d-57)) then
tmp = t_2
else if (vef <= (-1.12d-73)) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-1.65d-162)) then
tmp = t_2
else if (vef <= 4.4d-121) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 3.9d+89) then
tmp = t_1 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Vef <= -1.92e+117) {
tmp = t_3;
} else if (Vef <= -7.5e-57) {
tmp = t_2;
} else if (Vef <= -1.12e-73) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.65e-162) {
tmp = t_2;
} else if (Vef <= 4.4e-121) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 3.9e+89) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) t_3 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Vef <= -1.92e+117: tmp = t_3 elif Vef <= -7.5e-57: tmp = t_2 elif Vef <= -1.12e-73: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -1.65e-162: tmp = t_2 elif Vef <= 4.4e-121: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 3.9e+89: tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))) t_3 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Vef <= -1.92e+117) tmp = t_3; elseif (Vef <= -7.5e-57) tmp = t_2; elseif (Vef <= -1.12e-73) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -1.65e-162) tmp = t_2; elseif (Vef <= 4.4e-121) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 3.9e+89) tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); t_3 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Vef <= -1.92e+117) tmp = t_3; elseif (Vef <= -7.5e-57) tmp = t_2; elseif (Vef <= -1.12e-73) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -1.65e-162) tmp = t_2; elseif (Vef <= 4.4e-121) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 3.9e+89) tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.92e+117], t$95$3, If[LessEqual[Vef, -7.5e-57], t$95$2, If[LessEqual[Vef, -1.12e-73], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.65e-162], t$95$2, If[LessEqual[Vef, 4.4e-121], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.9e+89], N[(t$95$1 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
t_3 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Vef \leq -1.92 \cdot 10^{+117}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -7.5 \cdot 10^{-57}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -1.12 \cdot 10^{-73}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -1.65 \cdot 10^{-162}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 4.4 \cdot 10^{-121}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 3.9 \cdot 10^{+89}:\\
\;\;\;\;t_1 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -1.92e117 or 3.90000000000000011e89 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.8%
Taylor expanded in Vef around inf 76.6%
if -1.92e117 < Vef < -7.49999999999999973e-57 or -1.11999999999999995e-73 < Vef < -1.65000000000000007e-162Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
if -7.49999999999999973e-57 < Vef < -1.11999999999999995e-73Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -1.65000000000000007e-162 < Vef < 4.40000000000000042e-121Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.2%
Taylor expanded in Ev around inf 63.7%
if 4.40000000000000042e-121 < Vef < 3.90000000000000011e89Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 73.0%
Taylor expanded in EDonor around 0 69.6%
Final simplification70.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -2.4e+65)
t_1
(if (<= Vef 1.05e-127)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 2.9e+88)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -2.4e+65) {
tmp = t_1;
} else if (Vef <= 1.05e-127) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 2.9e+88) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-2.4d+65)) then
tmp = t_1
else if (vef <= 1.05d-127) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 2.9d+88) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -2.4e+65) {
tmp = t_1;
} else if (Vef <= 1.05e-127) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 2.9e+88) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -2.4e+65: tmp = t_1 elif Vef <= 1.05e-127: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 2.9e+88: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -2.4e+65) tmp = t_1; elseif (Vef <= 1.05e-127) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 2.9e+88) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -2.4e+65) tmp = t_1; elseif (Vef <= 1.05e-127) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 2.9e+88) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.4e+65], t$95$1, If[LessEqual[Vef, 1.05e-127], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.9e+88], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.4 \cdot 10^{+65}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 1.05 \cdot 10^{-127}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 2.9 \cdot 10^{+88}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if Vef < -2.4000000000000002e65 or 2.9e88 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.6%
if -2.4000000000000002e65 < Vef < 1.05000000000000005e-127Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.2%
if 1.05000000000000005e-127 < Vef < 2.9e88Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.3%
Final simplification84.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)))))
(t_2
(+
t_1
(/
NdChar
(-
(+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT))))
(/ Ec KbT))))))
(if (<= Vef -3.1e+121)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= Vef -9.2e-57)
t_2
(if (<= Vef -3.5e-73)
(+
t_0
(/
NaChar
(+ 1.0 (+ (/ Ev KbT) (+ 1.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(if (<= Vef -1.9e-163)
t_2
(if (<= Vef 4.5e-121)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 1.85e+111)
(+ t_1 (/ NdChar (+ (/ EDonor KbT) 2.0)))
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double tmp;
if (Vef <= -3.1e+121) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else if (Vef <= -9.2e-57) {
tmp = t_2;
} else if (Vef <= -3.5e-73) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.9e-163) {
tmp = t_2;
} else if (Vef <= 4.5e-121) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 1.85e+111) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))
t_1 = nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))
t_2 = t_1 + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt)))
if (vef <= (-3.1d+121)) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else if (vef <= (-9.2d-57)) then
tmp = t_2
else if (vef <= (-3.5d-73)) then
tmp = t_0 + (nachar / (1.0d0 + ((ev / kbt) + (1.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt)))))))
else if (vef <= (-1.9d-163)) then
tmp = t_2
else if (vef <= 4.5d-121) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 1.85d+111) then
tmp = t_1 + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)));
double t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
double tmp;
if (Vef <= -3.1e+121) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else if (Vef <= -9.2e-57) {
tmp = t_2;
} else if (Vef <= -3.5e-73) {
tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))));
} else if (Vef <= -1.9e-163) {
tmp = t_2;
} else if (Vef <= 4.5e-121) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 1.85e+111) {
tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT))) t_1 = NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))) t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) tmp = 0 if Vef <= -3.1e+121: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) elif Vef <= -9.2e-57: tmp = t_2 elif Vef <= -3.5e-73: tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))) elif Vef <= -1.9e-163: tmp = t_2 elif Vef <= 4.5e-121: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 1.85e+111: tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT)))) tmp = 0.0 if (Vef <= -3.1e+121) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (Vef <= -9.2e-57) tmp = t_2; elseif (Vef <= -3.5e-73) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(1.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT)))))))); elseif (Vef <= -1.9e-163) tmp = t_2; elseif (Vef <= 4.5e-121) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 1.85e+111) tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT))); t_1 = NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))); t_2 = t_1 + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); tmp = 0.0; if (Vef <= -3.1e+121) tmp = NaChar / (1.0 + exp((Vef / KbT))); elseif (Vef <= -9.2e-57) tmp = t_2; elseif (Vef <= -3.5e-73) tmp = t_0 + (NaChar / (1.0 + ((Ev / KbT) + (1.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))))); elseif (Vef <= -1.9e-163) tmp = t_2; elseif (Vef <= 4.5e-121) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 1.85e+111) tmp = t_1 + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.1e+121], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -9.2e-57], t$95$2, If[LessEqual[Vef, -3.5e-73], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(1.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.9e-163], t$95$2, If[LessEqual[Vef, 4.5e-121], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.85e+111], N[(t$95$1 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}\\
t_2 := t_1 + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{if}\;Vef \leq -3.1 \cdot 10^{+121}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Vef \leq -9.2 \cdot 10^{-57}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -3.5 \cdot 10^{-73}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\frac{Ev}{KbT} + \left(1 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)\right)}\\
\mathbf{elif}\;Vef \leq -1.9 \cdot 10^{-163}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 4.5 \cdot 10^{-121}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.85 \cdot 10^{+111}:\\
\;\;\;\;t_1 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if Vef < -3.10000000000000008e121Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.0%
Taylor expanded in KbT around inf 33.7%
Taylor expanded in Vef around inf 49.2%
associate-/l*49.2%
Simplified49.2%
Taylor expanded in KbT around 0 66.5%
if -3.10000000000000008e121 < Vef < -9.2000000000000001e-57 or -3.4999999999999998e-73 < Vef < -1.9e-163Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
if -9.2000000000000001e-57 < Vef < -3.4999999999999998e-73Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.1%
Taylor expanded in Ev around 0 73.1%
unpow273.1%
unpow273.1%
Simplified73.1%
if -1.9e-163 < Vef < 4.5000000000000003e-121Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.2%
Taylor expanded in Ev around inf 63.7%
if 4.5000000000000003e-121 < Vef < 1.8500000000000001e111Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.3%
Taylor expanded in EDonor around 0 67.2%
if 1.8500000000000001e111 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.8%
Taylor expanded in Vef around 0 65.9%
Final simplification67.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -3.7e+62) (not (<= NdChar 5600.0)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/
NdChar
(- (+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT)))) (/ 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 <= -3.7e+62) || !(NdChar <= 5600.0)) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (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 <= (-3.7d+62)) .or. (.not. (ndchar <= 5600.0d0))) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (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 <= -3.7e+62) || !(NdChar <= 5600.0)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -3.7e+62) or not (NdChar <= 5600.0): tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -3.7e+62) || !(NdChar <= 5600.0)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - 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 <= -3.7e+62) || ~((NdChar <= 5600.0))) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -3.7e+62], N[Not[LessEqual[NdChar, 5600.0]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -3.7 \cdot 10^{+62} \lor \neg \left(NdChar \leq 5600\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -3.70000000000000014e62 or 5600 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.2%
Taylor expanded in Ev around 0 69.2%
if -3.70000000000000014e62 < NdChar < 5600Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.2%
Final simplification64.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.75e+144) (not (<= NdChar 4200.0)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ (/ EDonor 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 <= -1.75e+144) || !(NdChar <= 4200.0)) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / 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 <= (-1.75d+144)) .or. (.not. (ndchar <= 4200.0d0))) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / ((edonor / 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 <= -1.75e+144) || !(NdChar <= 4200.0)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.75e+144) or not (NdChar <= 4200.0): tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.75e+144) || !(NdChar <= 4200.0)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / 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 <= -1.75e+144) || ~((NdChar <= 4200.0))) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.75e+144], N[Not[LessEqual[NdChar, 4200.0]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.75 \cdot 10^{+144} \lor \neg \left(NdChar \leq 4200\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -1.7499999999999999e144 or 4200 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.2%
Taylor expanded in Ev around 0 70.4%
if -1.7499999999999999e144 < NdChar < 4200Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.5%
Taylor expanded in EDonor around 0 61.0%
Final simplification64.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -7.1e+75) (not (<= NaChar 1.16e-11)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.1e+75) || !(NaChar <= 1.16e-11)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-7.1d+75)) .or. (.not. (nachar <= 1.16d-11))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.1e+75) || !(NaChar <= 1.16e-11)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -7.1e+75) or not (NaChar <= 1.16e-11): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -7.1e+75) || !(NaChar <= 1.16e-11)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -7.1e+75) || ~((NaChar <= 1.16e-11))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -7.1e+75], N[Not[LessEqual[NaChar, 1.16e-11]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7.1 \cdot 10^{+75} \lor \neg \left(NaChar \leq 1.16 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -7.09999999999999982e75 or 1.1600000000000001e-11 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.7%
if -7.09999999999999982e75 < NaChar < 1.1600000000000001e-11Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.8%
Taylor expanded in Vef around 0 62.9%
Final simplification58.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.1e+144) (not (<= NdChar 1550.0)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ (/ EDonor 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 <= -1.1e+144) || !(NdChar <= 1550.0)) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / 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 <= (-1.1d+144)) .or. (.not. (ndchar <= 1550.0d0))) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / ((edonor / 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 <= -1.1e+144) || !(NdChar <= 1550.0)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.1e+144) or not (NdChar <= 1550.0): tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.1e+144) || !(NdChar <= 1550.0)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / 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 <= -1.1e+144) || ~((NdChar <= 1550.0))) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.1e+144], N[Not[LessEqual[NdChar, 1550.0]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.1 \cdot 10^{+144} \lor \neg \left(NdChar \leq 1550\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -1.09999999999999994e144 or 1550 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.2%
Taylor expanded in Vef around 0 66.5%
if -1.09999999999999994e144 < NdChar < 1550Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.5%
Taylor expanded in EDonor around 0 61.0%
Final simplification63.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -6.4e+66) (not (<= NdChar 6.5e-22)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (- (+ Vef EDonor) Ec)) KbT))))
(* NaChar 0.5))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) 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 <= -6.4e+66) || !(NdChar <= 6.5e-22)) {
tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - 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 <= (-6.4d+66)) .or. (.not. (ndchar <= 6.5d-22))) then
tmp = (ndchar / (1.0d0 + exp(((mu + ((vef + edonor) - ec)) / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - 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 <= -6.4e+66) || !(NdChar <= 6.5e-22)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -6.4e+66) or not (NdChar <= 6.5e-22): tmp = (NdChar / (1.0 + math.exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -6.4e+66) || !(NdChar <= 6.5e-22)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(Float64(Vef + EDonor) - Ec)) / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - 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 <= -6.4e+66) || ~((NdChar <= 6.5e-22))) tmp = (NdChar / (1.0 + exp(((mu + ((Vef + EDonor) - Ec)) / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -6.4e+66], N[Not[LessEqual[NdChar, 6.5e-22]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(N[(Vef + EDonor), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -6.4 \cdot 10^{+66} \lor \neg \left(NdChar \leq 6.5 \cdot 10^{-22}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(\left(Vef + EDonor\right) - Ec\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -6.3999999999999999e66 or 6.50000000000000043e-22 < NdChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.8%
neg-mul-181.8%
distribute-neg-frac81.8%
Simplified81.8%
Taylor expanded in mu around 0 60.6%
*-commutative60.6%
Simplified60.6%
if -6.3999999999999999e66 < NdChar < 6.50000000000000043e-22Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.3%
Final simplification55.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))) (t_1 (/ NaChar t_0)))
(if (<= Vef -1.15e+16)
t_1
(if (<= Vef 9.2e+67)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar 2.0))
(if (<= Vef 7e+179) t_1 (+ (/ NdChar t_0) (* NaChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -1.15e+16) {
tmp = t_1;
} else if (Vef <= 9.2e+67) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else if (Vef <= 7e+179) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
if (vef <= (-1.15d+16)) then
tmp = t_1
else if (vef <= 9.2d+67) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / 2.0d0)
else if (vef <= 7d+179) then
tmp = t_1
else
tmp = (ndchar / t_0) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -1.15e+16) {
tmp = t_1;
} else if (Vef <= 9.2e+67) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0);
} else if (Vef <= 7e+179) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 tmp = 0 if Vef <= -1.15e+16: tmp = t_1 elif Vef <= 9.2e+67: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0) elif Vef <= 7e+179: tmp = t_1 else: tmp = (NdChar / t_0) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (Vef <= -1.15e+16) tmp = t_1; elseif (Vef <= 9.2e+67) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / 2.0)); elseif (Vef <= 7e+179) tmp = t_1; else tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / t_0; tmp = 0.0; if (Vef <= -1.15e+16) tmp = t_1; elseif (Vef <= 9.2e+67) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / 2.0); elseif (Vef <= 7e+179) tmp = t_1; else tmp = (NdChar / t_0) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -1.15e+16], t$95$1, If[LessEqual[Vef, 9.2e+67], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7e+179], t$95$1, N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0}\\
\mathbf{if}\;Vef \leq -1.15 \cdot 10^{+16}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 9.2 \cdot 10^{+67}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;Vef \leq 7 \cdot 10^{+179}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{t_0} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -1.15e16 or 9.1999999999999994e67 < Vef < 7.0000000000000003e179Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.7%
Taylor expanded in KbT around inf 37.2%
Taylor expanded in Vef around inf 41.7%
associate-/l*42.7%
Simplified42.7%
Taylor expanded in KbT around 0 57.4%
if -1.15e16 < Vef < 9.1999999999999994e67Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.1%
if 7.0000000000000003e179 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.5%
neg-mul-180.5%
distribute-neg-frac80.5%
Simplified80.5%
Taylor expanded in mu around 0 71.9%
*-commutative71.9%
Simplified71.9%
Taylor expanded in Vef around inf 60.8%
Final simplification54.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))) (t_1 (/ NaChar t_0)))
(if (<= Vef -8e+84)
t_1
(if (<= Vef 1.2e+67)
(+
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= Vef 2.85e+180) t_1 (+ (/ NdChar t_0) (* NaChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -8e+84) {
tmp = t_1;
} else if (Vef <= 1.2e+67) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (Vef <= 2.85e+180) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
if (vef <= (-8d+84)) then
tmp = t_1
else if (vef <= 1.2d+67) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (vef <= 2.85d+180) then
tmp = t_1
else
tmp = (ndchar / t_0) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -8e+84) {
tmp = t_1;
} else if (Vef <= 1.2e+67) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (Vef <= 2.85e+180) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 tmp = 0 if Vef <= -8e+84: tmp = t_1 elif Vef <= 1.2e+67: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif Vef <= 2.85e+180: tmp = t_1 else: tmp = (NdChar / t_0) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (Vef <= -8e+84) tmp = t_1; elseif (Vef <= 1.2e+67) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (Vef <= 2.85e+180) tmp = t_1; else tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / t_0; tmp = 0.0; if (Vef <= -8e+84) tmp = t_1; elseif (Vef <= 1.2e+67) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (Vef <= 2.85e+180) tmp = t_1; else tmp = (NdChar / t_0) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -8e+84], t$95$1, If[LessEqual[Vef, 1.2e+67], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.85e+180], t$95$1, N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0}\\
\mathbf{if}\;Vef \leq -8 \cdot 10^{+84}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{+67}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;Vef \leq 2.85 \cdot 10^{+180}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{t_0} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -8.00000000000000046e84 or 1.20000000000000001e67 < Vef < 2.8500000000000001e180Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.1%
Taylor expanded in KbT around inf 39.2%
Taylor expanded in Vef around inf 45.9%
associate-/l*47.1%
Simplified47.1%
Taylor expanded in KbT around 0 61.7%
if -8.00000000000000046e84 < Vef < 1.20000000000000001e67Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.3%
neg-mul-174.3%
distribute-neg-frac74.3%
Simplified74.3%
Taylor expanded in mu around inf 61.0%
Taylor expanded in mu around 0 43.7%
if 2.8500000000000001e180 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.5%
neg-mul-180.5%
distribute-neg-frac80.5%
Simplified80.5%
Taylor expanded in mu around 0 71.9%
*-commutative71.9%
Simplified71.9%
Taylor expanded in Vef around inf 60.8%
Final simplification50.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))) (t_1 (/ NaChar t_0)))
(if (<= Vef -225000000000.0)
t_1
(if (<= Vef 3.6e+64)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= Vef 1.85e+180) t_1 (+ (/ NdChar t_0) (* NaChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -225000000000.0) {
tmp = t_1;
} else if (Vef <= 3.6e+64) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Vef <= 1.85e+180) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
if (vef <= (-225000000000.0d0)) then
tmp = t_1
else if (vef <= 3.6d+64) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (vef <= 1.85d+180) then
tmp = t_1
else
tmp = (ndchar / t_0) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -225000000000.0) {
tmp = t_1;
} else if (Vef <= 3.6e+64) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Vef <= 1.85e+180) {
tmp = t_1;
} else {
tmp = (NdChar / t_0) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 tmp = 0 if Vef <= -225000000000.0: tmp = t_1 elif Vef <= 3.6e+64: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif Vef <= 1.85e+180: tmp = t_1 else: tmp = (NdChar / t_0) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (Vef <= -225000000000.0) tmp = t_1; elseif (Vef <= 3.6e+64) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (Vef <= 1.85e+180) tmp = t_1; else tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / t_0; tmp = 0.0; if (Vef <= -225000000000.0) tmp = t_1; elseif (Vef <= 3.6e+64) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (Vef <= 1.85e+180) tmp = t_1; else tmp = (NdChar / t_0) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -225000000000.0], t$95$1, If[LessEqual[Vef, 3.6e+64], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.85e+180], t$95$1, N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0}\\
\mathbf{if}\;Vef \leq -225000000000:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 3.6 \cdot 10^{+64}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;Vef \leq 1.85 \cdot 10^{+180}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{t_0} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -2.25e11 or 3.60000000000000014e64 < Vef < 1.8500000000000001e180Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.7%
Taylor expanded in KbT around inf 37.2%
Taylor expanded in Vef around inf 41.7%
associate-/l*42.7%
Simplified42.7%
Taylor expanded in KbT around 0 57.4%
if -2.25e11 < Vef < 3.60000000000000014e64Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.1%
Taylor expanded in Ev around inf 40.4%
if 1.8500000000000001e180 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.5%
neg-mul-180.5%
distribute-neg-frac80.5%
Simplified80.5%
Taylor expanded in mu around 0 71.9%
*-commutative71.9%
Simplified71.9%
Taylor expanded in Vef around inf 60.8%
Final simplification47.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.4e+47) (not (<= KbT 8.2e+82))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)) (/ NaChar (+ 1.0 (exp (/ Vef KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.4e+47) || !(KbT <= 8.2e+82)) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2.4d+47)) .or. (.not. (kbt <= 8.2d+82))) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else
tmp = nachar / (1.0d0 + exp((vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.4e+47) || !(KbT <= 8.2e+82)) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.4e+47) or not (KbT <= 8.2e+82): tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) else: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.4e+47) || !(KbT <= 8.2e+82)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.4e+47) || ~((KbT <= 8.2e+82))) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); else tmp = NaChar / (1.0 + exp((Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.4e+47], N[Not[LessEqual[KbT, 8.2e+82]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.4 \cdot 10^{+47} \lor \neg \left(KbT \leq 8.2 \cdot 10^{+82}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if KbT < -2.40000000000000019e47 or 8.1999999999999999e82 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.7%
Taylor expanded in KbT around inf 55.3%
if -2.40000000000000019e47 < KbT < 8.1999999999999999e82Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 59.6%
Taylor expanded in KbT around inf 23.0%
Taylor expanded in Vef around inf 27.0%
associate-/l*26.9%
Simplified26.9%
Taylor expanded in KbT around 0 37.9%
Final simplification45.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.55e+49)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 8.2e+82)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.55e+49) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 8.2e+82) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.55d+49)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 8.2d+82) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.55e+49) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 8.2e+82) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.55e+49: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 8.2e+82: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.55e+49) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 8.2e+82) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.55e+49) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 8.2e+82) tmp = NaChar / (1.0 + exp((Vef / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.55e+49], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8.2e+82], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.55 \cdot 10^{+49}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 8.2 \cdot 10^{+82}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -1.54999999999999996e49Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.1%
Taylor expanded in KbT around inf 47.2%
if -1.54999999999999996e49 < KbT < 8.1999999999999999e82Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 59.6%
Taylor expanded in KbT around inf 23.0%
Taylor expanded in Vef around inf 27.0%
associate-/l*26.9%
Simplified26.9%
Taylor expanded in KbT around 0 37.9%
if 8.1999999999999999e82 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.3%
Taylor expanded in Ev around inf 59.4%
Final simplification44.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -6.2e+240)
(+
(/
NdChar
(- (+ (/ mu KbT) (+ 2.0 (+ (/ EDonor KbT) (/ Vef KbT)))) (/ Ec KbT)))
(* NaChar 0.5))
(if (<= KbT 6.5e+81)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ (/ Ev KbT) (+ (/ EAccept KbT) (+ (/ Vef KbT) 2.0)))
(/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -6.2e+240) {
tmp = (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar * 0.5);
} else if (KbT <= 6.5e+81) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (((Ev / KbT) + ((EAccept / KbT) + ((Vef / KbT) + 2.0))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-6.2d+240)) then
tmp = (ndchar / (((mu / kbt) + (2.0d0 + ((edonor / kbt) + (vef / kbt)))) - (ec / kbt))) + (nachar * 0.5d0)
else if (kbt <= 6.5d+81) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / (((ev / kbt) + ((eaccept / kbt) + ((vef / kbt) + 2.0d0))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -6.2e+240) {
tmp = (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar * 0.5);
} else if (KbT <= 6.5e+81) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (((Ev / KbT) + ((EAccept / KbT) + ((Vef / KbT) + 2.0))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -6.2e+240: tmp = (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar * 0.5) elif KbT <= 6.5e+81: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / (((Ev / KbT) + ((EAccept / KbT) + ((Vef / KbT) + 2.0))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -6.2e+240) tmp = Float64(Float64(NdChar / Float64(Float64(Float64(mu / KbT) + Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))) + Float64(NaChar * 0.5)); elseif (KbT <= 6.5e+81) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(Float64(Ev / KbT) + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + 2.0))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -6.2e+240) tmp = (NdChar / (((mu / KbT) + (2.0 + ((EDonor / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar * 0.5); elseif (KbT <= 6.5e+81) tmp = NaChar / (1.0 + exp((Vef / KbT))); else tmp = (NdChar / 2.0) + (NaChar / (((Ev / KbT) + ((EAccept / KbT) + ((Vef / KbT) + 2.0))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -6.2e+240], N[(N[(NdChar / N[(N[(N[(mu / KbT), $MachinePrecision] + N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 6.5e+81], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -6.2 \cdot 10^{+240}:\\
\;\;\;\;\frac{NdChar}{\left(\frac{mu}{KbT} + \left(2 + \left(\frac{EDonor}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + NaChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 6.5 \cdot 10^{+81}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(\frac{Ev}{KbT} + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + 2\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -6.2e240Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 95.4%
neg-mul-195.4%
distribute-neg-frac95.4%
Simplified95.4%
Taylor expanded in mu around 0 90.6%
*-commutative90.6%
Simplified90.6%
Taylor expanded in KbT around inf 75.6%
if -6.2e240 < KbT < 6.4999999999999996e81Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.0%
Taylor expanded in KbT around inf 25.3%
Taylor expanded in Vef around inf 25.8%
associate-/l*26.4%
Simplified26.4%
Taylor expanded in KbT around 0 36.8%
if 6.4999999999999996e81 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.3%
Taylor expanded in KbT around inf 55.8%
Final simplification43.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar 2.0) (/ NaChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (NaChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / 2.0d0) + (nachar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (NaChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / 2.0) + (NaChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / 2.0) + Float64(NaChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / 2.0) + (NaChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{2} + \frac{NaChar}{2}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.3%
Taylor expanded in KbT around inf 26.3%
Final simplification26.3%
herbie shell --seed 2023178
(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))))))