
(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 25 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 (pow E (/ (- (+ (+ EDonor mu) Vef) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + pow(((double) M_E), ((((EDonor + mu) + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.pow(Math.E, ((((EDonor + mu) + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.pow(math.e, ((((EDonor + mu) + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + (exp(1) ^ Float64(Float64(Float64(Float64(EDonor + mu) + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + (2.71828182845904523536 ^ ((((EDonor + mu) + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Power[E, N[(N[(N[(N[(EDonor + mu), $MachinePrecision] + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + {e}^{\left(\frac{\left(\left(EDonor + mu\right) + Vef\right) - Ec}{KbT}\right)}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
*-un-lft-identity99.9%
exp-prod99.9%
associate-+r+99.9%
associate-+r-99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(t_2 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_3 (+ t_2 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_4 (+ t_0 t_1)))
(if (<= EAccept -1.1e-85)
t_3
(if (<= EAccept 6.6e-269)
t_4
(if (<= EAccept 4.8e-180)
t_3
(if (<= EAccept 1e-144)
(+ (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))) (/ NdChar 2.0))
(if (<= EAccept 5e-82)
t_4
(if (<= EAccept 6.1e+134)
(+ t_2 t_1)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NaChar / (1.0 + exp((Vef / KbT)));
double t_2 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + exp((Ev / KbT))));
double t_4 = t_0 + t_1;
double tmp;
if (EAccept <= -1.1e-85) {
tmp = t_3;
} else if (EAccept <= 6.6e-269) {
tmp = t_4;
} else if (EAccept <= 4.8e-180) {
tmp = t_3;
} else if (EAccept <= 1e-144) {
tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar / 2.0);
} else if (EAccept <= 5e-82) {
tmp = t_4;
} else if (EAccept <= 6.1e+134) {
tmp = t_2 + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = nachar / (1.0d0 + exp((vef / kbt)))
t_2 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_3 = t_2 + (nachar / (1.0d0 + exp((ev / kbt))))
t_4 = t_0 + t_1
if (eaccept <= (-1.1d-85)) then
tmp = t_3
else if (eaccept <= 6.6d-269) then
tmp = t_4
else if (eaccept <= 4.8d-180) then
tmp = t_3
else if (eaccept <= 1d-144) then
tmp = (nachar / (1.0d0 + exp((mu / -kbt)))) + (ndchar / 2.0d0)
else if (eaccept <= 5d-82) then
tmp = t_4
else if (eaccept <= 6.1d+134) then
tmp = t_2 + t_1
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double t_2 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_4 = t_0 + t_1;
double tmp;
if (EAccept <= -1.1e-85) {
tmp = t_3;
} else if (EAccept <= 6.6e-269) {
tmp = t_4;
} else if (EAccept <= 4.8e-180) {
tmp = t_3;
} else if (EAccept <= 1e-144) {
tmp = (NaChar / (1.0 + Math.exp((mu / -KbT)))) + (NdChar / 2.0);
} else if (EAccept <= 5e-82) {
tmp = t_4;
} else if (EAccept <= 6.1e+134) {
tmp = t_2 + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = NaChar / (1.0 + math.exp((Vef / KbT))) t_2 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_3 = t_2 + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_4 = t_0 + t_1 tmp = 0 if EAccept <= -1.1e-85: tmp = t_3 elif EAccept <= 6.6e-269: tmp = t_4 elif EAccept <= 4.8e-180: tmp = t_3 elif EAccept <= 1e-144: tmp = (NaChar / (1.0 + math.exp((mu / -KbT)))) + (NdChar / 2.0) elif EAccept <= 5e-82: tmp = t_4 elif EAccept <= 6.1e+134: tmp = t_2 + t_1 else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_3 = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_4 = Float64(t_0 + t_1) tmp = 0.0 if (EAccept <= -1.1e-85) tmp = t_3; elseif (EAccept <= 6.6e-269) tmp = t_4; elseif (EAccept <= 4.8e-180) tmp = t_3; elseif (EAccept <= 1e-144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT))))) + Float64(NdChar / 2.0)); elseif (EAccept <= 5e-82) tmp = t_4; elseif (EAccept <= 6.1e+134) tmp = Float64(t_2 + t_1); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = NaChar / (1.0 + exp((Vef / KbT))); t_2 = NdChar / (1.0 + exp((EDonor / KbT))); t_3 = t_2 + (NaChar / (1.0 + exp((Ev / KbT)))); t_4 = t_0 + t_1; tmp = 0.0; if (EAccept <= -1.1e-85) tmp = t_3; elseif (EAccept <= 6.6e-269) tmp = t_4; elseif (EAccept <= 4.8e-180) tmp = t_3; elseif (EAccept <= 1e-144) tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar / 2.0); elseif (EAccept <= 5e-82) tmp = t_4; elseif (EAccept <= 6.1e+134) tmp = t_2 + t_1; else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$0 + t$95$1), $MachinePrecision]}, If[LessEqual[EAccept, -1.1e-85], t$95$3, If[LessEqual[EAccept, 6.6e-269], t$95$4, If[LessEqual[EAccept, 4.8e-180], t$95$3, If[LessEqual[EAccept, 1e-144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 5e-82], t$95$4, If[LessEqual[EAccept, 6.1e+134], N[(t$95$2 + t$95$1), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_3 := t\_2 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_4 := t\_0 + t\_1\\
\mathbf{if}\;EAccept \leq -1.1 \cdot 10^{-85}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 6.6 \cdot 10^{-269}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;EAccept \leq 4.8 \cdot 10^{-180}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 10^{-144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{mu}{-KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;EAccept \leq 5 \cdot 10^{-82}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;EAccept \leq 6.1 \cdot 10^{+134}:\\
\;\;\;\;t\_2 + t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.1e-85 or 6.5999999999999999e-269 < EAccept < 4.79999999999999959e-180Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 73.7%
Taylor expanded in Ev around inf 58.7%
if -1.1e-85 < EAccept < 6.5999999999999999e-269 or 9.9999999999999995e-145 < EAccept < 4.9999999999999998e-82Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.8%
Taylor expanded in Vef around inf 62.5%
if 4.79999999999999959e-180 < EAccept < 9.9999999999999995e-145Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 88.4%
Taylor expanded in mu around inf 74.7%
associate-*r/86.3%
mul-1-neg86.3%
Simplified74.7%
if 4.9999999999999998e-82 < EAccept < 6.09999999999999978e134Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 73.3%
Taylor expanded in Vef around inf 61.7%
if 6.09999999999999978e134 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 76.0%
Taylor expanded in EAccept around inf 74.1%
Final simplification63.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(t_2 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_3 (+ t_0 t_1)))
(if (<= EAccept -1.1e-82)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 1.35e-264)
t_3
(if (<= EAccept 5.8e-127)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= EAccept 3.1e-81)
t_3
(if (<= EAccept 1.45e+134)
(+ t_2 t_1)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NaChar / (1.0 + exp((Vef / KbT)));
double t_2 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_3 = t_0 + t_1;
double tmp;
if (EAccept <= -1.1e-82) {
tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 1.35e-264) {
tmp = t_3;
} else if (EAccept <= 5.8e-127) {
tmp = t_2 + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (EAccept <= 3.1e-81) {
tmp = t_3;
} else if (EAccept <= 1.45e+134) {
tmp = t_2 + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = nachar / (1.0d0 + exp((vef / kbt)))
t_2 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_3 = t_0 + t_1
if (eaccept <= (-1.1d-82)) then
tmp = t_2 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 1.35d-264) then
tmp = t_3
else if (eaccept <= 5.8d-127) then
tmp = t_2 + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (eaccept <= 3.1d-81) then
tmp = t_3
else if (eaccept <= 1.45d+134) then
tmp = t_2 + t_1
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double t_2 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_3 = t_0 + t_1;
double tmp;
if (EAccept <= -1.1e-82) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 1.35e-264) {
tmp = t_3;
} else if (EAccept <= 5.8e-127) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (EAccept <= 3.1e-81) {
tmp = t_3;
} else if (EAccept <= 1.45e+134) {
tmp = t_2 + t_1;
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = NaChar / (1.0 + math.exp((Vef / KbT))) t_2 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_3 = t_0 + t_1 tmp = 0 if EAccept <= -1.1e-82: tmp = t_2 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 1.35e-264: tmp = t_3 elif EAccept <= 5.8e-127: tmp = t_2 + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif EAccept <= 3.1e-81: tmp = t_3 elif EAccept <= 1.45e+134: tmp = t_2 + t_1 else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_3 = Float64(t_0 + t_1) tmp = 0.0 if (EAccept <= -1.1e-82) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 1.35e-264) tmp = t_3; elseif (EAccept <= 5.8e-127) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (EAccept <= 3.1e-81) tmp = t_3; elseif (EAccept <= 1.45e+134) tmp = Float64(t_2 + t_1); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = NaChar / (1.0 + exp((Vef / KbT))); t_2 = NdChar / (1.0 + exp((EDonor / KbT))); t_3 = t_0 + t_1; tmp = 0.0; if (EAccept <= -1.1e-82) tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 1.35e-264) tmp = t_3; elseif (EAccept <= 5.8e-127) tmp = t_2 + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (EAccept <= 3.1e-81) tmp = t_3; elseif (EAccept <= 1.45e+134) tmp = t_2 + t_1; else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 + t$95$1), $MachinePrecision]}, If[LessEqual[EAccept, -1.1e-82], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.35e-264], t$95$3, If[LessEqual[EAccept, 5.8e-127], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.1e-81], t$95$3, If[LessEqual[EAccept, 1.45e+134], N[(t$95$2 + t$95$1), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_3 := t\_0 + t\_1\\
\mathbf{if}\;EAccept \leq -1.1 \cdot 10^{-82}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.35 \cdot 10^{-264}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 5.8 \cdot 10^{-127}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;EAccept \leq 3.1 \cdot 10^{-81}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 1.45 \cdot 10^{+134}:\\
\;\;\;\;t\_2 + t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.09999999999999993e-82Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 73.5%
Taylor expanded in Ev around inf 56.5%
if -1.09999999999999993e-82 < EAccept < 1.34999999999999997e-264 or 5.8000000000000001e-127 < EAccept < 3.09999999999999988e-81Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.4%
Taylor expanded in Vef around inf 63.2%
if 1.34999999999999997e-264 < EAccept < 5.8000000000000001e-127Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.7%
Taylor expanded in mu around inf 59.4%
associate-*r/70.1%
mul-1-neg70.1%
Simplified59.4%
if 3.09999999999999988e-81 < EAccept < 1.45000000000000006e134Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 73.3%
Taylor expanded in Vef around inf 61.7%
if 1.45000000000000006e134 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 76.0%
Taylor expanded in EAccept around inf 74.1%
Final simplification62.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))))
(if (<= EAccept -6e-125)
t_1
(if (<= EAccept 6e-272)
t_2
(if (<= EAccept 9.5e-175)
t_1
(if (<= EAccept 5.4e-81)
t_2
(if (<= EAccept 1.65e+134)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
double t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (EAccept <= -6e-125) {
tmp = t_1;
} else if (EAccept <= 6e-272) {
tmp = t_2;
} else if (EAccept <= 9.5e-175) {
tmp = t_1;
} else if (EAccept <= 5.4e-81) {
tmp = t_2;
} else if (EAccept <= 1.65e+134) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
t_2 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
if (eaccept <= (-6d-125)) then
tmp = t_1
else if (eaccept <= 6d-272) then
tmp = t_2
else if (eaccept <= 9.5d-175) then
tmp = t_1
else if (eaccept <= 5.4d-81) then
tmp = t_2
else if (eaccept <= 1.65d+134) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_2 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (EAccept <= -6e-125) {
tmp = t_1;
} else if (EAccept <= 6e-272) {
tmp = t_2;
} else if (EAccept <= 9.5e-175) {
tmp = t_1;
} else if (EAccept <= 5.4e-81) {
tmp = t_2;
} else if (EAccept <= 1.65e+134) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_1 = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_2 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) tmp = 0 if EAccept <= -6e-125: tmp = t_1 elif EAccept <= 6e-272: tmp = t_2 elif EAccept <= 9.5e-175: tmp = t_1 elif EAccept <= 5.4e-81: tmp = t_2 elif EAccept <= 1.65e+134: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))) tmp = 0.0 if (EAccept <= -6e-125) tmp = t_1; elseif (EAccept <= 6e-272) tmp = t_2; elseif (EAccept <= 9.5e-175) tmp = t_1; elseif (EAccept <= 5.4e-81) tmp = t_2; elseif (EAccept <= 1.65e+134) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); tmp = 0.0; if (EAccept <= -6e-125) tmp = t_1; elseif (EAccept <= 6e-272) tmp = t_2; elseif (EAccept <= 9.5e-175) tmp = t_1; elseif (EAccept <= 5.4e-81) tmp = t_2; elseif (EAccept <= 1.65e+134) tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -6e-125], t$95$1, If[LessEqual[EAccept, 6e-272], t$95$2, If[LessEqual[EAccept, 9.5e-175], t$95$1, If[LessEqual[EAccept, 5.4e-81], t$95$2, If[LessEqual[EAccept, 1.65e+134], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{if}\;EAccept \leq -6 \cdot 10^{-125}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EAccept \leq 6 \cdot 10^{-272}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 9.5 \cdot 10^{-175}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EAccept \leq 5.4 \cdot 10^{-81}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 1.65 \cdot 10^{+134}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -5.99999999999999981e-125 or 6.0000000000000006e-272 < EAccept < 9.50000000000000052e-175Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 74.1%
Taylor expanded in Ev around inf 59.5%
if -5.99999999999999981e-125 < EAccept < 6.0000000000000006e-272 or 9.50000000000000052e-175 < EAccept < 5.39999999999999979e-81Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 77.2%
Taylor expanded in mu around 0 60.1%
+-commutative60.1%
Simplified60.1%
if 5.39999999999999979e-81 < EAccept < 1.65e134Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.5%
Taylor expanded in Vef around inf 62.9%
if 1.65e134 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 76.0%
Taylor expanded in EAccept around inf 74.1%
Final simplification62.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))))
(if (<= Ec -7.5e+155)
t_1
(if (<= Ec -1.25e-217)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Ec 1.8e-64)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((Ec / -KbT))));
double tmp;
if (Ec <= -7.5e+155) {
tmp = t_1;
} else if (Ec <= -1.25e-217) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Ec <= 1.8e-64) {
tmp = t_0 + (NdChar / (1.0 + exp((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 + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((ec / -kbt))))
if (ec <= (-7.5d+155)) then
tmp = t_1
else if (ec <= (-1.25d-217)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ec <= 1.8d-64) then
tmp = t_0 + (ndchar / (1.0d0 + exp((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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
double tmp;
if (Ec <= -7.5e+155) {
tmp = t_1;
} else if (Ec <= -1.25e-217) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Ec <= 1.8e-64) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((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 + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) tmp = 0 if Ec <= -7.5e+155: tmp = t_1 elif Ec <= -1.25e-217: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Ec <= 1.8e-64: tmp = t_0 + (NdChar / (1.0 + math.exp((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(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))) tmp = 0.0 if (Ec <= -7.5e+155) tmp = t_1; elseif (Ec <= -1.25e-217) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Ec <= 1.8e-64) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(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 + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((Ec / -KbT)))); tmp = 0.0; if (Ec <= -7.5e+155) tmp = t_1; elseif (Ec <= -1.25e-217) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Ec <= 1.8e-64) tmp = t_0 + (NdChar / (1.0 + exp((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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ec, -7.5e+155], t$95$1, If[LessEqual[Ec, -1.25e-217], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ec, 1.8e-64], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[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(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{if}\;Ec \leq -7.5 \cdot 10^{+155}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Ec \leq -1.25 \cdot 10^{-217}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Ec \leq 1.8 \cdot 10^{-64}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Ec < -7.4999999999999999e155 or 1.7999999999999999e-64 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 85.4%
associate-*r/85.4%
mul-1-neg85.4%
Simplified85.4%
if -7.4999999999999999e155 < Ec < -1.2500000000000001e-217Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 82.0%
if -1.2500000000000001e-217 < Ec < 1.7999999999999999e-64Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
Final simplification84.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))
(if (<= mu -5.3e+159)
t_1
(if (<= mu 6.2e-239)
(+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) t_0)
(if (<= mu 9e+73)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_0)
(if (<= mu 2.3e+113)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* -0.25 (* EDonor (/ NdChar 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((EAccept / KbT)));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double tmp;
if (mu <= -5.3e+159) {
tmp = t_1;
} else if (mu <= 6.2e-239) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + t_0;
} else if (mu <= 9e+73) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0;
} else if (mu <= 2.3e+113) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (-0.25 * (EDonor * (NdChar / 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((eaccept / kbt)))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
if (mu <= (-5.3d+159)) then
tmp = t_1
else if (mu <= 6.2d-239) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + t_0
else if (mu <= 9d+73) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_0
else if (mu <= 2.3d+113) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + ((-0.25d0) * (edonor * (ndchar / 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((EAccept / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double tmp;
if (mu <= -5.3e+159) {
tmp = t_1;
} else if (mu <= 6.2e-239) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + t_0;
} else if (mu <= 9e+73) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
} else if (mu <= 2.3e+113) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (-0.25 * (EDonor * (NdChar / 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((EAccept / KbT))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) tmp = 0 if mu <= -5.3e+159: tmp = t_1 elif mu <= 6.2e-239: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + t_0 elif mu <= 9e+73: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 elif mu <= 2.3e+113: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (-0.25 * (EDonor * (NdChar / 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(EAccept / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) tmp = 0.0 if (mu <= -5.3e+159) tmp = t_1; elseif (mu <= 6.2e-239) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + t_0); elseif (mu <= 9e+73) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0); elseif (mu <= 2.3e+113) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(-0.25 * Float64(EDonor * Float64(NdChar / 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((EAccept / KbT))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); tmp = 0.0; if (mu <= -5.3e+159) tmp = t_1; elseif (mu <= 6.2e-239) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + t_0; elseif (mu <= 9e+73) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; elseif (mu <= 2.3e+113) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (-0.25 * (EDonor * (NdChar / 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[(EAccept / 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[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -5.3e+159], t$95$1, If[LessEqual[mu, 6.2e-239], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 9e+73], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[mu, 2.3e+113], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.25 * N[(EDonor * N[(NdChar / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{if}\;mu \leq -5.3 \cdot 10^{+159}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 6.2 \cdot 10^{-239}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + t\_0\\
\mathbf{elif}\;mu \leq 9 \cdot 10^{+73}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_0\\
\mathbf{elif}\;mu \leq 2.3 \cdot 10^{+113}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + -0.25 \cdot \left(EDonor \cdot \frac{NdChar}{KbT}\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if mu < -5.2999999999999997e159 or 2.29999999999999997e113 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 91.2%
Taylor expanded in mu around inf 83.1%
associate-*r/83.1%
mul-1-neg83.1%
Simplified83.1%
if -5.2999999999999997e159 < mu < 6.1999999999999997e-239Initial program 99.8%
Simplified99.8%
Taylor expanded in Ec around inf 77.3%
associate-*r/77.3%
mul-1-neg77.3%
Simplified77.3%
Taylor expanded in EAccept around inf 62.0%
if 6.1999999999999997e-239 < mu < 8.99999999999999969e73Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.2%
Taylor expanded in EAccept around inf 61.9%
if 8.99999999999999969e73 < mu < 2.29999999999999997e113Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in EDonor around inf 100.0%
associate-/l*100.0%
Simplified100.0%
Final simplification68.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= mu -2.5e+59)
t_0
(if (<= mu 1.2e-191)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 6e+66)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 1.18e+114)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/
NdChar
(-
(+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT)))
(/ Ec KbT))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_1 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (mu <= -2.5e+59) {
tmp = t_0;
} else if (mu <= 1.2e-191) {
tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 6e+66) {
tmp = t_1 + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 1.18e+114) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_1 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (mu <= (-2.5d+59)) then
tmp = t_0
else if (mu <= 1.2d-191) then
tmp = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 6d+66) then
tmp = t_1 + (nachar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 1.18d+114) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_1 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (mu <= -2.5e+59) {
tmp = t_0;
} else if (mu <= 1.2e-191) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 6e+66) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 1.18e+114) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} 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 / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_1 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if mu <= -2.5e+59: tmp = t_0 elif mu <= 1.2e-191: tmp = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 6e+66: tmp = t_1 + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 1.18e+114: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) 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(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (mu <= -2.5e+59) tmp = t_0; elseif (mu <= 1.2e-191) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 6e+66) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 1.18e+114) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); 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 / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_1 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (mu <= -2.5e+59) tmp = t_0; elseif (mu <= 1.2e-191) tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 6e+66) tmp = t_1 + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 1.18e+114) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.5e+59], t$95$0, If[LessEqual[mu, 1.2e-191], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 6e+66], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.18e+114], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -2.5 \cdot 10^{+59}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 1.2 \cdot 10^{-191}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 6 \cdot 10^{+66}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.18 \cdot 10^{+114}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -2.4999999999999999e59 or 1.18000000000000005e114 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 87.9%
Taylor expanded in mu around inf 75.2%
associate-*r/75.2%
mul-1-neg75.2%
Simplified75.2%
if -2.4999999999999999e59 < mu < 1.2e-191Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 73.5%
Taylor expanded in Ev around inf 66.2%
if 1.2e-191 < mu < 6.00000000000000005e66Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.3%
Taylor expanded in Vef around inf 66.0%
if 6.00000000000000005e66 < mu < 1.18000000000000005e114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 87.6%
associate-+r+87.6%
Simplified87.6%
Final simplification69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -7e+112)
t_1
(if (<= Vef -2.22e+15)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= Vef 3.5e+42)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+112) {
tmp = t_1;
} else if (Vef <= -2.22e+15) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (Vef <= 3.5e+42) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-7d+112)) then
tmp = t_1
else if (vef <= (-2.22d+15)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (vef <= 3.5d+42) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+112) {
tmp = t_1;
} else if (Vef <= -2.22e+15) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (Vef <= 3.5e+42) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -7e+112: tmp = t_1 elif Vef <= -2.22e+15: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif Vef <= 3.5e+42: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / 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(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -7e+112) tmp = t_1; elseif (Vef <= -2.22e+15) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (Vef <= 3.5e+42) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -7e+112) tmp = t_1; elseif (Vef <= -2.22e+15) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (Vef <= 3.5e+42) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / 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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7e+112], t$95$1, If[LessEqual[Vef, -2.22e+15], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.5e+42], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+112}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -2.22 \cdot 10^{+15}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;Vef \leq 3.5 \cdot 10^{+42}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -6.99999999999999994e112 or 3.50000000000000023e42 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 83.4%
if -6.99999999999999994e112 < Vef < -2.22e15Initial program 99.6%
Simplified99.6%
Taylor expanded in mu around inf 86.0%
Taylor expanded in mu around inf 79.1%
associate-*r/79.1%
mul-1-neg79.1%
Simplified79.1%
if -2.22e15 < Vef < 3.50000000000000023e42Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.7%
Final simplification80.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= EAccept -5.5e-118)
t_1
(if (<= EAccept 3e-270)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= EAccept 1.3e-205)
t_1
(if (<= EAccept 1.36e+94)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (EAccept <= -5.5e-118) {
tmp = t_1;
} else if (EAccept <= 3e-270) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (EAccept <= 1.3e-205) {
tmp = t_1;
} else if (EAccept <= 1.36e+94) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
if (eaccept <= (-5.5d-118)) then
tmp = t_1
else if (eaccept <= 3d-270) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (eaccept <= 1.3d-205) then
tmp = t_1
else if (eaccept <= 1.36d+94) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (EAccept <= -5.5e-118) {
tmp = t_1;
} else if (EAccept <= 3e-270) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (EAccept <= 1.3e-205) {
tmp = t_1;
} else if (EAccept <= 1.36e+94) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_1 = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if EAccept <= -5.5e-118: tmp = t_1 elif EAccept <= 3e-270: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif EAccept <= 1.3e-205: tmp = t_1 elif EAccept <= 1.36e+94: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (EAccept <= -5.5e-118) tmp = t_1; elseif (EAccept <= 3e-270) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (EAccept <= 1.3e-205) tmp = t_1; elseif (EAccept <= 1.36e+94) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (EAccept <= -5.5e-118) tmp = t_1; elseif (EAccept <= 3e-270) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (EAccept <= 1.3e-205) tmp = t_1; elseif (EAccept <= 1.36e+94) tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -5.5e-118], t$95$1, If[LessEqual[EAccept, 3e-270], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.3e-205], t$95$1, If[LessEqual[EAccept, 1.36e+94], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;EAccept \leq -5.5 \cdot 10^{-118}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EAccept \leq 3 \cdot 10^{-270}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 1.3 \cdot 10^{-205}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EAccept \leq 1.36 \cdot 10^{+94}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -5.5000000000000003e-118 or 3.00000000000000013e-270 < EAccept < 1.2999999999999999e-205Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 73.2%
Taylor expanded in Ev around inf 57.6%
if -5.5000000000000003e-118 < EAccept < 3.00000000000000013e-270Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.2%
Taylor expanded in mu around 0 55.2%
+-commutative55.2%
Simplified55.2%
if 1.2999999999999999e-205 < EAccept < 1.36e94Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.8%
Taylor expanded in Vef around inf 58.9%
if 1.36e94 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 67.4%
Taylor expanded in EAccept around inf 64.1%
Final simplification58.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= mu -900000.0) (not (<= mu 3.5e+56)))
(+ 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 + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((mu <= -900000.0) || !(mu <= 3.5e+56)) {
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 + (ev + (eaccept - mu))) / kbt)))
if ((mu <= (-900000.0d0)) .or. (.not. (mu <= 3.5d+56))) 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 + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((mu <= -900000.0) || !(mu <= 3.5e+56)) {
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 + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (mu <= -900000.0) or not (mu <= 3.5e+56): 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(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((mu <= -900000.0) || !(mu <= 3.5e+56)) 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 + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((mu <= -900000.0) || ~((mu <= 3.5e+56))) 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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[mu, -900000.0], N[Not[LessEqual[mu, 3.5e+56]], $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(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -900000 \lor \neg \left(mu \leq 3.5 \cdot 10^{+56}\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 < -9e5 or 3.49999999999999999e56 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 84.9%
if -9e5 < mu < 3.49999999999999999e56Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 79.0%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Ec -4.2e+181) (not (<= Ec 7e+152)))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept 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 ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - 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 ((ec <= (-4.2d+181)) .or. (.not. (ec <= 7d+152))) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - 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 ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - 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 (Ec <= -4.2e+181) or not (Ec <= 7e+152): tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - 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 ((Ec <= -4.2e+181) || !(Ec <= 7e+152)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - 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 ((Ec <= -4.2e+181) || ~((Ec <= 7e+152))) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - 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[Ec, -4.2e+181], N[Not[LessEqual[Ec, 7e+152]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - 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}\;Ec \leq -4.2 \cdot 10^{+181} \lor \neg \left(Ec \leq 7 \cdot 10^{+152}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Ec < -4.19999999999999995e181 or 6.99999999999999963e152 < Ec Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 90.1%
associate-*r/90.1%
mul-1-neg90.1%
Simplified90.1%
Taylor expanded in EAccept around inf 69.9%
if -4.19999999999999995e181 < Ec < 6.99999999999999963e152Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.9%
Final simplification76.8%
(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 (/ EAccept KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= EDonor -1.9e-169)
t_0
(if (<= EDonor 4.3e-223)
(+ t_1 (/ NdChar (- 2.0 (/ Ec KbT))))
(if (<= EDonor 3.6e+103)
(+
t_1
(/
NdChar
(-
(+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT)))
(/ Ec KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -1.9e-169) {
tmp = t_0;
} else if (EDonor <= 4.3e-223) {
tmp = t_1 + (NdChar / (2.0 - (Ec / KbT)));
} else if (EDonor <= 3.6e+103) {
tmp = t_1 + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (edonor <= (-1.9d-169)) then
tmp = t_0
else if (edonor <= 4.3d-223) then
tmp = t_1 + (ndchar / (2.0d0 - (ec / kbt)))
else if (edonor <= 3.6d+103) then
tmp = t_1 + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -1.9e-169) {
tmp = t_0;
} else if (EDonor <= 4.3e-223) {
tmp = t_1 + (NdChar / (2.0 - (Ec / KbT)));
} else if (EDonor <= 3.6e+103) {
tmp = t_1 + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = t_0;
}
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((EAccept / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if EDonor <= -1.9e-169: tmp = t_0 elif EDonor <= 4.3e-223: tmp = t_1 + (NdChar / (2.0 - (Ec / KbT))) elif EDonor <= 3.6e+103: tmp = t_1 + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) 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(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -1.9e-169) tmp = t_0; elseif (EDonor <= 4.3e-223) tmp = Float64(t_1 + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); elseif (EDonor <= 3.6e+103) tmp = Float64(t_1 + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); 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((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (EDonor <= -1.9e-169) tmp = t_0; elseif (EDonor <= 4.3e-223) tmp = t_1 + (NdChar / (2.0 - (Ec / KbT))); elseif (EDonor <= 3.6e+103) tmp = t_1 + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.9e-169], t$95$0, If[LessEqual[EDonor, 4.3e-223], N[(t$95$1 + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 3.6e+103], N[(t$95$1 + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.9 \cdot 10^{-169}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 4.3 \cdot 10^{-223}:\\
\;\;\;\;t\_1 + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;EDonor \leq 3.6 \cdot 10^{+103}:\\
\;\;\;\;t\_1 + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if EDonor < -1.9e-169 or 3.60000000000000017e103 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 77.9%
Taylor expanded in EAccept around inf 58.3%
if -1.9e-169 < EDonor < 4.2999999999999999e-223Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 75.5%
associate-*r/75.5%
mul-1-neg75.5%
Simplified75.5%
Taylor expanded in Ec around 0 64.4%
mul-1-neg64.4%
unsub-neg64.4%
Simplified64.4%
if 4.2999999999999999e-223 < EDonor < 3.60000000000000017e103Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 68.9%
associate-+r+68.9%
Simplified68.9%
Final simplification62.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (* NdChar (/ 1.0 (+ 1.0 (exp (/ (- (+ (+ EDonor mu) Vef) Ec) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + exp(((((EDonor + mu) + Vef) - Ec) / KbT)))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (1.0d0 + exp(((((edonor + mu) + vef) - ec) / kbt)))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + Math.exp(((((EDonor + mu) + Vef) - Ec) / KbT)))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + math.exp(((((EDonor + mu) + Vef) - Ec) / KbT)))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Float64(Float64(EDonor + mu) + Vef) - Ec) / KbT)))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (1.0 + exp(((((EDonor + mu) + Vef) - Ec) / KbT))))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(N[(N[(EDonor + mu), $MachinePrecision] + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{1 + e^{\frac{\left(\left(EDonor + mu\right) + Vef\right) - Ec}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
clear-num99.8%
associate-/r/99.9%
+-commutative99.9%
div-inv99.9%
div-inv99.9%
associate-+r+99.9%
associate-+r-99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= EDonor -1.2e-101)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EDonor 1.5e+103)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/
NdChar
(- (+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double tmp;
if (EDonor <= -1.2e-101) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EDonor <= 1.5e+103) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
if (edonor <= (-1.2d-101)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (edonor <= 1.5d+103) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double tmp;
if (EDonor <= -1.2e-101) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EDonor <= 1.5e+103) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) tmp = 0 if EDonor <= -1.2e-101: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EDonor <= 1.5e+103: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) tmp = 0.0 if (EDonor <= -1.2e-101) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EDonor <= 1.5e+103) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); tmp = 0.0; if (EDonor <= -1.2e-101) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EDonor <= 1.5e+103) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.2e-101], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 1.5e+103], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.2 \cdot 10^{-101}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 1.5 \cdot 10^{+103}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -1.2e-101Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 76.1%
Taylor expanded in Ev around inf 58.1%
if -1.2e-101 < EDonor < 1.5e103Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 62.9%
associate-+r+62.9%
Simplified62.9%
if 1.5e103 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.9%
Taylor expanded in EAccept around inf 70.0%
Final simplification62.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -1.05e-123)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NdChar 3.3e+145)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/
NdChar
(- (+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (- 2.0 (/ 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 (NdChar <= -1.05e-123) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.3e+145) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (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 (ndchar <= (-1.05d-123)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 3.3d+145) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (2.0d0 - (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 (NdChar <= -1.05e-123) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 3.3e+145) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -1.05e-123: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 3.3e+145: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -1.05e-123) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 3.3e+145) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -1.05e-123) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 3.3e+145) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -1.05e-123], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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, 3.3e+145], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.05 \cdot 10^{-123}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\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{elif}\;NdChar \leq 3.3 \cdot 10^{+145}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NdChar < -1.05e-123Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 69.0%
Taylor expanded in KbT around inf 56.3%
if -1.05e-123 < NdChar < 3.30000000000000027e145Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
associate-+r+64.6%
Simplified64.6%
if 3.30000000000000027e145 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in Ec around inf 66.4%
associate-*r/66.4%
mul-1-neg66.4%
Simplified66.4%
Taylor expanded in mu around inf 62.1%
associate-*r/63.4%
mul-1-neg63.4%
Simplified62.1%
Taylor expanded in mu around 0 59.8%
mul-1-neg59.8%
unsub-neg59.8%
Simplified59.8%
Final simplification61.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -6.1e-99)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (or (<= NdChar 4.8e-32)
(and (not (<= NdChar 0.000195)) (<= NdChar 2.05e+144)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (- 2.0 (/ Ec KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (- 2.0 (/ 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 (NdChar <= -6.1e-99) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if ((NdChar <= 4.8e-32) || (!(NdChar <= 0.000195) && (NdChar <= 2.05e+144))) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (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 (ndchar <= (-6.1d-99)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if ((ndchar <= 4.8d-32) .or. (.not. (ndchar <= 0.000195d0)) .and. (ndchar <= 2.05d+144)) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (2.0d0 - (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 (NdChar <= -6.1e-99) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if ((NdChar <= 4.8e-32) || (!(NdChar <= 0.000195) && (NdChar <= 2.05e+144))) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -6.1e-99: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif (NdChar <= 4.8e-32) or (not (NdChar <= 0.000195) and (NdChar <= 2.05e+144)): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -6.1e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif ((NdChar <= 4.8e-32) || (!(NdChar <= 0.000195) && (NdChar <= 2.05e+144))) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -6.1e-99) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif ((NdChar <= 4.8e-32) || (~((NdChar <= 0.000195)) && (NdChar <= 2.05e+144))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -6.1e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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[Or[LessEqual[NdChar, 4.8e-32], And[N[Not[LessEqual[NdChar, 0.000195]], $MachinePrecision], LessEqual[NdChar, 2.05e+144]]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -6.1 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\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{elif}\;NdChar \leq 4.8 \cdot 10^{-32} \lor \neg \left(NdChar \leq 0.000195\right) \land NdChar \leq 2.05 \cdot 10^{+144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NdChar < -6.1000000000000003e-99Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 70.2%
Taylor expanded in KbT around inf 57.0%
if -6.1000000000000003e-99 < NdChar < 4.8000000000000003e-32 or 1.94999999999999996e-4 < NdChar < 2.05000000000000001e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 78.2%
associate-*r/78.2%
mul-1-neg78.2%
Simplified78.2%
Taylor expanded in Ec around 0 65.9%
mul-1-neg65.9%
unsub-neg65.9%
Simplified65.9%
if 4.8000000000000003e-32 < NdChar < 1.94999999999999996e-4 or 2.05000000000000001e144 < NdChar Initial program 99.8%
Simplified99.8%
Taylor expanded in Ec around inf 68.7%
associate-*r/68.7%
mul-1-neg68.7%
Simplified68.7%
Taylor expanded in mu around inf 62.8%
associate-*r/59.8%
mul-1-neg59.8%
Simplified62.8%
Taylor expanded in mu around 0 62.8%
mul-1-neg62.8%
unsub-neg62.8%
Simplified62.8%
Final simplification62.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -9e-39)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (or (<= NdChar 4e-32)
(and (not (<= NdChar 0.00027)) (<= NdChar 7.5e+146)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (- 2.0 (/ Ec KbT))))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (- 2.0 (/ 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 (NdChar <= -9e-39) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= 4e-32) || (!(NdChar <= 0.00027) && (NdChar <= 7.5e+146))) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (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 (ndchar <= (-9d-39)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if ((ndchar <= 4d-32) .or. (.not. (ndchar <= 0.00027d0)) .and. (ndchar <= 7.5d+146)) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (2.0d0 - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (2.0d0 - (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 (NdChar <= -9e-39) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if ((NdChar <= 4e-32) || (!(NdChar <= 0.00027) && (NdChar <= 7.5e+146))) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -9e-39: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif (NdChar <= 4e-32) or (not (NdChar <= 0.00027) and (NdChar <= 7.5e+146)): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -9e-39) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif ((NdChar <= 4e-32) || (!(NdChar <= 0.00027) && (NdChar <= 7.5e+146))) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(2.0 - Float64(Ec / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -9e-39) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif ((NdChar <= 4e-32) || (~((NdChar <= 0.00027)) && (NdChar <= 7.5e+146))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (2.0 - (Ec / KbT))); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -9e-39], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, 4e-32], And[N[Not[LessEqual[NdChar, 0.00027]], $MachinePrecision], LessEqual[NdChar, 7.5e+146]]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -9 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 4 \cdot 10^{-32} \lor \neg \left(NdChar \leq 0.00027\right) \land NdChar \leq 7.5 \cdot 10^{+146}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NdChar < -9.0000000000000002e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.8%
Taylor expanded in EAccept around inf 60.1%
Taylor expanded in EAccept around 0 56.1%
if -9.0000000000000002e-39 < NdChar < 4.00000000000000022e-32 or 2.70000000000000003e-4 < NdChar < 7.49999999999999983e146Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 77.0%
associate-*r/77.0%
mul-1-neg77.0%
Simplified77.0%
Taylor expanded in Ec around 0 63.1%
mul-1-neg63.1%
unsub-neg63.1%
Simplified63.1%
if 4.00000000000000022e-32 < NdChar < 2.70000000000000003e-4 or 7.49999999999999983e146 < NdChar Initial program 99.8%
Simplified99.8%
Taylor expanded in Ec around inf 68.7%
associate-*r/68.7%
mul-1-neg68.7%
Simplified68.7%
Taylor expanded in mu around inf 62.8%
associate-*r/59.8%
mul-1-neg59.8%
Simplified62.8%
Taylor expanded in mu around 0 62.8%
mul-1-neg62.8%
unsub-neg62.8%
Simplified62.8%
Final simplification61.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(* NdChar (/ 1.0 (+ (/ EDonor KbT) 2.0)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))))
(if (<= Ev -7.8e+217)
t_0
(if (<= Ev -4.2e+180)
t_1
(if (<= Ev -1.45e+121)
t_0
(if (<= Ev -3.2e-63)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (- 2.0 (/ mu KbT))))
(if (<= Ev 1.62e-174)
t_1
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (1.0 / ((EDonor / KbT) + 2.0)));
double t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (Ev <= -7.8e+217) {
tmp = t_0;
} else if (Ev <= -4.2e+180) {
tmp = t_1;
} else if (Ev <= -1.45e+121) {
tmp = t_0;
} else if (Ev <= -3.2e-63) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
} else if (Ev <= 1.62e-174) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * (1.0d0 / ((edonor / kbt) + 2.0d0)))
t_1 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
if (ev <= (-7.8d+217)) then
tmp = t_0
else if (ev <= (-4.2d+180)) then
tmp = t_1
else if (ev <= (-1.45d+121)) then
tmp = t_0
else if (ev <= (-3.2d-63)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (2.0d0 - (mu / kbt)))
else if (ev <= 1.62d-174) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * (1.0 / ((EDonor / KbT) + 2.0)));
double t_1 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (Ev <= -7.8e+217) {
tmp = t_0;
} else if (Ev <= -4.2e+180) {
tmp = t_1;
} else if (Ev <= -1.45e+121) {
tmp = t_0;
} else if (Ev <= -3.2e-63) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
} else if (Ev <= 1.62e-174) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * (1.0 / ((EDonor / KbT) + 2.0))) t_1 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) tmp = 0 if Ev <= -7.8e+217: tmp = t_0 elif Ev <= -4.2e+180: tmp = t_1 elif Ev <= -1.45e+121: tmp = t_0 elif Ev <= -3.2e-63: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))) elif Ev <= 1.62e-174: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Float64(EDonor / KbT) + 2.0)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))) tmp = 0.0 if (Ev <= -7.8e+217) tmp = t_0; elseif (Ev <= -4.2e+180) tmp = t_1; elseif (Ev <= -1.45e+121) tmp = t_0; elseif (Ev <= -3.2e-63) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); elseif (Ev <= 1.62e-174) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * (1.0 / ((EDonor / KbT) + 2.0))); t_1 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); tmp = 0.0; if (Ev <= -7.8e+217) tmp = t_0; elseif (Ev <= -4.2e+180) tmp = t_1; elseif (Ev <= -1.45e+121) tmp = t_0; elseif (Ev <= -3.2e-63) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))); elseif (Ev <= 1.62e-174) tmp = t_1; else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -7.8e+217], t$95$0, If[LessEqual[Ev, -4.2e+180], t$95$1, If[LessEqual[Ev, -1.45e+121], t$95$0, If[LessEqual[Ev, -3.2e-63], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.62e-174], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot \frac{1}{\frac{EDonor}{KbT} + 2}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{if}\;Ev \leq -7.8 \cdot 10^{+217}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -4.2 \cdot 10^{+180}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Ev \leq -1.45 \cdot 10^{+121}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -3.2 \cdot 10^{-63}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\mathbf{elif}\;Ev \leq 1.62 \cdot 10^{-174}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -7.79999999999999986e217 or -4.1999999999999999e180 < Ev < -1.45e121Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.5%
Taylor expanded in EDonor around 0 56.6%
Taylor expanded in Ev around inf 54.4%
div-inv54.4%
associate-+r+54.4%
metadata-eval54.4%
Applied egg-rr54.4%
if -7.79999999999999986e217 < Ev < -4.1999999999999999e180 or -3.19999999999999989e-63 < Ev < 1.6200000000000001e-174Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 63.4%
Taylor expanded in EAccept around inf 54.6%
Taylor expanded in EAccept around 0 46.8%
if -1.45e121 < Ev < -3.19999999999999989e-63Initial program 99.9%
Simplified99.9%
Taylor expanded in Ec around inf 77.0%
associate-*r/77.0%
mul-1-neg77.0%
Simplified77.0%
Taylor expanded in mu around inf 66.1%
associate-*r/64.1%
mul-1-neg64.1%
Simplified66.1%
Taylor expanded in mu around 0 54.0%
mul-1-neg54.0%
unsub-neg54.0%
Simplified54.0%
if 1.6200000000000001e-174 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.5%
Taylor expanded in EAccept around inf 41.8%
Final simplification46.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -5.2e-39)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.65e+144)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (- 2.0 (/ 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 (NdChar <= -5.2e-39) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.65e+144) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (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 (ndchar <= (-5.2d-39)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.65d+144) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (2.0d0 - (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 (NdChar <= -5.2e-39) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.65e+144) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -5.2e-39: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.65e+144: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) else: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -5.2e-39) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.65e+144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -5.2e-39) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.65e+144) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); else tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (2.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -5.2e-39], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.65e+144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -5.2 \cdot 10^{-39}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.65 \cdot 10^{+144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NdChar < -5.2e-39Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.8%
Taylor expanded in EAccept around inf 60.1%
Taylor expanded in EAccept around 0 56.1%
if -5.2e-39 < NdChar < 1.65e144Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 75.1%
Taylor expanded in mu around 0 59.7%
+-commutative59.7%
Simplified59.7%
if 1.65e144 < NdChar Initial program 99.7%
Simplified99.7%
Taylor expanded in Ec around inf 66.4%
associate-*r/66.4%
mul-1-neg66.4%
Simplified66.4%
Taylor expanded in mu around inf 62.1%
associate-*r/63.4%
mul-1-neg63.4%
Simplified62.1%
Taylor expanded in mu around 0 59.8%
mul-1-neg59.8%
unsub-neg59.8%
Simplified59.8%
Final simplification58.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.2e-64) (not (<= NaChar 1.8e-11)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.2e-64) || !(NaChar <= 1.8e-11)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.2d-64)) .or. (.not. (nachar <= 1.8d-11))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.2e-64) || !(NaChar <= 1.8e-11)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.2e-64) or not (NaChar <= 1.8e-11): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.2e-64) || !(NaChar <= 1.8e-11)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.2e-64) || ~((NaChar <= 1.8e-11))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.2e-64], N[Not[LessEqual[NaChar, 1.8e-11]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.2 \cdot 10^{-64} \lor \neg \left(NaChar \leq 1.8 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -1.19999999999999999e-64 or 1.79999999999999992e-11 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.7%
if -1.19999999999999999e-64 < NaChar < 1.79999999999999992e-11Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 65.0%
Taylor expanded in EAccept around inf 52.0%
Taylor expanded in EAccept around 0 50.4%
Final simplification53.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -9.5e+26)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NaChar 2.05e-11)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -9.5e+26) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 2.05e-11) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-9.5d+26)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 2.05d-11) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -9.5e+26) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 2.05e-11) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -9.5e+26: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NaChar <= 2.05e-11: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -9.5e+26) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 2.05e-11) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -9.5e+26) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 2.05e-11) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -9.5e+26], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.05e-11], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -9.5 \cdot 10^{+26}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 2.05 \cdot 10^{-11}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NaChar < -9.50000000000000054e26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
Taylor expanded in EAccept around inf 48.6%
if -9.50000000000000054e26 < NaChar < 2.05e-11Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 64.7%
Taylor expanded in EAccept around inf 50.3%
Taylor expanded in EAccept around 0 47.6%
if 2.05e-11 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.1%
Taylor expanded in Ev around inf 54.1%
Final simplification49.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -6.4e+69) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6.4e+69) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-6.4d+69)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6.4e+69) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -6.4e+69: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -6.4e+69) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -6.4e+69) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -6.4e+69], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -6.4 \cdot 10^{+69}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -6.3999999999999997e69Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.8%
Taylor expanded in Ev around inf 42.7%
if -6.3999999999999997e69 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.7%
Taylor expanded in EAccept around inf 39.9%
Final simplification40.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.1%
Taylor expanded in EAccept around inf 38.2%
Final simplification38.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar 2.0) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (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 = (ndchar / 2.0d0) + (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 (NdChar / 2.0) + (NaChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / 2.0) + (NaChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / 2.0) + Float64(NaChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / 2.0) + (NaChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{2} + NaChar \cdot 0.5
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.1%
Taylor expanded in KbT around inf 27.9%
Taylor expanded in KbT around inf 30.1%
Final simplification30.1%
herbie shell --seed 2024096
(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))))))