
(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 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (exp (log1p (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / exp(log1p(exp(((Vef + (Ev + (EAccept - mu))) / KbT)))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / Math.exp(Math.log1p(Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / math.exp(math.log1p(math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / exp(log1p(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[Exp[N[Log[1 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{e^{\mathsf{log1p}\left(e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\right)}}
\end{array}
Initial program 100.0%
Simplified100.0%
add-exp-log100.0%
log1p-udef100.0%
div-inv100.0%
associate-*r/100.0%
*-commutative100.0%
*-un-lft-identity100.0%
+-commutative100.0%
associate-+l-100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))))
(if (<= NdChar -6.1e+47)
t_0
(if (<= NdChar -1.8e-59)
t_1
(if (<= NdChar 8e-20)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 1.1e+14)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 1.5e+73) t_1 t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double tmp;
if (NdChar <= -6.1e+47) {
tmp = t_0;
} else if (NdChar <= -1.8e-59) {
tmp = t_1;
} else if (NdChar <= 8e-20) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.1e+14) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.5e+73) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
if (ndchar <= (-6.1d+47)) then
tmp = t_0
else if (ndchar <= (-1.8d-59)) then
tmp = t_1
else if (ndchar <= 8d-20) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 1.1d+14) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 1.5d+73) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double tmp;
if (NdChar <= -6.1e+47) {
tmp = t_0;
} else if (NdChar <= -1.8e-59) {
tmp = t_1;
} else if (NdChar <= 8e-20) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.1e+14) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.5e+73) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) tmp = 0 if NdChar <= -6.1e+47: tmp = t_0 elif NdChar <= -1.8e-59: tmp = t_1 elif NdChar <= 8e-20: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 1.1e+14: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 1.5e+73: tmp = t_1 else: tmp = 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(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) tmp = 0.0 if (NdChar <= -6.1e+47) tmp = t_0; elseif (NdChar <= -1.8e-59) tmp = t_1; elseif (NdChar <= 8e-20) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NdChar <= 1.1e+14) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 1.5e+73) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); tmp = 0.0; if (NdChar <= -6.1e+47) tmp = t_0; elseif (NdChar <= -1.8e-59) tmp = t_1; elseif (NdChar <= 8e-20) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 1.1e+14) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 1.5e+73) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6.1e+47], t$95$0, If[LessEqual[NdChar, -1.8e-59], t$95$1, If[LessEqual[NdChar, 8e-20], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.1e+14], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e+73], t$95$1, t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{if}\;NdChar \leq -6.1 \cdot 10^{+47}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -1.8 \cdot 10^{-59}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 8 \cdot 10^{-20}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 1.1 \cdot 10^{+14}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{+73}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -6.10000000000000019e47 or 1.50000000000000005e73 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.5%
Taylor expanded in EAccept around inf 36.4%
associate-/l*34.3%
Simplified34.3%
Taylor expanded in NdChar around inf 75.2%
Simplified75.2%
if -6.10000000000000019e47 < NdChar < -1.8e-59 or 1.1e14 < NdChar < 1.50000000000000005e73Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 89.2%
Taylor expanded in mu around inf 74.7%
associate-*r/74.7%
mul-1-neg74.7%
Simplified74.7%
if -1.8e-59 < NdChar < 7.99999999999999956e-20Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.5%
Taylor expanded in mu around 0 71.2%
if 7.99999999999999956e-20 < NdChar < 1.1e14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.0%
Final simplification73.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -2.3e+159)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= Vef -5e-43)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 4.5e-53)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 4.8e+63)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(+ 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 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -2.3e+159) {
tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -5e-43) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 4.5e-53) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 4.8e+63) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0 + t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-2.3d+159)) then
tmp = t_1 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (vef <= (-5d-43)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 4.5d-53) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 4.8d+63) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0 + t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -2.3e+159) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -5e-43) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 4.5e-53) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 4.8e+63) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0 + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -2.3e+159: tmp = t_1 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif Vef <= -5e-43: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 4.5e-53: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 4.8e+63: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -2.3e+159) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (Vef <= -5e-43) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 4.5e-53) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 4.8e+63) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(t_0 + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = NdChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -2.3e+159) tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (Vef <= -5e-43) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 4.5e-53) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 4.8e+63) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0 + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.3e+159], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -5e-43], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.5e-53], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.8e+63], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + t$95$1), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.3 \cdot 10^{+159}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq -5 \cdot 10^{-43}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.5 \cdot 10^{-53}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.8 \cdot 10^{+63}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + t\_1\\
\end{array}
\end{array}
if Vef < -2.29999999999999995e159Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 96.4%
Taylor expanded in EAccept around 0 96.4%
+-commutative51.9%
Simplified96.4%
if -2.29999999999999995e159 < Vef < -5.00000000000000019e-43Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.6%
if -5.00000000000000019e-43 < Vef < 4.49999999999999985e-53Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.3%
if 4.49999999999999985e-53 < Vef < 4.8e63Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.3%
if 4.8e63 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.2%
Final simplification84.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -1.4e+72)
t_1
(if (<= EDonor 4.8e-126)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= EDonor 1.2e+162)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -1.4e+72) {
tmp = t_1;
} else if (EDonor <= 4.8e-126) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (EDonor <= 1.2e+162) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-1.4d+72)) then
tmp = t_1
else if (edonor <= 4.8d-126) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (edonor <= 1.2d+162) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -1.4e+72) {
tmp = t_1;
} else if (EDonor <= 4.8e-126) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (EDonor <= 1.2e+162) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -1.4e+72: tmp = t_1 elif EDonor <= 4.8e-126: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif EDonor <= 1.2e+162: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -1.4e+72) tmp = t_1; elseif (EDonor <= 4.8e-126) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (EDonor <= 1.2e+162) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -1.4e+72) tmp = t_1; elseif (EDonor <= 4.8e-126) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (EDonor <= 1.2e+162) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.4e+72], t$95$1, If[LessEqual[EDonor, 4.8e-126], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 1.2e+162], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.4 \cdot 10^{+72}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq 4.8 \cdot 10^{-126}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 1.2 \cdot 10^{+162}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -1.4e72 or 1.20000000000000005e162 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 93.4%
if -1.4e72 < EDonor < 4.80000000000000014e-126Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.0%
if 4.80000000000000014e-126 < EDonor < 1.20000000000000005e162Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.4%
Final simplification85.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -4.1e+79)
t_1
(if (<= EDonor 1.65e-104)
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(if (<= EDonor 8.2e+55)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -4.1e+79) {
tmp = t_1;
} else if (EDonor <= 1.65e-104) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else if (EDonor <= 8.2e+55) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-4.1d+79)) then
tmp = t_1
else if (edonor <= 1.65d-104) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
else if (edonor <= 8.2d+55) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -4.1e+79) {
tmp = t_1;
} else if (EDonor <= 1.65e-104) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else if (EDonor <= 8.2e+55) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -4.1e+79: tmp = t_1 elif EDonor <= 1.65e-104: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 elif EDonor <= 8.2e+55: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -4.1e+79) tmp = t_1; elseif (EDonor <= 1.65e-104) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); elseif (EDonor <= 8.2e+55) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -4.1e+79) tmp = t_1; elseif (EDonor <= 1.65e-104) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; elseif (EDonor <= 8.2e+55) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -4.1e+79], t$95$1, If[LessEqual[EDonor, 1.65e-104], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EDonor, 8.2e+55], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -4.1 \cdot 10^{+79}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq 1.65 \cdot 10^{-104}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{elif}\;EDonor \leq 8.2 \cdot 10^{+55}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -4.1e79 or 8.19999999999999962e55 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 87.7%
Taylor expanded in EAccept around 0 78.5%
+-commutative78.5%
Simplified78.5%
if -4.1e79 < EDonor < 1.65000000000000001e-104Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.9%
Taylor expanded in EAccept around 0 71.8%
+-commutative55.0%
Simplified71.8%
if 1.65000000000000001e-104 < EDonor < 8.19999999999999962e55Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.6%
Taylor expanded in mu around inf 79.1%
associate-*r/53.1%
mul-1-neg53.1%
Simplified79.1%
Final simplification75.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -4.1e+161) (not (<= Vef 5e+61)))
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -4.1e+161) || !(Vef <= 5e+61)) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-4.1d+161)) .or. (.not. (vef <= 5d+61))) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -4.1e+161) || !(Vef <= 5e+61)) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -4.1e+161) or not (Vef <= 5e+61): tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -4.1e+161) || !(Vef <= 5e+61)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -4.1e+161) || ~((Vef <= 5e+61))) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -4.1e+161], N[Not[LessEqual[Vef, 5e+61]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -4.1 \cdot 10^{+161} \lor \neg \left(Vef \leq 5 \cdot 10^{+61}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -4.1000000000000001e161 or 5.00000000000000018e61 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.0%
Taylor expanded in EAccept around 0 84.9%
+-commutative56.8%
Simplified84.9%
if -4.1000000000000001e161 < Vef < 5.00000000000000018e61Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.8%
Final simplification79.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (or (<= EDonor -2.3e+75) (not (<= EDonor 9.5e+72)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((EDonor <= -2.3e+75) || !(EDonor <= 9.5e+72)) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if ((edonor <= (-2.3d+75)) .or. (.not. (edonor <= 9.5d+72))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((EDonor <= -2.3e+75) || !(EDonor <= 9.5e+72)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if (EDonor <= -2.3e+75) or not (EDonor <= 9.5e+72): tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if ((EDonor <= -2.3e+75) || !(EDonor <= 9.5e+72)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if ((EDonor <= -2.3e+75) || ~((EDonor <= 9.5e+72))) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[EDonor, -2.3e+75], N[Not[LessEqual[EDonor, 9.5e+72]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -2.3 \cdot 10^{+75} \lor \neg \left(EDonor \leq 9.5 \cdot 10^{+72}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -2.2999999999999999e75 or 9.50000000000000054e72 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.3%
if -2.2999999999999999e75 < EDonor < 9.50000000000000054e72Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.2%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -2.2e+100) (not (<= KbT -1.5e-215)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor 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 <= -2.2e+100) || !(KbT <= -1.5e-215)) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2.2d+100)) .or. (.not. (kbt <= (-1.5d-215)))) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.2e+100) || !(KbT <= -1.5e-215)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.2e+100) or not (KbT <= -1.5e-215): tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.2e+100) || !(KbT <= -1.5e-215)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + 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 <= -2.2e+100) || ~((KbT <= -1.5e-215))) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.2e+100], N[Not[LessEqual[KbT, -1.5e-215]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.2 \cdot 10^{+100} \lor \neg \left(KbT \leq -1.5 \cdot 10^{-215}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
\end{array}
\end{array}
if KbT < -2.2000000000000001e100 or -1.50000000000000013e-215 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.5%
Taylor expanded in EAccept around 0 72.0%
+-commutative72.0%
Simplified72.0%
if -2.2000000000000001e100 < KbT < -1.50000000000000013e-215Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.9%
Taylor expanded in EAccept around inf 27.7%
associate-/l*26.2%
Simplified26.2%
Taylor expanded in NdChar around inf 62.3%
Simplified62.3%
Final simplification69.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -6.5e+33)
(not
(or (<= NdChar -2.3e-250)
(and (not (<= NdChar -1.2e-261))
(or (<= NdChar 4.7e-132)
(and (not (<= NdChar 1.32e-64))
(or (<= NdChar 9.2e-27)
(and (not (<= NdChar 105000000000.0))
(<= NdChar 1.2e+73)))))))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.5e+33) || !((NdChar <= -2.3e-250) || (!(NdChar <= -1.2e-261) && ((NdChar <= 4.7e-132) || (!(NdChar <= 1.32e-64) && ((NdChar <= 9.2e-27) || (!(NdChar <= 105000000000.0) && (NdChar <= 1.2e+73)))))))) {
tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-6.5d+33)) .or. (.not. (ndchar <= (-2.3d-250)) .or. (.not. (ndchar <= (-1.2d-261))) .and. (ndchar <= 4.7d-132) .or. (.not. (ndchar <= 1.32d-64)) .and. (ndchar <= 9.2d-27) .or. (.not. (ndchar <= 105000000000.0d0)) .and. (ndchar <= 1.2d+73))) then
tmp = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.5e+33) || !((NdChar <= -2.3e-250) || (!(NdChar <= -1.2e-261) && ((NdChar <= 4.7e-132) || (!(NdChar <= 1.32e-64) && ((NdChar <= 9.2e-27) || (!(NdChar <= 105000000000.0) && (NdChar <= 1.2e+73)))))))) {
tmp = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -6.5e+33) or not ((NdChar <= -2.3e-250) or (not (NdChar <= -1.2e-261) and ((NdChar <= 4.7e-132) or (not (NdChar <= 1.32e-64) and ((NdChar <= 9.2e-27) or (not (NdChar <= 105000000000.0) and (NdChar <= 1.2e+73))))))): tmp = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -6.5e+33) || !((NdChar <= -2.3e-250) || (!(NdChar <= -1.2e-261) && ((NdChar <= 4.7e-132) || (!(NdChar <= 1.32e-64) && ((NdChar <= 9.2e-27) || (!(NdChar <= 105000000000.0) && (NdChar <= 1.2e+73)))))))) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -6.5e+33) || ~(((NdChar <= -2.3e-250) || (~((NdChar <= -1.2e-261)) && ((NdChar <= 4.7e-132) || (~((NdChar <= 1.32e-64)) && ((NdChar <= 9.2e-27) || (~((NdChar <= 105000000000.0)) && (NdChar <= 1.2e+73))))))))) tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -6.5e+33], N[Not[Or[LessEqual[NdChar, -2.3e-250], And[N[Not[LessEqual[NdChar, -1.2e-261]], $MachinePrecision], Or[LessEqual[NdChar, 4.7e-132], And[N[Not[LessEqual[NdChar, 1.32e-64]], $MachinePrecision], Or[LessEqual[NdChar, 9.2e-27], And[N[Not[LessEqual[NdChar, 105000000000.0]], $MachinePrecision], LessEqual[NdChar, 1.2e+73]]]]]]]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -6.5 \cdot 10^{+33} \lor \neg \left(NdChar \leq -2.3 \cdot 10^{-250} \lor \neg \left(NdChar \leq -1.2 \cdot 10^{-261}\right) \land \left(NdChar \leq 4.7 \cdot 10^{-132} \lor \neg \left(NdChar \leq 1.32 \cdot 10^{-64}\right) \land \left(NdChar \leq 9.2 \cdot 10^{-27} \lor \neg \left(NdChar \leq 105000000000\right) \land NdChar \leq 1.2 \cdot 10^{+73}\right)\right)\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -6.49999999999999993e33 or -2.2999999999999999e-250 < NdChar < -1.20000000000000007e-261 or 4.7000000000000002e-132 < NdChar < 1.32e-64 or 9.1999999999999998e-27 < NdChar < 1.05e11 or 1.20000000000000001e73 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.6%
Taylor expanded in EAccept around inf 34.0%
associate-/l*32.5%
Simplified32.5%
Taylor expanded in NdChar around inf 74.1%
Simplified74.1%
if -6.49999999999999993e33 < NdChar < -2.2999999999999999e-250 or -1.20000000000000007e-261 < NdChar < 4.7000000000000002e-132 or 1.32e-64 < NdChar < 9.1999999999999998e-27 or 1.05e11 < NdChar < 1.20000000000000001e73Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.0%
Taylor expanded in mu around 0 67.8%
Final simplification70.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar 2.0))))
(if (<= NdChar -1.3e+33)
t_0
(if (<= NdChar -4.5e-105)
t_1
(if (<= NdChar -1.22e-261)
t_0
(if (<= NdChar 1.5e-131)
t_1
(if (or (<= NdChar 5.6e-65) (not (<= NdChar 1.18e-26)))
t_0
(+
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -1.3e+33) {
tmp = t_0;
} else if (NdChar <= -4.5e-105) {
tmp = t_1;
} else if (NdChar <= -1.22e-261) {
tmp = t_0;
} else if (NdChar <= 1.5e-131) {
tmp = t_1;
} else if ((NdChar <= 5.6e-65) || !(NdChar <= 1.18e-26)) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + (1.0 + (mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
t_1 = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
if (ndchar <= (-1.3d+33)) then
tmp = t_0
else if (ndchar <= (-4.5d-105)) then
tmp = t_1
else if (ndchar <= (-1.22d-261)) then
tmp = t_0
else if (ndchar <= 1.5d-131) then
tmp = t_1
else if ((ndchar <= 5.6d-65) .or. (.not. (ndchar <= 1.18d-26))) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + (1.0d0 + (mu / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -1.3e+33) {
tmp = t_0;
} else if (NdChar <= -4.5e-105) {
tmp = t_1;
} else if (NdChar <= -1.22e-261) {
tmp = t_0;
} else if (NdChar <= 1.5e-131) {
tmp = t_1;
} else if ((NdChar <= 5.6e-65) || !(NdChar <= 1.18e-26)) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + (1.0 + (mu / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) t_1 = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) tmp = 0 if NdChar <= -1.3e+33: tmp = t_0 elif NdChar <= -4.5e-105: tmp = t_1 elif NdChar <= -1.22e-261: tmp = t_0 elif NdChar <= 1.5e-131: tmp = t_1 elif (NdChar <= 5.6e-65) or not (NdChar <= 1.18e-26): tmp = t_0 else: tmp = (NdChar / (1.0 + (1.0 + (mu / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (NdChar <= -1.3e+33) tmp = t_0; elseif (NdChar <= -4.5e-105) tmp = t_1; elseif (NdChar <= -1.22e-261) tmp = t_0; elseif (NdChar <= 1.5e-131) tmp = t_1; elseif ((NdChar <= 5.6e-65) || !(NdChar <= 1.18e-26)) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); t_1 = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (NdChar <= -1.3e+33) tmp = t_0; elseif (NdChar <= -4.5e-105) tmp = t_1; elseif (NdChar <= -1.22e-261) tmp = t_0; elseif (NdChar <= 1.5e-131) tmp = t_1; elseif ((NdChar <= 5.6e-65) || ~((NdChar <= 1.18e-26))) tmp = t_0; else tmp = (NdChar / (1.0 + (1.0 + (mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.3e+33], t$95$0, If[LessEqual[NdChar, -4.5e-105], t$95$1, If[LessEqual[NdChar, -1.22e-261], t$95$0, If[LessEqual[NdChar, 1.5e-131], t$95$1, If[Or[LessEqual[NdChar, 5.6e-65], N[Not[LessEqual[NdChar, 1.18e-26]], $MachinePrecision]], t$95$0, N[(N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;NdChar \leq -1.3 \cdot 10^{+33}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -4.5 \cdot 10^{-105}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -1.22 \cdot 10^{-261}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{-131}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 5.6 \cdot 10^{-65} \lor \neg \left(NdChar \leq 1.18 \cdot 10^{-26}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.2999999999999999e33 or -4.4999999999999997e-105 < NdChar < -1.2199999999999999e-261 or 1.49999999999999998e-131 < NdChar < 5.6000000000000001e-65 or 1.17999999999999996e-26 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.1%
Taylor expanded in EAccept around inf 30.3%
associate-/l*29.6%
Simplified29.6%
Taylor expanded in NdChar around inf 66.9%
Simplified66.9%
if -1.2999999999999999e33 < NdChar < -4.4999999999999997e-105 or -1.2199999999999999e-261 < NdChar < 1.49999999999999998e-131Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.4%
Taylor expanded in EAccept around 0 77.8%
+-commutative77.8%
Simplified77.8%
Taylor expanded in EDonor around 0 63.8%
if 5.6000000000000001e-65 < NdChar < 1.17999999999999996e-26Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.2%
Taylor expanded in mu around 0 82.5%
Taylor expanded in EAccept around inf 67.7%
Final simplification66.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -7.8e+130)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(if (or (<= KbT 3e-282)
(and (not (<= KbT 3.75e-149))
(or (<= KbT 1.15e+55)
(and (not (<= KbT 1.65e+83)) (<= KbT 5.6e+209)))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7.8e+130) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if ((KbT <= 3e-282) || (!(KbT <= 3.75e-149) && ((KbT <= 1.15e+55) || (!(KbT <= 1.65e+83) && (KbT <= 5.6e+209))))) {
tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-7.8d+130)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else if ((kbt <= 3d-282) .or. (.not. (kbt <= 3.75d-149)) .and. (kbt <= 1.15d+55) .or. (.not. (kbt <= 1.65d+83)) .and. (kbt <= 5.6d+209)) then
tmp = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7.8e+130) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if ((KbT <= 3e-282) || (!(KbT <= 3.75e-149) && ((KbT <= 1.15e+55) || (!(KbT <= 1.65e+83) && (KbT <= 5.6e+209))))) {
tmp = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -7.8e+130: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) elif (KbT <= 3e-282) or (not (KbT <= 3.75e-149) and ((KbT <= 1.15e+55) or (not (KbT <= 1.65e+83) and (KbT <= 5.6e+209)))): tmp = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -7.8e+130) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); elseif ((KbT <= 3e-282) || (!(KbT <= 3.75e-149) && ((KbT <= 1.15e+55) || (!(KbT <= 1.65e+83) && (KbT <= 5.6e+209))))) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -7.8e+130) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); elseif ((KbT <= 3e-282) || (~((KbT <= 3.75e-149)) && ((KbT <= 1.15e+55) || (~((KbT <= 1.65e+83)) && (KbT <= 5.6e+209))))) tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -7.8e+130], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[KbT, 3e-282], And[N[Not[LessEqual[KbT, 3.75e-149]], $MachinePrecision], Or[LessEqual[KbT, 1.15e+55], And[N[Not[LessEqual[KbT, 1.65e+83]], $MachinePrecision], LessEqual[KbT, 5.6e+209]]]]], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -7.8 \cdot 10^{+130}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 3 \cdot 10^{-282} \lor \neg \left(KbT \leq 3.75 \cdot 10^{-149}\right) \land \left(KbT \leq 1.15 \cdot 10^{+55} \lor \neg \left(KbT \leq 1.65 \cdot 10^{+83}\right) \land KbT \leq 5.6 \cdot 10^{+209}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -7.8000000000000004e130Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.9%
Taylor expanded in EDonor around inf 74.5%
if -7.8000000000000004e130 < KbT < 3.0000000000000001e-282 or 3.74999999999999998e-149 < KbT < 1.14999999999999994e55 or 1.64999999999999992e83 < KbT < 5.60000000000000026e209Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.0%
Taylor expanded in EAccept around inf 28.4%
associate-/l*27.1%
Simplified27.1%
Taylor expanded in NdChar around inf 62.2%
Simplified62.2%
if 3.0000000000000001e-282 < KbT < 3.74999999999999998e-149 or 1.14999999999999994e55 < KbT < 1.64999999999999992e83 or 5.60000000000000026e209 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.8%
Taylor expanded in Ev around inf 63.5%
Taylor expanded in EDonor around 0 57.3%
Final simplification63.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar 2.0))))
(if (<= NdChar -6.2e+34)
t_0
(if (<= NdChar -2.5e-100)
t_1
(if (<= NdChar -4.7e-262)
t_0
(if (<= NdChar 9.5e-131)
t_1
(if (or (<= NdChar 3.1e-65) (not (<= NdChar 8e-21)))
t_0
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -6.2e+34) {
tmp = t_0;
} else if (NdChar <= -2.5e-100) {
tmp = t_1;
} else if (NdChar <= -4.7e-262) {
tmp = t_0;
} else if (NdChar <= 9.5e-131) {
tmp = t_1;
} else if ((NdChar <= 3.1e-65) || !(NdChar <= 8e-21)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
t_1 = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
if (ndchar <= (-6.2d+34)) then
tmp = t_0
else if (ndchar <= (-2.5d-100)) then
tmp = t_1
else if (ndchar <= (-4.7d-262)) then
tmp = t_0
else if (ndchar <= 9.5d-131) then
tmp = t_1
else if ((ndchar <= 3.1d-65) .or. (.not. (ndchar <= 8d-21))) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -6.2e+34) {
tmp = t_0;
} else if (NdChar <= -2.5e-100) {
tmp = t_1;
} else if (NdChar <= -4.7e-262) {
tmp = t_0;
} else if (NdChar <= 9.5e-131) {
tmp = t_1;
} else if ((NdChar <= 3.1e-65) || !(NdChar <= 8e-21)) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) t_1 = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) tmp = 0 if NdChar <= -6.2e+34: tmp = t_0 elif NdChar <= -2.5e-100: tmp = t_1 elif NdChar <= -4.7e-262: tmp = t_0 elif NdChar <= 9.5e-131: tmp = t_1 elif (NdChar <= 3.1e-65) or not (NdChar <= 8e-21): tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (NdChar <= -6.2e+34) tmp = t_0; elseif (NdChar <= -2.5e-100) tmp = t_1; elseif (NdChar <= -4.7e-262) tmp = t_0; elseif (NdChar <= 9.5e-131) tmp = t_1; elseif ((NdChar <= 3.1e-65) || !(NdChar <= 8e-21)) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); t_1 = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (NdChar <= -6.2e+34) tmp = t_0; elseif (NdChar <= -2.5e-100) tmp = t_1; elseif (NdChar <= -4.7e-262) tmp = t_0; elseif (NdChar <= 9.5e-131) tmp = t_1; elseif ((NdChar <= 3.1e-65) || ~((NdChar <= 8e-21))) tmp = t_0; else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6.2e+34], t$95$0, If[LessEqual[NdChar, -2.5e-100], t$95$1, If[LessEqual[NdChar, -4.7e-262], t$95$0, If[LessEqual[NdChar, 9.5e-131], t$95$1, If[Or[LessEqual[NdChar, 3.1e-65], N[Not[LessEqual[NdChar, 8e-21]], $MachinePrecision]], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;NdChar \leq -6.2 \cdot 10^{+34}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -2.5 \cdot 10^{-100}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -4.7 \cdot 10^{-262}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{-131}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 3.1 \cdot 10^{-65} \lor \neg \left(NdChar \leq 8 \cdot 10^{-21}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -6.19999999999999955e34 or -2.5e-100 < NdChar < -4.6999999999999998e-262 or 9.4999999999999996e-131 < NdChar < 3.10000000000000016e-65 or 7.99999999999999926e-21 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.1%
Taylor expanded in EAccept around inf 30.3%
associate-/l*29.6%
Simplified29.6%
Taylor expanded in NdChar around inf 66.9%
Simplified66.9%
if -6.19999999999999955e34 < NdChar < -2.5e-100 or -4.6999999999999998e-262 < NdChar < 9.4999999999999996e-131Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.4%
Taylor expanded in EAccept around 0 77.8%
+-commutative77.8%
Simplified77.8%
Taylor expanded in EDonor around 0 63.8%
if 3.10000000000000016e-65 < NdChar < 7.99999999999999926e-21Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.5%
Taylor expanded in Ev around inf 75.1%
Taylor expanded in EDonor around 0 76.5%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))))
(if (<= NdChar -8.5e+42)
t_0
(if (<= NdChar 9e-19)
t_1
(if (<= NdChar 9500000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(if (<= NdChar 1e+73) t_1 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NdChar <= -8.5e+42) {
tmp = t_0;
} else if (NdChar <= 9e-19) {
tmp = t_1;
} else if (NdChar <= 9500000000.0) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NdChar <= 1e+73) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
if (ndchar <= (-8.5d+42)) then
tmp = t_0
else if (ndchar <= 9d-19) then
tmp = t_1
else if (ndchar <= 9500000000.0d0) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else if (ndchar <= 1d+73) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
double tmp;
if (NdChar <= -8.5e+42) {
tmp = t_0;
} else if (NdChar <= 9e-19) {
tmp = t_1;
} else if (NdChar <= 9500000000.0) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NdChar <= 1e+73) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) tmp = 0 if NdChar <= -8.5e+42: tmp = t_0 elif NdChar <= 9e-19: tmp = t_1 elif NdChar <= 9500000000.0: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) elif NdChar <= 1e+73: tmp = t_1 else: tmp = 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(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))) tmp = 0.0 if (NdChar <= -8.5e+42) tmp = t_0; elseif (NdChar <= 9e-19) tmp = t_1; elseif (NdChar <= 9500000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); elseif (NdChar <= 1e+73) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); tmp = 0.0; if (NdChar <= -8.5e+42) tmp = t_0; elseif (NdChar <= 9e-19) tmp = t_1; elseif (NdChar <= 9500000000.0) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); elseif (NdChar <= 1e+73) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -8.5e+42], t$95$0, If[LessEqual[NdChar, 9e-19], t$95$1, If[LessEqual[NdChar, 9500000000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1e+73], t$95$1, t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NdChar \leq -8.5 \cdot 10^{+42}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 9 \cdot 10^{-19}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 9500000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq 10^{+73}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -8.5000000000000003e42 or 9.99999999999999983e72 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.1%
Taylor expanded in EAccept around inf 36.1%
associate-/l*34.0%
Simplified34.0%
Taylor expanded in NdChar around inf 74.6%
Simplified74.6%
if -8.5000000000000003e42 < NdChar < 9.00000000000000026e-19 or 9.5e9 < NdChar < 9.99999999999999983e72Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.3%
Taylor expanded in mu around 0 69.5%
if 9.00000000000000026e-19 < NdChar < 9.5e9Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.2%
Final simplification71.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -6.2e+106) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ (- 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 (Ev <= -6.2e+106) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((-Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-6.2d+106)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((-ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6.2e+106) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -6.2e+106: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -6.2e+106) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -6.2e+106) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((-Ec / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -6.2e+106], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -6.2 \cdot 10^{+106}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\end{array}
\end{array}
if Ev < -6.1999999999999999e106Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.5%
Taylor expanded in Ev around inf 61.8%
Taylor expanded in EDonor around 0 46.1%
if -6.1999999999999999e106 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.8%
Taylor expanded in Ec around inf 40.3%
mul-1-neg40.3%
distribute-neg-frac40.3%
Simplified40.3%
Final simplification41.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -1.6e+86) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.6e+86) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-1.6d+86)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.6e+86) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -1.6e+86: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -1.6e+86) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -1.6e+86) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -1.6e+86], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -1.6 \cdot 10^{+86}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if Ev < -1.6e86Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.2%
Taylor expanded in Ev around inf 62.5%
Taylor expanded in EDonor around 0 47.0%
if -1.6e86 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.9%
Taylor expanded in EDonor around inf 40.0%
Final simplification41.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.0%
Taylor expanded in Ev around inf 52.3%
Taylor expanded in EDonor around 0 40.5%
Final simplification40.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 1.1e+171) (+ (/ NaChar 2.0) (* NdChar 0.5)) (/ KbT (/ Vef NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.1e+171) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = KbT / (Vef / NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= 1.1d+171) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else
tmp = kbt / (vef / nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.1e+171) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = KbT / (Vef / NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 1.1e+171: tmp = (NaChar / 2.0) + (NdChar * 0.5) else: tmp = KbT / (Vef / NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 1.1e+171) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); else tmp = Float64(KbT / Float64(Vef / NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 1.1e+171) tmp = (NaChar / 2.0) + (NdChar * 0.5); else tmp = KbT / (Vef / NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 1.1e+171], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(KbT / N[(Vef / NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 1.1 \cdot 10^{+171}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT}{\frac{Vef}{NaChar}}\\
\end{array}
\end{array}
if Vef < 1.1e171Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.5%
Taylor expanded in KbT around inf 34.4%
if 1.1e171 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.2%
Taylor expanded in Vef around inf 39.9%
Taylor expanded in NdChar around 0 23.3%
associate-*l/26.8%
Simplified26.8%
associate-*l/23.3%
associate-/l*26.8%
Applied egg-rr26.8%
Final simplification33.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* KbT (/ NaChar Vef)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return KbT * (NaChar / Vef);
}
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 = kbt * (nachar / vef)
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 KbT * (NaChar / Vef);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return KbT * (NaChar / Vef)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(KbT * Float64(NaChar / Vef)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = KbT * (NaChar / Vef); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(KbT * N[(NaChar / Vef), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
KbT \cdot \frac{NaChar}{Vef}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in Vef around inf 25.9%
Taylor expanded in NdChar around 0 7.4%
associate-*l/7.5%
Simplified7.5%
Taylor expanded in KbT around 0 7.4%
*-commutative7.4%
associate-*l/7.9%
*-commutative7.9%
Simplified7.9%
Final simplification7.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (/ KbT (/ Vef NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return KbT / (Vef / 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 = kbt / (vef / 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 KbT / (Vef / NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return KbT / (Vef / NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(KbT / Float64(Vef / NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = KbT / (Vef / NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(KbT / N[(Vef / NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{KbT}{\frac{Vef}{NaChar}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in Vef around inf 25.9%
Taylor expanded in NdChar around 0 7.4%
associate-*l/7.5%
Simplified7.5%
associate-*l/7.4%
associate-/l*8.2%
Applied egg-rr8.2%
Final simplification8.2%
herbie shell --seed 2024031
(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))))))