
(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 19 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 (+ 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 / (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 / (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 / (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 / (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 / 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 / (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[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $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}
\\
NdChar \cdot \frac{1}{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%
div-inv100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ mu KbT)))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= NaChar -5.8e-185)
t_0
(if (<= NaChar 7e-124)
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/
NaChar
(-
(+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ mu KbT))))
(if (<= NaChar 6e-19)
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + exp((mu / KbT))))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (NaChar <= -5.8e-185) {
tmp = t_0;
} else if (NaChar <= 7e-124) {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NaChar <= 6e-19) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar * (1.0d0 / (1.0d0 + exp((mu / kbt))))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (nachar <= (-5.8d-185)) then
tmp = t_0
else if (nachar <= 7d-124) then
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (nachar <= 6d-19) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar * (1.0 / (1.0 + Math.exp((mu / KbT))))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (NaChar <= -5.8e-185) {
tmp = t_0;
} else if (NaChar <= 7e-124) {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (NaChar <= 6e-19) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar * (1.0 / (1.0 + math.exp((mu / KbT))))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if NaChar <= -5.8e-185: tmp = t_0 elif NaChar <= 7e-124: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif NaChar <= 6e-19: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(mu / KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (NaChar <= -5.8e-185) tmp = t_0; elseif (NaChar <= 7e-124) tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (NaChar <= 6e-19) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar * (1.0 / (1.0 + exp((mu / KbT))))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (NaChar <= -5.8e-185) tmp = t_0; elseif (NaChar <= 7e-124) tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (NaChar <= 6e-19) tmp = t_0; else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.8e-185], t$95$0, If[LessEqual[NaChar, 7e-124], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 6e-19], t$95$0, 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[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NdChar \cdot \frac{1}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -5.8 \cdot 10^{-185}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 7 \cdot 10^{-124}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NaChar \leq 6 \cdot 10^{-19}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -5.79999999999999989e-185 or 6.9999999999999997e-124 < NaChar < 5.99999999999999985e-19Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in mu around inf 77.6%
Taylor expanded in EAccept around 0 74.2%
if -5.79999999999999989e-185 < NaChar < 6.9999999999999997e-124Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 84.0%
associate-+r+84.0%
Simplified84.0%
if 5.99999999999999985e-19 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.6%
Taylor expanded in Vef around 0 75.5%
Final simplification77.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= Vef -2e-81) (not (<= Vef 1.05e+153)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (* NdChar (/ 1.0 (+ 1.0 (exp (/ mu KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -2e-81) || !(Vef <= 1.05e+153)) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar * (1.0 / (1.0 + exp((mu / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((vef <= (-2d-81)) .or. (.not. (vef <= 1.05d+153))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (ndchar * (1.0d0 / (1.0d0 + exp((mu / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -2e-81) || !(Vef <= 1.05e+153)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar * (1.0 / (1.0 + Math.exp((mu / 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 <= -2e-81) or not (Vef <= 1.05e+153): tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NdChar * (1.0 / (1.0 + math.exp((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(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((Vef <= -2e-81) || !(Vef <= 1.05e+153)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(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(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((Vef <= -2e-81) || ~((Vef <= 1.05e+153))) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NdChar * (1.0 / (1.0 + exp((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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -2e-81], N[Not[LessEqual[Vef, 1.05e+153]], $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[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $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 -2 \cdot 10^{-81} \lor \neg \left(Vef \leq 1.05 \cdot 10^{+153}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + NdChar \cdot \frac{1}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.9999999999999999e-81 or 1.05000000000000008e153 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.3%
if -1.9999999999999999e-81 < Vef < 1.05000000000000008e153Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in mu around inf 78.4%
Final simplification82.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
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(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / 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 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / 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 (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := 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[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\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
(if (or (<= mu -1.9e+111) (not (<= mu 3.7e+115)))
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ mu 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 ((mu <= -1.9e+111) || !(mu <= 3.7e+115)) {
tmp = (NdChar * (1.0 / (1.0 + exp((mu / 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 ((mu <= (-1.9d+111)) .or. (.not. (mu <= 3.7d+115))) then
tmp = (ndchar * (1.0d0 / (1.0d0 + exp((mu / 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 ((mu <= -1.9e+111) || !(mu <= 3.7e+115)) {
tmp = (NdChar * (1.0 / (1.0 + Math.exp((mu / 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 (mu <= -1.9e+111) or not (mu <= 3.7e+115): tmp = (NdChar * (1.0 / (1.0 + math.exp((mu / 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 ((mu <= -1.9e+111) || !(mu <= 3.7e+115)) tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(mu / 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 ((mu <= -1.9e+111) || ~((mu <= 3.7e+115))) tmp = (NdChar * (1.0 / (1.0 + exp((mu / 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[mu, -1.9e+111], N[Not[LessEqual[mu, 3.7e+115]], $MachinePrecision]], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $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}\;mu \leq -1.9 \cdot 10^{+111} \lor \neg \left(mu \leq 3.7 \cdot 10^{+115}\right):\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{mu}{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 mu < -1.89999999999999988e111 or 3.70000000000000006e115 < mu Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in mu around inf 93.5%
Taylor expanded in EAccept around 0 91.2%
if -1.89999999999999988e111 < mu < 3.70000000000000006e115Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.9%
Final simplification80.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= EDonor -3.15e-27) (not (<= EDonor 1.08e+77)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -3.15e-27) || !(EDonor <= 1.08e+77)) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((edonor <= (-3.15d-27)) .or. (.not. (edonor <= 1.08d+77))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -3.15e-27) || !(EDonor <= 1.08e+77)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (EDonor <= -3.15e-27) or not (EDonor <= 1.08e+77): tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((EDonor <= -3.15e-27) || !(EDonor <= 1.08e+77)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((EDonor <= -3.15e-27) || ~((EDonor <= 1.08e+77))) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[EDonor, -3.15e-27], N[Not[LessEqual[EDonor, 1.08e+77]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -3.15 \cdot 10^{-27} \lor \neg \left(EDonor \leq 1.08 \cdot 10^{+77}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -3.15000000000000005e-27 or 1.07999999999999996e77 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 87.3%
if -3.15000000000000005e-27 < EDonor < 1.07999999999999996e77Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.2%
Final simplification83.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= Vef -8.2e-84) (not (<= Vef 2.15e+153)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -8.2e-84) || !(Vef <= 2.15e+153)) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((vef <= (-8.2d-84)) .or. (.not. (vef <= 2.15d+153))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -8.2e-84) || !(Vef <= 2.15e+153)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / 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 <= -8.2e-84) or not (Vef <= 2.15e+153): tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((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(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((Vef <= -8.2e-84) || !(Vef <= 2.15e+153)) 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(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(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((Vef <= -8.2e-84) || ~((Vef <= 2.15e+153))) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -8.2e-84], N[Not[LessEqual[Vef, 2.15e+153]], $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[(mu / 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 -8.2 \cdot 10^{-84} \lor \neg \left(Vef \leq 2.15 \cdot 10^{+153}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -8.2000000000000001e-84 or 2.1499999999999999e153 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.3%
if -8.2000000000000001e-84 < Vef < 2.1499999999999999e153Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.3%
Final simplification82.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.85e-91) (not (<= NaChar 6.5e-122)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0)))
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.85e-91) || !(NaChar <= 6.5e-122)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.85d-91)) .or. (.not. (nachar <= 6.5d-122))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.85e-91) || !(NaChar <= 6.5e-122)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.85e-91) or not (NaChar <= 6.5e-122): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.85e-91) || !(NaChar <= 6.5e-122)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.85e-91) || ~((NaChar <= 6.5e-122))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); else tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.85e-91], N[Not[LessEqual[NaChar, 6.5e-122]], $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[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.85 \cdot 10^{-91} \lor \neg \left(NaChar \leq 6.5 \cdot 10^{-122}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NaChar < -1.8500000000000001e-91 or 6.49999999999999965e-122 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.3%
Taylor expanded in Vef around 0 67.4%
if -1.8500000000000001e-91 < NaChar < 6.49999999999999965e-122Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 79.5%
associate-+r+79.5%
Simplified79.5%
Final simplification71.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.3e-119) (not (<= NaChar 1.25e-118)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef 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 ((NaChar <= -1.3e-119) || !(NaChar <= 1.25e-118)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - 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 ((nachar <= (-1.3d-119)) .or. (.not. (nachar <= 1.25d-118))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - 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 ((NaChar <= -1.3e-119) || !(NaChar <= 1.25e-118)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.3e-119) or not (NaChar <= 1.25e-118): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.3e-119) || !(NaChar <= 1.25e-118)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - 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 ((NaChar <= -1.3e-119) || ~((NaChar <= 1.25e-118))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.3e-119], N[Not[LessEqual[NaChar, 1.25e-118]], $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[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 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 * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.3 \cdot 10^{-119} \lor \neg \left(NaChar \leq 1.25 \cdot 10^{-118}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -1.30000000000000006e-119 or 1.25000000000000004e-118 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.1%
Taylor expanded in Vef around 0 67.8%
if -1.30000000000000006e-119 < NaChar < 1.25000000000000004e-118Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.3%
Final simplification67.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -3.4e-149) (not (<= NaChar 9e-124)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -3.4e-149) || !(NaChar <= 9e-124)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-3.4d-149)) .or. (.not. (nachar <= 9d-124))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -3.4e-149) || !(NaChar <= 9e-124)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.4e-149) or not (NaChar <= 9e-124): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -3.4e-149) || !(NaChar <= 9e-124)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -3.4e-149) || ~((NaChar <= 9e-124))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -3.4e-149], N[Not[LessEqual[NaChar, 9e-124]], $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 * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.4 \cdot 10^{-149} \lor \neg \left(NaChar \leq 9 \cdot 10^{-124}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -3.3999999999999999e-149 or 8.9999999999999992e-124 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.4%
*-commutative55.4%
Simplified55.4%
if -3.3999999999999999e-149 < NaChar < 8.9999999999999992e-124Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.2%
Taylor expanded in KbT around inf 48.2%
Final simplification53.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -3.1e-119) (not (<= NaChar 5.7e-89)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef 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 ((NaChar <= -3.1e-119) || !(NaChar <= 5.7e-89)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - 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 ((nachar <= (-3.1d-119)) .or. (.not. (nachar <= 5.7d-89))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - 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 ((NaChar <= -3.1e-119) || !(NaChar <= 5.7e-89)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.1e-119) or not (NaChar <= 5.7e-89): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -3.1e-119) || !(NaChar <= 5.7e-89)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - 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 ((NaChar <= -3.1e-119) || ~((NaChar <= 5.7e-89))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -3.1e-119], N[Not[LessEqual[NaChar, 5.7e-89]], $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 * 0.5), $MachinePrecision]), $MachinePrecision], 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 * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.1 \cdot 10^{-119} \lor \neg \left(NaChar \leq 5.7 \cdot 10^{-89}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -3.09999999999999978e-119 or 5.7000000000000002e-89 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.9%
*-commutative56.9%
Simplified56.9%
if -3.09999999999999978e-119 < NaChar < 5.7000000000000002e-89Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.5%
Final simplification60.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.95e-158) (not (<= NaChar 8.5e-124))) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ (- (+ Ev EAccept) mu) KbT))))) (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.95e-158) || !(NaChar <= 8.5e-124)) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((((Ev + EAccept) - mu) / KbT))));
} else {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.95d-158)) .or. (.not. (nachar <= 8.5d-124))) then
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((((ev + eaccept) - mu) / kbt))))
else
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.95e-158) || !(NaChar <= 8.5e-124)) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((((Ev + EAccept) - mu) / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.95e-158) or not (NaChar <= 8.5e-124): tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((((Ev + EAccept) - mu) / KbT)))) else: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.95e-158) || !(NaChar <= 8.5e-124)) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Ev + EAccept) - mu) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.95e-158) || ~((NaChar <= 8.5e-124))) tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((((Ev + EAccept) - mu) / KbT)))); else tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.95e-158], N[Not[LessEqual[NaChar, 8.5e-124]], $MachinePrecision]], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Ev + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.95 \cdot 10^{-158} \lor \neg \left(NaChar \leq 8.5 \cdot 10^{-124}\right):\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{\left(Ev + EAccept\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.9499999999999998e-158 or 8.5000000000000002e-124 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.4%
*-commutative55.4%
Simplified55.4%
Taylor expanded in Vef around 0 52.3%
if -1.9499999999999998e-158 < NaChar < 8.5000000000000002e-124Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.2%
Taylor expanded in KbT around inf 48.2%
Final simplification51.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -4e-151) (not (<= NaChar 6e-104))) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))) (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4e-151) || !(NaChar <= 6e-104)) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4d-151)) .or. (.not. (nachar <= 6d-104))) then
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4e-151) || !(NaChar <= 6e-104)) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4e-151) or not (NaChar <= 6e-104): tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4e-151) || !(NaChar <= 6e-104)) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4e-151) || ~((NaChar <= 6e-104))) tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4e-151], N[Not[LessEqual[NaChar, 6e-104]], $MachinePrecision]], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4 \cdot 10^{-151} \lor \neg \left(NaChar \leq 6 \cdot 10^{-104}\right):\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -3.9999999999999998e-151 or 6.0000000000000005e-104 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.9%
*-commutative55.9%
Simplified55.9%
Taylor expanded in EAccept around inf 40.3%
if -3.9999999999999998e-151 < NaChar < 6.0000000000000005e-104Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.8%
Taylor expanded in KbT around inf 46.6%
Final simplification42.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= mu 7.6e+62) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 7.6e+62) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((-mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (mu <= 7.6d+62) then
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((-mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 7.6e+62) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= 7.6e+62: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((-mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= 7.6e+62) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= 7.6e+62) tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((-mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, 7.6e+62], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq 7.6 \cdot 10^{+62}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\end{array}
\end{array}
if mu < 7.59999999999999967e62Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.0%
*-commutative48.0%
Simplified48.0%
Taylor expanded in EAccept around inf 39.5%
if 7.59999999999999967e62 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
*-commutative50.4%
Simplified50.4%
Taylor expanded in mu around inf 45.5%
associate-*r/45.5%
mul-1-neg45.5%
Simplified45.5%
Final simplification40.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef -9.5e+225) (* NdChar (/ KbT Vef)) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -9.5e+225) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= (-9.5d+225)) then
tmp = ndchar * (kbt / vef)
else
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -9.5e+225) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -9.5e+225: tmp = NdChar * (KbT / Vef) else: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -9.5e+225) tmp = Float64(NdChar * Float64(KbT / Vef)); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -9.5e+225) tmp = NdChar * (KbT / Vef); else tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -9.5e+225], N[(NdChar * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -9.5 \cdot 10^{+225}:\\
\;\;\;\;NdChar \cdot \frac{KbT}{Vef}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Vef < -9.49999999999999957e225Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.5%
Taylor expanded in Vef around inf 44.2%
Taylor expanded in KbT around inf 4.5%
Taylor expanded in KbT around inf 34.0%
associate-/l*34.2%
associate-/r/44.3%
Simplified44.3%
if -9.49999999999999957e225 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.3%
*-commutative50.3%
Simplified50.3%
Taylor expanded in EAccept around inf 39.4%
Final simplification39.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= mu 1.85e-110) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))) (+ (* NdChar 0.5) (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 1.85e-110) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((Ev / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (mu <= 1.85d-110) then
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar * 0.5d0) + (nachar / (1.0d0 + exp((ev / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 1.85e-110) {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar * 0.5) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= 1.85e-110: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar * 0.5) + (NaChar / (1.0 + math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= 1.85e-110) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= 1.85e-110) tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar * 0.5) + (NaChar / (1.0 + exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, 1.85e-110], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq 1.85 \cdot 10^{-110}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if mu < 1.85000000000000008e-110Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.1%
*-commutative49.1%
Simplified49.1%
Taylor expanded in EAccept around inf 39.7%
if 1.85000000000000008e-110 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.6%
*-commutative47.6%
Simplified47.6%
Taylor expanded in Ev around inf 35.6%
Final simplification38.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Vef -6.8e+185) (not (<= Vef 3.6e+217))) (* NdChar (/ KbT Vef)) (* 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 ((Vef <= -6.8e+185) || !(Vef <= 3.6e+217)) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = 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 ((vef <= (-6.8d+185)) .or. (.not. (vef <= 3.6d+217))) then
tmp = ndchar * (kbt / vef)
else
tmp = 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 ((Vef <= -6.8e+185) || !(Vef <= 3.6e+217)) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -6.8e+185) or not (Vef <= 3.6e+217): tmp = NdChar * (KbT / Vef) else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -6.8e+185) || !(Vef <= 3.6e+217)) tmp = Float64(NdChar * Float64(KbT / Vef)); else tmp = 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 ((Vef <= -6.8e+185) || ~((Vef <= 3.6e+217))) tmp = NdChar * (KbT / Vef); else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -6.8e+185], N[Not[LessEqual[Vef, 3.6e+217]], $MachinePrecision]], N[(NdChar * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -6.8 \cdot 10^{+185} \lor \neg \left(Vef \leq 3.6 \cdot 10^{+217}\right):\\
\;\;\;\;NdChar \cdot \frac{KbT}{Vef}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -6.80000000000000034e185 or 3.6000000000000002e217 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
Taylor expanded in Vef around inf 43.4%
Taylor expanded in KbT around inf 5.7%
Taylor expanded in KbT around inf 27.9%
associate-/l*29.8%
associate-/r/32.0%
Simplified32.0%
if -6.80000000000000034e185 < Vef < 3.6000000000000002e217Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.2%
Taylor expanded in Vef around inf 30.1%
Taylor expanded in KbT around inf 9.8%
Taylor expanded in KbT around 0 20.0%
Final simplification22.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef -2.45e+224) (* NdChar (/ KbT Vef)) (+ (* NdChar 0.5) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -2.45e+224) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= (-2.45d+224)) then
tmp = ndchar * (kbt / vef)
else
tmp = (ndchar * 0.5d0) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -2.45e+224) {
tmp = NdChar * (KbT / Vef);
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -2.45e+224: tmp = NdChar * (KbT / Vef) else: tmp = (NdChar * 0.5) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -2.45e+224) tmp = Float64(NdChar * Float64(KbT / Vef)); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -2.45e+224) tmp = NdChar * (KbT / Vef); else tmp = (NdChar * 0.5) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -2.45e+224], N[(NdChar * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.45 \cdot 10^{+224}:\\
\;\;\;\;NdChar \cdot \frac{KbT}{Vef}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if Vef < -2.44999999999999992e224Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.5%
Taylor expanded in Vef around inf 44.2%
Taylor expanded in KbT around inf 4.5%
Taylor expanded in KbT around inf 34.0%
associate-/l*34.2%
associate-/r/44.3%
Simplified44.3%
if -2.44999999999999992e224 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.3%
*-commutative50.3%
Simplified50.3%
Taylor expanded in KbT around inf 28.6%
Final simplification29.8%
(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 KbT around inf 56.7%
Taylor expanded in Vef around inf 32.5%
Taylor expanded in KbT around inf 9.1%
Taylor expanded in KbT around 0 17.4%
Final simplification17.4%
herbie shell --seed 2023320
(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))))))