
(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 (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= EAccept 7.8e-56)
t_2
(if (<= EAccept 2.75e-28)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(if (<= EAccept 34000000.0)
(+ t_0 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= EAccept 3.9e+91)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= EAccept 3.2e+128)
t_2
(+ 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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (EAccept <= 7.8e-56) {
tmp = t_2;
} else if (EAccept <= 2.75e-28) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (EAccept <= 34000000.0) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (EAccept <= 3.9e+91) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (EAccept <= 3.2e+128) {
tmp = t_2;
} 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(((edonor + (mu + (vef - ec))) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
if (eaccept <= 7.8d-56) then
tmp = t_2
else if (eaccept <= 2.75d-28) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else if (eaccept <= 34000000.0d0) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else if (eaccept <= 3.9d+91) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (eaccept <= 3.2d+128) then
tmp = t_2
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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (EAccept <= 7.8e-56) {
tmp = t_2;
} else if (EAccept <= 2.75e-28) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (EAccept <= 34000000.0) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (EAccept <= 3.9e+91) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (EAccept <= 3.2e+128) {
tmp = t_2;
} 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(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if EAccept <= 7.8e-56: tmp = t_2 elif EAccept <= 2.75e-28: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) elif EAccept <= 34000000.0: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) elif EAccept <= 3.9e+91: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif EAccept <= 3.2e+128: tmp = t_2 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(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (EAccept <= 7.8e-56) tmp = t_2; elseif (EAccept <= 2.75e-28) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); elseif (EAccept <= 34000000.0) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (EAccept <= 3.9e+91) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (EAccept <= 3.2e+128) tmp = t_2; 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(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (EAccept <= 7.8e-56) tmp = t_2; elseif (EAccept <= 2.75e-28) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); elseif (EAccept <= 34000000.0) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); elseif (EAccept <= 3.9e+91) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (EAccept <= 3.2e+128) tmp = t_2; 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, 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[EAccept, 7.8e-56], t$95$2, If[LessEqual[EAccept, 2.75e-28], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 34000000.0], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.9e+91], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.2e+128], t$95$2, 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{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;EAccept \leq 7.8 \cdot 10^{-56}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 2.75 \cdot 10^{-28}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 34000000:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;EAccept \leq 3.9 \cdot 10^{+91}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 3.2 \cdot 10^{+128}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 7.8e-56 or 3.89999999999999968e91 < EAccept < 3.19999999999999986e128Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.9%
if 7.8e-56 < EAccept < 2.74999999999999984e-28Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.9%
Taylor expanded in Ec around inf 52.5%
mul-1-neg52.5%
associate-/l*52.5%
distribute-lft-neg-in52.5%
Simplified52.5%
Taylor expanded in KbT around 0 83.8%
if 2.74999999999999984e-28 < EAccept < 3.4e7Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in Ec around inf 100.0%
neg-mul-1100.0%
distribute-neg-frac2100.0%
Simplified100.0%
if 3.4e7 < EAccept < 3.89999999999999968e91Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.2%
if 3.19999999999999986e128 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.6%
Final simplification76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ NdChar t_1)))
(if (<= KbT -1.75e+128)
(+
t_1
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT))))))
(/ Ec KbT)))))
(if (<= KbT -0.0285)
t_0
(if (<= KbT 9.5e-231)
t_2
(if (<= KbT 3e-151)
t_0
(if (<= KbT 1.7e+103)
t_2
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -1.75e+128) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT))));
} else if (KbT <= -0.0285) {
tmp = t_0;
} else if (KbT <= 9.5e-231) {
tmp = t_2;
} else if (KbT <= 3e-151) {
tmp = t_0;
} else if (KbT <= 1.7e+103) {
tmp = t_2;
} else {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = ndchar + t_1
if (kbt <= (-1.75d+128)) then
tmp = t_1 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt)))))) - (ec / kbt))))
else if (kbt <= (-0.0285d0)) then
tmp = t_0
else if (kbt <= 9.5d-231) then
tmp = t_2
else if (kbt <= 3d-151) then
tmp = t_0
else if (kbt <= 1.7d+103) then
tmp = t_2
else
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -1.75e+128) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT))));
} else if (KbT <= -0.0285) {
tmp = t_0;
} else if (KbT <= 9.5e-231) {
tmp = t_2;
} else if (KbT <= 3e-151) {
tmp = t_0;
} else if (KbT <= 1.7e+103) {
tmp = t_2;
} else {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = NdChar + t_1 tmp = 0 if KbT <= -1.75e+128: tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) elif KbT <= -0.0285: tmp = t_0 elif KbT <= 9.5e-231: tmp = t_2 elif KbT <= 3e-151: tmp = t_0 elif KbT <= 1.7e+103: tmp = t_2 else: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(NdChar + t_1) tmp = 0.0 if (KbT <= -1.75e+128) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT)))))) - Float64(Ec / KbT))))); elseif (KbT <= -0.0285) tmp = t_0; elseif (KbT <= 9.5e-231) tmp = t_2; elseif (KbT <= 3e-151) tmp = t_0; elseif (KbT <= 1.7e+103) tmp = t_2; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = NdChar + t_1; tmp = 0.0; if (KbT <= -1.75e+128) tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))); elseif (KbT <= -0.0285) tmp = t_0; elseif (KbT <= 9.5e-231) tmp = t_2; elseif (KbT <= 3e-151) tmp = t_0; elseif (KbT <= 1.7e+103) tmp = t_2; else tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + t$95$1), $MachinePrecision]}, If[LessEqual[KbT, -1.75e+128], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -0.0285], t$95$0, If[LessEqual[KbT, 9.5e-231], t$95$2, If[LessEqual[KbT, 3e-151], t$95$0, If[LessEqual[KbT, 1.7e+103], t$95$2, N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := NdChar + t\_1\\
\mathbf{if}\;KbT \leq -1.75 \cdot 10^{+128}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;KbT \leq -0.0285:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 9.5 \cdot 10^{-231}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 3 \cdot 10^{-151}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.7 \cdot 10^{+103}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if KbT < -1.74999999999999984e128Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 83.9%
Taylor expanded in Vef around inf 86.3%
if -1.74999999999999984e128 < KbT < -0.028500000000000001 or 9.4999999999999995e-231 < KbT < 3e-151Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.1%
Taylor expanded in Ec around inf 37.4%
mul-1-neg37.4%
associate-/l*39.5%
distribute-lft-neg-in39.5%
Simplified39.5%
Taylor expanded in KbT around 0 77.6%
if -0.028500000000000001 < KbT < 9.4999999999999995e-231 or 3e-151 < KbT < 1.6999999999999999e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 1.6999999999999999e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.1%
Taylor expanded in EAccept around 0 77.8%
Final simplification79.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -5.9e+85)
t_2
(if (<= Vef 3.2e-144)
t_1
(if (<= Vef 2e-19)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 9.8e+51) 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((mu / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -5.9e+85) {
tmp = t_2;
} else if (Vef <= 3.2e-144) {
tmp = t_1;
} else if (Vef <= 2e-19) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 9.8e+51) {
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((mu / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-5.9d+85)) then
tmp = t_2
else if (vef <= 3.2d-144) then
tmp = t_1
else if (vef <= 2d-19) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 9.8d+51) 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((mu / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -5.9e+85) {
tmp = t_2;
} else if (Vef <= 3.2e-144) {
tmp = t_1;
} else if (Vef <= 2e-19) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 9.8e+51) {
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((mu / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -5.9e+85: tmp = t_2 elif Vef <= 3.2e-144: tmp = t_1 elif Vef <= 2e-19: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 9.8e+51: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -5.9e+85) tmp = t_2; elseif (Vef <= 3.2e-144) tmp = t_1; elseif (Vef <= 2e-19) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 9.8e+51) 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((mu / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -5.9e+85) tmp = t_2; elseif (Vef <= 3.2e-144) tmp = t_1; elseif (Vef <= 2e-19) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 9.8e+51) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5.9e+85], t$95$2, If[LessEqual[Vef, 3.2e-144], t$95$1, If[LessEqual[Vef, 2e-19], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9.8e+51], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -5.9 \cdot 10^{+85}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 3.2 \cdot 10^{-144}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 2 \cdot 10^{-19}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9.8 \cdot 10^{+51}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if Vef < -5.9e85 or 9.79999999999999967e51 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.9%
if -5.9e85 < Vef < 3.19999999999999973e-144 or 2e-19 < Vef < 9.79999999999999967e51Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.0%
if 3.19999999999999973e-144 < Vef < 2e-19Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.2%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= Vef -3.5e+85)
(+ t_1 t_0)
(if (<= Vef 1.5e-253)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 8.5e+145)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (Vef <= -3.5e+85) {
tmp = t_1 + t_0;
} else if (Vef <= 1.5e-253) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 8.5e+145) {
tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (vef <= (-3.5d+85)) then
tmp = t_1 + t_0
else if (vef <= 1.5d-253) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 8.5d+145) then
tmp = t_1 + (ndchar / (1.0d0 + exp((-ec / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (Vef <= -3.5e+85) {
tmp = t_1 + t_0;
} else if (Vef <= 1.5e-253) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 8.5e+145) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if Vef <= -3.5e+85: tmp = t_1 + t_0 elif Vef <= 1.5e-253: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 8.5e+145: tmp = t_1 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (Vef <= -3.5e+85) tmp = Float64(t_1 + t_0); elseif (Vef <= 1.5e-253) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 8.5e+145) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (Vef <= -3.5e+85) tmp = t_1 + t_0; elseif (Vef <= 1.5e-253) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 8.5e+145) tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.5e+85], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.5e-253], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 8.5e+145], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.5 \cdot 10^{+85}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;Vef \leq 1.5 \cdot 10^{-253}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 8.5 \cdot 10^{+145}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -3.50000000000000005e85Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.1%
if -3.50000000000000005e85 < Vef < 1.5000000000000001e-253Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.7%
if 1.5000000000000001e-253 < Vef < 8.49999999999999977e145Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 85.5%
associate-*r/85.5%
mul-1-neg85.5%
Simplified85.5%
if 8.49999999999999977e145 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.6%
Taylor expanded in EAccept around 0 91.5%
Final simplification84.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -2.7e+86)
t_1
(if (<= Vef 2.6e-144)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.7e+109)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -2.7e+86) {
tmp = t_1;
} else if (Vef <= 2.6e-144) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.7e+109) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-2.7d+86)) then
tmp = t_1
else if (vef <= 2.6d-144) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.7d+109) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -2.7e+86) {
tmp = t_1;
} else if (Vef <= 2.6e-144) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.7e+109) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -2.7e+86: tmp = t_1 elif Vef <= 2.6e-144: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.7e+109: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -2.7e+86) tmp = t_1; elseif (Vef <= 2.6e-144) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.7e+109) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -2.7e+86) tmp = t_1; elseif (Vef <= 2.6e-144) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.7e+109) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.7e+86], t$95$1, If[LessEqual[Vef, 2.6e-144], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.7e+109], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.7 \cdot 10^{+86}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 2.6 \cdot 10^{-144}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.7 \cdot 10^{+109}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -2.70000000000000018e86 or 1.70000000000000003e109 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.9%
if -2.70000000000000018e86 < Vef < 2.6000000000000001e-144Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.1%
if 2.6000000000000001e-144 < Vef < 1.70000000000000003e109Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 81.5%
Final simplification82.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -2.3e+86) (not (<= Vef 8.5e+36)))
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -2.3e+86) || !(Vef <= 8.5e+36)) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-2.3d+86)) .or. (.not. (vef <= 8.5d+36))) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -2.3e+86) || !(Vef <= 8.5e+36)) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -2.3e+86) or not (Vef <= 8.5e+36): tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -2.3e+86) || !(Vef <= 8.5e+36)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -2.3e+86) || ~((Vef <= 8.5e+36))) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -2.3e+86], N[Not[LessEqual[Vef, 8.5e+36]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.3 \cdot 10^{+86} \lor \neg \left(Vef \leq 8.5 \cdot 10^{+36}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.2999999999999999e86 or 8.50000000000000014e36 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 83.5%
Taylor expanded in EAccept around 0 78.7%
if -2.2999999999999999e86 < Vef < 8.50000000000000014e36Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.5%
Final simplification77.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))))))
(if (or (<= Vef -1.3e+85) (not (<= Vef 4.5e+41)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -1.3e+85) || !(Vef <= 4.5e+41)) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((vef <= (-1.3d+85)) .or. (.not. (vef <= 4.5d+41))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -1.3e+85) || !(Vef <= 4.5e+41)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (Vef <= -1.3e+85) or not (Vef <= 4.5e+41): tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((Vef <= -1.3e+85) || !(Vef <= 4.5e+41)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((Vef <= -1.3e+85) || ~((Vef <= 4.5e+41))) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -1.3e+85], N[Not[LessEqual[Vef, 4.5e+41]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.3 \cdot 10^{+85} \lor \neg \left(Vef \leq 4.5 \cdot 10^{+41}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.30000000000000005e85 or 4.5000000000000001e41 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 83.5%
if -1.30000000000000005e85 < Vef < 4.5000000000000001e41Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.5%
Final simplification79.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ NdChar t_1)))
(if (<= KbT -4.2e+127)
(+
t_1
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT))))))
(/ Ec KbT)))))
(if (<= KbT -4.8)
t_0
(if (<= KbT 5e-231)
t_2
(if (<= KbT 1.9e-147)
t_0
(if (<= KbT 1.15e+103)
t_2
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ 1.0 Ec)
(+
(+
(/ EDonor (* Ec KbT))
(+ (/ Vef (* Ec KbT)) (/ (/ mu Ec) KbT)))
(/ -1.0 KbT))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -4.2e+127) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT))));
} else if (KbT <= -4.8) {
tmp = t_0;
} else if (KbT <= 5e-231) {
tmp = t_2;
} else if (KbT <= 1.9e-147) {
tmp = t_0;
} else if (KbT <= 1.15e+103) {
tmp = t_2;
} else {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((1.0 / Ec) + (((EDonor / (Ec * KbT)) + ((Vef / (Ec * KbT)) + ((mu / Ec) / KbT))) + (-1.0 / 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((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = ndchar + t_1
if (kbt <= (-4.2d+127)) then
tmp = t_1 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt)))))) - (ec / kbt))))
else if (kbt <= (-4.8d0)) then
tmp = t_0
else if (kbt <= 5d-231) then
tmp = t_2
else if (kbt <= 1.9d-147) then
tmp = t_0
else if (kbt <= 1.15d+103) then
tmp = t_2
else
tmp = t_1 + (ndchar / (1.0d0 + (ec * ((1.0d0 / ec) + (((edonor / (ec * kbt)) + ((vef / (ec * kbt)) + ((mu / ec) / kbt))) + ((-1.0d0) / kbt))))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -4.2e+127) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT))));
} else if (KbT <= -4.8) {
tmp = t_0;
} else if (KbT <= 5e-231) {
tmp = t_2;
} else if (KbT <= 1.9e-147) {
tmp = t_0;
} else if (KbT <= 1.15e+103) {
tmp = t_2;
} else {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((1.0 / Ec) + (((EDonor / (Ec * KbT)) + ((Vef / (Ec * KbT)) + ((mu / Ec) / KbT))) + (-1.0 / KbT))))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = NdChar + t_1 tmp = 0 if KbT <= -4.2e+127: tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) elif KbT <= -4.8: tmp = t_0 elif KbT <= 5e-231: tmp = t_2 elif KbT <= 1.9e-147: tmp = t_0 elif KbT <= 1.15e+103: tmp = t_2 else: tmp = t_1 + (NdChar / (1.0 + (Ec * ((1.0 / Ec) + (((EDonor / (Ec * KbT)) + ((Vef / (Ec * KbT)) + ((mu / Ec) / KbT))) + (-1.0 / KbT)))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(NdChar + t_1) tmp = 0.0 if (KbT <= -4.2e+127) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT)))))) - Float64(Ec / KbT))))); elseif (KbT <= -4.8) tmp = t_0; elseif (KbT <= 5e-231) tmp = t_2; elseif (KbT <= 1.9e-147) tmp = t_0; elseif (KbT <= 1.15e+103) tmp = t_2; else tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(1.0 / Ec) + Float64(Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(Float64(Vef / Float64(Ec * KbT)) + Float64(Float64(mu / Ec) / KbT))) + Float64(-1.0 / KbT))))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = NdChar + t_1; tmp = 0.0; if (KbT <= -4.2e+127) tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))); elseif (KbT <= -4.8) tmp = t_0; elseif (KbT <= 5e-231) tmp = t_2; elseif (KbT <= 1.9e-147) tmp = t_0; elseif (KbT <= 1.15e+103) tmp = t_2; else tmp = t_1 + (NdChar / (1.0 + (Ec * ((1.0 / Ec) + (((EDonor / (Ec * KbT)) + ((Vef / (Ec * KbT)) + ((mu / Ec) / KbT))) + (-1.0 / KbT)))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + t$95$1), $MachinePrecision]}, If[LessEqual[KbT, -4.2e+127], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -4.8], t$95$0, If[LessEqual[KbT, 5e-231], t$95$2, If[LessEqual[KbT, 1.9e-147], t$95$0, If[LessEqual[KbT, 1.15e+103], t$95$2, N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(1.0 / Ec), $MachinePrecision] + N[(N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(mu / Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := NdChar + t\_1\\
\mathbf{if}\;KbT \leq -4.2 \cdot 10^{+127}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;KbT \leq -4.8:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 5 \cdot 10^{-231}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 1.9 \cdot 10^{-147}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.15 \cdot 10^{+103}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1}{Ec} + \left(\left(\frac{EDonor}{Ec \cdot KbT} + \left(\frac{Vef}{Ec \cdot KbT} + \frac{\frac{mu}{Ec}}{KbT}\right)\right) + \frac{-1}{KbT}\right)\right)}\\
\end{array}
\end{array}
if KbT < -4.19999999999999983e127Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 83.9%
Taylor expanded in Vef around inf 86.3%
if -4.19999999999999983e127 < KbT < -4.79999999999999982 or 5.00000000000000023e-231 < KbT < 1.90000000000000014e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.1%
Taylor expanded in Ec around inf 37.4%
mul-1-neg37.4%
associate-/l*39.5%
distribute-lft-neg-in39.5%
Simplified39.5%
Taylor expanded in KbT around 0 77.6%
if -4.79999999999999982 < KbT < 5.00000000000000023e-231 or 1.90000000000000014e-147 < KbT < 1.15000000000000004e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 1.15000000000000004e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.3%
Taylor expanded in Ec around inf 78.8%
associate--l+78.8%
associate-/r*84.2%
Simplified84.2%
Final simplification80.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -5.1e+98)
(+ t_2 (/ NaChar 2.0))
(if (<= NdChar -1.2e-28)
t_0
(if (<= NdChar 8e-116)
t_1
(if (<= NdChar 2.3e-75)
t_0
(if (<= NdChar 2e+65)
t_1
(+ t_2 (/ NaChar (+ (/ EAccept KbT) 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_2 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -5.1e+98) {
tmp = t_2 + (NaChar / 2.0);
} else if (NdChar <= -1.2e-28) {
tmp = t_0;
} else if (NdChar <= 8e-116) {
tmp = t_1;
} else if (NdChar <= 2.3e-75) {
tmp = t_0;
} else if (NdChar <= 2e+65) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_2 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-5.1d+98)) then
tmp = t_2 + (nachar / 2.0d0)
else if (ndchar <= (-1.2d-28)) then
tmp = t_0
else if (ndchar <= 8d-116) then
tmp = t_1
else if (ndchar <= 2.3d-75) then
tmp = t_0
else if (ndchar <= 2d+65) then
tmp = t_1
else
tmp = t_2 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_2 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -5.1e+98) {
tmp = t_2 + (NaChar / 2.0);
} else if (NdChar <= -1.2e-28) {
tmp = t_0;
} else if (NdChar <= 8e-116) {
tmp = t_1;
} else if (NdChar <= 2.3e-75) {
tmp = t_0;
} else if (NdChar <= 2e+65) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_2 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -5.1e+98: tmp = t_2 + (NaChar / 2.0) elif NdChar <= -1.2e-28: tmp = t_0 elif NdChar <= 8e-116: tmp = t_1 elif NdChar <= 2.3e-75: tmp = t_0 elif NdChar <= 2e+65: tmp = t_1 else: tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -5.1e+98) tmp = Float64(t_2 + Float64(NaChar / 2.0)); elseif (NdChar <= -1.2e-28) tmp = t_0; elseif (NdChar <= 8e-116) tmp = t_1; elseif (NdChar <= 2.3e-75) tmp = t_0; elseif (NdChar <= 2e+65) tmp = t_1; else tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_2 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -5.1e+98) tmp = t_2 + (NaChar / 2.0); elseif (NdChar <= -1.2e-28) tmp = t_0; elseif (NdChar <= 8e-116) tmp = t_1; elseif (NdChar <= 2.3e-75) tmp = t_0; elseif (NdChar <= 2e+65) tmp = t_1; else tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.1e+98], N[(t$95$2 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.2e-28], t$95$0, If[LessEqual[NdChar, 8e-116], t$95$1, If[LessEqual[NdChar, 2.3e-75], t$95$0, If[LessEqual[NdChar, 2e+65], t$95$1, N[(t$95$2 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -5.1 \cdot 10^{+98}:\\
\;\;\;\;t\_2 + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq -1.2 \cdot 10^{-28}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 8 \cdot 10^{-116}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 2.3 \cdot 10^{-75}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 2 \cdot 10^{+65}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -5.09999999999999988e98Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.5%
Taylor expanded in Ev around 0 65.5%
if -5.09999999999999988e98 < NdChar < -1.2000000000000001e-28 or 8e-116 < NdChar < 2.3e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.7%
Taylor expanded in Ec around inf 51.8%
mul-1-neg51.8%
associate-/l*51.8%
distribute-lft-neg-in51.8%
Simplified51.8%
Taylor expanded in KbT around 0 89.9%
if -1.2000000000000001e-28 < NdChar < 8e-116 or 2.3e-75 < NdChar < 2e65Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.5%
Taylor expanded in Ec around -inf 57.2%
mul-1-neg57.2%
distribute-rgt-neg-in57.2%
+-commutative57.2%
mul-1-neg57.2%
unsub-neg57.2%
associate-+r+57.2%
+-commutative57.2%
Simplified57.2%
Taylor expanded in mu around inf 57.2%
associate-/r*58.0%
Simplified58.0%
Taylor expanded in KbT around inf 80.7%
if 2e65 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.2%
Taylor expanded in EAccept around 0 78.3%
Final simplification79.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
(if (<= NdChar -6.9e+98)
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= NdChar -1.12e-28)
t_0
(if (<= NdChar 8e-118)
t_2
(if (<= NdChar 3.8e-75)
t_0
(if (<= NdChar 2.4e+71)
t_2
(+ t_1 (/ NaChar (+ (/ EAccept KbT) 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NdChar <= -6.9e+98) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (NdChar <= -1.12e-28) {
tmp = t_0;
} else if (NdChar <= 8e-118) {
tmp = t_2;
} else if (NdChar <= 3.8e-75) {
tmp = t_0;
} else if (NdChar <= 2.4e+71) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_2 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
if (ndchar <= (-6.9d+98)) then
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
else if (ndchar <= (-1.12d-28)) then
tmp = t_0
else if (ndchar <= 8d-118) then
tmp = t_2
else if (ndchar <= 3.8d-75) then
tmp = t_0
else if (ndchar <= 2.4d+71) then
tmp = t_2
else
tmp = t_1 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NdChar <= -6.9e+98) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (NdChar <= -1.12e-28) {
tmp = t_0;
} else if (NdChar <= 8e-118) {
tmp = t_2;
} else if (NdChar <= 3.8e-75) {
tmp = t_0;
} else if (NdChar <= 2.4e+71) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) tmp = 0 if NdChar <= -6.9e+98: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) elif NdChar <= -1.12e-28: tmp = t_0 elif NdChar <= 8e-118: tmp = t_2 elif NdChar <= 3.8e-75: tmp = t_0 elif NdChar <= 2.4e+71: tmp = t_2 else: tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) tmp = 0.0 if (NdChar <= -6.9e+98) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (NdChar <= -1.12e-28) tmp = t_0; elseif (NdChar <= 8e-118) tmp = t_2; elseif (NdChar <= 3.8e-75) tmp = t_0; elseif (NdChar <= 2.4e+71) tmp = t_2; else tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); tmp = 0.0; if (NdChar <= -6.9e+98) tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); elseif (NdChar <= -1.12e-28) tmp = t_0; elseif (NdChar <= 8e-118) tmp = t_2; elseif (NdChar <= 3.8e-75) tmp = t_0; elseif (NdChar <= 2.4e+71) tmp = t_2; else tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6.9e+98], N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.12e-28], t$95$0, If[LessEqual[NdChar, 8e-118], t$95$2, If[LessEqual[NdChar, 3.8e-75], t$95$0, If[LessEqual[NdChar, 2.4e+71], t$95$2, N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -6.9 \cdot 10^{+98}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -1.12 \cdot 10^{-28}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 8 \cdot 10^{-118}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 3.8 \cdot 10^{-75}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 2.4 \cdot 10^{+71}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -6.9e98Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.5%
Taylor expanded in Ev around 0 66.1%
if -6.9e98 < NdChar < -1.1200000000000001e-28 or 7.99999999999999988e-118 < NdChar < 3.79999999999999994e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.7%
Taylor expanded in Ec around inf 51.8%
mul-1-neg51.8%
associate-/l*51.8%
distribute-lft-neg-in51.8%
Simplified51.8%
Taylor expanded in KbT around 0 89.9%
if -1.1200000000000001e-28 < NdChar < 7.99999999999999988e-118 or 3.79999999999999994e-75 < NdChar < 2.39999999999999981e71Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.5%
Taylor expanded in Ec around -inf 57.2%
mul-1-neg57.2%
distribute-rgt-neg-in57.2%
+-commutative57.2%
mul-1-neg57.2%
unsub-neg57.2%
associate-+r+57.2%
+-commutative57.2%
Simplified57.2%
Taylor expanded in mu around inf 57.2%
associate-/r*58.0%
Simplified58.0%
Taylor expanded in KbT around inf 80.7%
if 2.39999999999999981e71 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.2%
Taylor expanded in EAccept around 0 78.3%
Final simplification79.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2 (+ NdChar t_0)))
(if (<= NdChar -4e+101)
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= NdChar -1.05e-28)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(if (<= NdChar 9.2e-116)
t_2
(if (<= NdChar 4e-75)
(+ t_0 (/ NdChar (- 2.0 (/ Ec KbT))))
(if (<= NdChar 4.8e+72)
t_2
(+ t_1 (/ NaChar (+ (/ EAccept KbT) 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = NdChar + t_0;
double tmp;
if (NdChar <= -4e+101) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (NdChar <= -1.05e-28) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (NdChar <= 9.2e-116) {
tmp = t_2;
} else if (NdChar <= 4e-75) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 4.8e+72) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: 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(((edonor + (mu + (vef - ec))) / kbt)))
t_2 = ndchar + t_0
if (ndchar <= (-4d+101)) then
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
else if (ndchar <= (-1.05d-28)) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else if (ndchar <= 9.2d-116) then
tmp = t_2
else if (ndchar <= 4d-75) then
tmp = t_0 + (ndchar / (2.0d0 - (ec / kbt)))
else if (ndchar <= 4.8d+72) then
tmp = t_2
else
tmp = t_1 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = NdChar + t_0;
double tmp;
if (NdChar <= -4e+101) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (NdChar <= -1.05e-28) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (NdChar <= 9.2e-116) {
tmp = t_2;
} else if (NdChar <= 4e-75) {
tmp = t_0 + (NdChar / (2.0 - (Ec / KbT)));
} else if (NdChar <= 4.8e+72) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = NdChar + t_0 tmp = 0 if NdChar <= -4e+101: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) elif NdChar <= -1.05e-28: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) elif NdChar <= 9.2e-116: tmp = t_2 elif NdChar <= 4e-75: tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))) elif NdChar <= 4.8e+72: tmp = t_2 else: tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(NdChar + t_0) tmp = 0.0 if (NdChar <= -4e+101) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (NdChar <= -1.05e-28) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); elseif (NdChar <= 9.2e-116) tmp = t_2; elseif (NdChar <= 4e-75) tmp = Float64(t_0 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); elseif (NdChar <= 4.8e+72) tmp = t_2; else tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = NdChar + t_0; tmp = 0.0; if (NdChar <= -4e+101) tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); elseif (NdChar <= -1.05e-28) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); elseif (NdChar <= 9.2e-116) tmp = t_2; elseif (NdChar <= 4e-75) tmp = t_0 + (NdChar / (2.0 - (Ec / KbT))); elseif (NdChar <= 4.8e+72) tmp = t_2; else tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + t$95$0), $MachinePrecision]}, If[LessEqual[NdChar, -4e+101], N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.05e-28], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 9.2e-116], t$95$2, If[LessEqual[NdChar, 4e-75], N[(t$95$0 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.8e+72], t$95$2, N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := NdChar + t\_0\\
\mathbf{if}\;NdChar \leq -4 \cdot 10^{+101}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -1.05 \cdot 10^{-28}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 9.2 \cdot 10^{-116}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 4 \cdot 10^{-75}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 4.8 \cdot 10^{+72}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -3.9999999999999999e101Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.5%
Taylor expanded in Ev around 0 66.1%
if -3.9999999999999999e101 < NdChar < -1.05000000000000003e-28Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.9%
Taylor expanded in Ec around inf 44.5%
mul-1-neg44.5%
associate-/l*44.5%
distribute-lft-neg-in44.5%
Simplified44.5%
Taylor expanded in KbT around 0 88.9%
if -1.05000000000000003e-28 < NdChar < 9.20000000000000006e-116 or 3.9999999999999998e-75 < NdChar < 4.8000000000000002e72Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.5%
Taylor expanded in Ec around -inf 57.2%
mul-1-neg57.2%
distribute-rgt-neg-in57.2%
+-commutative57.2%
mul-1-neg57.2%
unsub-neg57.2%
associate-+r+57.2%
+-commutative57.2%
Simplified57.2%
Taylor expanded in mu around inf 57.2%
associate-/r*58.0%
Simplified58.0%
Taylor expanded in KbT around inf 80.7%
if 9.20000000000000006e-116 < NdChar < 3.9999999999999998e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 92.0%
associate-*r/92.0%
mul-1-neg92.0%
Simplified92.0%
Taylor expanded in Ec around 0 100.0%
neg-mul-140.7%
unsub-neg40.7%
Simplified100.0%
if 4.8000000000000002e72 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.2%
Taylor expanded in EAccept around 0 78.3%
Final simplification80.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0)))
(t_2
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
(if (<= NdChar -3.05e+100)
t_1
(if (<= NdChar -9.8e-29)
t_0
(if (<= NdChar 1.22e-117)
t_2
(if (<= NdChar 2.3e-75) t_0 (if (<= NdChar 3.6e+162) t_2 t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double t_2 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NdChar <= -3.05e+100) {
tmp = t_1;
} else if (NdChar <= -9.8e-29) {
tmp = t_0;
} else if (NdChar <= 1.22e-117) {
tmp = t_2;
} else if (NdChar <= 2.3e-75) {
tmp = t_0;
} else if (NdChar <= 3.6e+162) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
t_2 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
if (ndchar <= (-3.05d+100)) then
tmp = t_1
else if (ndchar <= (-9.8d-29)) then
tmp = t_0
else if (ndchar <= 1.22d-117) then
tmp = t_2
else if (ndchar <= 2.3d-75) then
tmp = t_0
else if (ndchar <= 3.6d+162) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double t_2 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NdChar <= -3.05e+100) {
tmp = t_1;
} else if (NdChar <= -9.8e-29) {
tmp = t_0;
} else if (NdChar <= 1.22e-117) {
tmp = t_2;
} else if (NdChar <= 2.3e-75) {
tmp = t_0;
} else if (NdChar <= 3.6e+162) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) t_2 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) tmp = 0 if NdChar <= -3.05e+100: tmp = t_1 elif NdChar <= -9.8e-29: tmp = t_0 elif NdChar <= 1.22e-117: tmp = t_2 elif NdChar <= 2.3e-75: tmp = t_0 elif NdChar <= 3.6e+162: tmp = t_2 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) t_2 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) tmp = 0.0 if (NdChar <= -3.05e+100) tmp = t_1; elseif (NdChar <= -9.8e-29) tmp = t_0; elseif (NdChar <= 1.22e-117) tmp = t_2; elseif (NdChar <= 2.3e-75) tmp = t_0; elseif (NdChar <= 3.6e+162) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); t_2 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); tmp = 0.0; if (NdChar <= -3.05e+100) tmp = t_1; elseif (NdChar <= -9.8e-29) tmp = t_0; elseif (NdChar <= 1.22e-117) tmp = t_2; elseif (NdChar <= 2.3e-75) tmp = t_0; elseif (NdChar <= 3.6e+162) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.05e+100], t$95$1, If[LessEqual[NdChar, -9.8e-29], t$95$0, If[LessEqual[NdChar, 1.22e-117], t$95$2, If[LessEqual[NdChar, 2.3e-75], t$95$0, If[LessEqual[NdChar, 3.6e+162], t$95$2, t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
t_2 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -3.05 \cdot 10^{+100}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -9.8 \cdot 10^{-29}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.22 \cdot 10^{-117}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 2.3 \cdot 10^{-75}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 3.6 \cdot 10^{+162}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NdChar < -3.05e100 or 3.59999999999999994e162 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 80.8%
Taylor expanded in Ev around 0 73.2%
if -3.05e100 < NdChar < -9.7999999999999997e-29 or 1.21999999999999997e-117 < NdChar < 2.3e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.7%
Taylor expanded in Ec around inf 51.8%
mul-1-neg51.8%
associate-/l*51.8%
distribute-lft-neg-in51.8%
Simplified51.8%
Taylor expanded in KbT around 0 89.9%
if -9.7999999999999997e-29 < NdChar < 1.21999999999999997e-117 or 2.3e-75 < NdChar < 3.59999999999999994e162Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.7%
Taylor expanded in Ec around -inf 56.4%
mul-1-neg56.4%
distribute-rgt-neg-in56.4%
+-commutative56.4%
mul-1-neg56.4%
unsub-neg56.4%
associate-+r+56.4%
+-commutative56.4%
Simplified56.4%
Taylor expanded in mu around inf 55.3%
associate-/r*56.0%
Simplified56.0%
Taylor expanded in KbT around inf 79.3%
Final simplification79.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -9e+126)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT -0.11)
t_1
(if (<= KbT 6.2e-231)
t_0
(if (<= KbT 2.9e-154)
t_1
(if (<= KbT 2.1e+103)
t_0
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -0.11) {
tmp = t_1;
} else if (KbT <= 6.2e-231) {
tmp = t_0;
} else if (KbT <= 2.9e-154) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-9d+126)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= (-0.11d0)) then
tmp = t_1
else if (kbt <= 6.2d-231) then
tmp = t_0
else if (kbt <= 2.9d-154) then
tmp = t_1
else if (kbt <= 2.1d+103) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -0.11) {
tmp = t_1;
} else if (KbT <= 6.2e-231) {
tmp = t_0;
} else if (KbT <= 2.9e-154) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -9e+126: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= -0.11: tmp = t_1 elif KbT <= 6.2e-231: tmp = t_0 elif KbT <= 2.9e-154: tmp = t_1 elif KbT <= 2.1e+103: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -9e+126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= -0.11) tmp = t_1; elseif (KbT <= 6.2e-231) tmp = t_0; elseif (KbT <= 2.9e-154) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -9e+126) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= -0.11) tmp = t_1; elseif (KbT <= 6.2e-231) tmp = t_0; elseif (KbT <= 2.9e-154) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9e+126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -0.11], t$95$1, If[LessEqual[KbT, 6.2e-231], t$95$0, If[LessEqual[KbT, 2.9e-154], t$95$1, If[LessEqual[KbT, 2.1e+103], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -9 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -0.11:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 6.2 \cdot 10^{-231}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.9 \cdot 10^{-154}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{+103}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -8.99999999999999947e126Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 81.5%
Taylor expanded in EAccept around inf 77.4%
if -8.99999999999999947e126 < KbT < -0.110000000000000001 or 6.19999999999999976e-231 < KbT < 2.9e-154Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Ec around inf 38.1%
mul-1-neg38.1%
associate-/l*40.3%
distribute-lft-neg-in40.3%
Simplified40.3%
Taylor expanded in KbT around 0 79.4%
if -0.110000000000000001 < KbT < 6.19999999999999976e-231 or 2.9e-154 < KbT < 2.1000000000000002e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 2.1000000000000002e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.8%
Taylor expanded in Ev around inf 67.2%
Final simplification77.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -8.5e+126)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT -5.8)
t_1
(if (<= KbT 7e-231)
t_0
(if (<= KbT 1.75e-148)
t_1
(if (<= KbT 2.1e+103)
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -8.5e+126) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -5.8) {
tmp = t_1;
} else if (KbT <= 7e-231) {
tmp = t_0;
} else if (KbT <= 1.75e-148) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-8.5d+126)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= (-5.8d0)) then
tmp = t_1
else if (kbt <= 7d-231) then
tmp = t_0
else if (kbt <= 1.75d-148) then
tmp = t_1
else if (kbt <= 2.1d+103) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -8.5e+126) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= -5.8) {
tmp = t_1;
} else if (KbT <= 7e-231) {
tmp = t_0;
} else if (KbT <= 1.75e-148) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -8.5e+126: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= -5.8: tmp = t_1 elif KbT <= 7e-231: tmp = t_0 elif KbT <= 1.75e-148: tmp = t_1 elif KbT <= 2.1e+103: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -8.5e+126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= -5.8) tmp = t_1; elseif (KbT <= 7e-231) tmp = t_0; elseif (KbT <= 1.75e-148) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -8.5e+126) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= -5.8) tmp = t_1; elseif (KbT <= 7e-231) tmp = t_0; elseif (KbT <= 1.75e-148) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8.5e+126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -5.8], t$95$1, If[LessEqual[KbT, 7e-231], t$95$0, If[LessEqual[KbT, 1.75e-148], t$95$1, If[LessEqual[KbT, 2.1e+103], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -8.5 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -5.8:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 7 \cdot 10^{-231}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.75 \cdot 10^{-148}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{+103}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -8.49999999999999944e126Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 81.5%
Taylor expanded in EAccept around inf 77.4%
if -8.49999999999999944e126 < KbT < -5.79999999999999982 or 7.0000000000000002e-231 < KbT < 1.75e-148Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Ec around inf 38.1%
mul-1-neg38.1%
associate-/l*40.3%
distribute-lft-neg-in40.3%
Simplified40.3%
Taylor expanded in KbT around 0 79.4%
if -5.79999999999999982 < KbT < 7.0000000000000002e-231 or 1.75e-148 < KbT < 2.1000000000000002e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 2.1000000000000002e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.8%
Taylor expanded in EAccept around 0 67.3%
Final simplification77.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -9e+126)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar (- 2.0 (/ Ec KbT))))
(if (<= KbT -0.085)
t_1
(if (<= KbT 1.1e-230)
t_0
(if (<= KbT 3.4e-150)
t_1
(if (<= KbT 2.1e+103)
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else if (KbT <= -0.085) {
tmp = t_1;
} else if (KbT <= 1.1e-230) {
tmp = t_0;
} else if (KbT <= 3.4e-150) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-9d+126)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
else if (kbt <= (-0.085d0)) then
tmp = t_1
else if (kbt <= 1.1d-230) then
tmp = t_0
else if (kbt <= 3.4d-150) then
tmp = t_1
else if (kbt <= 2.1d+103) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else if (KbT <= -0.085) {
tmp = t_1;
} else if (KbT <= 1.1e-230) {
tmp = t_0;
} else if (KbT <= 3.4e-150) {
tmp = t_1;
} else if (KbT <= 2.1e+103) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -9e+126: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) elif KbT <= -0.085: tmp = t_1 elif KbT <= 1.1e-230: tmp = t_0 elif KbT <= 3.4e-150: tmp = t_1 elif KbT <= 2.1e+103: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -9e+126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); elseif (KbT <= -0.085) tmp = t_1; elseif (KbT <= 1.1e-230) tmp = t_0; elseif (KbT <= 3.4e-150) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -9e+126) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); elseif (KbT <= -0.085) tmp = t_1; elseif (KbT <= 1.1e-230) tmp = t_0; elseif (KbT <= 3.4e-150) tmp = t_1; elseif (KbT <= 2.1e+103) tmp = t_0; else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9e+126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -0.085], t$95$1, If[LessEqual[KbT, 1.1e-230], t$95$0, If[LessEqual[KbT, 3.4e-150], t$95$1, If[LessEqual[KbT, 2.1e+103], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -9 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;KbT \leq -0.085:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 1.1 \cdot 10^{-230}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 3.4 \cdot 10^{-150}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{+103}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -8.99999999999999947e126Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 86.1%
associate-*r/86.1%
mul-1-neg86.1%
Simplified86.1%
Taylor expanded in Ec around 0 81.5%
neg-mul-166.8%
unsub-neg66.8%
Simplified81.5%
Taylor expanded in EAccept around inf 77.4%
if -8.99999999999999947e126 < KbT < -0.0850000000000000061 or 1.0999999999999999e-230 < KbT < 3.39999999999999999e-150Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Ec around inf 38.1%
mul-1-neg38.1%
associate-/l*40.3%
distribute-lft-neg-in40.3%
Simplified40.3%
Taylor expanded in KbT around 0 79.4%
if -0.0850000000000000061 < KbT < 1.0999999999999999e-230 or 3.39999999999999999e-150 < KbT < 2.1000000000000002e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 2.1000000000000002e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.8%
Taylor expanded in EAccept around 0 67.3%
Final simplification77.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (- 2.0 (/ Ec KbT))))
(t_1
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -9e+126)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_0)
(if (<= KbT -0.41)
t_2
(if (<= KbT 8e-231)
t_1
(if (<= KbT 1.5e-142)
t_2
(if (<= KbT 2.1e+103)
t_1
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (2.0 - (Ec / KbT));
double t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_2 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_0;
} else if (KbT <= -0.41) {
tmp = t_2;
} else if (KbT <= 8e-231) {
tmp = t_1;
} else if (KbT <= 1.5e-142) {
tmp = t_2;
} else if (KbT <= 2.1e+103) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (2.0d0 - (ec / kbt))
t_1 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
t_2 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-9d+126)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_0
else if (kbt <= (-0.41d0)) then
tmp = t_2
else if (kbt <= 8d-231) then
tmp = t_1
else if (kbt <= 1.5d-142) then
tmp = t_2
else if (kbt <= 2.1d+103) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (2.0 - (Ec / KbT));
double t_1 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double t_2 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -9e+126) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_0;
} else if (KbT <= -0.41) {
tmp = t_2;
} else if (KbT <= 8e-231) {
tmp = t_1;
} else if (KbT <= 1.5e-142) {
tmp = t_2;
} else if (KbT <= 2.1e+103) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (2.0 - (Ec / KbT)) t_1 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) t_2 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -9e+126: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_0 elif KbT <= -0.41: tmp = t_2 elif KbT <= 8e-231: tmp = t_1 elif KbT <= 1.5e-142: tmp = t_2 elif KbT <= 2.1e+103: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(2.0 - Float64(Ec / KbT))) t_1 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -9e+126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_0); elseif (KbT <= -0.41) tmp = t_2; elseif (KbT <= 8e-231) tmp = t_1; elseif (KbT <= 1.5e-142) tmp = t_2; elseif (KbT <= 2.1e+103) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (2.0 - (Ec / KbT)); t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); t_2 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -9e+126) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_0; elseif (KbT <= -0.41) tmp = t_2; elseif (KbT <= 8e-231) tmp = t_1; elseif (KbT <= 1.5e-142) tmp = t_2; elseif (KbT <= 2.1e+103) tmp = t_1; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9e+126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[KbT, -0.41], t$95$2, If[LessEqual[KbT, 8e-231], t$95$1, If[LessEqual[KbT, 1.5e-142], t$95$2, If[LessEqual[KbT, 2.1e+103], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
t_1 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -9 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_0\\
\mathbf{elif}\;KbT \leq -0.41:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 8 \cdot 10^{-231}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 1.5 \cdot 10^{-142}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{+103}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t\_0\\
\end{array}
\end{array}
if KbT < -8.99999999999999947e126Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 86.1%
associate-*r/86.1%
mul-1-neg86.1%
Simplified86.1%
Taylor expanded in Ec around 0 81.5%
neg-mul-166.8%
unsub-neg66.8%
Simplified81.5%
Taylor expanded in EAccept around inf 77.4%
if -8.99999999999999947e126 < KbT < -0.409999999999999976 or 7.9999999999999999e-231 < KbT < 1.5000000000000001e-142Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Ec around inf 38.1%
mul-1-neg38.1%
associate-/l*40.3%
distribute-lft-neg-in40.3%
Simplified40.3%
Taylor expanded in KbT around 0 79.4%
if -0.409999999999999976 < KbT < 7.9999999999999999e-231 or 1.5000000000000001e-142 < KbT < 2.1000000000000002e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 2.1000000000000002e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 84.1%
associate-*r/84.1%
mul-1-neg84.1%
Simplified84.1%
Taylor expanded in Ec around 0 76.2%
neg-mul-163.0%
unsub-neg63.0%
Simplified76.2%
Taylor expanded in Ev around inf 69.6%
Final simplification77.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ NdChar t_1)))
(if (<= KbT -1e+124)
(+ t_1 (/ NdChar 2.0))
(if (<= KbT -0.065)
t_0
(if (<= KbT 5.6e-231)
t_2
(if (<= KbT 3.8e-150)
t_0
(if (<= KbT 2.1e+103)
t_2
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (- 2.0 (/ Ec KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -1e+124) {
tmp = t_1 + (NdChar / 2.0);
} else if (KbT <= -0.065) {
tmp = t_0;
} else if (KbT <= 5.6e-231) {
tmp = t_2;
} else if (KbT <= 3.8e-150) {
tmp = t_0;
} else if (KbT <= 2.1e+103) {
tmp = t_2;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = ndchar + t_1
if (kbt <= (-1d+124)) then
tmp = t_1 + (ndchar / 2.0d0)
else if (kbt <= (-0.065d0)) then
tmp = t_0
else if (kbt <= 5.6d-231) then
tmp = t_2
else if (kbt <= 3.8d-150) then
tmp = t_0
else if (kbt <= 2.1d+103) then
tmp = t_2
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (KbT <= -1e+124) {
tmp = t_1 + (NdChar / 2.0);
} else if (KbT <= -0.065) {
tmp = t_0;
} else if (KbT <= 5.6e-231) {
tmp = t_2;
} else if (KbT <= 3.8e-150) {
tmp = t_0;
} else if (KbT <= 2.1e+103) {
tmp = t_2;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = NdChar + t_1 tmp = 0 if KbT <= -1e+124: tmp = t_1 + (NdChar / 2.0) elif KbT <= -0.065: tmp = t_0 elif KbT <= 5.6e-231: tmp = t_2 elif KbT <= 3.8e-150: tmp = t_0 elif KbT <= 2.1e+103: tmp = t_2 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(NdChar + t_1) tmp = 0.0 if (KbT <= -1e+124) tmp = Float64(t_1 + Float64(NdChar / 2.0)); elseif (KbT <= -0.065) tmp = t_0; elseif (KbT <= 5.6e-231) tmp = t_2; elseif (KbT <= 3.8e-150) tmp = t_0; elseif (KbT <= 2.1e+103) tmp = t_2; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = NdChar + t_1; tmp = 0.0; if (KbT <= -1e+124) tmp = t_1 + (NdChar / 2.0); elseif (KbT <= -0.065) tmp = t_0; elseif (KbT <= 5.6e-231) tmp = t_2; elseif (KbT <= 3.8e-150) tmp = t_0; elseif (KbT <= 2.1e+103) tmp = t_2; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + t$95$1), $MachinePrecision]}, If[LessEqual[KbT, -1e+124], N[(t$95$1 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -0.065], t$95$0, If[LessEqual[KbT, 5.6e-231], t$95$2, If[LessEqual[KbT, 3.8e-150], t$95$0, If[LessEqual[KbT, 2.1e+103], t$95$2, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := NdChar + t\_1\\
\mathbf{if}\;KbT \leq -1 \cdot 10^{+124}:\\
\;\;\;\;t\_1 + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -0.065:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 5.6 \cdot 10^{-231}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 3.8 \cdot 10^{-150}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{+103}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if KbT < -9.99999999999999948e123Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 81.5%
if -9.99999999999999948e123 < KbT < -0.065000000000000002 or 5.5999999999999997e-231 < KbT < 3.7999999999999998e-150Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in Ec around inf 38.1%
mul-1-neg38.1%
associate-/l*40.3%
distribute-lft-neg-in40.3%
Simplified40.3%
Taylor expanded in KbT around 0 79.4%
if -0.065000000000000002 < KbT < 5.5999999999999997e-231 or 3.7999999999999998e-150 < KbT < 2.1000000000000002e103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in Ec around -inf 42.3%
mul-1-neg42.3%
distribute-rgt-neg-in42.3%
+-commutative42.3%
mul-1-neg42.3%
unsub-neg42.3%
associate-+r+42.3%
+-commutative42.3%
Simplified42.3%
Taylor expanded in mu around inf 47.3%
associate-/r*46.7%
Simplified46.7%
Taylor expanded in KbT around inf 78.9%
if 2.1000000000000002e103 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 84.1%
associate-*r/84.1%
mul-1-neg84.1%
Simplified84.1%
Taylor expanded in Ec around 0 76.2%
neg-mul-163.0%
unsub-neg63.0%
Simplified76.2%
Taylor expanded in Ev around inf 69.6%
Final simplification78.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -8.4e+126)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 4.7e+213)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (* NaChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -8.4e+126) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 4.7e+213) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (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) :: tmp
if (kbt <= (-8.4d+126)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 4.7d+213) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (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 tmp;
if (KbT <= -8.4e+126) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 4.7e+213) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -8.4e+126: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 4.7e+213: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) else: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -8.4e+126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 4.7e+213) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -8.4e+126) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 4.7e+213) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); else tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -8.4e+126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.7e+213], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -8.4 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 4.7 \cdot 10^{+213}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -8.3999999999999997e126Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 81.5%
Taylor expanded in EAccept around inf 77.4%
if -8.3999999999999997e126 < KbT < 4.6999999999999998e213Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.2%
Taylor expanded in Ec around inf 34.9%
mul-1-neg34.9%
associate-/l*34.7%
distribute-lft-neg-in34.7%
Simplified34.7%
Taylor expanded in KbT around 0 59.1%
if 4.6999999999999998e213 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 100.0%
associate-*r/100.0%
mul-1-neg100.0%
Simplified100.0%
Taylor expanded in KbT around inf 94.6%
Final simplification64.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -3.25e-78)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 1.05e-140)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (* NaChar 0.5))
(+ (/ 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 <= -3.25e-78) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.05e-140) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar * 0.5);
} 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 <= (-3.25d-78)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 1.05d-140) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar * 0.5d0)
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 <= -3.25e-78) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.05e-140) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar * 0.5);
} 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 <= -3.25e-78: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 1.05e-140: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar * 0.5) 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 <= -3.25e-78) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 1.05e-140) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar * 0.5)); 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 <= -3.25e-78) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 1.05e-140) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar * 0.5); 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, -3.25e-78], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.05e-140], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $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 -3.25 \cdot 10^{-78}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 1.05 \cdot 10^{-140}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -3.2500000000000001e-78Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.7%
Taylor expanded in EAccept around inf 51.9%
if -3.2500000000000001e-78 < KbT < 1.05000000000000009e-140Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 66.6%
associate-*r/66.6%
mul-1-neg66.6%
Simplified66.6%
Taylor expanded in KbT around inf 30.8%
if 1.05000000000000009e-140 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.1%
Taylor expanded in Ev around inf 45.5%
Final simplification43.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -3.25e-91)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 1.45e-230)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (* NaChar 0.5))
(+ (/ 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 <= -3.25e-91) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.45e-230) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5);
} 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 <= (-3.25d-91)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 1.45d-230) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar * 0.5d0)
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 <= -3.25e-91) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 1.45e-230) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar * 0.5);
} 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 <= -3.25e-91: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 1.45e-230: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar * 0.5) 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 <= -3.25e-91) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 1.45e-230) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar * 0.5)); 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 <= -3.25e-91) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 1.45e-230) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar * 0.5); 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, -3.25e-91], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.45e-230], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $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 -3.25 \cdot 10^{-91}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 1.45 \cdot 10^{-230}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -3.25e-91Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.6%
Taylor expanded in EAccept around inf 52.1%
if -3.25e-91 < KbT < 1.45000000000000003e-230Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 61.9%
Taylor expanded in KbT around inf 29.4%
if 1.45000000000000003e-230 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
Taylor expanded in Ev around inf 42.1%
Final simplification42.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT 8.5e-286) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 8.5e-286) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= 8.5d-286) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
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 <= 8.5e-286) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 8.5e-286: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 8.5e-286) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 8.5e-286) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 8.5e-286], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $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 8.5 \cdot 10^{-286}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < 8.4999999999999998e-286Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.3%
Taylor expanded in EAccept around inf 41.4%
if 8.4999999999999998e-286 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.1%
Taylor expanded in Ev around inf 38.8%
Final simplification40.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 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 = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 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 (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in EAccept around inf 41.3%
Final simplification41.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 74.8%
associate-*r/74.8%
mul-1-neg74.8%
Simplified74.8%
Taylor expanded in KbT around inf 39.9%
Taylor expanded in Ec around 0 28.6%
neg-mul-128.6%
unsub-neg28.6%
Simplified28.6%
Taylor expanded in Ec around 0 30.2%
distribute-lft-out30.2%
Simplified30.2%
Final simplification30.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 74.8%
associate-*r/74.8%
mul-1-neg74.8%
Simplified74.8%
Taylor expanded in KbT around inf 39.9%
Taylor expanded in Ec around 0 28.6%
neg-mul-128.6%
unsub-neg28.6%
Simplified28.6%
Taylor expanded in NdChar around 0 18.2%
Final simplification18.2%
herbie shell --seed 2024075
(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))))))