
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 24 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (- (/ NdChar (+ (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)) 1.0)) (/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / 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 / (exp(((edonor - ((ec - vef) - mu)) / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / 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 / (Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}} + 1} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\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 (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0))))
(if (<= EAccept -2.1e-95)
t_0
(if (<= EAccept 8.5e-183)
(/ NaChar (+ (exp (/ (- (+ Vef Ev) mu) KbT)) 1.0))
(if (<= EAccept 2.25e+15)
t_0
(if (<= EAccept 4e+99)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (<= EAccept 3.05e+267)
t_0
(+
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.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 / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double tmp;
if (EAccept <= -2.1e-95) {
tmp = t_0;
} else if (EAccept <= 8.5e-183) {
tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else if (EAccept <= 2.25e+15) {
tmp = t_0;
} else if (EAccept <= 4e+99) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (EAccept <= 3.05e+267) {
tmp = t_0;
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.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 / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
if (eaccept <= (-2.1d-95)) then
tmp = t_0
else if (eaccept <= 8.5d-183) then
tmp = nachar / (exp((((vef + ev) - mu) / kbt)) + 1.0d0)
else if (eaccept <= 2.25d+15) then
tmp = t_0
else if (eaccept <= 4d+99) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else if (eaccept <= 3.05d+267) then
tmp = t_0
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / (exp((ec / -kbt)) + 1.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 / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double tmp;
if (EAccept <= -2.1e-95) {
tmp = t_0;
} else if (EAccept <= 8.5e-183) {
tmp = NaChar / (Math.exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else if (EAccept <= 2.25e+15) {
tmp = t_0;
} else if (EAccept <= 4e+99) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (EAccept <= 3.05e+267) {
tmp = t_0;
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (Math.exp((Ec / -KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) tmp = 0 if EAccept <= -2.1e-95: tmp = t_0 elif EAccept <= 8.5e-183: tmp = NaChar / (math.exp((((Vef + Ev) - mu) / KbT)) + 1.0) elif EAccept <= 2.25e+15: tmp = t_0 elif EAccept <= 4e+99: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif EAccept <= 3.05e+267: tmp = t_0 else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (math.exp((Ec / -KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)) tmp = 0.0 if (EAccept <= -2.1e-95) tmp = t_0; elseif (EAccept <= 8.5e-183) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) + 1.0)); elseif (EAccept <= 2.25e+15) tmp = t_0; elseif (EAccept <= 4e+99) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif (EAccept <= 3.05e+267) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); tmp = 0.0; if (EAccept <= -2.1e-95) tmp = t_0; elseif (EAccept <= 8.5e-183) tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0); elseif (EAccept <= 2.25e+15) tmp = t_0; elseif (EAccept <= 4e+99) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); elseif (EAccept <= 3.05e+267) tmp = t_0; else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -2.1e-95], t$95$0, If[LessEqual[EAccept, 8.5e-183], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 2.25e+15], t$95$0, If[LessEqual[EAccept, 4e+99], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.05e+267], t$95$0, N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{if}\;EAccept \leq -2.1 \cdot 10^{-95}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EAccept \leq 8.5 \cdot 10^{-183}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 2.25 \cdot 10^{+15}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EAccept \leq 4 \cdot 10^{+99}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 3.05 \cdot 10^{+267}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < -2.1e-95 or 8.49999999999999973e-183 < EAccept < 2.25e15 or 3.9999999999999999e99 < EAccept < 3.0500000000000002e267Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 69.2%
if -2.1e-95 < EAccept < 8.49999999999999973e-183Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.6%
Taylor expanded in EAccept around 0 73.6%
if 2.25e15 < EAccept < 3.9999999999999999e99Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 72.2%
if 3.0500000000000002e267 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
Taylor expanded in Ec around inf 90.6%
associate-*r/90.6%
mul-1-neg90.6%
Simplified90.6%
Final simplification72.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0)))
(t_1
(+
(/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))
(/ NdChar (+ (exp (/ Vef KbT)) 1.0)))))
(if (<= Vef -7.2e-35)
t_1
(if (<= Vef -3.2e-139)
t_0
(if (<= Vef 2.7e-209)
(+
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0)))
(if (<= Vef 1.2e+43) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double t_1 = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0));
double tmp;
if (Vef <= -7.2e-35) {
tmp = t_1;
} else if (Vef <= -3.2e-139) {
tmp = t_0;
} else if (Vef <= 2.7e-209) {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.0));
} else if (Vef <= 1.2e+43) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
t_1 = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + (ndchar / (exp((vef / kbt)) + 1.0d0))
if (vef <= (-7.2d-35)) then
tmp = t_1
else if (vef <= (-3.2d-139)) then
tmp = t_0
else if (vef <= 2.7d-209) then
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / (exp((ec / -kbt)) + 1.0d0))
else if (vef <= 1.2d+43) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double t_1 = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
double tmp;
if (Vef <= -7.2e-35) {
tmp = t_1;
} else if (Vef <= -3.2e-139) {
tmp = t_0;
} else if (Vef <= 2.7e-209) {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (Math.exp((Ec / -KbT)) + 1.0));
} else if (Vef <= 1.2e+43) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) t_1 = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (math.exp((Vef / KbT)) + 1.0)) tmp = 0 if Vef <= -7.2e-35: tmp = t_1 elif Vef <= -3.2e-139: tmp = t_0 elif Vef <= 2.7e-209: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (math.exp((Ec / -KbT)) + 1.0)) elif Vef <= 1.2e+43: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)) t_1 = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -7.2e-35) tmp = t_1; elseif (Vef <= -3.2e-139) tmp = t_0; elseif (Vef <= 2.7e-209) tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0))); elseif (Vef <= 1.2e+43) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); t_1 = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -7.2e-35) tmp = t_1; elseif (Vef <= -3.2e-139) tmp = t_0; elseif (Vef <= 2.7e-209) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.0)); elseif (Vef <= 1.2e+43) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7.2e-35], t$95$1, If[LessEqual[Vef, -3.2e-139], t$95$0, If[LessEqual[Vef, 2.7e-209], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.2e+43], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
t_1 := \frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -7.2 \cdot 10^{-35}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{-139}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2.7 \cdot 10^{-209}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{+43}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -7.20000000000000038e-35 or 1.20000000000000012e43 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.6%
if -7.20000000000000038e-35 < Vef < -3.1999999999999999e-139 or 2.69999999999999998e-209 < Vef < 1.20000000000000012e43Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.3%
if -3.1999999999999999e-139 < Vef < 2.69999999999999998e-209Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 82.5%
Taylor expanded in Ec around inf 74.6%
associate-*r/74.6%
mul-1-neg74.6%
Simplified74.6%
Final simplification81.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0)))
(t_1
(-
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= Vef -2.9e-33)
t_1
(if (<= Vef -2.15e-138)
t_0
(if (<= Vef 5.8e-199)
(+
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0)))
(if (<= Vef 1e+46) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double t_1 = (NdChar / (exp((Vef / KbT)) + 1.0)) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -2.9e-33) {
tmp = t_1;
} else if (Vef <= -2.15e-138) {
tmp = t_0;
} else if (Vef <= 5.8e-199) {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.0));
} else if (Vef <= 1e+46) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
t_1 = (ndchar / (exp((vef / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
if (vef <= (-2.9d-33)) then
tmp = t_1
else if (vef <= (-2.15d-138)) then
tmp = t_0
else if (vef <= 5.8d-199) then
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / (exp((ec / -kbt)) + 1.0d0))
else if (vef <= 1d+46) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
double t_1 = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (Vef <= -2.9e-33) {
tmp = t_1;
} else if (Vef <= -2.15e-138) {
tmp = t_0;
} else if (Vef <= 5.8e-199) {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (Math.exp((Ec / -KbT)) + 1.0));
} else if (Vef <= 1e+46) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) t_1 = (NdChar / (math.exp((Vef / KbT)) + 1.0)) - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if Vef <= -2.9e-33: tmp = t_1 elif Vef <= -2.15e-138: tmp = t_0 elif Vef <= 5.8e-199: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (math.exp((Ec / -KbT)) + 1.0)) elif Vef <= 1e+46: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)) t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (Vef <= -2.9e-33) tmp = t_1; elseif (Vef <= -2.15e-138) tmp = t_0; elseif (Vef <= 5.8e-199) tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0))); elseif (Vef <= 1e+46) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); t_1 = (NdChar / (exp((Vef / KbT)) + 1.0)) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (Vef <= -2.9e-33) tmp = t_1; elseif (Vef <= -2.15e-138) tmp = t_0; elseif (Vef <= 5.8e-199) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((Ec / -KbT)) + 1.0)); elseif (Vef <= 1e+46) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.9e-33], t$95$1, If[LessEqual[Vef, -2.15e-138], t$95$0, If[LessEqual[Vef, 5.8e-199], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1e+46], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.9 \cdot 10^{-33}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -2.15 \cdot 10^{-138}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 5.8 \cdot 10^{-199}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 10^{+46}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -2.90000000000000003e-33 or 9.9999999999999999e45 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.4%
Taylor expanded in EAccept around 0 80.5%
if -2.90000000000000003e-33 < Vef < -2.15e-138 or 5.8e-199 < Vef < 9.9999999999999999e45Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.9%
if -2.15e-138 < Vef < 5.8e-199Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 82.5%
Taylor expanded in Ec around inf 74.6%
associate-*r/74.6%
mul-1-neg74.6%
Simplified74.6%
Final simplification78.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ Vef KbT)) 1.0))))
(if (<= Vef -4.2e-34)
(+ (/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0)) t_0)
(if (<= Vef -9.5e-80)
(/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0))
(if (<= Vef 6.8e+124)
(-
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (- -1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(- t_0 (/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -4.2e-34) {
tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + t_0;
} else if (Vef <= -9.5e-80) {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else if (Vef <= 6.8e+124) {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor - ((Ec - Vef) - mu)) / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp((vef / kbt)) + 1.0d0)
if (vef <= (-4.2d-34)) then
tmp = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + t_0
else if (vef <= (-9.5d-80)) then
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
else if (vef <= 6.8d+124) then
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) - (ndchar / ((-1.0d0) - exp(((edonor - ((ec - vef) - mu)) / kbt))))
else
tmp = t_0 - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -4.2e-34) {
tmp = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + t_0;
} else if (Vef <= -9.5e-80) {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else if (Vef <= 6.8e+124) {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((Vef / KbT)) + 1.0) tmp = 0 if Vef <= -4.2e-34: tmp = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + t_0 elif Vef <= -9.5e-80: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) elif Vef <= 6.8e+124: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) else: tmp = t_0 - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) tmp = 0.0 if (Vef <= -4.2e-34) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + t_0); elseif (Vef <= -9.5e-80) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); elseif (Vef <= 6.8e+124) tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT))))); else tmp = Float64(t_0 - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((Vef / KbT)) + 1.0); tmp = 0.0; if (Vef <= -4.2e-34) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + t_0; elseif (Vef <= -9.5e-80) tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); elseif (Vef <= 6.8e+124) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))); else tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.2e-34], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, -9.5e-80], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.8e+124], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / 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}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{-34}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + t\_0\\
\mathbf{elif}\;Vef \leq -9.5 \cdot 10^{-80}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 6.8 \cdot 10^{+124}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} - \frac{NdChar}{-1 - e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -4.2000000000000002e-34Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.4%
if -4.2000000000000002e-34 < Vef < -9.5000000000000003e-80Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 85.2%
if -9.5000000000000003e-80 < Vef < 6.8e124Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 82.0%
if 6.8e124 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 94.4%
Taylor expanded in EAccept around 0 89.1%
Final simplification83.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ Vef KbT)) 1.0))))
(if (<= Vef -1.85e-25)
t_0
(if (<= Vef -3.2e-151)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(if (<= Vef -1.4e-234)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Vef 1.35e+58) (/ NdChar (+ (exp (/ mu KbT)) 1.0)) t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -1.85e-25) {
tmp = t_0;
} else if (Vef <= -3.2e-151) {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
} else if (Vef <= -1.4e-234) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Vef <= 1.35e+58) {
tmp = NdChar / (exp((mu / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((vef / kbt)) + 1.0d0)
if (vef <= (-1.85d-25)) then
tmp = t_0
else if (vef <= (-3.2d-151)) then
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
else if (vef <= (-1.4d-234)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (vef <= 1.35d+58) then
tmp = ndchar / (exp((mu / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -1.85e-25) {
tmp = t_0;
} else if (Vef <= -3.2e-151) {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
} else if (Vef <= -1.4e-234) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Vef <= 1.35e+58) {
tmp = NdChar / (Math.exp((mu / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((Vef / KbT)) + 1.0) tmp = 0 if Vef <= -1.85e-25: tmp = t_0 elif Vef <= -3.2e-151: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) elif Vef <= -1.4e-234: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Vef <= 1.35e+58: tmp = NdChar / (math.exp((mu / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) tmp = 0.0 if (Vef <= -1.85e-25) tmp = t_0; elseif (Vef <= -3.2e-151) tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); elseif (Vef <= -1.4e-234) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Vef <= 1.35e+58) tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((Vef / KbT)) + 1.0); tmp = 0.0; if (Vef <= -1.85e-25) tmp = t_0; elseif (Vef <= -3.2e-151) tmp = NdChar / (exp((EDonor / KbT)) + 1.0); elseif (Vef <= -1.4e-234) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Vef <= 1.35e+58) tmp = NdChar / (exp((mu / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.85e-25], t$95$0, If[LessEqual[Vef, -3.2e-151], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.4e-234], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.35e+58], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -1.85 \cdot 10^{-25}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{-151}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq -1.4 \cdot 10^{-234}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.35 \cdot 10^{+58}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -1.85000000000000004e-25 or 1.3500000000000001e58 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.3%
Taylor expanded in Vef around inf 57.0%
if -1.85000000000000004e-25 < Vef < -3.20000000000000021e-151Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 87.5%
Taylor expanded in EDonor around inf 58.6%
if -3.20000000000000021e-151 < Vef < -1.3999999999999999e-234Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 77.0%
Taylor expanded in Ev around inf 61.1%
if -1.3999999999999999e-234 < Vef < 1.3500000000000001e58Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 70.3%
Taylor expanded in mu around inf 50.4%
Final simplification55.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -2.2e+136) (not (<= NaChar 4.8e+59))) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)) (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.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 <= -2.2e+136) || !(NaChar <= 4.8e+59)) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.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 <= (-2.2d+136)) .or. (.not. (nachar <= 4.8d+59))) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.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 <= -2.2e+136) || !(NaChar <= 4.8e+59)) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.2e+136) or not (NaChar <= 4.8e+59): tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.2e+136) || !(NaChar <= 4.8e+59)) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.2e+136) || ~((NaChar <= 4.8e+59))) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.2e+136], N[Not[LessEqual[NaChar, 4.8e+59]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.2 \cdot 10^{+136} \lor \neg \left(NaChar \leq 4.8 \cdot 10^{+59}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -2.1999999999999999e136 or 4.8000000000000004e59 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 75.2%
if -2.1999999999999999e136 < NaChar < 4.8000000000000004e59Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.4%
Final simplification73.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.72e-118) (not (<= NaChar 2.4e-55))) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)) (/ NdChar (+ (exp (/ Ec (- KbT))) 1.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.72e-118) || !(NaChar <= 2.4e-55)) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((Ec / -KbT)) + 1.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.72d-118)) .or. (.not. (nachar <= 2.4d-55))) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((ec / -kbt)) + 1.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.72e-118) || !(NaChar <= 2.4e-55)) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.72e-118) or not (NaChar <= 2.4e-55): tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.72e-118) || !(NaChar <= 2.4e-55)) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.72e-118) || ~((NaChar <= 2.4e-55))) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = NdChar / (exp((Ec / -KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.72e-118], N[Not[LessEqual[NaChar, 2.4e-55]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.72 \cdot 10^{-118} \lor \neg \left(NaChar \leq 2.4 \cdot 10^{-55}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -1.72e-118 or 2.39999999999999991e-55 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 66.1%
if -1.72e-118 < NaChar < 2.39999999999999991e-55Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 82.6%
Taylor expanded in Ec around inf 62.3%
associate-*r/62.3%
neg-mul-162.3%
Simplified62.3%
Final simplification64.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept -5.2e-91)
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(if (<= EAccept 8.5e+99)
(/ NaChar (+ (exp (/ (- (+ Vef Ev) mu) KbT)) 1.0))
(if (<= EAccept 1.82e+202)
(/ NdChar (+ (exp (/ mu KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= -5.2e-91) {
tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
} else if (EAccept <= 8.5e+99) {
tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else if (EAccept <= 1.82e+202) {
tmp = NdChar / (exp((mu / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 (eaccept <= (-5.2d-91)) then
tmp = ndchar / (exp((ec / -kbt)) + 1.0d0)
else if (eaccept <= 8.5d+99) then
tmp = nachar / (exp((((vef + ev) - mu) / kbt)) + 1.0d0)
else if (eaccept <= 1.82d+202) then
tmp = ndchar / (exp((mu / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 (EAccept <= -5.2e-91) {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
} else if (EAccept <= 8.5e+99) {
tmp = NaChar / (Math.exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else if (EAccept <= 1.82e+202) {
tmp = NdChar / (Math.exp((mu / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= -5.2e-91: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) elif EAccept <= 8.5e+99: tmp = NaChar / (math.exp((((Vef + Ev) - mu) / KbT)) + 1.0) elif EAccept <= 1.82e+202: tmp = NdChar / (math.exp((mu / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= -5.2e-91) tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); elseif (EAccept <= 8.5e+99) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) + 1.0)); elseif (EAccept <= 1.82e+202) tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= -5.2e-91) tmp = NdChar / (exp((Ec / -KbT)) + 1.0); elseif (EAccept <= 8.5e+99) tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0); elseif (EAccept <= 1.82e+202) tmp = NdChar / (exp((mu / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, -5.2e-91], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 8.5e+99], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.82e+202], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq -5.2 \cdot 10^{-91}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 8.5 \cdot 10^{+99}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 1.82 \cdot 10^{+202}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < -5.20000000000000028e-91Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 64.1%
Taylor expanded in Ec around inf 45.9%
associate-*r/45.9%
neg-mul-145.9%
Simplified45.9%
if -5.20000000000000028e-91 < EAccept < 8.49999999999999984e99Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 66.1%
Taylor expanded in EAccept around 0 65.3%
if 8.49999999999999984e99 < EAccept < 1.82e202Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 82.1%
Taylor expanded in mu around inf 61.3%
if 1.82e202 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 94.8%
Taylor expanded in NdChar around 0 64.9%
Final simplification59.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ Vef KbT)) 1.0))))
(if (<= NaChar -1.5e+116)
t_0
(if (<= NaChar 6.8e-248)
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(if (<= NaChar 1.05e+74)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((Vef / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.5e+116) {
tmp = t_0;
} else if (NaChar <= 6.8e-248) {
tmp = NdChar / (exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= 1.05e+74) {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((vef / kbt)) + 1.0d0)
if (nachar <= (-1.5d+116)) then
tmp = t_0
else if (nachar <= 6.8d-248) then
tmp = ndchar / (exp((ec / -kbt)) + 1.0d0)
else if (nachar <= 1.05d+74) then
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((Vef / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.5e+116) {
tmp = t_0;
} else if (NaChar <= 6.8e-248) {
tmp = NdChar / (Math.exp((Ec / -KbT)) + 1.0);
} else if (NaChar <= 1.05e+74) {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((Vef / KbT)) + 1.0) tmp = 0 if NaChar <= -1.5e+116: tmp = t_0 elif NaChar <= 6.8e-248: tmp = NdChar / (math.exp((Ec / -KbT)) + 1.0) elif NaChar <= 1.05e+74: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -1.5e+116) tmp = t_0; elseif (NaChar <= 6.8e-248) tmp = Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)); elseif (NaChar <= 1.05e+74) tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((Vef / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -1.5e+116) tmp = t_0; elseif (NaChar <= 6.8e-248) tmp = NdChar / (exp((Ec / -KbT)) + 1.0); elseif (NaChar <= 1.05e+74) tmp = NdChar / (exp((EDonor / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.5e+116], t$95$0, If[LessEqual[NaChar, 6.8e-248], N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.05e+74], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -1.5 \cdot 10^{+116}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 6.8 \cdot 10^{-248}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq 1.05 \cdot 10^{+74}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.4999999999999999e116 or 1.0499999999999999e74 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.3%
Taylor expanded in Vef around inf 57.0%
if -1.4999999999999999e116 < NaChar < 6.7999999999999996e-248Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.2%
Taylor expanded in Ec around inf 55.4%
associate-*r/55.4%
neg-mul-155.4%
Simplified55.4%
if 6.7999999999999996e-248 < NaChar < 1.0499999999999999e74Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.9%
Taylor expanded in EDonor around inf 53.2%
Final simplification55.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (exp (/ Vef KbT)) 1.0)) (t_1 (/ NaChar t_0)))
(if (<= NaChar -3.2e+131)
t_1
(if (<= NaChar 2.15e-247)
(/ NdChar t_0)
(if (<= NaChar 1.35e+74)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp((Vef / KbT)) + 1.0;
double t_1 = NaChar / t_0;
double tmp;
if (NaChar <= -3.2e+131) {
tmp = t_1;
} else if (NaChar <= 2.15e-247) {
tmp = NdChar / t_0;
} else if (NaChar <= 1.35e+74) {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = exp((vef / kbt)) + 1.0d0
t_1 = nachar / t_0
if (nachar <= (-3.2d+131)) then
tmp = t_1
else if (nachar <= 2.15d-247) then
tmp = ndchar / t_0
else if (nachar <= 1.35d+74) then
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
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 = Math.exp((Vef / KbT)) + 1.0;
double t_1 = NaChar / t_0;
double tmp;
if (NaChar <= -3.2e+131) {
tmp = t_1;
} else if (NaChar <= 2.15e-247) {
tmp = NdChar / t_0;
} else if (NaChar <= 1.35e+74) {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp((Vef / KbT)) + 1.0 t_1 = NaChar / t_0 tmp = 0 if NaChar <= -3.2e+131: tmp = t_1 elif NaChar <= 2.15e-247: tmp = NdChar / t_0 elif NaChar <= 1.35e+74: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(exp(Float64(Vef / KbT)) + 1.0) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (NaChar <= -3.2e+131) tmp = t_1; elseif (NaChar <= 2.15e-247) tmp = Float64(NdChar / t_0); elseif (NaChar <= 1.35e+74) tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp((Vef / KbT)) + 1.0; t_1 = NaChar / t_0; tmp = 0.0; if (NaChar <= -3.2e+131) tmp = t_1; elseif (NaChar <= 2.15e-247) tmp = NdChar / t_0; elseif (NaChar <= 1.35e+74) tmp = NdChar / (exp((EDonor / KbT)) + 1.0); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[NaChar, -3.2e+131], t$95$1, If[LessEqual[NaChar, 2.15e-247], N[(NdChar / t$95$0), $MachinePrecision], If[LessEqual[NaChar, 1.35e+74], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef}{KbT}} + 1\\
t_1 := \frac{NaChar}{t\_0}\\
\mathbf{if}\;NaChar \leq -3.2 \cdot 10^{+131}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.15 \cdot 10^{-247}:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\mathbf{elif}\;NaChar \leq 1.35 \cdot 10^{+74}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -3.2000000000000002e131 or 1.3499999999999999e74 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 75.7%
Taylor expanded in Vef around inf 58.3%
if -3.2000000000000002e131 < NaChar < 2.15000000000000003e-247Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 69.7%
Taylor expanded in NdChar around inf 50.4%
if 2.15000000000000003e-247 < NaChar < 1.3499999999999999e74Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.9%
Taylor expanded in EDonor around inf 53.2%
Final simplification53.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -5e+115) (not (<= NaChar 1.35e+72))) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) (/ NdChar (+ (exp (/ EDonor KbT)) 1.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 <= -5e+115) || !(NaChar <= 1.35e+72)) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((EDonor / KbT)) + 1.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 <= (-5d+115)) .or. (.not. (nachar <= 1.35d+72))) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((edonor / kbt)) + 1.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 <= -5e+115) || !(NaChar <= 1.35e+72)) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -5e+115) or not (NaChar <= 1.35e+72): tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -5e+115) || !(NaChar <= 1.35e+72)) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -5e+115) || ~((NaChar <= 1.35e+72))) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NdChar / (exp((EDonor / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -5e+115], N[Not[LessEqual[NaChar, 1.35e+72]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5 \cdot 10^{+115} \lor \neg \left(NaChar \leq 1.35 \cdot 10^{+72}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -5.00000000000000008e115 or 1.35e72 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.3%
Taylor expanded in Vef around inf 57.0%
if -5.00000000000000008e115 < NaChar < 1.35e72Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.4%
Taylor expanded in EDonor around inf 45.3%
Final simplification49.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -3.7e+109) (not (<= KbT 4e+71))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.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.7e+109) || !(KbT <= 4e+71)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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.7d+109)) .or. (.not. (kbt <= 4d+71))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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.7e+109) || !(KbT <= 4e+71)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.7e+109) or not (KbT <= 4e+71): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.7e+109) || !(KbT <= 4e+71)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.7e+109) || ~((KbT <= 4e+71))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.7e+109], N[Not[LessEqual[KbT, 4e+71]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.7 \cdot 10^{+109} \lor \neg \left(KbT \leq 4 \cdot 10^{+71}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -3.7000000000000002e109 or 4.0000000000000002e71 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.9%
distribute-lft-out57.9%
Simplified57.9%
if -3.7000000000000002e109 < KbT < 4.0000000000000002e71Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 68.8%
Taylor expanded in NdChar around 0 35.4%
Final simplification44.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -1.5e+74)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev 2.35e-275)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.5e+74) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= 2.35e-275) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 (ev <= (-1.5d+74)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= 2.35d-275) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 (Ev <= -1.5e+74) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= 2.35e-275) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -1.5e+74: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= 2.35e-275: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -1.5e+74) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= 2.35e-275) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -1.5e+74) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= 2.35e-275) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -1.5e+74], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 2.35e-275], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -1.5 \cdot 10^{+74}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq 2.35 \cdot 10^{-275}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -1.5e74Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 53.5%
Taylor expanded in Ev around inf 42.5%
if -1.5e74 < Ev < 2.3499999999999999e-275Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 63.7%
Taylor expanded in Vef around inf 49.8%
if 2.3499999999999999e-275 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.2%
Taylor expanded in NdChar around 0 39.1%
Final simplification43.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -15000.0) (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -15000.0) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 (ev <= (-15000.0d0)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 (Ev <= -15000.0) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -15000.0: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -15000.0) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -15000.0) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -15000.0], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -15000:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -15000Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 57.0%
Taylor expanded in Ev around inf 42.9%
if -15000 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.2%
Taylor expanded in NdChar around 0 41.8%
Final simplification42.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -2.95e-33) (not (<= KbT 2.7e+96)))
(* 0.5 (+ NdChar NaChar))
(/
NaChar
(*
mu
(+
(/ (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) mu)
(/ -1.0 KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.95e-33) || !(KbT <= 2.7e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-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) :: tmp
if ((kbt <= (-2.95d-33)) .or. (.not. (kbt <= 2.7d+96))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (mu * (((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) / mu) + ((-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 tmp;
if ((KbT <= -2.95e-33) || !(KbT <= 2.7e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.95e-33) or not (KbT <= 2.7e+96): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.95e-33) || !(KbT <= 2.7e+96)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(mu * Float64(Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) / mu) + Float64(-1.0 / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.95e-33) || ~((KbT <= 2.7e+96))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.95e-33], N[Not[LessEqual[KbT, 2.7e+96]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(mu * N[(N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.95 \cdot 10^{-33} \lor \neg \left(KbT \leq 2.7 \cdot 10^{+96}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{mu \cdot \left(\frac{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}{mu} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if KbT < -2.94999999999999993e-33 or 2.70000000000000022e96 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
distribute-lft-out50.4%
Simplified50.4%
if -2.94999999999999993e-33 < KbT < 2.70000000000000022e96Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
Taylor expanded in KbT around inf 24.5%
Taylor expanded in mu around -inf 26.2%
associate-*r*26.2%
mul-1-neg26.2%
+-commutative26.2%
mul-1-neg26.2%
unsub-neg26.2%
+-commutative26.2%
Simplified26.2%
Final simplification38.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -3.4e-36) (not (<= KbT 3.8e+96)))
(* 0.5 (+ NdChar NaChar))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (* Ev (- (/ Vef (* KbT Ev)) (/ -1.0 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 ((KbT <= -3.4e-36) || !(KbT <= 3.8e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) + (Ev * ((Vef / (KbT * Ev)) - (-1.0 / 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 ((kbt <= (-3.4d-36)) .or. (.not. (kbt <= 3.8d+96))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((2.0d0 + ((eaccept / kbt) + (ev * ((vef / (kbt * ev)) - ((-1.0d0) / 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 ((KbT <= -3.4e-36) || !(KbT <= 3.8e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) + (Ev * ((Vef / (KbT * Ev)) - (-1.0 / KbT))))) - (mu / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.4e-36) or not (KbT <= 3.8e+96): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((2.0 + ((EAccept / KbT) + (Ev * ((Vef / (KbT * Ev)) - (-1.0 / KbT))))) - (mu / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.4e-36) || !(KbT <= 3.8e+96)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Ev * Float64(Float64(Vef / Float64(KbT * Ev)) - Float64(-1.0 / 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 ((KbT <= -3.4e-36) || ~((KbT <= 3.8e+96))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((2.0 + ((EAccept / KbT) + (Ev * ((Vef / (KbT * Ev)) - (-1.0 / KbT))))) - (mu / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.4e-36], N[Not[LessEqual[KbT, 3.8e+96]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(Ev * N[(N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision] - N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.4 \cdot 10^{-36} \lor \neg \left(KbT \leq 3.8 \cdot 10^{+96}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + Ev \cdot \left(\frac{Vef}{KbT \cdot Ev} - \frac{-1}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -3.4000000000000003e-36 or 3.8000000000000002e96 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
distribute-lft-out50.4%
Simplified50.4%
if -3.4000000000000003e-36 < KbT < 3.8000000000000002e96Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
Taylor expanded in KbT around inf 24.5%
Taylor expanded in Ev around inf 26.8%
Final simplification38.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -5.7e-36) (not (<= KbT 3.4e+96))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ 2.0 (/ (- (+ EAccept (+ 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 tmp;
if ((KbT <= -5.7e-36) || !(KbT <= 3.4e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 + (((EAccept + (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) :: tmp
if ((kbt <= (-5.7d-36)) .or. (.not. (kbt <= 3.4d+96))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (2.0d0 + (((eaccept + (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 tmp;
if ((KbT <= -5.7e-36) || !(KbT <= 3.4e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 + (((EAccept + (Vef + Ev)) - mu) / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -5.7e-36) or not (KbT <= 3.4e+96): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (2.0 + (((EAccept + (Vef + Ev)) - mu) / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -5.7e-36) || !(KbT <= 3.4e+96)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -5.7e-36) || ~((KbT <= 3.4e+96))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (2.0 + (((EAccept + (Vef + Ev)) - mu) / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -5.7e-36], N[Not[LessEqual[KbT, 3.4e+96]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(2.0 + N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.7 \cdot 10^{-36} \lor \neg \left(KbT \leq 3.4 \cdot 10^{+96}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -5.6999999999999999e-36 or 3.4000000000000001e96 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
distribute-lft-out50.4%
Simplified50.4%
if -5.6999999999999999e-36 < KbT < 3.4000000000000001e96Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
Taylor expanded in KbT around inf 24.5%
Taylor expanded in KbT around -inf 25.4%
mul-1-neg25.4%
unsub-neg25.4%
sub-neg25.4%
+-commutative25.4%
mul-1-neg25.4%
unsub-neg25.4%
+-commutative25.4%
mul-1-neg25.4%
unsub-neg25.4%
mul-1-neg25.4%
mul-1-neg25.4%
remove-double-neg25.4%
Simplified25.4%
Final simplification38.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -3.6e-34) (not (<= KbT 2.5e+96))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (- 2.0 (- (/ (- mu Vef) KbT) (/ 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 ((KbT <= -3.6e-34) || !(KbT <= 2.5e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 - (((mu - Vef) / KbT) - (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 ((kbt <= (-3.6d-34)) .or. (.not. (kbt <= 2.5d+96))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (2.0d0 - (((mu - vef) / kbt) - (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 ((KbT <= -3.6e-34) || !(KbT <= 2.5e+96)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 - (((mu - Vef) / KbT) - (Ev / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.6e-34) or not (KbT <= 2.5e+96): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (2.0 - (((mu - Vef) / KbT) - (Ev / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.6e-34) || !(KbT <= 2.5e+96)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(mu - Vef) / KbT) - Float64(Ev / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.6e-34) || ~((KbT <= 2.5e+96))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (2.0 - (((mu - Vef) / KbT) - (Ev / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.6e-34], N[Not[LessEqual[KbT, 2.5e+96]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(2.0 - N[(N[(N[(mu - Vef), $MachinePrecision] / KbT), $MachinePrecision] - N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.6 \cdot 10^{-34} \lor \neg \left(KbT \leq 2.5 \cdot 10^{+96}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 - \left(\frac{mu - Vef}{KbT} - \frac{Ev}{KbT}\right)}\\
\end{array}
\end{array}
if KbT < -3.60000000000000008e-34 or 2.5000000000000002e96 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
distribute-lft-out50.4%
Simplified50.4%
if -3.60000000000000008e-34 < KbT < 2.5000000000000002e96Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
Taylor expanded in KbT around inf 24.5%
Taylor expanded in EAccept around 0 20.8%
associate--l+20.8%
associate--l+20.8%
div-sub20.9%
Simplified20.9%
Final simplification35.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1e-207) (not (<= KbT 6.5e+70))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ (/ EAccept KbT) 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1e-207) || !(KbT <= 6.5e+70)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((EAccept / KbT) + 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-1d-207)) .or. (.not. (kbt <= 6.5d+70))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((eaccept / kbt) + 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1e-207) || !(KbT <= 6.5e+70)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((EAccept / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1e-207) or not (KbT <= 6.5e+70): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((EAccept / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1e-207) || !(KbT <= 6.5e+70)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1e-207) || ~((KbT <= 6.5e+70))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((EAccept / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1e-207], N[Not[LessEqual[KbT, 6.5e+70]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1 \cdot 10^{-207} \lor \neg \left(KbT \leq 6.5 \cdot 10^{+70}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -9.99999999999999925e-208 or 6.49999999999999978e70 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.8%
distribute-lft-out41.8%
Simplified41.8%
if -9.99999999999999925e-208 < KbT < 6.49999999999999978e70Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.2%
Taylor expanded in NdChar around 0 41.5%
Taylor expanded in EAccept around 0 23.3%
Final simplification35.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -9.5e-106) (not (<= KbT 1.65e-77))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (/ Vef KbT))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -9.5e-106) || !(KbT <= 1.65e-77)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (Vef / KbT);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-9.5d-106)) .or. (.not. (kbt <= 1.65d-77))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (vef / kbt)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -9.5e-106) || !(KbT <= 1.65e-77)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (Vef / KbT);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -9.5e-106) or not (KbT <= 1.65e-77): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (Vef / KbT) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -9.5e-106) || !(KbT <= 1.65e-77)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Vef / KbT)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -9.5e-106) || ~((KbT <= 1.65e-77))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (Vef / KbT); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -9.5e-106], N[Not[LessEqual[KbT, 1.65e-77]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -9.5 \cdot 10^{-106} \lor \neg \left(KbT \leq 1.65 \cdot 10^{-77}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{Vef}{KbT}}\\
\end{array}
\end{array}
if KbT < -9.4999999999999994e-106 or 1.64999999999999996e-77 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
distribute-lft-out40.8%
Simplified40.8%
if -9.4999999999999994e-106 < KbT < 1.64999999999999996e-77Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 53.6%
Taylor expanded in KbT around inf 27.9%
Taylor expanded in Vef around inf 22.3%
Final simplification35.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -5.2e+35) (not (<= NaChar 5.4e+58))) (/ NaChar 2.0) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.2e+35) || !(NaChar <= 5.4e+58)) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-5.2d+35)) .or. (.not. (nachar <= 5.4d+58))) then
tmp = nachar / 2.0d0
else
tmp = ndchar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.2e+35) || !(NaChar <= 5.4e+58)) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -5.2e+35) or not (NaChar <= 5.4e+58): tmp = NaChar / 2.0 else: tmp = NdChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -5.2e+35) || !(NaChar <= 5.4e+58)) tmp = Float64(NaChar / 2.0); else tmp = Float64(NdChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -5.2e+35) || ~((NaChar <= 5.4e+58))) tmp = NaChar / 2.0; else tmp = NdChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -5.2e+35], N[Not[LessEqual[NaChar, 5.4e+58]], $MachinePrecision]], N[(NaChar / 2.0), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.2 \cdot 10^{+35} \lor \neg \left(NaChar \leq 5.4 \cdot 10^{+58}\right):\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -5.20000000000000013e35 or 5.4000000000000002e58 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.2%
Taylor expanded in KbT around inf 28.7%
if -5.20000000000000013e35 < NaChar < 5.4000000000000002e58Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 32.6%
distribute-lft-out32.6%
Simplified32.6%
Taylor expanded in NaChar around 0 29.1%
*-commutative29.1%
Simplified29.1%
Final simplification28.9%
(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 KbT around inf 31.5%
distribute-lft-out31.5%
Simplified31.5%
Final simplification31.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 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 = ndchar * 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 NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.5%
distribute-lft-out31.5%
Simplified31.5%
Taylor expanded in NaChar around 0 19.1%
*-commutative19.1%
Simplified19.1%
herbie shell --seed 2024180
(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))))))