
(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 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 / exp(log1p(exp((((Vef + EAccept) + (Ev - 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 + 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 / math.exp(math.log1p(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 / exp(log1p(exp(Float64(Float64(Float64(Vef + EAccept) + Float64(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[Exp[N[Log[1 + N[Exp[N[(N[(N[(Vef + EAccept), $MachinePrecision] + N[(Ev - mu), $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{\left(Vef + EAccept\right) + \left(Ev - mu\right)}{KbT}}\right)}}
\end{array}
Initial program 100.0%
Simplified100.0%
add-exp-log100.0%
log1p-udef100.0%
Applied egg-rr100.0%
associate-+r+100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -1.45e+51)
t_2
(if (<= EDonor -2.1e-90)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= EDonor -5.8e-147)
(/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT))))
(if (<= EDonor 5e-126)
(+ t_1 t_0)
(if (<= EDonor 1.15e+162)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -1.45e+51) {
tmp = t_2;
} else if (EDonor <= -2.1e-90) {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (EDonor <= -5.8e-147) {
tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else if (EDonor <= 5e-126) {
tmp = t_1 + t_0;
} else if (EDonor <= 1.15e+162) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-1.45d+51)) then
tmp = t_2
else if (edonor <= (-2.1d-90)) then
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (edonor <= (-5.8d-147)) then
tmp = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
else if (edonor <= 5d-126) then
tmp = t_1 + t_0
else if (edonor <= 1.15d+162) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -1.45e+51) {
tmp = t_2;
} else if (EDonor <= -2.1e-90) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (EDonor <= -5.8e-147) {
tmp = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else if (EDonor <= 5e-126) {
tmp = t_1 + t_0;
} else if (EDonor <= 1.15e+162) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -1.45e+51: tmp = t_2 elif EDonor <= -2.1e-90: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif EDonor <= -5.8e-147: tmp = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) elif EDonor <= 5e-126: tmp = t_1 + t_0 elif EDonor <= 1.15e+162: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -1.45e+51) tmp = t_2; elseif (EDonor <= -2.1e-90) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (EDonor <= -5.8e-147) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Float64(EDonor + Vef)) - Ec) / KbT)))); elseif (EDonor <= 5e-126) tmp = Float64(t_1 + t_0); elseif (EDonor <= 1.15e+162) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -1.45e+51) tmp = t_2; elseif (EDonor <= -2.1e-90) tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (EDonor <= -5.8e-147) tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); elseif (EDonor <= 5e-126) tmp = t_1 + t_0; elseif (EDonor <= 1.15e+162) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.45e+51], t$95$2, If[LessEqual[EDonor, -2.1e-90], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -5.8e-147], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + N[(EDonor + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 5e-126], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[EDonor, 1.15e+162], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.45 \cdot 10^{+51}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EDonor \leq -2.1 \cdot 10^{-90}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;EDonor \leq -5.8 \cdot 10^{-147}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 5 \cdot 10^{-126}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;EDonor \leq 1.15 \cdot 10^{+162}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EDonor < -1.4499999999999999e51 or 1.14999999999999997e162 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 92.7%
if -1.4499999999999999e51 < EDonor < -2.0999999999999999e-90Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.0%
Taylor expanded in EAccept around 0 78.5%
+-commutative57.3%
+-commutative57.3%
Simplified78.5%
if -2.0999999999999999e-90 < EDonor < -5.8000000000000002e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.3%
Taylor expanded in EAccept around inf 25.6%
associate-/l*25.6%
Simplified25.6%
Taylor expanded in NdChar around inf 78.5%
Simplified78.5%
if -5.8000000000000002e-147 < EDonor < 5.00000000000000006e-126Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.3%
if 5.00000000000000006e-126 < EDonor < 1.14999999999999997e162Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.6%
Final simplification85.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
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))))
(if (<= NdChar -6.1e+47)
t_0
(if (<= NdChar -4.6e-76)
t_1
(if (<= NdChar 1e-19)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 1.05e+16)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 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 <= -4.6e-76) {
tmp = t_1;
} else if (NdChar <= 1e-19) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.05e+16) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 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 <= (-4.6d-76)) then
tmp = t_1
else if (ndchar <= 1d-19) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 1.05d+16) 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 <= 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 <= -4.6e-76) {
tmp = t_1;
} else if (NdChar <= 1e-19) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.05e+16) {
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 <= 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 <= -4.6e-76: tmp = t_1 elif NdChar <= 1e-19: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 1.05e+16: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 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 <= -4.6e-76) tmp = t_1; elseif (NdChar <= 1e-19) 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.05e+16) 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 <= 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 <= -4.6e-76) tmp = t_1; elseif (NdChar <= 1e-19) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 1.05e+16) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 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, -4.6e-76], t$95$1, If[LessEqual[NdChar, 1e-19], 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.05e+16], 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, 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 -4.6 \cdot 10^{-76}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 10^{-19}:\\
\;\;\;\;\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.05 \cdot 10^{+16}:\\
\;\;\;\;\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 5 \cdot 10^{+73}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -6.10000000000000019e47 or 4.99999999999999976e73 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.8%
Taylor expanded in EAccept around inf 37.1%
associate-/l*35.1%
Simplified35.1%
Taylor expanded in NdChar around inf 75.4%
Simplified75.4%
if -6.10000000000000019e47 < NdChar < -4.60000000000000012e-76 or 1.05e16 < NdChar < 4.99999999999999976e73Initial 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 -4.60000000000000012e-76 < NdChar < 9.9999999999999998e-20Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.3%
Taylor expanded in mu around 0 70.9%
if 9.9999999999999998e-20 < NdChar < 1.05e16Initial 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 -3.1e+160)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= Vef -4.6e-43)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 3.9e-53)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.3e+62)
(+
(/ 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 <= -3.1e+160) {
tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -4.6e-43) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 3.9e-53) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.3e+62) {
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 <= (-3.1d+160)) then
tmp = t_1 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (vef <= (-4.6d-43)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 3.9d-53) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.3d+62) 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 <= -3.1e+160) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= -4.6e-43) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 3.9e-53) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.3e+62) {
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 <= -3.1e+160: tmp = t_1 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif Vef <= -4.6e-43: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 3.9e-53: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.3e+62: 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 <= -3.1e+160) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (Vef <= -4.6e-43) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 3.9e-53) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.3e+62) 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 <= -3.1e+160) tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (Vef <= -4.6e-43) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 3.9e-53) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.3e+62) 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, -3.1e+160], 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, -4.6e-43], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.9e-53], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.3e+62], 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 -3.1 \cdot 10^{+160}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq -4.6 \cdot 10^{-43}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 3.9 \cdot 10^{-53}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.3 \cdot 10^{+62}:\\
\;\;\;\;\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 < -3.0999999999999998e160Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 96.5%
Taylor expanded in EAccept around 0 96.5%
+-commutative53.6%
+-commutative53.6%
Simplified96.5%
if -3.0999999999999998e160 < Vef < -4.5999999999999998e-43Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.6%
if -4.5999999999999998e-43 < Vef < 3.9000000000000002e-53Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.3%
if 3.9000000000000002e-53 < Vef < 1.29999999999999992e62Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 75.4%
if 1.29999999999999992e62 < 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
(if (or (<= Vef -2.7e+161) (not (<= Vef 4.6e+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 <= -2.7e+161) || !(Vef <= 4.6e+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 <= (-2.7d+161)) .or. (.not. (vef <= 4.6d+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 <= -2.7e+161) || !(Vef <= 4.6e+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 <= -2.7e+161) or not (Vef <= 4.6e+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 <= -2.7e+161) || !(Vef <= 4.6e+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 <= -2.7e+161) || ~((Vef <= 4.6e+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, -2.7e+161], N[Not[LessEqual[Vef, 4.6e+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 -2.7 \cdot 10^{+161} \lor \neg \left(Vef \leq 4.6 \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 < -2.6999999999999998e161 or 4.5999999999999999e61 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.1%
Taylor expanded in EAccept around 0 85.1%
+-commutative57.4%
+-commutative57.4%
Simplified85.1%
if -2.6999999999999998e161 < Vef < 4.5999999999999999e61Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.7%
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)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -2.1e+159)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= Vef 6.2e+61)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor 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.1e+159) {
tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= 6.2e+61) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / 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.1d+159)) then
tmp = t_1 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (vef <= 6.2d+61) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / 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.1e+159) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (Vef <= 6.2e+61) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / 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.1e+159: tmp = t_1 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif Vef <= 6.2e+61: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / 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.1e+159) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (Vef <= 6.2e+61) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / 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.1e+159) tmp = t_1 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (Vef <= 6.2e+61) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / 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.1e+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, 6.2e+61], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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.1 \cdot 10^{+159}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 6.2 \cdot 10^{+61}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + t\_1\\
\end{array}
\end{array}
if Vef < -2.09999999999999989e159Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 96.5%
Taylor expanded in EAccept around 0 96.5%
+-commutative53.6%
+-commutative53.6%
Simplified96.5%
if -2.09999999999999989e159 < Vef < 6.1999999999999998e61Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.7%
if 6.1999999999999998e61 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.5%
Final simplification80.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))
(if (or (<= Vef -1.65e+131) (not (<= Vef 9.2e+61)))
(+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double tmp;
if ((Vef <= -1.65e+131) || !(Vef <= 9.2e+61)) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
if ((vef <= (-1.65d+131)) .or. (.not. (vef <= 9.2d+61))) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
else
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double tmp;
if ((Vef <= -1.65e+131) || !(Vef <= 9.2e+61)) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) tmp = 0 if (Vef <= -1.65e+131) or not (Vef <= 9.2e+61): tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 else: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) tmp = 0.0 if ((Vef <= -1.65e+131) || !(Vef <= 9.2e+61)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); tmp = 0.0; if ((Vef <= -1.65e+131) || ~((Vef <= 9.2e+61))) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; else tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -1.65e+131], N[Not[LessEqual[Vef, 9.2e+61]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.65 \cdot 10^{+131} \lor \neg \left(Vef \leq 9.2 \cdot 10^{+61}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.6499999999999999e131 or 9.1999999999999998e61 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Taylor expanded in EAccept around 0 82.1%
+-commutative57.7%
+-commutative57.7%
Simplified82.1%
if -1.6499999999999999e131 < Vef < 9.1999999999999998e61Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.3%
Taylor expanded in EAccept around 0 67.9%
+-commutative67.9%
+-commutative67.9%
Simplified67.9%
Final simplification72.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 (<= Vef -2.7e+119)
(/ NdChar (+ 1.0 (exp (/ (- (+ mu (+ EDonor Vef)) Ec) KbT))))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef 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 <= -2.7e+119) {
tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((((Vef + 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 <= (-2.7d+119)) then
tmp = ndchar / (1.0d0 + exp((((mu + (edonor + vef)) - ec) / kbt)))
else
tmp = (nachar / (1.0d0 + exp((((vef + 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 <= -2.7e+119) {
tmp = NdChar / (1.0 + Math.exp((((mu + (EDonor + Vef)) - Ec) / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + 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 <= -2.7e+119: tmp = NdChar / (1.0 + math.exp((((mu + (EDonor + Vef)) - Ec) / KbT))) else: tmp = (NaChar / (1.0 + math.exp((((Vef + 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 <= -2.7e+119) 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(Float64(Vef + 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 <= -2.7e+119) tmp = NdChar / (1.0 + exp((((mu + (EDonor + Vef)) - Ec) / KbT))); else tmp = (NaChar / (1.0 + exp((((Vef + 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[LessEqual[Vef, -2.7e+119], 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[(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]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.7 \cdot 10^{+119}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + \left(EDonor + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.6999999999999998e119Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.0%
Taylor expanded in EAccept around inf 26.2%
associate-/l*31.3%
Simplified31.3%
Taylor expanded in NdChar around inf 77.8%
Simplified77.8%
if -2.6999999999999998e119 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.8%
Taylor expanded in EAccept around 0 66.0%
+-commutative66.0%
+-commutative66.0%
Simplified66.0%
Final simplification67.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.05e+33)
(and (not (<= NdChar -3.6e-252))
(or (<= NdChar -1.22e-261)
(and (not (<= NdChar 3.9e-132))
(or (<= NdChar 1.15e-64)
(and (not (<= NdChar 1.05e-22))
(or (<= NdChar 26000000000.0)
(not (<= 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 <= -1.05e+33) || (!(NdChar <= -3.6e-252) && ((NdChar <= -1.22e-261) || (!(NdChar <= 3.9e-132) && ((NdChar <= 1.15e-64) || (!(NdChar <= 1.05e-22) && ((NdChar <= 26000000000.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 <= (-1.05d+33)) .or. (.not. (ndchar <= (-3.6d-252))) .and. (ndchar <= (-1.22d-261)) .or. (.not. (ndchar <= 3.9d-132)) .and. (ndchar <= 1.15d-64) .or. (.not. (ndchar <= 1.05d-22)) .and. (ndchar <= 26000000000.0d0) .or. (.not. (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 <= -1.05e+33) || (!(NdChar <= -3.6e-252) && ((NdChar <= -1.22e-261) || (!(NdChar <= 3.9e-132) && ((NdChar <= 1.15e-64) || (!(NdChar <= 1.05e-22) && ((NdChar <= 26000000000.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 <= -1.05e+33) or (not (NdChar <= -3.6e-252) and ((NdChar <= -1.22e-261) or (not (NdChar <= 3.9e-132) and ((NdChar <= 1.15e-64) or (not (NdChar <= 1.05e-22) and ((NdChar <= 26000000000.0) or not (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 <= -1.05e+33) || (!(NdChar <= -3.6e-252) && ((NdChar <= -1.22e-261) || (!(NdChar <= 3.9e-132) && ((NdChar <= 1.15e-64) || (!(NdChar <= 1.05e-22) && ((NdChar <= 26000000000.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 <= -1.05e+33) || (~((NdChar <= -3.6e-252)) && ((NdChar <= -1.22e-261) || (~((NdChar <= 3.9e-132)) && ((NdChar <= 1.15e-64) || (~((NdChar <= 1.05e-22)) && ((NdChar <= 26000000000.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, -1.05e+33], And[N[Not[LessEqual[NdChar, -3.6e-252]], $MachinePrecision], Or[LessEqual[NdChar, -1.22e-261], And[N[Not[LessEqual[NdChar, 3.9e-132]], $MachinePrecision], Or[LessEqual[NdChar, 1.15e-64], And[N[Not[LessEqual[NdChar, 1.05e-22]], $MachinePrecision], Or[LessEqual[NdChar, 26000000000.0], N[Not[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 -1.05 \cdot 10^{+33} \lor \neg \left(NdChar \leq -3.6 \cdot 10^{-252}\right) \land \left(NdChar \leq -1.22 \cdot 10^{-261} \lor \neg \left(NdChar \leq 3.9 \cdot 10^{-132}\right) \land \left(NdChar \leq 1.15 \cdot 10^{-64} \lor \neg \left(NdChar \leq 1.05 \cdot 10^{-22}\right) \land \left(NdChar \leq 26000000000 \lor \neg \left(NdChar \leq 1.2 \cdot 10^{+73}\right)\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 < -1.05e33 or -3.60000000000000023e-252 < NdChar < -1.2199999999999999e-261 or 3.89999999999999982e-132 < NdChar < 1.1500000000000001e-64 or 1.05000000000000004e-22 < NdChar < 2.6e10 or 1.20000000000000001e73 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
Taylor expanded in EAccept around inf 34.5%
associate-/l*33.0%
Simplified33.0%
Taylor expanded in NdChar around inf 74.3%
Simplified74.3%
if -1.05e33 < NdChar < -3.60000000000000023e-252 or -1.2199999999999999e-261 < NdChar < 3.89999999999999982e-132 or 1.1500000000000001e-64 < NdChar < 1.05000000000000004e-22 or 2.6e10 < NdChar < 1.20000000000000001e73Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.8%
Taylor expanded in mu around 0 67.5%
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 -2.3e+33)
t_0
(if (<= NdChar -4.5e-103)
t_1
(if (<= NdChar -4.2e-262)
t_0
(if (<= NdChar 1.55e-130)
t_1
(if (or (<= NdChar 5.6e-64) (not (<= NdChar 1.56e-27)))
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 <= -2.3e+33) {
tmp = t_0;
} else if (NdChar <= -4.5e-103) {
tmp = t_1;
} else if (NdChar <= -4.2e-262) {
tmp = t_0;
} else if (NdChar <= 1.55e-130) {
tmp = t_1;
} else if ((NdChar <= 5.6e-64) || !(NdChar <= 1.56e-27)) {
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 <= (-2.3d+33)) then
tmp = t_0
else if (ndchar <= (-4.5d-103)) then
tmp = t_1
else if (ndchar <= (-4.2d-262)) then
tmp = t_0
else if (ndchar <= 1.55d-130) then
tmp = t_1
else if ((ndchar <= 5.6d-64) .or. (.not. (ndchar <= 1.56d-27))) 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 <= -2.3e+33) {
tmp = t_0;
} else if (NdChar <= -4.5e-103) {
tmp = t_1;
} else if (NdChar <= -4.2e-262) {
tmp = t_0;
} else if (NdChar <= 1.55e-130) {
tmp = t_1;
} else if ((NdChar <= 5.6e-64) || !(NdChar <= 1.56e-27)) {
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 <= -2.3e+33: tmp = t_0 elif NdChar <= -4.5e-103: tmp = t_1 elif NdChar <= -4.2e-262: tmp = t_0 elif NdChar <= 1.55e-130: tmp = t_1 elif (NdChar <= 5.6e-64) or not (NdChar <= 1.56e-27): 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 <= -2.3e+33) tmp = t_0; elseif (NdChar <= -4.5e-103) tmp = t_1; elseif (NdChar <= -4.2e-262) tmp = t_0; elseif (NdChar <= 1.55e-130) tmp = t_1; elseif ((NdChar <= 5.6e-64) || !(NdChar <= 1.56e-27)) 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 <= -2.3e+33) tmp = t_0; elseif (NdChar <= -4.5e-103) tmp = t_1; elseif (NdChar <= -4.2e-262) tmp = t_0; elseif (NdChar <= 1.55e-130) tmp = t_1; elseif ((NdChar <= 5.6e-64) || ~((NdChar <= 1.56e-27))) 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, -2.3e+33], t$95$0, If[LessEqual[NdChar, -4.5e-103], t$95$1, If[LessEqual[NdChar, -4.2e-262], t$95$0, If[LessEqual[NdChar, 1.55e-130], t$95$1, If[Or[LessEqual[NdChar, 5.6e-64], N[Not[LessEqual[NdChar, 1.56e-27]], $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 -2.3 \cdot 10^{+33}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -4.5 \cdot 10^{-103}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -4.2 \cdot 10^{-262}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.55 \cdot 10^{-130}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 5.6 \cdot 10^{-64} \lor \neg \left(NdChar \leq 1.56 \cdot 10^{-27}\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 < -2.30000000000000011e33 or -4.5e-103 < NdChar < -4.1999999999999999e-262 or 1.55000000000000005e-130 < NdChar < 5.60000000000000008e-64 or 1.56e-27 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.3%
Taylor expanded in EAccept around inf 30.7%
associate-/l*30.0%
Simplified30.0%
Taylor expanded in NdChar around inf 67.1%
Simplified67.1%
if -2.30000000000000011e33 < NdChar < -4.5e-103 or -4.1999999999999999e-262 < NdChar < 1.55000000000000005e-130Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.3%
Taylor expanded in EAccept around 0 77.5%
+-commutative77.5%
+-commutative77.5%
Simplified77.5%
Taylor expanded in EDonor around 0 63.4%
if 5.60000000000000008e-64 < NdChar < 1.56e-27Initial 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 8.5e-282)
(and (not (<= KbT 1.85e-149))
(or (<= KbT 5.5e+53)
(and (not (<= KbT 2.2e+83)) (<= KbT 1.15e+210)))))
(/ 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 <= 8.5e-282) || (!(KbT <= 1.85e-149) && ((KbT <= 5.5e+53) || (!(KbT <= 2.2e+83) && (KbT <= 1.15e+210))))) {
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 <= 8.5d-282) .or. (.not. (kbt <= 1.85d-149)) .and. (kbt <= 5.5d+53) .or. (.not. (kbt <= 2.2d+83)) .and. (kbt <= 1.15d+210)) 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 <= 8.5e-282) || (!(KbT <= 1.85e-149) && ((KbT <= 5.5e+53) || (!(KbT <= 2.2e+83) && (KbT <= 1.15e+210))))) {
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 <= 8.5e-282) or (not (KbT <= 1.85e-149) and ((KbT <= 5.5e+53) or (not (KbT <= 2.2e+83) and (KbT <= 1.15e+210)))): 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 <= 8.5e-282) || (!(KbT <= 1.85e-149) && ((KbT <= 5.5e+53) || (!(KbT <= 2.2e+83) && (KbT <= 1.15e+210))))) 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 <= 8.5e-282) || (~((KbT <= 1.85e-149)) && ((KbT <= 5.5e+53) || (~((KbT <= 2.2e+83)) && (KbT <= 1.15e+210))))) 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, 8.5e-282], And[N[Not[LessEqual[KbT, 1.85e-149]], $MachinePrecision], Or[LessEqual[KbT, 5.5e+53], And[N[Not[LessEqual[KbT, 2.2e+83]], $MachinePrecision], LessEqual[KbT, 1.15e+210]]]]], 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 8.5 \cdot 10^{-282} \lor \neg \left(KbT \leq 1.85 \cdot 10^{-149}\right) \land \left(KbT \leq 5.5 \cdot 10^{+53} \lor \neg \left(KbT \leq 2.2 \cdot 10^{+83}\right) \land KbT \leq 1.15 \cdot 10^{+210}\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 75.4%
Taylor expanded in EDonor around inf 75.0%
if -7.8000000000000004e130 < KbT < 8.499999999999999e-282 or 1.84999999999999995e-149 < KbT < 5.49999999999999975e53 or 2.19999999999999999e83 < KbT < 1.1499999999999999e210Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.2%
Taylor expanded in EAccept around inf 28.6%
associate-/l*27.3%
Simplified27.3%
Taylor expanded in NdChar around inf 62.6%
Simplified62.6%
if 8.499999999999999e-282 < KbT < 1.84999999999999995e-149 or 5.49999999999999975e53 < KbT < 2.19999999999999999e83 or 1.1499999999999999e210 < 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.8%
(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 -9e+32)
t_0
(if (<= NdChar -2.4e-101)
t_1
(if (<= NdChar -1.22e-261)
t_0
(if (<= NdChar 1.1e-132)
t_1
(if (or (<= NdChar 1.42e-64) (not (<= NdChar 7.5e-27)))
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 <= -9e+32) {
tmp = t_0;
} else if (NdChar <= -2.4e-101) {
tmp = t_1;
} else if (NdChar <= -1.22e-261) {
tmp = t_0;
} else if (NdChar <= 1.1e-132) {
tmp = t_1;
} else if ((NdChar <= 1.42e-64) || !(NdChar <= 7.5e-27)) {
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 <= (-9d+32)) then
tmp = t_0
else if (ndchar <= (-2.4d-101)) then
tmp = t_1
else if (ndchar <= (-1.22d-261)) then
tmp = t_0
else if (ndchar <= 1.1d-132) then
tmp = t_1
else if ((ndchar <= 1.42d-64) .or. (.not. (ndchar <= 7.5d-27))) 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 <= -9e+32) {
tmp = t_0;
} else if (NdChar <= -2.4e-101) {
tmp = t_1;
} else if (NdChar <= -1.22e-261) {
tmp = t_0;
} else if (NdChar <= 1.1e-132) {
tmp = t_1;
} else if ((NdChar <= 1.42e-64) || !(NdChar <= 7.5e-27)) {
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 <= -9e+32: tmp = t_0 elif NdChar <= -2.4e-101: tmp = t_1 elif NdChar <= -1.22e-261: tmp = t_0 elif NdChar <= 1.1e-132: tmp = t_1 elif (NdChar <= 1.42e-64) or not (NdChar <= 7.5e-27): 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 <= -9e+32) tmp = t_0; elseif (NdChar <= -2.4e-101) tmp = t_1; elseif (NdChar <= -1.22e-261) tmp = t_0; elseif (NdChar <= 1.1e-132) tmp = t_1; elseif ((NdChar <= 1.42e-64) || !(NdChar <= 7.5e-27)) 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 <= -9e+32) tmp = t_0; elseif (NdChar <= -2.4e-101) tmp = t_1; elseif (NdChar <= -1.22e-261) tmp = t_0; elseif (NdChar <= 1.1e-132) tmp = t_1; elseif ((NdChar <= 1.42e-64) || ~((NdChar <= 7.5e-27))) 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, -9e+32], t$95$0, If[LessEqual[NdChar, -2.4e-101], t$95$1, If[LessEqual[NdChar, -1.22e-261], t$95$0, If[LessEqual[NdChar, 1.1e-132], t$95$1, If[Or[LessEqual[NdChar, 1.42e-64], N[Not[LessEqual[NdChar, 7.5e-27]], $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 -9 \cdot 10^{+32}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -2.4 \cdot 10^{-101}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -1.22 \cdot 10^{-261}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.1 \cdot 10^{-132}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 1.42 \cdot 10^{-64} \lor \neg \left(NdChar \leq 7.5 \cdot 10^{-27}\right):\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -9.0000000000000007e32 or -2.4e-101 < NdChar < -1.2199999999999999e-261 or 1.09999999999999995e-132 < NdChar < 1.42000000000000006e-64 or 7.50000000000000029e-27 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.3%
Taylor expanded in EAccept around inf 30.7%
associate-/l*30.0%
Simplified30.0%
Taylor expanded in NdChar around inf 67.1%
Simplified67.1%
if -9.0000000000000007e32 < NdChar < -2.4e-101 or -1.2199999999999999e-261 < NdChar < 1.09999999999999995e-132Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.3%
Taylor expanded in EAccept around 0 77.5%
+-commutative77.5%
+-commutative77.5%
Simplified77.5%
Taylor expanded in EDonor around 0 63.4%
if 1.42000000000000006e-64 < NdChar < 7.50000000000000029e-27Initial 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 -2.5e+46)
t_0
(if (<= NdChar 9.5e-19)
t_1
(if (<= NdChar 11500000000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(if (<= NdChar 1.05e+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 <= -2.5e+46) {
tmp = t_0;
} else if (NdChar <= 9.5e-19) {
tmp = t_1;
} else if (NdChar <= 11500000000.0) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NdChar <= 1.05e+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 <= (-2.5d+46)) then
tmp = t_0
else if (ndchar <= 9.5d-19) then
tmp = t_1
else if (ndchar <= 11500000000.0d0) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else if (ndchar <= 1.05d+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 <= -2.5e+46) {
tmp = t_0;
} else if (NdChar <= 9.5e-19) {
tmp = t_1;
} else if (NdChar <= 11500000000.0) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else if (NdChar <= 1.05e+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 <= -2.5e+46: tmp = t_0 elif NdChar <= 9.5e-19: tmp = t_1 elif NdChar <= 11500000000.0: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) elif NdChar <= 1.05e+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 <= -2.5e+46) tmp = t_0; elseif (NdChar <= 9.5e-19) tmp = t_1; elseif (NdChar <= 11500000000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); elseif (NdChar <= 1.05e+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 <= -2.5e+46) tmp = t_0; elseif (NdChar <= 9.5e-19) tmp = t_1; elseif (NdChar <= 11500000000.0) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); elseif (NdChar <= 1.05e+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, -2.5e+46], t$95$0, If[LessEqual[NdChar, 9.5e-19], t$95$1, If[LessEqual[NdChar, 11500000000.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, 1.05e+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 -2.5 \cdot 10^{+46}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{-19}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq 11500000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+73}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -2.5000000000000001e46 or 1.0500000000000001e73 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
Taylor expanded in EAccept around inf 36.7%
associate-/l*34.7%
Simplified34.7%
Taylor expanded in NdChar around inf 74.9%
Simplified74.9%
if -2.5000000000000001e46 < NdChar < 9.4999999999999995e-19 or 1.15e10 < NdChar < 1.0500000000000001e73Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.2%
Taylor expanded in mu around 0 69.3%
if 9.4999999999999995e-19 < NdChar < 1.15e10Initial 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 -4.8e+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 <= -4.8e+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 <= (-4.8d+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 <= -4.8e+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 <= -4.8e+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 <= -4.8e+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 <= -4.8e+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, -4.8e+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 -4.8 \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 < -4.8000000000000001e106Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.8%
Taylor expanded in Ev around inf 60.9%
Taylor expanded in EDonor around 0 44.8%
if -4.8000000000000001e106 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.1%
Taylor expanded in Ec around inf 40.6%
mul-1-neg40.6%
distribute-neg-frac40.6%
Simplified40.6%
Final simplification41.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -6.8e+85) (+ (/ 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 <= -6.8e+85) {
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 <= (-6.8d+85)) 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 <= -6.8e+85) {
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 <= -6.8e+85: 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 <= -6.8e+85) 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 <= -6.8e+85) 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, -6.8e+85], 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 -6.8 \cdot 10^{+85}:\\
\;\;\;\;\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 < -6.8000000000000007e85Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 71.6%
Taylor expanded in Ev around inf 61.7%
Taylor expanded in EDonor around 0 45.9%
if -6.8000000000000007e85 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.2%
Taylor expanded in EDonor around inf 40.3%
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 3.4e+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 <= 3.4e+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 <= 3.4d+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 <= 3.4e+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 <= 3.4e+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 <= 3.4e+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 <= 3.4e+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, 3.4e+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 3.4 \cdot 10^{+171}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT}{\frac{Vef}{NaChar}}\\
\end{array}
\end{array}
if Vef < 3.4000000000000001e171Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.9%
Taylor expanded in KbT around inf 34.7%
if 3.4000000000000001e171 < 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.8%
(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 52.0%
Taylor expanded in Vef around inf 26.2%
Taylor expanded in NdChar around 0 7.4%
associate-*l/7.4%
Simplified7.4%
Taylor expanded in KbT around 0 7.4%
*-commutative7.4%
associate-*l/7.8%
*-commutative7.8%
Simplified7.8%
Final simplification7.8%
(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 52.0%
Taylor expanded in Vef around inf 26.2%
Taylor expanded in NdChar around 0 7.4%
associate-*l/7.4%
Simplified7.4%
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))))))