
(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 21 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 (- (/ NaChar (+ (pow E (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0)) (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (pow(((double) M_E), ((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.pow(Math.E, ((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.pow(math.e, ((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64((exp(1) ^ Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / ((2.71828182845904523536 ^ ((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Power[E, N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{{e}^{\left(\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}\right)} + 1} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
*-un-lft-identity99.9%
exp-prod99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= Ev -3.7e-13)
(- (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) t_0)
(if (<= Ev -4.1e-173)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(- (/ NaChar (+ (exp (/ EAccept 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 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -3.7e-13) {
tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) - t_0;
} else if (Ev <= -4.1e-173) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ev <= (-3.7d-13)) then
tmp = (nachar / (exp((ev / kbt)) + 1.0d0)) - t_0
else if (ev <= (-4.1d-173)) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) - t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -3.7e-13) {
tmp = (NaChar / (Math.exp((Ev / KbT)) + 1.0)) - t_0;
} else if (Ev <= -4.1e-173) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) - t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if Ev <= -3.7e-13: tmp = (NaChar / (math.exp((Ev / KbT)) + 1.0)) - t_0 elif Ev <= -4.1e-173: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) - t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (Ev <= -3.7e-13) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)) - t_0); elseif (Ev <= -4.1e-173) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) - t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (Ev <= -3.7e-13) tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) - t_0; elseif (Ev <= -4.1e-173) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -3.7e-13], N[(N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[Ev, -4.1e-173], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;Ev \leq -3.7 \cdot 10^{-13}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1} - t\_0\\
\mathbf{elif}\;Ev \leq -4.1 \cdot 10^{-173}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} - t\_0\\
\end{array}
\end{array}
if Ev < -3.69999999999999989e-13Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 91.0%
if -3.69999999999999989e-13 < Ev < -4.0999999999999997e-173Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 78.1%
if -4.0999999999999997e-173 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 63.0%
Final simplification72.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -8e+201)
(+
(/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))
(/ NdChar 2.0))
(if (<= KbT 2.5e-17)
(/ NaChar (+ (pow E (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))
(-
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -8e+201) {
tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / 2.0);
} else if (KbT <= 2.5e-17) {
tmp = NaChar / (pow(((double) M_E), ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
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 <= -8e+201) {
tmp = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / 2.0);
} else if (KbT <= 2.5e-17) {
tmp = NaChar / (Math.pow(Math.E, ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -8e+201: tmp = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / 2.0) elif KbT <= 2.5e-17: tmp = NaChar / (math.pow(math.e, ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -8e+201) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / 2.0)); elseif (KbT <= 2.5e-17) tmp = Float64(NaChar / Float64((exp(1) ^ Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -8e+201) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / 2.0); elseif (KbT <= 2.5e-17) tmp = NaChar / ((2.71828182845904523536 ^ ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -8e+201], 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 / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.5e-17], N[(NaChar / N[(N[Power[E, N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], 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[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -8 \cdot 10^{+201}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 2.5 \cdot 10^{-17}:\\
\;\;\;\;\frac{NaChar}{{e}^{\left(\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}\right)} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if KbT < -8.0000000000000003e201Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 78.6%
if -8.0000000000000003e201 < KbT < 2.4999999999999999e-17Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 72.3%
frac-2neg72.3%
associate--l+72.3%
associate-+r-72.3%
distribute-neg-frac272.3%
*-un-lft-identity72.3%
exp-prod72.3%
distribute-neg-frac272.3%
associate-+r-72.3%
associate--l+72.3%
frac-2neg72.3%
associate--l+72.3%
associate-+r-72.3%
associate-+r+72.3%
Applied egg-rr72.3%
exp-1-e72.3%
associate-+l+72.3%
Simplified72.3%
if 2.4999999999999999e-17 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.1%
Final simplification73.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (- (* NaChar (/ -1.0 (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))) (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar * (-1.0 / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar * ((-1.0d0) / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar * (-1.0 / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar * (-1.0 / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar * Float64(-1.0 / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar * (-1.0 / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))))) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar * N[(-1.0 / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot \frac{-1}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
div-inv99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (- (/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0)) (/ NdChar (- -1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) - (ndchar / ((-1.0d0) - exp(((edonor + (mu + (vef - ec))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := 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[(-1.0 - N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} - \frac{NdChar}{-1 - e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -6e+87)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (<= NaChar 1.05e-133)
(/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0))
(/ NaChar (+ (pow E (/ (+ EAccept (+ Ev (- Vef mu))) 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 <= -6e+87) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (NaChar <= 1.05e-133) {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (pow(((double) M_E), ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
}
return tmp;
}
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 <= -6e+87) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (NaChar <= 1.05e-133) {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.pow(Math.E, ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -6e+87: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif NaChar <= 1.05e-133: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.pow(math.e, ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -6e+87) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif (NaChar <= 1.05e-133) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64((exp(1) ^ Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / 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 <= -6e+87) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); elseif (NaChar <= 1.05e-133) tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); else tmp = NaChar / ((2.71828182845904523536 ^ ((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -6e+87], 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[NaChar, 1.05e-133], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Power[E, N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -6 \cdot 10^{+87}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;NaChar \leq 1.05 \cdot 10^{-133}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{{e}^{\left(\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}\right)} + 1}\\
\end{array}
\end{array}
if NaChar < -5.9999999999999998e87Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 78.5%
if -5.9999999999999998e87 < NaChar < 1.05e-133Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around inf 76.7%
if 1.05e-133 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 71.7%
frac-2neg71.7%
associate--l+71.7%
associate-+r-71.7%
distribute-neg-frac271.7%
*-un-lft-identity71.7%
exp-prod71.8%
distribute-neg-frac271.8%
associate-+r-71.8%
associate--l+71.8%
frac-2neg71.8%
associate--l+71.8%
associate-+r-71.8%
associate-+r+71.8%
Applied egg-rr71.8%
exp-1-e71.8%
associate-+l+71.8%
Simplified71.8%
Final simplification75.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -4.8e+88) (not (<= NaChar 8e-134))) (/ 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 <= -4.8e+88) || !(NaChar <= 8e-134)) {
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 <= (-4.8d+88)) .or. (.not. (nachar <= 8d-134))) 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 <= -4.8e+88) || !(NaChar <= 8e-134)) {
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 <= -4.8e+88) or not (NaChar <= 8e-134): 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 <= -4.8e+88) || !(NaChar <= 8e-134)) 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 <= -4.8e+88) || ~((NaChar <= 8e-134))) 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, -4.8e+88], N[Not[LessEqual[NaChar, 8e-134]], $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 -4.8 \cdot 10^{+88} \lor \neg \left(NaChar \leq 8 \cdot 10^{-134}\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 < -4.7999999999999998e88 or 8.00000000000000032e-134 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 74.0%
if -4.7999999999999998e88 < NaChar < 8.00000000000000032e-134Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around inf 76.7%
Final simplification75.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -2.4e+114)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -8.6e-30)
(+
(/ NdChar (- (+ 2.0 (+ (/ Vef KbT) (/ EDonor KbT))) (/ Ec KbT)))
(/ NaChar (- 2.0 (/ (- (- (- mu Vef) Ev) EAccept) KbT))))
(if (<= Ev -1.2e-176)
(/ NaChar (+ (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 (Ev <= -2.4e+114) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -8.6e-30) {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)));
} else if (Ev <= -1.2e-176) {
tmp = NaChar / (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 (ev <= (-2.4d+114)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-8.6d-30)) then
tmp = (ndchar / ((2.0d0 + ((vef / kbt) + (edonor / kbt))) - (ec / kbt))) + (nachar / (2.0d0 - ((((mu - vef) - ev) - eaccept) / kbt)))
else if (ev <= (-1.2d-176)) then
tmp = nachar / (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 (Ev <= -2.4e+114) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -8.6e-30) {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)));
} else if (Ev <= -1.2e-176) {
tmp = NaChar / (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 Ev <= -2.4e+114: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -8.6e-30: tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) elif Ev <= -1.2e-176: tmp = NaChar / (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 (Ev <= -2.4e+114) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -8.6e-30) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT))) - Float64(Ec / KbT))) + Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(Float64(mu - Vef) - Ev) - EAccept) / KbT)))); elseif (Ev <= -1.2e-176) tmp = Float64(NaChar / Float64(exp(Float64(mu / Float64(-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 <= -2.4e+114) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -8.6e-30) tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))); elseif (Ev <= -1.2e-176) tmp = NaChar / (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[Ev, -2.4e+114], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -8.6e-30], N[(N[(NdChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(N[(N[(N[(mu - Vef), $MachinePrecision] - Ev), $MachinePrecision] - EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.2e-176], N[(NaChar / 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}\;Ev \leq -2.4 \cdot 10^{+114}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -8.6 \cdot 10^{-30}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right) - \frac{Ec}{KbT}} + \frac{NaChar}{2 - \frac{\left(\left(mu - Vef\right) - Ev\right) - EAccept}{KbT}}\\
\mathbf{elif}\;Ev \leq -1.2 \cdot 10^{-176}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{mu}{-KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -2.4e114Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 92.8%
Taylor expanded in NdChar around 0 49.7%
if -2.4e114 < Ev < -8.59999999999999932e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around 0 76.4%
Taylor expanded in KbT around -inf 76.7%
mul-1-neg76.7%
distribute-lft-out76.7%
associate--l+76.7%
mul-1-neg76.7%
associate--l+76.7%
associate-+r-76.7%
Simplified76.7%
Taylor expanded in KbT around inf 33.7%
associate-+r+33.7%
Simplified33.7%
Taylor expanded in mu around 0 34.4%
+-commutative34.4%
Simplified34.4%
if -8.59999999999999932e-30 < Ev < -1.20000000000000003e-176Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.9%
Taylor expanded in mu around inf 40.0%
associate-*r/40.0%
mul-1-neg40.0%
Simplified40.0%
Taylor expanded in NdChar around 0 50.3%
mul-1-neg50.3%
distribute-frac-neg50.3%
Simplified50.3%
if -1.20000000000000003e-176 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 63.0%
Taylor expanded in NdChar around 0 35.2%
Final simplification39.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.15e+201)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT)))))
(if (<= KbT 2e+216)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.15e+201) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else if (KbT <= 2e+216) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-2.15d+201)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else if (kbt <= 2d+216) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.15e+201) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else if (KbT <= 2e+216) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.15e+201: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) elif KbT <= 2e+216: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.15e+201) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); elseif (KbT <= 2e+216) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -2.15e+201) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); elseif (KbT <= 2e+216) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.15e+201], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2e+216], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.15 \cdot 10^{+201}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;KbT \leq 2 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -2.14999999999999995e201Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 74.5%
Taylor expanded in KbT around inf 66.9%
if -2.14999999999999995e201 < KbT < 2e216Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 67.5%
if 2e216 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 87.3%
Taylor expanded in EAccept around inf 80.8%
Final simplification68.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -4.2e+87) (not (<= KbT 2.1e+122))) (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0)) (/ NaChar (+ (exp (/ Ev 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 <= -4.2e+87) || !(KbT <= 2.1e+122)) {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
} else {
tmp = NaChar / (exp((Ev / 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 <= (-4.2d+87)) .or. (.not. (kbt <= 2.1d+122))) then
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
else
tmp = nachar / (exp((ev / 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 <= -4.2e+87) || !(KbT <= 2.1e+122)) {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
} else {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -4.2e+87) or not (KbT <= 2.1e+122): tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) else: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -4.2e+87) || !(KbT <= 2.1e+122)) tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Ev / 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 <= -4.2e+87) || ~((KbT <= 2.1e+122))) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); else tmp = NaChar / (exp((Ev / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -4.2e+87], N[Not[LessEqual[KbT, 2.1e+122]], $MachinePrecision]], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.2 \cdot 10^{+87} \lor \neg \left(KbT \leq 2.1 \cdot 10^{+122}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -4.2e87 or 2.10000000000000016e122 < KbT Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 69.0%
Taylor expanded in EAccept around inf 59.3%
if -4.2e87 < KbT < 2.10000000000000016e122Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 60.9%
Taylor expanded in NdChar around 0 35.2%
Final simplification44.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.4e+201)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT)))))
(if (<= KbT 4.5e+123)
(/ NaChar (+ (exp (/ (- (+ Vef Ev) mu) KbT)) 1.0))
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.4e+201) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else if (KbT <= 4.5e+123) {
tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-2.4d+201)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else if (kbt <= 4.5d+123) then
tmp = nachar / (exp((((vef + ev) - mu) / kbt)) + 1.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.4e+201) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else if (KbT <= 4.5e+123) {
tmp = NaChar / (Math.exp((((Vef + Ev) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.4e+201: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) elif KbT <= 4.5e+123: tmp = NaChar / (math.exp((((Vef + Ev) - mu) / KbT)) + 1.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.4e+201) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); elseif (KbT <= 4.5e+123) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -2.4e+201) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); elseif (KbT <= 4.5e+123) tmp = NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.4e+201], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.5e+123], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.4 \cdot 10^{+201}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;KbT \leq 4.5 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -2.39999999999999993e201Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 74.5%
Taylor expanded in KbT around inf 66.9%
if -2.39999999999999993e201 < KbT < 4.49999999999999983e123Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 69.3%
Taylor expanded in EAccept around 0 63.8%
if 4.49999999999999983e123 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.6%
Taylor expanded in EAccept around inf 59.2%
Final simplification63.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept -8.8e-200)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= EAccept 1.3e+133)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Vef KbT)))))
(/ 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 <= -8.8e-200) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (EAccept <= 1.3e+133) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Vef / KbT))));
} 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 <= (-8.8d-200)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (eaccept <= 1.3d+133) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((vef / kbt))))
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 <= -8.8e-200) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (EAccept <= 1.3e+133) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Vef / KbT))));
} 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 <= -8.8e-200: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif EAccept <= 1.3e+133: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Vef / KbT)))) 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 <= -8.8e-200) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (EAccept <= 1.3e+133) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Vef / KbT))))); 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 <= -8.8e-200) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (EAccept <= 1.3e+133) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Vef / KbT)))); 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, -8.8e-200], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.3e+133], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $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 -8.8 \cdot 10^{-200}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 1.3 \cdot 10^{+133}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < -8.80000000000000054e-200Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.9%
Taylor expanded in NdChar around 0 36.7%
if -8.80000000000000054e-200 < EAccept < 1.2999999999999999e133Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 50.2%
Taylor expanded in Vef around inf 45.0%
if 1.2999999999999999e133 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.9%
Taylor expanded in NdChar around 0 47.0%
Final simplification41.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -8.5e-13)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT)))))
(if (<= Ev -1.65e-177)
(/ NaChar (+ (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 (Ev <= -8.5e-13) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else if (Ev <= -1.65e-177) {
tmp = NaChar / (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 (ev <= (-8.5d-13)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else if (ev <= (-1.65d-177)) then
tmp = nachar / (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 (Ev <= -8.5e-13) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else if (Ev <= -1.65e-177) {
tmp = NaChar / (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 Ev <= -8.5e-13: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) elif Ev <= -1.65e-177: tmp = NaChar / (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 (Ev <= -8.5e-13) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); elseif (Ev <= -1.65e-177) tmp = Float64(NaChar / Float64(exp(Float64(mu / Float64(-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 <= -8.5e-13) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); elseif (Ev <= -1.65e-177) tmp = NaChar / (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[Ev, -8.5e-13], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.65e-177], N[(NaChar / 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}\;Ev \leq -8.5 \cdot 10^{-13}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.65 \cdot 10^{-177}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{mu}{-KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -8.5000000000000001e-13Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 91.0%
Taylor expanded in KbT around inf 47.2%
if -8.5000000000000001e-13 < Ev < -1.65e-177Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.3%
Taylor expanded in mu around inf 39.0%
associate-*r/39.0%
mul-1-neg39.0%
Simplified39.0%
Taylor expanded in NdChar around 0 48.6%
mul-1-neg48.6%
distribute-frac-neg48.6%
Simplified48.6%
if -1.65e-177 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 63.0%
Taylor expanded in NdChar around 0 35.2%
Final simplification40.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 5.5e-100)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= EAccept 1.1e+92)
(+
(/ NaChar (- 2.0 (/ (- (- (- mu Vef) Ev) EAccept) KbT)))
(/
NdChar
(- (+ (+ 2.0 (/ EDonor KbT)) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(/ 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.5e-100) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (EAccept <= 1.1e+92) {
tmp = (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} 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.5d-100) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (eaccept <= 1.1d+92) then
tmp = (nachar / (2.0d0 - ((((mu - vef) - ev) - eaccept) / kbt))) + (ndchar / (((2.0d0 + (edonor / kbt)) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
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.5e-100) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (EAccept <= 1.1e+92) {
tmp = (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} 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.5e-100: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif EAccept <= 1.1e+92: tmp = (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) 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.5e-100) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (EAccept <= 1.1e+92) tmp = Float64(Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(Float64(mu - Vef) - Ev) - EAccept) / KbT))) + Float64(NdChar / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); 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.5e-100) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (EAccept <= 1.1e+92) tmp = (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); 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.5e-100], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.1e+92], N[(N[(NaChar / N[(2.0 - N[(N[(N[(N[(mu - Vef), $MachinePrecision] - Ev), $MachinePrecision] - EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $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.5 \cdot 10^{-100}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 1.1 \cdot 10^{+92}:\\
\;\;\;\;\frac{NaChar}{2 - \frac{\left(\left(mu - Vef\right) - Ev\right) - EAccept}{KbT}} + \frac{NdChar}{\left(\left(2 + \frac{EDonor}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 5.50000000000000011e-100Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.3%
Taylor expanded in NdChar around 0 35.4%
if 5.50000000000000011e-100 < EAccept < 1.09999999999999996e92Initial program 99.7%
Simplified99.7%
Taylor expanded in EAccept around 0 83.9%
Taylor expanded in KbT around -inf 76.7%
mul-1-neg76.7%
distribute-lft-out76.7%
associate--l+76.7%
mul-1-neg76.7%
associate--l+76.7%
associate-+r-76.7%
Simplified76.7%
Taylor expanded in KbT around inf 46.7%
associate-+r+46.7%
Simplified46.7%
if 1.09999999999999996e92 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 77.2%
Taylor expanded in NdChar around 0 46.8%
Final simplification38.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.24e+190)
(+ t_0 (* 0.25 (* mu (/ (- NaChar NdChar) KbT))))
(if (<= KbT 2.2e+214)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(- t_0 (* -0.25 (/ (* NdChar Ec) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.24e+190) {
tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else if (KbT <= 2.2e+214) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0 - (-0.25 * ((NdChar * Ec) / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-1.24d+190)) then
tmp = t_0 + (0.25d0 * (mu * ((nachar - ndchar) / kbt)))
else if (kbt <= 2.2d+214) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else
tmp = t_0 - ((-0.25d0) * ((ndchar * ec) / kbt))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.24e+190) {
tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else if (KbT <= 2.2e+214) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0 - (-0.25 * ((NdChar * Ec) / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -1.24e+190: tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT))) elif KbT <= 2.2e+214: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) else: tmp = t_0 - (-0.25 * ((NdChar * Ec) / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -1.24e+190) tmp = Float64(t_0 + Float64(0.25 * Float64(mu * Float64(Float64(NaChar - NdChar) / KbT)))); elseif (KbT <= 2.2e+214) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); else tmp = Float64(t_0 - Float64(-0.25 * Float64(Float64(NdChar * Ec) / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -1.24e+190) tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT))); elseif (KbT <= 2.2e+214) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); else tmp = t_0 - (-0.25 * ((NdChar * Ec) / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.24e+190], N[(t$95$0 + N[(0.25 * N[(mu * N[(N[(NaChar - NdChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.2e+214], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(-0.25 * N[(N[(NdChar * Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -1.24 \cdot 10^{+190}:\\
\;\;\;\;t\_0 + 0.25 \cdot \left(mu \cdot \frac{NaChar - NdChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 2.2 \cdot 10^{+214}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - -0.25 \cdot \frac{NdChar \cdot Ec}{KbT}\\
\end{array}
\end{array}
if KbT < -1.24e190Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 39.2%
Simplified39.2%
Taylor expanded in mu around inf 50.0%
associate-/l*64.5%
+-commutative64.5%
mul-1-neg64.5%
Simplified64.5%
if -1.24e190 < KbT < 2.20000000000000023e214Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 60.8%
Taylor expanded in NdChar around 0 34.4%
if 2.20000000000000023e214 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.6%
Simplified42.6%
Taylor expanded in Ec around inf 74.2%
Final simplification41.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (- 2.0 (/ (- (- (- mu Vef) Ev) EAccept) KbT)))))
(if (<= Ev -1.5e-12)
(+
t_0
(/
NdChar
(- (+ (+ 2.0 (/ EDonor KbT)) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(if (<= Ev -1.02e-210)
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ (- Vef mu) KbT)))))
(+
(/ NdChar (- (+ 2.0 (+ (/ Vef KbT) (/ EDonor KbT))) (/ Ec KbT)))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT));
double tmp;
if (Ev <= -1.5e-12) {
tmp = t_0 + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (Ev <= -1.02e-210) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (2.0d0 - ((((mu - vef) - ev) - eaccept) / kbt))
if (ev <= (-1.5d-12)) then
tmp = t_0 + (ndchar / (((2.0d0 + (edonor / kbt)) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else if (ev <= (-1.02d-210)) then
tmp = nachar / (2.0d0 + ((eaccept / kbt) + ((ev / kbt) + ((vef - mu) / kbt))))
else
tmp = (ndchar / ((2.0d0 + ((vef / kbt) + (edonor / kbt))) - (ec / kbt))) + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT));
double tmp;
if (Ev <= -1.5e-12) {
tmp = t_0 + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (Ev <= -1.02e-210) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)) tmp = 0 if Ev <= -1.5e-12: tmp = t_0 + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) elif Ev <= -1.02e-210: tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))) else: tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(Float64(mu - Vef) - Ev) - EAccept) / KbT))) tmp = 0.0 if (Ev <= -1.5e-12) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); elseif (Ev <= -1.02e-210) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Float64(Vef - mu) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT))) - Float64(Ec / KbT))) + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)); tmp = 0.0; if (Ev <= -1.5e-12) tmp = t_0 + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); elseif (Ev <= -1.02e-210) tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))); else tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(2.0 - N[(N[(N[(N[(mu - Vef), $MachinePrecision] - Ev), $MachinePrecision] - EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1.5e-12], N[(t$95$0 + N[(NdChar / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.02e-210], N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{2 - \frac{\left(\left(mu - Vef\right) - Ev\right) - EAccept}{KbT}}\\
\mathbf{if}\;Ev \leq -1.5 \cdot 10^{-12}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(\left(2 + \frac{EDonor}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;Ev \leq -1.02 \cdot 10^{-210}:\\
\;\;\;\;\frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef - mu}{KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right) - \frac{Ec}{KbT}} + t\_0\\
\end{array}
\end{array}
if Ev < -1.5000000000000001e-12Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around 0 79.6%
Taylor expanded in KbT around -inf 70.3%
mul-1-neg70.3%
distribute-lft-out70.3%
associate--l+70.3%
mul-1-neg70.3%
associate--l+70.3%
associate-+r-70.3%
Simplified70.3%
Taylor expanded in KbT around inf 33.1%
associate-+r+33.1%
Simplified33.1%
if -1.5000000000000001e-12 < Ev < -1.02000000000000002e-210Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around 0 73.3%
Taylor expanded in KbT around -inf 61.1%
mul-1-neg61.1%
distribute-lft-out61.1%
associate--l+61.1%
mul-1-neg61.1%
associate--l+61.1%
associate-+r-61.1%
Simplified61.1%
Taylor expanded in NdChar around 0 42.7%
associate--l+42.7%
associate--l+42.7%
associate--l+42.7%
div-sub42.7%
Simplified42.7%
if -1.02000000000000002e-210 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around 0 73.9%
Taylor expanded in KbT around -inf 56.1%
mul-1-neg56.1%
distribute-lft-out56.1%
associate--l+56.1%
mul-1-neg56.1%
associate--l+56.1%
associate-+r-56.1%
Simplified56.1%
Taylor expanded in KbT around inf 27.9%
associate-+r+27.9%
Simplified27.9%
Taylor expanded in mu around 0 29.5%
+-commutative29.5%
Simplified29.5%
Final simplification32.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ec -1.55e+168)
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ (- Vef mu) KbT)))))
(+
(/ NdChar (- (+ 2.0 (+ (/ Vef KbT) (/ EDonor KbT))) (/ Ec KbT)))
(/ NaChar (- 2.0 (/ (- (- (- mu Vef) Ev) EAccept) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ec <= -1.55e+168) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ec <= (-1.55d+168)) then
tmp = nachar / (2.0d0 + ((eaccept / kbt) + ((ev / kbt) + ((vef - mu) / kbt))))
else
tmp = (ndchar / ((2.0d0 + ((vef / kbt) + (edonor / kbt))) - (ec / kbt))) + (nachar / (2.0d0 - ((((mu - vef) - ev) - eaccept) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ec <= -1.55e+168) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ec <= -1.55e+168: tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))) else: tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ec <= -1.55e+168) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Float64(Vef - mu) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT))) - Float64(Ec / KbT))) + Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(Float64(mu - Vef) - Ev) - EAccept) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ec <= -1.55e+168) tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))); else tmp = (NdChar / ((2.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT))) + (NaChar / (2.0 - ((((mu - Vef) - Ev) - EAccept) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ec, -1.55e+168], N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(N[(N[(N[(mu - Vef), $MachinePrecision] - Ev), $MachinePrecision] - EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -1.55 \cdot 10^{+168}:\\
\;\;\;\;\frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef - mu}{KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right) - \frac{Ec}{KbT}} + \frac{NaChar}{2 - \frac{\left(\left(mu - Vef\right) - Ev\right) - EAccept}{KbT}}\\
\end{array}
\end{array}
if Ec < -1.54999999999999998e168Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around 0 81.4%
Taylor expanded in KbT around -inf 57.5%
mul-1-neg57.5%
distribute-lft-out57.5%
associate--l+57.5%
mul-1-neg57.5%
associate--l+57.5%
associate-+r-57.5%
Simplified57.5%
Taylor expanded in NdChar around 0 27.4%
associate--l+27.4%
associate--l+27.4%
associate--l+27.4%
div-sub27.5%
Simplified27.5%
if -1.54999999999999998e168 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around 0 74.3%
Taylor expanded in KbT around -inf 60.9%
mul-1-neg60.9%
distribute-lft-out60.9%
associate--l+60.9%
mul-1-neg60.9%
associate--l+60.9%
associate-+r-60.9%
Simplified60.9%
Taylor expanded in KbT around inf 32.7%
associate-+r+32.7%
Simplified32.7%
Taylor expanded in mu around 0 33.5%
+-commutative33.5%
Simplified33.5%
Final simplification32.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -6e+87)
(+ t_0 (* 0.25 (* mu (/ (- NaChar NdChar) KbT))))
(if (<= KbT 2.35e-20)
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ (- Vef mu) KbT)))))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -6e+87) {
tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else if (KbT <= 2.35e-20) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-6d+87)) then
tmp = t_0 + (0.25d0 * (mu * ((nachar - ndchar) / kbt)))
else if (kbt <= 2.35d-20) then
tmp = nachar / (2.0d0 + ((eaccept / kbt) + ((ev / kbt) + ((vef - mu) / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -6e+87) {
tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else if (KbT <= 2.35e-20) {
tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -6e+87: tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT))) elif KbT <= 2.35e-20: tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -6e+87) tmp = Float64(t_0 + Float64(0.25 * Float64(mu * Float64(Float64(NaChar - NdChar) / KbT)))); elseif (KbT <= 2.35e-20) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Float64(Vef - mu) / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -6e+87) tmp = t_0 + (0.25 * (mu * ((NaChar - NdChar) / KbT))); elseif (KbT <= 2.35e-20) tmp = NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + ((Vef - mu) / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -6e+87], N[(t$95$0 + N[(0.25 * N[(mu * N[(N[(NaChar - NdChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.35e-20], N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -6 \cdot 10^{+87}:\\
\;\;\;\;t\_0 + 0.25 \cdot \left(mu \cdot \frac{NaChar - NdChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 2.35 \cdot 10^{-20}:\\
\;\;\;\;\frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef - mu}{KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -5.9999999999999998e87Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 30.3%
Simplified30.3%
Taylor expanded in mu around inf 39.9%
associate-/l*49.6%
+-commutative49.6%
mul-1-neg49.6%
Simplified49.6%
if -5.9999999999999998e87 < KbT < 2.35000000000000007e-20Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around 0 70.0%
Taylor expanded in KbT around -inf 56.0%
mul-1-neg56.0%
distribute-lft-out56.0%
associate--l+56.0%
mul-1-neg56.0%
associate--l+56.0%
associate-+r-56.0%
Simplified56.0%
Taylor expanded in NdChar around 0 23.4%
associate--l+23.4%
associate--l+23.4%
associate--l+23.4%
div-sub23.5%
Simplified23.5%
if 2.35000000000000007e-20 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.6%
distribute-lft-out40.6%
Simplified40.6%
Final simplification33.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -3.2e+126) (not (<= NaChar 7e-50))) (* NaChar 0.5) (* 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 <= -3.2e+126) || !(NaChar <= 7e-50)) {
tmp = NaChar * 0.5;
} 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 <= (-3.2d+126)) .or. (.not. (nachar <= 7d-50))) then
tmp = nachar * 0.5d0
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 <= -3.2e+126) || !(NaChar <= 7e-50)) {
tmp = NaChar * 0.5;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.2e+126) or not (NaChar <= 7e-50): tmp = NaChar * 0.5 else: tmp = NdChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -3.2e+126) || !(NaChar <= 7e-50)) tmp = Float64(NaChar * 0.5); 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 <= -3.2e+126) || ~((NaChar <= 7e-50))) tmp = NaChar * 0.5; else tmp = NdChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -3.2e+126], N[Not[LessEqual[NaChar, 7e-50]], $MachinePrecision]], N[(NaChar * 0.5), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.2 \cdot 10^{+126} \lor \neg \left(NaChar \leq 7 \cdot 10^{-50}\right):\\
\;\;\;\;NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -3.1999999999999998e126 or 6.99999999999999993e-50 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 30.9%
distribute-lft-out30.9%
Simplified30.9%
Taylor expanded in NaChar around inf 28.7%
if -3.1999999999999998e126 < NaChar < 6.99999999999999993e-50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 25.4%
distribute-lft-out25.4%
Simplified25.4%
Taylor expanded in NaChar around 0 22.6%
*-commutative22.6%
Simplified22.6%
Final simplification25.2%
(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 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 27.7%
distribute-lft-out27.7%
Simplified27.7%
Final simplification27.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 27.7%
distribute-lft-out27.7%
Simplified27.7%
Taylor expanded in NaChar around inf 18.7%
Final simplification18.7%
herbie shell --seed 2024188
(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))))))