
(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 29 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 (cbrt (pow (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))) 3.0)))))
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 / cbrt(pow((1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))), 3.0)));
}
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.cbrt(Math.pow((1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))), 3.0)));
}
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 / cbrt((Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))) ^ 3.0)))) 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[Power[N[Power[N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\sqrt[3]{{\left(1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}\right)}^{3}}}
\end{array}
Initial program 100.0%
Simplified100.0%
add-cbrt-cube100.0%
pow3100.0%
+-commutative100.0%
*-un-lft-identity100.0%
*-un-lft-identity100.0%
+-commutative100.0%
associate-+l-100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(t_3 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= mu -4.7e+179)
t_1
(if (<= mu -2.6e+57)
t_2
(if (<= mu -2.15e-45)
t_3
(if (<= mu -3.2e-241) t_2 (if (<= mu 1.1e-41) t_3 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((mu / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double t_3 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (mu <= -4.7e+179) {
tmp = t_1;
} else if (mu <= -2.6e+57) {
tmp = t_2;
} else if (mu <= -2.15e-45) {
tmp = t_3;
} else if (mu <= -3.2e-241) {
tmp = t_2;
} else if (mu <= 1.1e-41) {
tmp = t_3;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
t_3 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (mu <= (-4.7d+179)) then
tmp = t_1
else if (mu <= (-2.6d+57)) then
tmp = t_2
else if (mu <= (-2.15d-45)) then
tmp = t_3
else if (mu <= (-3.2d-241)) then
tmp = t_2
else if (mu <= 1.1d-41) then
tmp = t_3
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double t_3 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (mu <= -4.7e+179) {
tmp = t_1;
} else if (mu <= -2.6e+57) {
tmp = t_2;
} else if (mu <= -2.15e-45) {
tmp = t_3;
} else if (mu <= -3.2e-241) {
tmp = t_2;
} else if (mu <= 1.1e-41) {
tmp = t_3;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) t_3 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if mu <= -4.7e+179: tmp = t_1 elif mu <= -2.6e+57: tmp = t_2 elif mu <= -2.15e-45: tmp = t_3 elif mu <= -3.2e-241: tmp = t_2 elif mu <= 1.1e-41: tmp = t_3 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) t_3 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (mu <= -4.7e+179) tmp = t_1; elseif (mu <= -2.6e+57) tmp = t_2; elseif (mu <= -2.15e-45) tmp = t_3; elseif (mu <= -3.2e-241) tmp = t_2; elseif (mu <= 1.1e-41) tmp = t_3; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); t_3 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (mu <= -4.7e+179) tmp = t_1; elseif (mu <= -2.6e+57) tmp = t_2; elseif (mu <= -2.15e-45) tmp = t_3; elseif (mu <= -3.2e-241) tmp = t_2; elseif (mu <= 1.1e-41) tmp = t_3; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.7e+179], t$95$1, If[LessEqual[mu, -2.6e+57], t$95$2, If[LessEqual[mu, -2.15e-45], t$95$3, If[LessEqual[mu, -3.2e-241], t$95$2, If[LessEqual[mu, 1.1e-41], t$95$3, t$95$1]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_3 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -4.7 \cdot 10^{+179}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -2.6 \cdot 10^{+57}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2.15 \cdot 10^{-45}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;mu \leq -3.2 \cdot 10^{-241}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq 1.1 \cdot 10^{-41}:\\
\;\;\;\;t_3\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if mu < -4.70000000000000007e179 or 1.1e-41 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.8%
Taylor expanded in Ev around 0 85.0%
+-commutative38.6%
sub-neg38.6%
associate-+l+38.6%
mul-1-neg38.6%
+-commutative38.6%
mul-1-neg38.6%
sub-neg38.6%
associate--r-38.6%
Simplified85.0%
if -4.70000000000000007e179 < mu < -2.6e57 or -2.1499999999999999e-45 < mu < -3.2e-241Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 82.4%
if -2.6e57 < mu < -2.1499999999999999e-45 or -3.2e-241 < mu < 1.1e-41Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.4%
Final simplification84.4%
(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 mu)) KbT))))))
(if (<= Vef -1.7e+136)
(+ t_1 t_0)
(if (<= Vef -2.7e-196)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1)
(if (<= Vef -5.8e-265)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= Vef 3.3e+120)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_1)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (- Vef mu)) KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)));
double tmp;
if (Vef <= -1.7e+136) {
tmp = t_1 + t_0;
} else if (Vef <= -2.7e-196) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1;
} else if (Vef <= -5.8e-265) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
} else if (Vef <= 3.3e+120) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))
if (vef <= (-1.7d+136)) then
tmp = t_1 + t_0
else if (vef <= (-2.7d-196)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_1
else if (vef <= (-5.8d-265)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
else if (vef <= 3.3d+120) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_1
else
tmp = t_0 + (nachar / (1.0d0 + exp(((ev + (vef - mu)) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)));
double tmp;
if (Vef <= -1.7e+136) {
tmp = t_1 + t_0;
} else if (Vef <= -2.7e-196) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_1;
} else if (Vef <= -5.8e-265) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
} else if (Vef <= 3.3e+120) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp(((Ev + (Vef - mu)) / KbT))));
}
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 - mu)) / KbT))) tmp = 0 if Vef <= -1.7e+136: tmp = t_1 + t_0 elif Vef <= -2.7e-196: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_1 elif Vef <= -5.8e-265: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))) elif Vef <= 3.3e+120: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_1 else: tmp = t_0 + (NaChar / (1.0 + math.exp(((Ev + (Vef - mu)) / KbT)))) 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 - mu)) / KbT)))) tmp = 0.0 if (Vef <= -1.7e+136) tmp = Float64(t_1 + t_0); elseif (Vef <= -2.7e-196) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_1); elseif (Vef <= -5.8e-265) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (Vef <= 3.3e+120) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_1); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef - mu)) / KbT))))); 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 - mu)) / KbT))); tmp = 0.0; if (Vef <= -1.7e+136) tmp = t_1 + t_0; elseif (Vef <= -2.7e-196) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_1; elseif (Vef <= -5.8e-265) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))); elseif (Vef <= 3.3e+120) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_1; else tmp = t_0 + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.7e+136], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, -2.7e-196], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[Vef, -5.8e-265], 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[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.3e+120], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\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 - mu\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.7 \cdot 10^{+136}:\\
\;\;\;\;t_1 + t_0\\
\mathbf{elif}\;Vef \leq -2.7 \cdot 10^{-196}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t_1\\
\mathbf{elif}\;Vef \leq -5.8 \cdot 10^{-265}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;Vef \leq 3.3 \cdot 10^{+120}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef - mu\right)}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.69999999999999998e136Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.4%
Taylor expanded in Ev around 0 79.0%
+-commutative31.6%
sub-neg31.6%
associate-+l+31.6%
mul-1-neg31.6%
+-commutative31.6%
mul-1-neg31.6%
sub-neg31.6%
associate--r-31.6%
Simplified79.0%
if -1.69999999999999998e136 < Vef < -2.69999999999999982e-196Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 73.9%
Taylor expanded in Ev around 0 69.5%
+-commutative24.0%
sub-neg24.0%
associate-+l+24.0%
mul-1-neg24.0%
+-commutative24.0%
mul-1-neg24.0%
sub-neg24.0%
associate--r-24.0%
Simplified69.5%
if -2.69999999999999982e-196 < Vef < -5.7999999999999995e-265Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.5%
associate-+r+71.5%
Simplified71.5%
Taylor expanded in EDonor around inf 83.8%
if -5.7999999999999995e-265 < Vef < 3.29999999999999991e120Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 77.0%
Taylor expanded in Ev around 0 72.7%
+-commutative32.6%
sub-neg32.6%
associate-+l+32.6%
mul-1-neg32.6%
+-commutative32.6%
mul-1-neg32.6%
sub-neg32.6%
associate--r-32.6%
Simplified72.7%
if 3.29999999999999991e120 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.9%
Taylor expanded in EAccept around 0 91.6%
+-commutative40.2%
associate--l+40.2%
Simplified91.6%
Final simplification75.8%
(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
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT)))))))
(if (<= NaChar -1.15e-141)
t_0
(if (<= NaChar 1.95e-218)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NaChar 2.3e+62)
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (- (+ 2.0 (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT))));
double tmp;
if (NaChar <= -1.15e-141) {
tmp = t_0;
} else if (NaChar <= 1.95e-218) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 2.3e+62) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt))))
if (nachar <= (-1.15d-141)) then
tmp = t_0
else if (nachar <= 1.95d-218) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (nachar <= 2.3d+62) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((2.0d0 + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT))));
double tmp;
if (NaChar <= -1.15e-141) {
tmp = t_0;
} else if (NaChar <= 1.95e-218) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 2.3e+62) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) tmp = 0 if NaChar <= -1.15e-141: tmp = t_0 elif NaChar <= 1.95e-218: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NaChar <= 2.3e+62: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT))))) tmp = 0.0 if (NaChar <= -1.15e-141) tmp = t_0; elseif (NaChar <= 1.95e-218) 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 (NaChar <= 2.3e+62) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))); tmp = 0.0; if (NaChar <= -1.15e-141) tmp = t_0; elseif (NaChar <= 1.95e-218) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NaChar <= 2.3e+62) tmp = t_0; else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.15e-141], t$95$0, If[LessEqual[NaChar, 1.95e-218], 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[NaChar, 2.3e+62], t$95$0, 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[(N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.15 \cdot 10^{-141}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.95 \cdot 10^{-218}:\\
\;\;\;\;\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}\;NaChar \leq 2.3 \cdot 10^{+62}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(2 + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -1.14999999999999997e-141 or 1.95e-218 < NaChar < 2.29999999999999984e62Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 75.1%
Taylor expanded in Ev around 0 70.0%
+-commutative31.2%
sub-neg31.2%
associate-+l+31.2%
mul-1-neg31.2%
+-commutative31.2%
mul-1-neg31.2%
sub-neg31.2%
associate--r-31.2%
Simplified70.0%
if -1.14999999999999997e-141 < NaChar < 1.95e-218Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.9%
if 2.29999999999999984e62 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.8%
associate-+r+75.8%
Simplified75.8%
Taylor expanded in EDonor around 0 75.9%
Final simplification72.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -2.15e-153)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Ev (- Vef mu)) KbT)))))
(if (<= NaChar 8e-219)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NaChar 8e+63)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (- (+ 2.0 (+ (/ mu KbT) (/ Vef KbT))) (/ 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 (NaChar <= -2.15e-153) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT))));
} else if (NaChar <= 8e-219) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 8e+63) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (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 (nachar <= (-2.15d-153)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp(((ev + (vef - mu)) / kbt))))
else if (nachar <= 8d-219) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (nachar <= 8d+63) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((2.0d0 + ((mu / kbt) + (vef / kbt))) - (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 (NaChar <= -2.15e-153) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp(((Ev + (Vef - mu)) / KbT))));
} else if (NaChar <= 8e-219) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 8e+63) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -2.15e-153: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp(((Ev + (Vef - mu)) / KbT)))) elif NaChar <= 8e-219: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NaChar <= 8e+63: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -2.15e-153) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef - mu)) / KbT))))); elseif (NaChar <= 8e-219) 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 (NaChar <= 8e+63) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -2.15e-153) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT)))); elseif (NaChar <= 8e-219) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NaChar <= 8e+63) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -2.15e-153], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8e-219], 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[NaChar, 8e+63], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $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[(N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.15 \cdot 10^{-153}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef - mu\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 8 \cdot 10^{-219}:\\
\;\;\;\;\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}\;NaChar \leq 8 \cdot 10^{+63}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(2 + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -2.15e-153Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 73.9%
Taylor expanded in EAccept around 0 66.2%
+-commutative33.7%
associate--l+33.7%
Simplified66.2%
if -2.15e-153 < NaChar < 8.0000000000000003e-219Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.7%
if 8.0000000000000003e-219 < NaChar < 8.00000000000000046e63Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.5%
Taylor expanded in Ev around 0 67.8%
+-commutative26.1%
sub-neg26.1%
associate-+l+26.1%
mul-1-neg26.1%
+-commutative26.1%
mul-1-neg26.1%
sub-neg26.1%
associate--r-26.1%
Simplified67.8%
if 8.00000000000000046e63 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.8%
associate-+r+75.8%
Simplified75.8%
Taylor expanded in EDonor around 0 75.9%
Final simplification70.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= mu -1.12e+136) (not (<= mu 9.2e-42)))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept 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 ((mu <= -1.12e+136) || !(mu <= 9.2e-42)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - 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 ((mu <= (-1.12d+136)) .or. (.not. (mu <= 9.2d-42))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept - 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 ((mu <= -1.12e+136) || !(mu <= 9.2e-42)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept - 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 (mu <= -1.12e+136) or not (mu <= 9.2e-42): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept - 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 ((mu <= -1.12e+136) || !(mu <= 9.2e-42)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - 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 ((mu <= -1.12e+136) || ~((mu <= 9.2e-42))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept - 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[mu, -1.12e+136], N[Not[LessEqual[mu, 9.2e-42]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $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}\;mu \leq -1.12 \cdot 10^{+136} \lor \neg \left(mu \leq 9.2 \cdot 10^{-42}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{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 mu < -1.12000000000000001e136 or 9.20000000000000015e-42 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.1%
Taylor expanded in Ev around 0 85.7%
+-commutative42.6%
sub-neg42.6%
associate-+l+42.6%
mul-1-neg42.6%
+-commutative42.6%
mul-1-neg42.6%
sub-neg42.6%
associate--r-42.6%
Simplified85.7%
if -1.12000000000000001e136 < mu < 9.20000000000000015e-42Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 76.2%
Final simplification80.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))))))
(if (or (<= mu -1.9e+63) (not (<= mu 5.2e-42)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+ 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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((mu <= -1.9e+63) || !(mu <= 5.2e-42)) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} 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 + (eaccept + (ev - mu))) / kbt)))
if ((mu <= (-1.9d+63)) .or. (.not. (mu <= 5.2d-42))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((mu <= -1.9e+63) || !(mu <= 5.2e-42)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} 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 + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if (mu <= -1.9e+63) or not (mu <= 5.2e-42): tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) 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(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if ((mu <= -1.9e+63) || !(mu <= 5.2e-42)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); 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 + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if ((mu <= -1.9e+63) || ~((mu <= 5.2e-42))) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); 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[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[mu, -1.9e+63], N[Not[LessEqual[mu, 5.2e-42]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $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{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -1.9 \cdot 10^{+63} \lor \neg \left(mu \leq 5.2 \cdot 10^{-42}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if mu < -1.9000000000000001e63 or 5.2e-42 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 87.2%
if -1.9000000000000001e63 < mu < 5.2e-42Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.1%
Final simplification82.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -4.7e+170)
(+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT)))) t_0)
(if (<= Vef 2.6e+124)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ EAccept (- Ev mu)) KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (+ Ev (- Vef mu)) KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -4.7e+170) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + t_0;
} else if (Vef <= 2.6e+124) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp(((EAccept + (Ev - mu)) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-4.7d+170)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))) + t_0
else if (vef <= 2.6d+124) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 + exp(((eaccept + (ev - mu)) / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp(((ev + (vef - mu)) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -4.7e+170) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)))) + t_0;
} else if (Vef <= 2.6e+124) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 + Math.exp(((EAccept + (Ev - mu)) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp(((Ev + (Vef - mu)) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -4.7e+170: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) + t_0 elif Vef <= 2.6e+124: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (1.0 + math.exp(((EAccept + (Ev - mu)) / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp(((Ev + (Vef - mu)) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -4.7e+170) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT)))) + t_0); elseif (Vef <= 2.6e+124) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(EAccept + Float64(Ev - mu)) / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef - mu)) / KbT))))); 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))); tmp = 0.0; if (Vef <= -4.7e+170) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + t_0; elseif (Vef <= 2.6e+124) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp(((EAccept + (Ev - mu)) / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.7e+170], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 2.6e+124], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -4.7 \cdot 10^{+170}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}} + t_0\\
\mathbf{elif}\;Vef \leq 2.6 \cdot 10^{+124}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept + \left(Ev - mu\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev + \left(Vef - mu\right)}{KbT}}}\\
\end{array}
\end{array}
if Vef < -4.70000000000000004e170Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 96.7%
Taylor expanded in Ev around 0 86.8%
+-commutative36.4%
sub-neg36.4%
associate-+l+36.4%
mul-1-neg36.4%
+-commutative36.4%
mul-1-neg36.4%
sub-neg36.4%
associate--r-36.4%
Simplified86.8%
if -4.70000000000000004e170 < Vef < 2.6e124Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 72.9%
associate-*r/39.0%
mul-1-neg39.0%
Simplified72.9%
Taylor expanded in Vef around 0 72.0%
+-commutative72.0%
associate--l+72.0%
Simplified72.0%
if 2.6e124 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.9%
Taylor expanded in EAccept around 0 91.6%
+-commutative40.2%
associate--l+40.2%
Simplified91.6%
Final simplification76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ mu KbT) (/ Vef KbT)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_3 (+ t_2 (/ NdChar (- (+ 2.0 t_0) (/ Ec KbT))))))
(if (<= NaChar -8.5e-33)
t_3
(if (<= NaChar 1.95e-218)
(+
t_1
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NaChar 9.2e+21)
(+
t_2
(/ NdChar (+ 1.0 (- (+ (+ 1.0 (/ EDonor KbT)) t_0) (/ Ec KbT)))))
(if (<= NaChar 1.25e+32) (+ t_1 (/ NaChar 2.0)) t_3))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (mu / KbT) + (Vef / KbT);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_3 = t_2 + (NdChar / ((2.0 + t_0) - (Ec / KbT)));
double tmp;
if (NaChar <= -8.5e-33) {
tmp = t_3;
} else if (NaChar <= 1.95e-218) {
tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 9.2e+21) {
tmp = t_2 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + t_0) - (Ec / KbT))));
} else if (NaChar <= 1.25e+32) {
tmp = t_1 + (NaChar / 2.0);
} else {
tmp = t_3;
}
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) :: t_3
real(8) :: tmp
t_0 = (mu / kbt) + (vef / kbt)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_2 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_3 = t_2 + (ndchar / ((2.0d0 + t_0) - (ec / kbt)))
if (nachar <= (-8.5d-33)) then
tmp = t_3
else if (nachar <= 1.95d-218) then
tmp = t_1 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (nachar <= 9.2d+21) then
tmp = t_2 + (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + t_0) - (ec / kbt))))
else if (nachar <= 1.25d+32) then
tmp = t_1 + (nachar / 2.0d0)
else
tmp = t_3
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 = (mu / KbT) + (Vef / KbT);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_3 = t_2 + (NdChar / ((2.0 + t_0) - (Ec / KbT)));
double tmp;
if (NaChar <= -8.5e-33) {
tmp = t_3;
} else if (NaChar <= 1.95e-218) {
tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 9.2e+21) {
tmp = t_2 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + t_0) - (Ec / KbT))));
} else if (NaChar <= 1.25e+32) {
tmp = t_1 + (NaChar / 2.0);
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (mu / KbT) + (Vef / KbT) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_2 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_3 = t_2 + (NdChar / ((2.0 + t_0) - (Ec / KbT))) tmp = 0 if NaChar <= -8.5e-33: tmp = t_3 elif NaChar <= 1.95e-218: tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NaChar <= 9.2e+21: tmp = t_2 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + t_0) - (Ec / KbT)))) elif NaChar <= 1.25e+32: tmp = t_1 + (NaChar / 2.0) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(mu / KbT) + Float64(Vef / KbT)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_3 = Float64(t_2 + Float64(NdChar / Float64(Float64(2.0 + t_0) - Float64(Ec / KbT)))) tmp = 0.0 if (NaChar <= -8.5e-33) tmp = t_3; elseif (NaChar <= 1.95e-218) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NaChar <= 9.2e+21) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + t_0) - Float64(Ec / KbT))))); elseif (NaChar <= 1.25e+32) tmp = Float64(t_1 + Float64(NaChar / 2.0)); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (mu / KbT) + (Vef / KbT); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_2 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_3 = t_2 + (NdChar / ((2.0 + t_0) - (Ec / KbT))); tmp = 0.0; if (NaChar <= -8.5e-33) tmp = t_3; elseif (NaChar <= 1.95e-218) tmp = t_1 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NaChar <= 9.2e+21) tmp = t_2 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + t_0) - (Ec / KbT)))); elseif (NaChar <= 1.25e+32) tmp = t_1 + (NaChar / 2.0); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = 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$3 = N[(t$95$2 + N[(NdChar / N[(N[(2.0 + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8.5e-33], t$95$3, If[LessEqual[NaChar, 1.95e-218], N[(t$95$1 + 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[NaChar, 9.2e+21], N[(t$95$2 + N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.25e+32], N[(t$95$1 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{mu}{KbT} + \frac{Vef}{KbT}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_3 := t_2 + \frac{NdChar}{\left(2 + t_0\right) - \frac{Ec}{KbT}}\\
\mathbf{if}\;NaChar \leq -8.5 \cdot 10^{-33}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NaChar \leq 1.95 \cdot 10^{-218}:\\
\;\;\;\;t_1 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NaChar \leq 9.2 \cdot 10^{+21}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + t_0\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.25 \cdot 10^{+32}:\\
\;\;\;\;t_1 + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if NaChar < -8.49999999999999945e-33 or 1.2499999999999999e32 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 68.2%
associate-+r+68.2%
Simplified68.2%
Taylor expanded in EDonor around 0 70.0%
if -8.49999999999999945e-33 < NaChar < 1.95e-218Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.9%
if 1.95e-218 < NaChar < 9.2e21Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.0%
associate-+r+67.0%
Simplified67.0%
if 9.2e21 < NaChar < 1.2499999999999999e32Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 88.4%
Final simplification69.9%
(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 (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -3.4e-32)
t_1
(if (<= NdChar 8.5e-83)
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NdChar 5e-30)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= NdChar 4500000.0)
t_1
(if (<= NdChar 2.65e+39)
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 5.7e+138)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ Vef KbT)))))
t_1))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.4e-32) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 5e-30) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (NdChar <= 4500000.0) {
tmp = t_1;
} else if (NdChar <= 2.65e+39) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 5.7e+138) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-3.4d-32)) then
tmp = t_1
else if (ndchar <= 8.5d-83) then
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (ndchar <= 5d-30) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (ndchar <= 4500000.0d0) then
tmp = t_1
else if (ndchar <= 2.65d+39) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 5.7d+138) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (vef / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.4e-32) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 5e-30) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (NdChar <= 4500000.0) {
tmp = t_1;
} else if (NdChar <= 2.65e+39) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 5.7e+138) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.4e-32: tmp = t_1 elif NdChar <= 8.5e-83: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) elif NdChar <= 5e-30: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif NdChar <= 4500000.0: tmp = t_1 elif NdChar <= 2.65e+39: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 5.7e+138: tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.4e-32) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NdChar <= 5e-30) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (NdChar <= 4500000.0) tmp = t_1; elseif (NdChar <= 2.65e+39) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 5.7e+138) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(Vef / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.4e-32) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); elseif (NdChar <= 5e-30) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (NdChar <= 4500000.0) tmp = t_1; elseif (NdChar <= 2.65e+39) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 5.7e+138) tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(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, -3.4e-32], t$95$1, If[LessEqual[NdChar, 8.5e-83], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5e-30], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4500000.0], t$95$1, If[LessEqual[NdChar, 2.65e+39], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / 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, 5.7e+138], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.4 \cdot 10^{-32}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-83}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NdChar \leq 5 \cdot 10^{-30}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 4500000:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 2.65 \cdot 10^{+39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{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.7 \cdot 10^{+138}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{Vef}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -3.39999999999999978e-32 or 4.99999999999999972e-30 < NdChar < 4.5e6 or 5.69999999999999986e138 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 57.9%
if -3.39999999999999978e-32 < NdChar < 8.49999999999999938e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.7%
associate-+r+68.7%
Simplified68.7%
Taylor expanded in EDonor around inf 74.5%
if 8.49999999999999938e-83 < NdChar < 4.99999999999999972e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 16.1%
Taylor expanded in Vef around inf 8.4%
Taylor expanded in NdChar around inf 63.8%
if 4.5e6 < NdChar < 2.64999999999999989e39Initial program 99.8%
Simplified99.8%
Taylor expanded in Ec around inf 97.3%
associate-*r/66.6%
mul-1-neg66.6%
Simplified97.3%
Taylor expanded in KbT around inf 83.9%
if 2.64999999999999989e39 < NdChar < 5.69999999999999986e138Initial program 99.8%
Simplified99.8%
Taylor expanded in Vef around inf 87.5%
Taylor expanded in Vef around 0 77.3%
Final simplification67.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -6e-32) (not (<= NaChar 1.5e-218)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (- (+ 2.0 (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -6e-32) || !(NaChar <= 1.5e-218)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-6d-32)) .or. (.not. (nachar <= 1.5d-218))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((2.0d0 + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -6e-32) || !(NaChar <= 1.5e-218)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -6e-32) or not (NaChar <= 1.5e-218): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -6e-32) || !(NaChar <= 1.5e-218)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))); else 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)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -6e-32) || ~((NaChar <= 1.5e-218))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -6e-32], N[Not[LessEqual[NaChar, 1.5e-218]], $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[(N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 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]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -6 \cdot 10^{-32} \lor \neg \left(NaChar \leq 1.5 \cdot 10^{-218}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(2 + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\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}}\\
\end{array}
\end{array}
if NaChar < -6.0000000000000001e-32 or 1.4999999999999999e-218 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 65.9%
associate-+r+65.9%
Simplified65.9%
Taylor expanded in EDonor around 0 66.8%
if -6.0000000000000001e-32 < NaChar < 1.4999999999999999e-218Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.9%
Final simplification67.7%
(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))))
(* NdChar 0.5)))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -1.06e-32)
t_2
(if (<= NdChar 8.5e-83)
t_1
(if (<= NdChar 9e-18)
t_0
(if (<= NdChar 2.4e+71)
t_2
(if (<= NdChar 1.35e+75)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar (/ Vef KbT)))
(if (<= NdChar 8.6e+134)
t_1
(if (or (<= NdChar 1.05e+170) (not (<= NdChar 5.2e+229)))
t_2
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((Vef / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
double t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -1.06e-32) {
tmp = t_2;
} else if (NdChar <= 8.5e-83) {
tmp = t_1;
} else if (NdChar <= 9e-18) {
tmp = t_0;
} else if (NdChar <= 2.4e+71) {
tmp = t_2;
} else if (NdChar <= 1.35e+75) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (Vef / KbT));
} else if (NdChar <= 8.6e+134) {
tmp = t_1;
} else if ((NdChar <= 1.05e+170) || !(NdChar <= 5.2e+229)) {
tmp = t_2;
} 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) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
t_2 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-1.06d-32)) then
tmp = t_2
else if (ndchar <= 8.5d-83) then
tmp = t_1
else if (ndchar <= 9d-18) then
tmp = t_0
else if (ndchar <= 2.4d+71) then
tmp = t_2
else if (ndchar <= 1.35d+75) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (vef / kbt))
else if (ndchar <= 8.6d+134) then
tmp = t_1
else if ((ndchar <= 1.05d+170) .or. (.not. (ndchar <= 5.2d+229))) then
tmp = t_2
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((Vef / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
double t_2 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -1.06e-32) {
tmp = t_2;
} else if (NdChar <= 8.5e-83) {
tmp = t_1;
} else if (NdChar <= 9e-18) {
tmp = t_0;
} else if (NdChar <= 2.4e+71) {
tmp = t_2;
} else if (NdChar <= 1.35e+75) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (Vef / KbT));
} else if (NdChar <= 8.6e+134) {
tmp = t_1;
} else if ((NdChar <= 1.05e+170) || !(NdChar <= 5.2e+229)) {
tmp = t_2;
} else {
tmp = t_0;
}
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)))) + (NdChar * 0.5) t_2 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -1.06e-32: tmp = t_2 elif NdChar <= 8.5e-83: tmp = t_1 elif NdChar <= 9e-18: tmp = t_0 elif NdChar <= 2.4e+71: tmp = t_2 elif NdChar <= 1.35e+75: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (Vef / KbT)) elif NdChar <= 8.6e+134: tmp = t_1 elif (NdChar <= 1.05e+170) or not (NdChar <= 5.2e+229): tmp = t_2 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(Vef / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -1.06e-32) tmp = t_2; elseif (NdChar <= 8.5e-83) tmp = t_1; elseif (NdChar <= 9e-18) tmp = t_0; elseif (NdChar <= 2.4e+71) tmp = t_2; elseif (NdChar <= 1.35e+75) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(Vef / KbT))); elseif (NdChar <= 8.6e+134) tmp = t_1; elseif ((NdChar <= 1.05e+170) || !(NdChar <= 5.2e+229)) tmp = t_2; 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((Vef / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -1.06e-32) tmp = t_2; elseif (NdChar <= 8.5e-83) tmp = t_1; elseif (NdChar <= 9e-18) tmp = t_0; elseif (NdChar <= 2.4e+71) tmp = t_2; elseif (NdChar <= 1.35e+75) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (Vef / KbT)); elseif (NdChar <= 8.6e+134) tmp = t_1; elseif ((NdChar <= 1.05e+170) || ~((NdChar <= 5.2e+229))) tmp = t_2; 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[(Vef / 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 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = 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.06e-32], t$95$2, If[LessEqual[NdChar, 8.5e-83], t$95$1, If[LessEqual[NdChar, 9e-18], t$95$0, If[LessEqual[NdChar, 2.4e+71], t$95$2, If[LessEqual[NdChar, 1.35e+75], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 8.6e+134], t$95$1, If[Or[LessEqual[NdChar, 1.05e+170], N[Not[LessEqual[NdChar, 5.2e+229]], $MachinePrecision]], t$95$2, t$95$0]]]]]]]]]]
\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}}} + NdChar \cdot 0.5\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -1.06 \cdot 10^{-32}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-83}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 9 \cdot 10^{-18}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 2.4 \cdot 10^{+71}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq 1.35 \cdot 10^{+75}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT}}\\
\mathbf{elif}\;NdChar \leq 8.6 \cdot 10^{+134}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+170} \lor \neg \left(NdChar \leq 5.2 \cdot 10^{+229}\right):\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NdChar < -1.05999999999999994e-32 or 8.99999999999999987e-18 < NdChar < 2.39999999999999981e71 or 8.6000000000000001e134 < NdChar < 1.04999999999999999e170 or 5.2e229 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 60.3%
if -1.05999999999999994e-32 < NdChar < 8.49999999999999938e-83 or 1.34999999999999999e75 < NdChar < 8.6000000000000001e134Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.9%
Taylor expanded in mu around 0 68.0%
Taylor expanded in mu around 0 62.1%
if 8.49999999999999938e-83 < NdChar < 8.99999999999999987e-18 or 1.04999999999999999e170 < NdChar < 5.2e229Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.8%
Taylor expanded in Vef around inf 28.6%
Taylor expanded in NdChar around inf 64.5%
if 2.39999999999999981e71 < NdChar < 1.34999999999999999e75Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 100.0%
associate-*r/37.4%
mul-1-neg37.4%
Simplified100.0%
Taylor expanded in KbT around inf 33.3%
Taylor expanded in Vef around inf 100.0%
Final simplification62.1%
(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 (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -2.25e-29)
t_1
(if (<= NdChar 6e-83)
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NdChar 5.8e-39)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (or (<= NdChar 1.55e+70) (not (<= NdChar 8e+138)))
t_1
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ Vef KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.25e-29) {
tmp = t_1;
} else if (NdChar <= 6e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 5.8e-39) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if ((NdChar <= 1.55e+70) || !(NdChar <= 8e+138)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-2.25d-29)) then
tmp = t_1
else if (ndchar <= 6d-83) then
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (ndchar <= 5.8d-39) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if ((ndchar <= 1.55d+70) .or. (.not. (ndchar <= 8d+138))) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.25e-29) {
tmp = t_1;
} else if (NdChar <= 6e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 5.8e-39) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if ((NdChar <= 1.55e+70) || !(NdChar <= 8e+138)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -2.25e-29: tmp = t_1 elif NdChar <= 6e-83: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) elif NdChar <= 5.8e-39: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif (NdChar <= 1.55e+70) or not (NdChar <= 8e+138): tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -2.25e-29) tmp = t_1; elseif (NdChar <= 6e-83) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NdChar <= 5.8e-39) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif ((NdChar <= 1.55e+70) || !(NdChar <= 8e+138)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -2.25e-29) tmp = t_1; elseif (NdChar <= 6e-83) tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); elseif (NdChar <= 5.8e-39) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif ((NdChar <= 1.55e+70) || ~((NdChar <= 8e+138))) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + (1.0 + (Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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, -2.25e-29], t$95$1, If[LessEqual[NdChar, 6e-83], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.8e-39], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, 1.55e+70], N[Not[LessEqual[NdChar, 8e+138]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -2.25 \cdot 10^{-29}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 6 \cdot 10^{-83}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NdChar \leq 5.8 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 1.55 \cdot 10^{+70} \lor \neg \left(NdChar \leq 8 \cdot 10^{+138}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \left(1 + \frac{Vef}{KbT}\right)}\\
\end{array}
\end{array}
if NdChar < -2.2499999999999999e-29 or 5.79999999999999975e-39 < NdChar < 1.55000000000000015e70 or 8.0000000000000003e138 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.8%
if -2.2499999999999999e-29 < NdChar < 6.00000000000000021e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.7%
associate-+r+68.7%
Simplified68.7%
Taylor expanded in EDonor around inf 74.5%
if 6.00000000000000021e-83 < NdChar < 5.79999999999999975e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 16.1%
Taylor expanded in Vef around inf 8.4%
Taylor expanded in NdChar around inf 63.8%
if 1.55000000000000015e70 < NdChar < 8.0000000000000003e138Initial program 99.8%
Simplified99.8%
Taylor expanded in Vef around inf 85.2%
Taylor expanded in Vef around 0 73.1%
Final simplification67.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))))))
(if (<= mu -3.25e+193)
(+ t_0 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= mu 1.7e+118)
(+ t_0 (/ NdChar (- (+ 2.0 (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT))))
(+ t_0 (/ NdChar (+ 1.0 (/ 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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (mu <= -3.25e+193) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (mu <= 1.7e+118) {
tmp = t_0 + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
} else {
tmp = t_0 + (NdChar / (1.0 + (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 + (eaccept + (ev - mu))) / kbt)))
if (mu <= (-3.25d+193)) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else if (mu <= 1.7d+118) then
tmp = t_0 + (ndchar / ((2.0d0 + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))
else
tmp = t_0 + (ndchar / (1.0d0 + (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 + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (mu <= -3.25e+193) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (mu <= 1.7e+118) {
tmp = t_0 + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)));
} else {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if mu <= -3.25e+193: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) elif mu <= 1.7e+118: tmp = t_0 + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))) else: tmp = t_0 + (NdChar / (1.0 + (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(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (mu <= -3.25e+193) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (mu <= 1.7e+118) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + 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 + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (mu <= -3.25e+193) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); elseif (mu <= 1.7e+118) tmp = t_0 + (NdChar / ((2.0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))); else tmp = t_0 + (NdChar / (1.0 + (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[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.25e+193], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.7e+118], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -3.25 \cdot 10^{+193}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;mu \leq 1.7 \cdot 10^{+118}:\\
\;\;\;\;t_0 + \frac{NdChar}{\left(2 + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if mu < -3.2499999999999999e193Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 38.8%
associate-+r+38.8%
Simplified38.8%
Taylor expanded in Ec around inf 64.8%
mul-1-neg64.8%
Simplified64.8%
if -3.2499999999999999e193 < mu < 1.69999999999999993e118Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 66.2%
associate-+r+66.2%
Simplified66.2%
Taylor expanded in EDonor around 0 66.2%
if 1.69999999999999993e118 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.2%
associate-+r+37.2%
Simplified37.2%
Taylor expanded in EDonor around inf 60.7%
Final simplification65.0%
(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 (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -2.05e-29)
t_1
(if (<= NdChar 8.5e-83)
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NdChar 3.2e-39)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (or (<= NdChar 9.5e+68) (not (<= NdChar 1e+135)))
t_1
(+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.05e-29) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 3.2e-39) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if ((NdChar <= 9.5e+68) || !(NdChar <= 1e+135)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-2.05d-29)) then
tmp = t_1
else if (ndchar <= 8.5d-83) then
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (ndchar <= 3.2d-39) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if ((ndchar <= 9.5d+68) .or. (.not. (ndchar <= 1d+135))) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.05e-29) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 3.2e-39) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if ((NdChar <= 9.5e+68) || !(NdChar <= 1e+135)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -2.05e-29: tmp = t_1 elif NdChar <= 8.5e-83: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) elif NdChar <= 3.2e-39: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif (NdChar <= 9.5e+68) or not (NdChar <= 1e+135): tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -2.05e-29) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NdChar <= 3.2e-39) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif ((NdChar <= 9.5e+68) || !(NdChar <= 1e+135)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -2.05e-29) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); elseif (NdChar <= 3.2e-39) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif ((NdChar <= 9.5e+68) || ~((NdChar <= 1e+135))) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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, -2.05e-29], t$95$1, If[LessEqual[NdChar, 8.5e-83], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.2e-39], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, 9.5e+68], N[Not[LessEqual[NdChar, 1e+135]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -2.05 \cdot 10^{-29}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-83}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NdChar \leq 3.2 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 9.5 \cdot 10^{+68} \lor \neg \left(NdChar \leq 10^{+135}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\end{array}
\end{array}
if NdChar < -2.0499999999999999e-29 or 3.1999999999999998e-39 < NdChar < 9.50000000000000069e68 or 9.99999999999999962e134 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.8%
if -2.0499999999999999e-29 < NdChar < 8.49999999999999938e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.7%
associate-+r+68.7%
Simplified68.7%
Taylor expanded in EDonor around inf 74.5%
if 8.49999999999999938e-83 < NdChar < 3.1999999999999998e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 16.1%
Taylor expanded in Vef around inf 8.4%
Taylor expanded in NdChar around inf 63.8%
if 9.50000000000000069e68 < NdChar < 9.99999999999999962e134Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 61.1%
associate-+r+61.1%
Simplified61.1%
Taylor expanded in Vef around inf 65.5%
Final simplification67.0%
(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 (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -8.5e-31)
t_1
(if (<= NdChar 8.5e-83)
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NdChar 1.55e-31)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= NdChar 2.4e+71)
t_1
(if (<= NdChar 2.6e+75)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar (/ Vef KbT)))
(if (<= NdChar 1.6e+143) (+ t_0 (* NdChar 0.5)) 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(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -8.5e-31) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 1.55e-31) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (NdChar <= 2.4e+71) {
tmp = t_1;
} else if (NdChar <= 2.6e+75) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (Vef / KbT));
} else if (NdChar <= 1.6e+143) {
tmp = t_0 + (NdChar * 0.5);
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-8.5d-31)) then
tmp = t_1
else if (ndchar <= 8.5d-83) then
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (ndchar <= 1.55d-31) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (ndchar <= 2.4d+71) then
tmp = t_1
else if (ndchar <= 2.6d+75) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (vef / kbt))
else if (ndchar <= 1.6d+143) then
tmp = t_0 + (ndchar * 0.5d0)
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -8.5e-31) {
tmp = t_1;
} else if (NdChar <= 8.5e-83) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NdChar <= 1.55e-31) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (NdChar <= 2.4e+71) {
tmp = t_1;
} else if (NdChar <= 2.6e+75) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (Vef / KbT));
} else if (NdChar <= 1.6e+143) {
tmp = t_0 + (NdChar * 0.5);
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -8.5e-31: tmp = t_1 elif NdChar <= 8.5e-83: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) elif NdChar <= 1.55e-31: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif NdChar <= 2.4e+71: tmp = t_1 elif NdChar <= 2.6e+75: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / (Vef / KbT)) elif NdChar <= 1.6e+143: tmp = t_0 + (NdChar * 0.5) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -8.5e-31) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NdChar <= 1.55e-31) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (NdChar <= 2.4e+71) tmp = t_1; elseif (NdChar <= 2.6e+75) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(Vef / KbT))); elseif (NdChar <= 1.6e+143) tmp = Float64(t_0 + Float64(NdChar * 0.5)); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -8.5e-31) tmp = t_1; elseif (NdChar <= 8.5e-83) tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); elseif (NdChar <= 1.55e-31) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (NdChar <= 2.4e+71) tmp = t_1; elseif (NdChar <= 2.6e+75) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (Vef / KbT)); elseif (NdChar <= 1.6e+143) tmp = t_0 + (NdChar * 0.5); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(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, -8.5e-31], t$95$1, If[LessEqual[NdChar, 8.5e-83], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.55e-31], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.4e+71], t$95$1, If[LessEqual[NdChar, 2.6e+75], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.6e+143], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -8.5 \cdot 10^{-31}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-83}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.55 \cdot 10^{-31}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 2.4 \cdot 10^{+71}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 2.6 \cdot 10^{+75}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.6 \cdot 10^{+143}:\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NdChar < -8.5000000000000007e-31 or 1.55e-31 < NdChar < 2.39999999999999981e71 or 1.60000000000000008e143 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 60.0%
if -8.5000000000000007e-31 < NdChar < 8.49999999999999938e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.7%
associate-+r+68.7%
Simplified68.7%
Taylor expanded in EDonor around inf 74.5%
if 8.49999999999999938e-83 < NdChar < 1.55e-31Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 16.1%
Taylor expanded in Vef around inf 8.4%
Taylor expanded in NdChar around inf 63.8%
if 2.39999999999999981e71 < NdChar < 2.59999999999999985e75Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 100.0%
associate-*r/37.4%
mul-1-neg37.4%
Simplified100.0%
Taylor expanded in KbT around inf 33.3%
Taylor expanded in Vef around inf 100.0%
if 2.59999999999999985e75 < NdChar < 1.60000000000000008e143Initial program 99.8%
Simplified99.8%
Taylor expanded in mu around inf 72.9%
Taylor expanded in mu around 0 60.1%
Taylor expanded in mu around 0 54.9%
Final simplification66.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))))
(/ NaChar 2.0)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= KbT -0.00092)
(+ t_1 (* NdChar 0.5))
(if (<= KbT -5.6e-84)
t_0
(if (<= KbT -1e-114)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT))))
(* NdChar (/ KbT mu)))
(if (<= KbT -3.8e-307)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= KbT 1.25e-14) (+ t_1 (/ KbT (/ EDonor NdChar))) 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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -0.00092) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -5.6e-84) {
tmp = t_0;
} else if (KbT <= -1e-114) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -3.8e-307) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (KbT <= 1.25e-14) {
tmp = t_1 + (KbT / (EDonor / NdChar));
} 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)))) + (nachar / 2.0d0)
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (kbt <= (-0.00092d0)) then
tmp = t_1 + (ndchar * 0.5d0)
else if (kbt <= (-5.6d-84)) then
tmp = t_0
else if (kbt <= (-1d-114)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))) + (ndchar * (kbt / mu))
else if (kbt <= (-3.8d-307)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (kbt <= 1.25d-14) then
tmp = t_1 + (kbt / (edonor / ndchar))
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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -0.00092) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -5.6e-84) {
tmp = t_0;
} else if (KbT <= -1e-114) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -3.8e-307) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (KbT <= 1.25e-14) {
tmp = t_1 + (KbT / (EDonor / NdChar));
} 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)))) + (NaChar / 2.0) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if KbT <= -0.00092: tmp = t_1 + (NdChar * 0.5) elif KbT <= -5.6e-84: tmp = t_0 elif KbT <= -1e-114: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)) elif KbT <= -3.8e-307: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif KbT <= 1.25e-14: tmp = t_1 + (KbT / (EDonor / NdChar)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (KbT <= -0.00092) tmp = Float64(t_1 + Float64(NdChar * 0.5)); elseif (KbT <= -5.6e-84) tmp = t_0; elseif (KbT <= -1e-114) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT)))) + Float64(NdChar * Float64(KbT / mu))); elseif (KbT <= -3.8e-307) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (KbT <= 1.25e-14) tmp = Float64(t_1 + Float64(KbT / Float64(EDonor / NdChar))); 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)))) + (NaChar / 2.0); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (KbT <= -0.00092) tmp = t_1 + (NdChar * 0.5); elseif (KbT <= -5.6e-84) tmp = t_0; elseif (KbT <= -1e-114) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)); elseif (KbT <= -3.8e-307) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (KbT <= 1.25e-14) tmp = t_1 + (KbT / (EDonor / NdChar)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $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]}, If[LessEqual[KbT, -0.00092], N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -5.6e-84], t$95$0, If[LessEqual[KbT, -1e-114], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.8e-307], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.25e-14], N[(t$95$1 + N[(KbT / N[(EDonor / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;KbT \leq -0.00092:\\
\;\;\;\;t_1 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -5.6 \cdot 10^{-84}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -1 \cdot 10^{-114}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}} + NdChar \cdot \frac{KbT}{mu}\\
\mathbf{elif}\;KbT \leq -3.8 \cdot 10^{-307}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;KbT \leq 1.25 \cdot 10^{-14}:\\
\;\;\;\;t_1 + \frac{KbT}{\frac{EDonor}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if KbT < -9.2000000000000003e-4Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 80.9%
Taylor expanded in mu around 0 67.8%
Taylor expanded in mu around 0 67.3%
if -9.2000000000000003e-4 < KbT < -5.59999999999999964e-84 or 1.25e-14 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.3%
if -5.59999999999999964e-84 < KbT < -1.0000000000000001e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.5%
associate-+r+86.5%
Simplified86.5%
Taylor expanded in mu around inf 86.8%
expm1-log1p-u86.8%
expm1-udef86.8%
associate-/l*87.0%
Applied egg-rr87.0%
expm1-def87.0%
expm1-log1p87.0%
associate-/r/86.8%
*-commutative86.8%
Simplified86.8%
Taylor expanded in Ev around 0 86.8%
+-commutative86.8%
sub-neg86.8%
associate-+l+86.8%
mul-1-neg86.8%
+-commutative86.8%
mul-1-neg86.8%
sub-neg86.8%
associate--r-86.8%
Simplified86.8%
if -1.0000000000000001e-114 < KbT < -3.79999999999999985e-307Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 38.1%
Taylor expanded in Vef around inf 19.7%
Taylor expanded in NdChar around inf 51.1%
if -3.79999999999999985e-307 < KbT < 1.25e-14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.4%
associate-+r+60.4%
Simplified60.4%
Taylor expanded in EDonor around inf 55.5%
associate-/l*52.6%
Simplified52.6%
Final simplification59.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= KbT -7.2e-5)
(+ t_1 (* NdChar 0.5))
(if (<= KbT -3.3e-84)
t_0
(if (<= KbT -5e-114)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT))))
(* NdChar (/ KbT mu)))
(if (<= KbT -1.22e-290)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= KbT 8.5e-16) (+ t_1 (/ KbT (/ Vef NdChar))) 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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -7.2e-5) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -3.3e-84) {
tmp = t_0;
} else if (KbT <= -5e-114) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -1.22e-290) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (KbT <= 8.5e-16) {
tmp = t_1 + (KbT / (Vef / NdChar));
} 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)))) + (nachar / 2.0d0)
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (kbt <= (-7.2d-5)) then
tmp = t_1 + (ndchar * 0.5d0)
else if (kbt <= (-3.3d-84)) then
tmp = t_0
else if (kbt <= (-5d-114)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))) + (ndchar * (kbt / mu))
else if (kbt <= (-1.22d-290)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (kbt <= 8.5d-16) then
tmp = t_1 + (kbt / (vef / ndchar))
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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -7.2e-5) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -3.3e-84) {
tmp = t_0;
} else if (KbT <= -5e-114) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -1.22e-290) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (KbT <= 8.5e-16) {
tmp = t_1 + (KbT / (Vef / NdChar));
} 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)))) + (NaChar / 2.0) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if KbT <= -7.2e-5: tmp = t_1 + (NdChar * 0.5) elif KbT <= -3.3e-84: tmp = t_0 elif KbT <= -5e-114: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)) elif KbT <= -1.22e-290: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif KbT <= 8.5e-16: tmp = t_1 + (KbT / (Vef / NdChar)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (KbT <= -7.2e-5) tmp = Float64(t_1 + Float64(NdChar * 0.5)); elseif (KbT <= -3.3e-84) tmp = t_0; elseif (KbT <= -5e-114) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT)))) + Float64(NdChar * Float64(KbT / mu))); elseif (KbT <= -1.22e-290) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (KbT <= 8.5e-16) tmp = Float64(t_1 + Float64(KbT / Float64(Vef / NdChar))); 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)))) + (NaChar / 2.0); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (KbT <= -7.2e-5) tmp = t_1 + (NdChar * 0.5); elseif (KbT <= -3.3e-84) tmp = t_0; elseif (KbT <= -5e-114) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)); elseif (KbT <= -1.22e-290) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (KbT <= 8.5e-16) tmp = t_1 + (KbT / (Vef / NdChar)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $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]}, If[LessEqual[KbT, -7.2e-5], N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.3e-84], t$95$0, If[LessEqual[KbT, -5e-114], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -1.22e-290], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8.5e-16], N[(t$95$1 + N[(KbT / N[(Vef / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;KbT \leq -7.2 \cdot 10^{-5}:\\
\;\;\;\;t_1 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -3.3 \cdot 10^{-84}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -5 \cdot 10^{-114}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}} + NdChar \cdot \frac{KbT}{mu}\\
\mathbf{elif}\;KbT \leq -1.22 \cdot 10^{-290}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;KbT \leq 8.5 \cdot 10^{-16}:\\
\;\;\;\;t_1 + \frac{KbT}{\frac{Vef}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if KbT < -7.20000000000000018e-5Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 80.9%
Taylor expanded in mu around 0 67.8%
Taylor expanded in mu around 0 67.3%
if -7.20000000000000018e-5 < KbT < -3.29999999999999984e-84 or 8.5000000000000001e-16 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.3%
if -3.29999999999999984e-84 < KbT < -4.99999999999999989e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.5%
associate-+r+86.5%
Simplified86.5%
Taylor expanded in mu around inf 86.8%
expm1-log1p-u86.8%
expm1-udef86.8%
associate-/l*87.0%
Applied egg-rr87.0%
expm1-def87.0%
expm1-log1p87.0%
associate-/r/86.8%
*-commutative86.8%
Simplified86.8%
Taylor expanded in Ev around 0 86.8%
+-commutative86.8%
sub-neg86.8%
associate-+l+86.8%
mul-1-neg86.8%
+-commutative86.8%
mul-1-neg86.8%
sub-neg86.8%
associate--r-86.8%
Simplified86.8%
if -4.99999999999999989e-114 < KbT < -1.22e-290Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
Taylor expanded in Vef around inf 20.4%
Taylor expanded in NdChar around inf 52.7%
if -1.22e-290 < KbT < 8.5000000000000001e-16Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
associate-+r+60.6%
Simplified60.6%
Taylor expanded in Vef around inf 61.9%
associate-/l*57.3%
Simplified57.3%
Final simplification60.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= KbT -0.00029)
(+ t_1 (* NdChar 0.5))
(if (<= KbT -1.6e-84)
t_0
(if (<= KbT -6.5e-114)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT))))
(* NdChar (/ KbT mu)))
(if (<= KbT -4.5e-289)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= KbT 1.12e-14) (+ t_1 (/ (* NdChar KbT) Vef)) 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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -0.00029) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -1.6e-84) {
tmp = t_0;
} else if (KbT <= -6.5e-114) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -4.5e-289) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (KbT <= 1.12e-14) {
tmp = t_1 + ((NdChar * KbT) / Vef);
} 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)))) + (nachar / 2.0d0)
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (kbt <= (-0.00029d0)) then
tmp = t_1 + (ndchar * 0.5d0)
else if (kbt <= (-1.6d-84)) then
tmp = t_0
else if (kbt <= (-6.5d-114)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))) + (ndchar * (kbt / mu))
else if (kbt <= (-4.5d-289)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (kbt <= 1.12d-14) then
tmp = t_1 + ((ndchar * kbt) / vef)
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)))) + (NaChar / 2.0);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (KbT <= -0.00029) {
tmp = t_1 + (NdChar * 0.5);
} else if (KbT <= -1.6e-84) {
tmp = t_0;
} else if (KbT <= -6.5e-114) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -4.5e-289) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (KbT <= 1.12e-14) {
tmp = t_1 + ((NdChar * KbT) / Vef);
} 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)))) + (NaChar / 2.0) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if KbT <= -0.00029: tmp = t_1 + (NdChar * 0.5) elif KbT <= -1.6e-84: tmp = t_0 elif KbT <= -6.5e-114: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)) elif KbT <= -4.5e-289: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif KbT <= 1.12e-14: tmp = t_1 + ((NdChar * KbT) / Vef) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (KbT <= -0.00029) tmp = Float64(t_1 + Float64(NdChar * 0.5)); elseif (KbT <= -1.6e-84) tmp = t_0; elseif (KbT <= -6.5e-114) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT)))) + Float64(NdChar * Float64(KbT / mu))); elseif (KbT <= -4.5e-289) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (KbT <= 1.12e-14) tmp = Float64(t_1 + Float64(Float64(NdChar * KbT) / Vef)); 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)))) + (NaChar / 2.0); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (KbT <= -0.00029) tmp = t_1 + (NdChar * 0.5); elseif (KbT <= -1.6e-84) tmp = t_0; elseif (KbT <= -6.5e-114) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)); elseif (KbT <= -4.5e-289) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (KbT <= 1.12e-14) tmp = t_1 + ((NdChar * KbT) / Vef); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $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]}, If[LessEqual[KbT, -0.00029], N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -1.6e-84], t$95$0, If[LessEqual[KbT, -6.5e-114], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -4.5e-289], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.12e-14], N[(t$95$1 + N[(N[(NdChar * KbT), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;KbT \leq -0.00029:\\
\;\;\;\;t_1 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -1.6 \cdot 10^{-84}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -6.5 \cdot 10^{-114}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}} + NdChar \cdot \frac{KbT}{mu}\\
\mathbf{elif}\;KbT \leq -4.5 \cdot 10^{-289}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;KbT \leq 1.12 \cdot 10^{-14}:\\
\;\;\;\;t_1 + \frac{NdChar \cdot KbT}{Vef}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if KbT < -2.9e-4Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 80.9%
Taylor expanded in mu around 0 67.8%
Taylor expanded in mu around 0 67.3%
if -2.9e-4 < KbT < -1.6e-84 or 1.12000000000000006e-14 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.3%
if -1.6e-84 < KbT < -6.4999999999999998e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.5%
associate-+r+86.5%
Simplified86.5%
Taylor expanded in mu around inf 86.8%
expm1-log1p-u86.8%
expm1-udef86.8%
associate-/l*87.0%
Applied egg-rr87.0%
expm1-def87.0%
expm1-log1p87.0%
associate-/r/86.8%
*-commutative86.8%
Simplified86.8%
Taylor expanded in Ev around 0 86.8%
+-commutative86.8%
sub-neg86.8%
associate-+l+86.8%
mul-1-neg86.8%
+-commutative86.8%
mul-1-neg86.8%
sub-neg86.8%
associate--r-86.8%
Simplified86.8%
if -6.4999999999999998e-114 < KbT < -4.5000000000000002e-289Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
Taylor expanded in Vef around inf 20.4%
Taylor expanded in NdChar around inf 52.7%
if -4.5000000000000002e-289 < KbT < 1.12000000000000006e-14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
associate-+r+60.6%
Simplified60.6%
Taylor expanded in Vef around inf 61.9%
Final simplification61.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= KbT -7.3e-6)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(if (<= KbT -5.2e-84)
t_0
(if (<= KbT -1.25e-114)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- EAccept mu)) KbT))))
(* NdChar (/ KbT mu)))
(if (<= KbT -7.2e-291)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= KbT 8e-77)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Ev (- Vef mu)) KbT))))
(/ (* NdChar KbT) mu))
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)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -7.3e-6) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if (KbT <= -5.2e-84) {
tmp = t_0;
} else if (KbT <= -1.25e-114) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -7.2e-291) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (KbT <= 8e-77) {
tmp = (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT)))) + ((NdChar * KbT) / mu);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (kbt <= (-7.3d-6)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else if (kbt <= (-5.2d-84)) then
tmp = t_0
else if (kbt <= (-1.25d-114)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept - mu)) / kbt)))) + (ndchar * (kbt / mu))
else if (kbt <= (-7.2d-291)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (kbt <= 8d-77) then
tmp = (nachar / (1.0d0 + exp(((ev + (vef - mu)) / kbt)))) + ((ndchar * kbt) / mu)
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)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -7.3e-6) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if (KbT <= -5.2e-84) {
tmp = t_0;
} else if (KbT <= -1.25e-114) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu));
} else if (KbT <= -7.2e-291) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (KbT <= 8e-77) {
tmp = (NaChar / (1.0 + Math.exp(((Ev + (Vef - mu)) / KbT)))) + ((NdChar * KbT) / mu);
} 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)))) + (NaChar / 2.0) tmp = 0 if KbT <= -7.3e-6: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) elif KbT <= -5.2e-84: tmp = t_0 elif KbT <= -1.25e-114: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)) elif KbT <= -7.2e-291: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif KbT <= 8e-77: tmp = (NaChar / (1.0 + math.exp(((Ev + (Vef - mu)) / KbT)))) + ((NdChar * KbT) / mu) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -7.3e-6) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); elseif (KbT <= -5.2e-84) tmp = t_0; elseif (KbT <= -1.25e-114) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept - mu)) / KbT)))) + Float64(NdChar * Float64(KbT / mu))); elseif (KbT <= -7.2e-291) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (KbT <= 8e-77) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Ev + Float64(Vef - mu)) / KbT)))) + Float64(Float64(NdChar * KbT) / mu)); 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)))) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -7.3e-6) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); elseif (KbT <= -5.2e-84) tmp = t_0; elseif (KbT <= -1.25e-114) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept - mu)) / KbT)))) + (NdChar * (KbT / mu)); elseif (KbT <= -7.2e-291) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (KbT <= 8e-77) tmp = (NaChar / (1.0 + exp(((Ev + (Vef - mu)) / KbT)))) + ((NdChar * KbT) / mu); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[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[KbT, -7.3e-6], 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 * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -5.2e-84], t$95$0, If[LessEqual[KbT, -1.25e-114], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -7.2e-291], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8e-77], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(NdChar * KbT), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -7.3 \cdot 10^{-6}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -5.2 \cdot 10^{-84}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -1.25 \cdot 10^{-114}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept - mu\right)}{KbT}}} + NdChar \cdot \frac{KbT}{mu}\\
\mathbf{elif}\;KbT \leq -7.2 \cdot 10^{-291}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;KbT \leq 8 \cdot 10^{-77}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev + \left(Vef - mu\right)}{KbT}}} + \frac{NdChar \cdot KbT}{mu}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if KbT < -7.30000000000000041e-6Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 80.9%
Taylor expanded in mu around 0 67.8%
Taylor expanded in mu around 0 67.3%
if -7.30000000000000041e-6 < KbT < -5.2e-84 or 7.9999999999999994e-77 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.0%
if -5.2e-84 < KbT < -1.24999999999999997e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.5%
associate-+r+86.5%
Simplified86.5%
Taylor expanded in mu around inf 86.8%
expm1-log1p-u86.8%
expm1-udef86.8%
associate-/l*87.0%
Applied egg-rr87.0%
expm1-def87.0%
expm1-log1p87.0%
associate-/r/86.8%
*-commutative86.8%
Simplified86.8%
Taylor expanded in Ev around 0 86.8%
+-commutative86.8%
sub-neg86.8%
associate-+l+86.8%
mul-1-neg86.8%
+-commutative86.8%
mul-1-neg86.8%
sub-neg86.8%
associate--r-86.8%
Simplified86.8%
if -1.24999999999999997e-114 < KbT < -7.1999999999999993e-291Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.8%
Taylor expanded in Vef around inf 20.4%
Taylor expanded in NdChar around inf 52.7%
if -7.1999999999999993e-291 < KbT < 7.9999999999999994e-77Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.7%
associate-+r+57.7%
Simplified57.7%
Taylor expanded in mu around inf 53.8%
Taylor expanded in EAccept around 0 50.5%
+-commutative50.5%
associate--l+50.5%
Simplified50.5%
Final simplification58.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.2e+17) (not (<= NaChar 1.95e-218)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.2e+17) || !(NaChar <= 1.95e-218)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.2d+17)) .or. (.not. (nachar <= 1.95d-218))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.2e+17) || !(NaChar <= 1.95e-218)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.2e+17) or not (NaChar <= 1.95e-218): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.2e+17) || !(NaChar <= 1.95e-218)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.2e+17) || ~((NaChar <= 1.95e-218))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); else tmp = NdChar / (1.0 + exp((Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.2e+17], N[Not[LessEqual[NaChar, 1.95e-218]], $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 * 0.5), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.2 \cdot 10^{+17} \lor \neg \left(NaChar \leq 1.95 \cdot 10^{-218}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -4.2e17 or 1.95e-218 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 77.3%
Taylor expanded in mu around 0 63.3%
Taylor expanded in mu around 0 57.8%
if -4.2e17 < NaChar < 1.95e-218Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.1%
Taylor expanded in Vef around inf 32.8%
Taylor expanded in NdChar around inf 45.8%
Final simplification53.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Vef -8.5e+18) (not (<= Vef 0.062))) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (+ (/ NdChar (+ 1.0 (exp (/ (- Ec) 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 ((Vef <= -8.5e+18) || !(Vef <= 0.062)) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((-Ec / 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 ((vef <= (-8.5d+18)) .or. (.not. (vef <= 0.062d0))) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((-ec / 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 ((Vef <= -8.5e+18) || !(Vef <= 0.062)) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -8.5e+18) or not (Vef <= 0.062): tmp = NdChar / (1.0 + math.exp((Vef / KbT))) else: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -8.5e+18) || !(Vef <= 0.062)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / 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 ((Vef <= -8.5e+18) || ~((Vef <= 0.062))) tmp = NdChar / (1.0 + exp((Vef / KbT))); else tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -8.5e+18], N[Not[LessEqual[Vef, 0.062]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -8.5 \cdot 10^{+18} \lor \neg \left(Vef \leq 0.062\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if Vef < -8.5e18 or 0.062 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 34.3%
Taylor expanded in Vef around inf 26.5%
Taylor expanded in NdChar around inf 49.2%
if -8.5e18 < Vef < 0.062Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 54.8%
Taylor expanded in Ec around inf 45.5%
associate-*r/45.5%
mul-1-neg45.5%
Simplified45.5%
Final simplification47.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Vef -25000000000.0) (not (<= Vef 23000.0))) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (+ (/ 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 ((Vef <= -25000000000.0) || !(Vef <= 23000.0)) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} 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 ((vef <= (-25000000000.0d0)) .or. (.not. (vef <= 23000.0d0))) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
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 ((Vef <= -25000000000.0) || !(Vef <= 23000.0)) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} 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 (Vef <= -25000000000.0) or not (Vef <= 23000.0): tmp = NdChar / (1.0 + math.exp((Vef / KbT))) 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 ((Vef <= -25000000000.0) || !(Vef <= 23000.0)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); 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 ((Vef <= -25000000000.0) || ~((Vef <= 23000.0))) tmp = NdChar / (1.0 + exp((Vef / KbT))); 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[Or[LessEqual[Vef, -25000000000.0], N[Not[LessEqual[Vef, 23000.0]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $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}\;Vef \leq -25000000000 \lor \neg \left(Vef \leq 23000\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if Vef < -2.5e10 or 23000 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 34.5%
Taylor expanded in Vef around inf 26.7%
Taylor expanded in NdChar around inf 49.6%
if -2.5e10 < Vef < 23000Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in EDonor around inf 43.6%
Final simplification46.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -1e-17) (not (<= Vef 1.55e-64)))
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(+
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT)))
(/ NdChar (+ 1.0 (/ Vef KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1e-17) || !(Vef <= 1.55e-64)) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-1d-17)) .or. (.not. (vef <= 1.55d-64))) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else
tmp = (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt))) + (ndchar / (1.0d0 + (vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1e-17) || !(Vef <= 1.55e-64)) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -1e-17) or not (Vef <= 1.55e-64): tmp = NdChar / (1.0 + math.exp((Vef / KbT))) else: tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / (1.0 + (Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -1e-17) || !(Vef <= 1.55e-64)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))) + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -1e-17) || ~((Vef <= 1.55e-64))) tmp = NdChar / (1.0 + exp((Vef / KbT))); else tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / (1.0 + (Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -1e-17], N[Not[LessEqual[Vef, 1.55e-64]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(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] + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1 \cdot 10^{-17} \lor \neg \left(Vef \leq 1.55 \cdot 10^{-64}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}} + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\end{array}
\end{array}
if Vef < -1.00000000000000007e-17 or 1.55000000000000012e-64 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 37.0%
Taylor expanded in Vef around inf 28.3%
Taylor expanded in NdChar around inf 46.7%
if -1.00000000000000007e-17 < Vef < 1.55000000000000012e-64Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.2%
associate-+r+65.2%
Simplified65.2%
Taylor expanded in KbT around inf 34.4%
Taylor expanded in Vef around inf 38.2%
Final simplification43.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (/ EDonor KbT)))
(t_1 (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))))
(if (<= Ec -3e-13)
(+ (/ NdChar t_0) (/ NaChar (- t_1 (/ mu KbT))))
(+
(/ NdChar (+ 1.0 (- (+ t_0 (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT))))
(/ NaChar 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 = 1.0 + (EDonor / KbT);
double t_1 = 2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)));
double tmp;
if (Ec <= -3e-13) {
tmp = (NdChar / t_0) + (NaChar / (t_1 - (mu / KbT)));
} else {
tmp = (NdChar / (1.0 + ((t_0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / 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 = 1.0d0 + (edonor / kbt)
t_1 = 2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))
if (ec <= (-3d-13)) then
tmp = (ndchar / t_0) + (nachar / (t_1 - (mu / kbt)))
else
tmp = (ndchar / (1.0d0 + ((t_0 + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))) + (nachar / 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 = 1.0 + (EDonor / KbT);
double t_1 = 2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)));
double tmp;
if (Ec <= -3e-13) {
tmp = (NdChar / t_0) + (NaChar / (t_1 - (mu / KbT)));
} else {
tmp = (NdChar / (1.0 + ((t_0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / t_1);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + (EDonor / KbT) t_1 = 2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))) tmp = 0 if Ec <= -3e-13: tmp = (NdChar / t_0) + (NaChar / (t_1 - (mu / KbT))) else: tmp = (NdChar / (1.0 + ((t_0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / t_1) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + Float64(EDonor / KbT)) t_1 = Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) tmp = 0.0 if (Ec <= -3e-13) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / Float64(t_1 - Float64(mu / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(t_0 + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar / t_1)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + (EDonor / KbT); t_1 = 2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT))); tmp = 0.0; if (Ec <= -3e-13) tmp = (NdChar / t_0) + (NaChar / (t_1 - (mu / KbT))); else tmp = (NdChar / (1.0 + ((t_0 + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / t_1); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ec, -3e-13], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / N[(t$95$1 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(N[(t$95$0 + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / t$95$1), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + \frac{EDonor}{KbT}\\
t_1 := 2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\\
\mathbf{if}\;Ec \leq -3 \cdot 10^{-13}:\\
\;\;\;\;\frac{NdChar}{t_0} + \frac{NaChar}{t_1 - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(t_0 + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{t_1}\\
\end{array}
\end{array}
if Ec < -2.99999999999999984e-13Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.7%
associate-+r+49.7%
Simplified49.7%
Taylor expanded in KbT around inf 18.6%
Taylor expanded in EDonor around inf 28.0%
if -2.99999999999999984e-13 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.5%
associate-+r+61.5%
Simplified61.5%
Taylor expanded in KbT around inf 30.5%
Taylor expanded in mu around 0 32.4%
Final simplification31.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ec -2.5e-37)
(+
(/ NdChar (+ 1.0 (/ EDonor KbT)))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(* 0.5 (+ NdChar NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ec <= -2.5e-37) {
tmp = (NdChar / (1.0 + (EDonor / KbT))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = 0.5 * (NdChar + 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 (ec <= (-2.5d-37)) then
tmp = (ndchar / (1.0d0 + (edonor / kbt))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else
tmp = 0.5d0 * (ndchar + 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 (Ec <= -2.5e-37) {
tmp = (NdChar / (1.0 + (EDonor / KbT))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ec <= -2.5e-37: tmp = (NdChar / (1.0 + (EDonor / KbT))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ec <= -2.5e-37) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ec <= -2.5e-37) tmp = (NdChar / (1.0 + (EDonor / KbT))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ec, -2.5e-37], N[(N[(NdChar / N[(1.0 + N[(EDonor / KbT), $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], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -2.5 \cdot 10^{-37}:\\
\;\;\;\;\frac{NdChar}{1 + \frac{EDonor}{KbT}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if Ec < -2.4999999999999999e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.2%
associate-+r+49.2%
Simplified49.2%
Taylor expanded in KbT around inf 19.4%
Taylor expanded in EDonor around inf 28.4%
if -2.4999999999999999e-37 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.1%
Taylor expanded in Vef around inf 36.0%
Taylor expanded in Vef around 0 30.5%
distribute-lft-out30.5%
Simplified30.5%
Final simplification29.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.7%
Taylor expanded in Vef around inf 31.4%
Taylor expanded in Vef around 0 26.8%
distribute-lft-out26.8%
Simplified26.8%
Final simplification26.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.7%
Taylor expanded in Vef around inf 31.4%
Taylor expanded in NdChar around 0 20.0%
Final simplification20.0%
herbie shell --seed 2024010
(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))))))