
(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 23 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))))
(if (<= Vef -1.35e+130)
t_2
(if (<= Vef -3.2e-93)
t_1
(if (<= Vef -3.2e-275)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 5.4e+160) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (Vef <= -1.35e+130) {
tmp = t_2;
} else if (Vef <= -3.2e-93) {
tmp = t_1;
} else if (Vef <= -3.2e-275) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 5.4e+160) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
if (vef <= (-1.35d+130)) then
tmp = t_2
else if (vef <= (-3.2d-93)) then
tmp = t_1
else if (vef <= (-3.2d-275)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 5.4d+160) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (Vef <= -1.35e+130) {
tmp = t_2;
} else if (Vef <= -3.2e-93) {
tmp = t_1;
} else if (Vef <= -3.2e-275) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 5.4e+160) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) tmp = 0 if Vef <= -1.35e+130: tmp = t_2 elif Vef <= -3.2e-93: tmp = t_1 elif Vef <= -3.2e-275: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 5.4e+160: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))) tmp = 0.0 if (Vef <= -1.35e+130) tmp = t_2; elseif (Vef <= -3.2e-93) tmp = t_1; elseif (Vef <= -3.2e-275) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 5.4e+160) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); tmp = 0.0; if (Vef <= -1.35e+130) tmp = t_2; elseif (Vef <= -3.2e-93) tmp = t_1; elseif (Vef <= -3.2e-275) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 5.4e+160) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.35e+130], t$95$2, If[LessEqual[Vef, -3.2e-93], t$95$1, If[LessEqual[Vef, -3.2e-275], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 5.4e+160], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.35 \cdot 10^{+130}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{-93}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{-275}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 5.4 \cdot 10^{+160}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if Vef < -1.3499999999999999e130 or 5.4e160 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 93.0%
Taylor expanded in EDonor around 0 91.5%
+-commutative39.6%
Simplified91.5%
if -1.3499999999999999e130 < Vef < -3.1999999999999999e-93 or -3.2e-275 < Vef < 5.4e160Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.4%
if -3.1999999999999999e-93 < Vef < -3.2e-275Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 84.0%
Final simplification84.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))))
(if (<= Vef -3.2e+112)
t_1
(if (<= Vef -3e-170)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 9.2e-198)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 8e+160)
(+ 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (Vef <= -3.2e+112) {
tmp = t_1;
} else if (Vef <= -3e-170) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 9.2e-198) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 8e+160) {
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 + (eaccept + (ev - mu))) / kbt)))
t_1 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
if (vef <= (-3.2d+112)) then
tmp = t_1
else if (vef <= (-3d-170)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 9.2d-198) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 8d+160) 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (Vef <= -3.2e+112) {
tmp = t_1;
} else if (Vef <= -3e-170) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 9.2e-198) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 8e+160) {
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 + (EAccept + (Ev - mu))) / KbT))) t_1 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) tmp = 0 if Vef <= -3.2e+112: tmp = t_1 elif Vef <= -3e-170: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 9.2e-198: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 8e+160: 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(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))) tmp = 0.0 if (Vef <= -3.2e+112) tmp = t_1; elseif (Vef <= -3e-170) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 9.2e-198) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 8e+160) 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 + (EAccept + (Ev - mu))) / KbT))); t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); tmp = 0.0; if (Vef <= -3.2e+112) tmp = t_1; elseif (Vef <= -3e-170) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 9.2e-198) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 8e+160) 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[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.2e+112], t$95$1, If[LessEqual[Vef, -3e-170], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9.2e-198], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 8e+160], 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(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.2 \cdot 10^{+112}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -3 \cdot 10^{-170}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9.2 \cdot 10^{-198}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 8 \cdot 10^{+160}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if Vef < -3.19999999999999986e112 or 8.00000000000000005e160 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 93.4%
Taylor expanded in EDonor around 0 92.0%
+-commutative39.1%
Simplified92.0%
if -3.19999999999999986e112 < Vef < -3.00000000000000013e-170Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 86.7%
if -3.00000000000000013e-170 < Vef < 9.20000000000000053e-198Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.7%
if 9.20000000000000053e-198 < Vef < 8.00000000000000005e160Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.5%
Final simplification85.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -1.5e+129) (not (<= Vef 9.4e+160)))
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1.5e+129) || !(Vef <= 9.4e+160)) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-1.5d+129)) .or. (.not. (vef <= 9.4d+160))) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -1.5e+129) || !(Vef <= 9.4e+160)) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -1.5e+129) or not (Vef <= 9.4e+160): tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -1.5e+129) || !(Vef <= 9.4e+160)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -1.5e+129) || ~((Vef <= 9.4e+160))) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -1.5e+129], N[Not[LessEqual[Vef, 9.4e+160]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1.5 \cdot 10^{+129} \lor \neg \left(Vef \leq 9.4 \cdot 10^{+160}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.50000000000000015e129 or 9.39999999999999941e160 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 93.0%
Taylor expanded in EDonor around 0 91.5%
+-commutative39.6%
Simplified91.5%
if -1.50000000000000015e129 < Vef < 9.39999999999999941e160Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.5%
Final simplification83.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -3.6e+129)
(+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) t_0)
(if (<= Vef 1.06e+161)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -3.6e+129) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_0;
} else if (Vef <= 1.06e+161) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-3.6d+129)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + t_0
else if (vef <= 1.06d+161) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -3.6e+129) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_0;
} else if (Vef <= 1.06e+161) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -3.6e+129: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_0 elif Vef <= 1.06e+161: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -3.6e+129) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + t_0); elseif (Vef <= 1.06e+161) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / 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 / KbT))); tmp = 0.0; if (Vef <= -3.6e+129) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_0; elseif (Vef <= 1.06e+161) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.6e+129], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.06e+161], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.6 \cdot 10^{+129}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + t_0\\
\mathbf{elif}\;Vef \leq 1.06 \cdot 10^{+161}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\end{array}
\end{array}
if Vef < -3.6000000000000001e129Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.9%
if -3.6000000000000001e129 < Vef < 1.06e161Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.5%
if 1.06e161 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 99.9%
Taylor expanded in EDonor around 0 99.9%
+-commutative48.4%
Simplified99.9%
Final simplification83.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(if (<= Ev -5.6e+158)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev 9e-249)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) 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 (Ev <= -5.6e+158) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= 9e-249) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - 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 (ev <= (-5.6d+158)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= 9d-249) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - 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 (Ev <= -5.6e+158) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= 9e-249) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - 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 Ev <= -5.6e+158: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= 9e-249: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - 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 (Ev <= -5.6e+158) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= 9e-249) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - 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 (Ev <= -5.6e+158) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= 9e-249) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - 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[Ev, -5.6e+158], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 9e-249], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / 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}}}\\
\mathbf{if}\;Ev \leq -5.6 \cdot 10^{+158}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq 9 \cdot 10^{-249}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -5.60000000000000003e158Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 79.1%
Taylor expanded in EDonor around inf 50.8%
if -5.60000000000000003e158 < Ev < 8.99999999999999962e-249Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 72.0%
Taylor expanded in EDonor around 0 68.2%
+-commutative47.6%
Simplified68.2%
if 8.99999999999999962e-249 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.1%
Taylor expanded in EDonor around inf 62.1%
Final simplification63.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(*
NaChar
(/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_2
(+ t_1 (/ 1.0 (/ (+ 2.0 (/ (+ EAccept (- Vef mu)) KbT)) NaChar)))))
(if (<= NdChar -3.7e+37)
t_2
(if (<= NdChar 8.5e-281)
t_0
(if (<= NdChar 3.3e-181)
(+
t_1
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT)))))
(if (<= NdChar 3.35e-25) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.7e+37) {
tmp = t_2;
} else if (NdChar <= 8.5e-281) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))));
} else if (NdChar <= 3.35e-25) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_2 = t_1 + (1.0d0 / ((2.0d0 + ((eaccept + (vef - mu)) / kbt)) / nachar))
if (ndchar <= (-3.7d+37)) then
tmp = t_2
else if (ndchar <= 8.5d-281) then
tmp = t_0
else if (ndchar <= 3.3d-181) then
tmp = t_1 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt))))
else if (ndchar <= 3.35d-25) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.7e+37) {
tmp = t_2;
} else if (NdChar <= 8.5e-281) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))));
} else if (NdChar <= 3.35e-25) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)) tmp = 0 if NdChar <= -3.7e+37: tmp = t_2 elif NdChar <= 8.5e-281: tmp = t_0 elif NdChar <= 3.3e-181: tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) elif NdChar <= 3.35e-25: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept + Float64(Vef - mu)) / KbT)) / NaChar))) tmp = 0.0 if (NdChar <= -3.7e+37) tmp = t_2; elseif (NdChar <= 8.5e-281) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))))); elseif (NdChar <= 3.35e-25) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)); tmp = 0.0; if (NdChar <= -3.7e+37) tmp = t_2; elseif (NdChar <= 8.5e-281) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))); elseif (NdChar <= 3.35e-25) tmp = t_0; else tmp = t_2; 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[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.7e+37], t$95$2, If[LessEqual[NdChar, 8.5e-281], t$95$0, If[LessEqual[NdChar, 3.3e-181], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(N[(1.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]), $MachinePrecision], If[LessEqual[NdChar, 3.35e-25], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{1}{\frac{2 + \frac{EAccept + \left(Vef - mu\right)}{KbT}}{NaChar}}\\
\mathbf{if}\;NdChar \leq -3.7 \cdot 10^{+37}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq 8.5 \cdot 10^{-281}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{-181}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 3.35 \cdot 10^{-25}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -3.6999999999999999e37 or 3.35000000000000016e-25 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.8%
+-commutative64.8%
Simplified64.8%
Taylor expanded in Ev around 0 65.8%
clear-num66.2%
inv-pow66.2%
+-commutative66.2%
associate--l+66.2%
+-commutative66.2%
div-inv66.2%
div-inv66.2%
distribute-rgt-out66.9%
Applied egg-rr66.9%
unpow-166.9%
associate-+r-66.9%
+-commutative66.9%
associate-+r-66.9%
associate-*l/66.9%
*-lft-identity66.9%
+-commutative66.9%
div-sub72.1%
associate--l+72.1%
Simplified72.1%
if -3.6999999999999999e37 < NdChar < 8.4999999999999994e-281 or 3.30000000000000009e-181 < NdChar < 3.35000000000000016e-25Initial program 100.0%
Simplified100.0%
clear-num99.8%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 63.5%
if 8.4999999999999994e-281 < NdChar < 3.30000000000000009e-181Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.4%
+-commutative66.4%
Simplified66.4%
Final simplification68.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(*
NaChar
(/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_2
(+ t_1 (/ 1.0 (/ (+ 2.0 (/ (+ EAccept (- Vef mu)) KbT)) NaChar)))))
(if (<= NdChar -3.2e+37)
t_2
(if (<= NdChar 4.5e-279)
t_0
(if (<= NdChar 3.3e-181)
(+
t_1
(/
NaChar
(-
(+ 2.0 (/ (+ KbT (* EAccept (/ KbT Vef))) (* KbT (/ KbT Vef))))
(/ mu KbT))))
(if (<= NdChar 1.18e-26) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.2e+37) {
tmp = t_2;
} else if (NdChar <= 4.5e-279) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / ((2.0 + ((KbT + (EAccept * (KbT / Vef))) / (KbT * (KbT / Vef)))) - (mu / KbT)));
} else if (NdChar <= 1.18e-26) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_2 = t_1 + (1.0d0 / ((2.0d0 + ((eaccept + (vef - mu)) / kbt)) / nachar))
if (ndchar <= (-3.2d+37)) then
tmp = t_2
else if (ndchar <= 4.5d-279) then
tmp = t_0
else if (ndchar <= 3.3d-181) then
tmp = t_1 + (nachar / ((2.0d0 + ((kbt + (eaccept * (kbt / vef))) / (kbt * (kbt / vef)))) - (mu / kbt)))
else if (ndchar <= 1.18d-26) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.2e+37) {
tmp = t_2;
} else if (NdChar <= 4.5e-279) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / ((2.0 + ((KbT + (EAccept * (KbT / Vef))) / (KbT * (KbT / Vef)))) - (mu / KbT)));
} else if (NdChar <= 1.18e-26) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)) tmp = 0 if NdChar <= -3.2e+37: tmp = t_2 elif NdChar <= 4.5e-279: tmp = t_0 elif NdChar <= 3.3e-181: tmp = t_1 + (NaChar / ((2.0 + ((KbT + (EAccept * (KbT / Vef))) / (KbT * (KbT / Vef)))) - (mu / KbT))) elif NdChar <= 1.18e-26: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept + Float64(Vef - mu)) / KbT)) / NaChar))) tmp = 0.0 if (NdChar <= -3.2e+37) tmp = t_2; elseif (NdChar <= 4.5e-279) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(KbT + Float64(EAccept * Float64(KbT / Vef))) / Float64(KbT * Float64(KbT / Vef)))) - Float64(mu / KbT)))); elseif (NdChar <= 1.18e-26) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)); tmp = 0.0; if (NdChar <= -3.2e+37) tmp = t_2; elseif (NdChar <= 4.5e-279) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = t_1 + (NaChar / ((2.0 + ((KbT + (EAccept * (KbT / Vef))) / (KbT * (KbT / Vef)))) - (mu / KbT))); elseif (NdChar <= 1.18e-26) tmp = t_0; else tmp = t_2; 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[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.2e+37], t$95$2, If[LessEqual[NdChar, 4.5e-279], t$95$0, If[LessEqual[NdChar, 3.3e-181], N[(t$95$1 + N[(NaChar / N[(N[(2.0 + N[(N[(KbT + N[(EAccept * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(KbT * N[(KbT / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.18e-26], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{1}{\frac{2 + \frac{EAccept + \left(Vef - mu\right)}{KbT}}{NaChar}}\\
\mathbf{if}\;NdChar \leq -3.2 \cdot 10^{+37}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq 4.5 \cdot 10^{-279}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{-181}:\\
\;\;\;\;t_1 + \frac{NaChar}{\left(2 + \frac{KbT + EAccept \cdot \frac{KbT}{Vef}}{KbT \cdot \frac{KbT}{Vef}}\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.18 \cdot 10^{-26}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -3.20000000000000014e37 or 1.17999999999999996e-26 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.8%
+-commutative64.8%
Simplified64.8%
Taylor expanded in Ev around 0 65.8%
clear-num66.2%
inv-pow66.2%
+-commutative66.2%
associate--l+66.2%
+-commutative66.2%
div-inv66.2%
div-inv66.2%
distribute-rgt-out66.9%
Applied egg-rr66.9%
unpow-166.9%
associate-+r-66.9%
+-commutative66.9%
associate-+r-66.9%
associate-*l/66.9%
*-lft-identity66.9%
+-commutative66.9%
div-sub72.1%
associate--l+72.1%
Simplified72.1%
if -3.20000000000000014e37 < NdChar < 4.49999999999999995e-279 or 3.30000000000000009e-181 < NdChar < 1.17999999999999996e-26Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 63.0%
if 4.49999999999999995e-279 < NdChar < 3.30000000000000009e-181Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.0%
+-commutative65.0%
Simplified65.0%
Taylor expanded in Ev around 0 69.0%
+-commutative69.0%
clear-num69.0%
frac-add72.9%
*-un-lft-identity72.9%
Applied egg-rr72.9%
Final simplification68.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -4.4e+37)
(not
(or (<= NdChar 1.75e-279)
(and (not (<= NdChar 3.3e-181)) (<= NdChar 3.6e-25)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ 1.0 (/ (+ 2.0 (/ (+ EAccept (- Vef mu)) KbT)) NaChar)))
(+
(* NaChar (/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.4e+37) || !((NdChar <= 1.75e-279) || (!(NdChar <= 3.3e-181) && (NdChar <= 3.6e-25)))) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
} else {
tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-4.4d+37)) .or. (.not. (ndchar <= 1.75d-279) .or. (.not. (ndchar <= 3.3d-181)) .and. (ndchar <= 3.6d-25))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (1.0d0 / ((2.0d0 + ((eaccept + (vef - mu)) / kbt)) / nachar))
else
tmp = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.4e+37) || !((NdChar <= 1.75e-279) || (!(NdChar <= 3.3e-181) && (NdChar <= 3.6e-25)))) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
} else {
tmp = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -4.4e+37) or not ((NdChar <= 1.75e-279) or (not (NdChar <= 3.3e-181) and (NdChar <= 3.6e-25))): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)) else: tmp = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -4.4e+37) || !((NdChar <= 1.75e-279) || (!(NdChar <= 3.3e-181) && (NdChar <= 3.6e-25)))) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept + Float64(Vef - mu)) / KbT)) / NaChar))); else tmp = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -4.4e+37) || ~(((NdChar <= 1.75e-279) || (~((NdChar <= 3.3e-181)) && (NdChar <= 3.6e-25))))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)); else tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -4.4e+37], N[Not[Or[LessEqual[NdChar, 1.75e-279], And[N[Not[LessEqual[NdChar, 3.3e-181]], $MachinePrecision], LessEqual[NdChar, 3.6e-25]]]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -4.4 \cdot 10^{+37} \lor \neg \left(NdChar \leq 1.75 \cdot 10^{-279} \lor \neg \left(NdChar \leq 3.3 \cdot 10^{-181}\right) \land NdChar \leq 3.6 \cdot 10^{-25}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{1}{\frac{2 + \frac{EAccept + \left(Vef - mu\right)}{KbT}}{NaChar}}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -4.4000000000000001e37 or 1.75000000000000005e-279 < NdChar < 3.30000000000000009e-181 or 3.5999999999999999e-25 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.9%
+-commutative64.9%
Simplified64.9%
Taylor expanded in Ev around 0 66.3%
clear-num66.6%
inv-pow66.6%
+-commutative66.6%
associate--l+66.6%
+-commutative66.6%
div-inv66.6%
div-inv66.6%
distribute-rgt-out67.2%
Applied egg-rr67.2%
unpow-167.2%
associate-+r-67.2%
+-commutative67.2%
associate-+r-67.2%
associate-*l/67.2%
*-lft-identity67.2%
+-commutative67.2%
div-sub71.6%
associate--l+71.6%
Simplified71.6%
if -4.4000000000000001e37 < NdChar < 1.75000000000000005e-279 or 3.30000000000000009e-181 < NdChar < 3.5999999999999999e-25Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 63.0%
Final simplification68.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(*
NaChar
(/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_2
(+ t_1 (/ 1.0 (/ (+ 2.0 (/ (+ EAccept (- Vef mu)) KbT)) NaChar)))))
(if (<= NdChar -3.9e+37)
t_2
(if (<= NdChar 5.2e-279)
t_0
(if (<= NdChar 3.3e-181)
(+
t_1
(/ NaChar (- (+ 2.0 (+ (/ Vef KbT) (/ EAccept KbT))) (/ mu KbT))))
(if (<= NdChar 1.72e-25) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.9e+37) {
tmp = t_2;
} else if (NdChar <= 5.2e-279) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / ((2.0 + ((Vef / KbT) + (EAccept / KbT))) - (mu / KbT)));
} else if (NdChar <= 1.72e-25) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_2 = t_1 + (1.0d0 / ((2.0d0 + ((eaccept + (vef - mu)) / kbt)) / nachar))
if (ndchar <= (-3.9d+37)) then
tmp = t_2
else if (ndchar <= 5.2d-279) then
tmp = t_0
else if (ndchar <= 3.3d-181) then
tmp = t_1 + (nachar / ((2.0d0 + ((vef / kbt) + (eaccept / kbt))) - (mu / kbt)))
else if (ndchar <= 1.72d-25) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
double tmp;
if (NdChar <= -3.9e+37) {
tmp = t_2;
} else if (NdChar <= 5.2e-279) {
tmp = t_0;
} else if (NdChar <= 3.3e-181) {
tmp = t_1 + (NaChar / ((2.0 + ((Vef / KbT) + (EAccept / KbT))) - (mu / KbT)));
} else if (NdChar <= 1.72e-25) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)) tmp = 0 if NdChar <= -3.9e+37: tmp = t_2 elif NdChar <= 5.2e-279: tmp = t_0 elif NdChar <= 3.3e-181: tmp = t_1 + (NaChar / ((2.0 + ((Vef / KbT) + (EAccept / KbT))) - (mu / KbT))) elif NdChar <= 1.72e-25: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept + Float64(Vef - mu)) / KbT)) / NaChar))) tmp = 0.0 if (NdChar <= -3.9e+37) tmp = t_2; elseif (NdChar <= 5.2e-279) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(EAccept / KbT))) - Float64(mu / KbT)))); elseif (NdChar <= 1.72e-25) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_2 = t_1 + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)); tmp = 0.0; if (NdChar <= -3.9e+37) tmp = t_2; elseif (NdChar <= 5.2e-279) tmp = t_0; elseif (NdChar <= 3.3e-181) tmp = t_1 + (NaChar / ((2.0 + ((Vef / KbT) + (EAccept / KbT))) - (mu / KbT))); elseif (NdChar <= 1.72e-25) tmp = t_0; else tmp = t_2; 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[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.9e+37], t$95$2, If[LessEqual[NdChar, 5.2e-279], t$95$0, If[LessEqual[NdChar, 3.3e-181], N[(t$95$1 + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.72e-25], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{1}{\frac{2 + \frac{EAccept + \left(Vef - mu\right)}{KbT}}{NaChar}}\\
\mathbf{if}\;NdChar \leq -3.9 \cdot 10^{+37}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NdChar \leq 5.2 \cdot 10^{-279}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{-181}:\\
\;\;\;\;t_1 + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \frac{EAccept}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.72 \cdot 10^{-25}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NdChar < -3.8999999999999999e37 or 1.71999999999999995e-25 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.8%
+-commutative64.8%
Simplified64.8%
Taylor expanded in Ev around 0 65.8%
clear-num66.2%
inv-pow66.2%
+-commutative66.2%
associate--l+66.2%
+-commutative66.2%
div-inv66.2%
div-inv66.2%
distribute-rgt-out66.9%
Applied egg-rr66.9%
unpow-166.9%
associate-+r-66.9%
+-commutative66.9%
associate-+r-66.9%
associate-*l/66.9%
*-lft-identity66.9%
+-commutative66.9%
div-sub72.1%
associate--l+72.1%
Simplified72.1%
if -3.8999999999999999e37 < NdChar < 5.2000000000000004e-279 or 3.30000000000000009e-181 < NdChar < 1.71999999999999995e-25Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 63.0%
if 5.2000000000000004e-279 < NdChar < 3.30000000000000009e-181Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.0%
+-commutative65.0%
Simplified65.0%
Taylor expanded in Ev around 0 69.0%
Final simplification68.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.14e+46) (not (<= NdChar 2.8e-47)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ 1.0 (/ (+ 2.0 (/ (+ EAccept (- Vef mu)) KbT)) NaChar)))
(+
(/
NdChar
(+
1.0
(- (+ (+ 1.0 (/ EDonor KbT)) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(* NaChar (/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.14e+46) || !(NdChar <= 2.8e-47)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
} else {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - 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.14d+46)) .or. (.not. (ndchar <= 2.8d-47))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (1.0d0 / ((2.0d0 + ((eaccept + (vef - mu)) / kbt)) / nachar))
else
tmp = (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))) + (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - 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.14e+46) || !(NdChar <= 2.8e-47)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar));
} else {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.14e+46) or not (NdChar <= 2.8e-47): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)) else: tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.14e+46) || !(NdChar <= 2.8e-47)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(EAccept + Float64(Vef - mu)) / KbT)) / NaChar))); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - 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.14e+46) || ~((NdChar <= 2.8e-47))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((2.0 + ((EAccept + (Vef - mu)) / KbT)) / NaChar)); else tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.14e+46], N[Not[LessEqual[NdChar, 2.8e-47]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(2.0 + N[(N[(EAccept + N[(Vef - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.14 \cdot 10^{+46} \lor \neg \left(NdChar \leq 2.8 \cdot 10^{-47}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{1}{\frac{2 + \frac{EAccept + \left(Vef - mu\right)}{KbT}}{NaChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.14000000000000005e46 or 2.79999999999999993e-47 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
+-commutative64.6%
Simplified64.6%
Taylor expanded in Ev around 0 65.6%
clear-num66.0%
inv-pow66.0%
+-commutative66.0%
associate--l+66.0%
+-commutative66.0%
div-inv66.0%
div-inv66.0%
distribute-rgt-out66.8%
Applied egg-rr66.8%
unpow-166.8%
associate-+r-66.8%
+-commutative66.8%
associate-+r-66.8%
associate-*l/66.8%
*-lft-identity66.8%
+-commutative66.8%
div-sub71.2%
associate--l+71.2%
Simplified71.2%
if -1.14000000000000005e46 < NdChar < 2.79999999999999993e-47Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 72.0%
associate-+r+32.6%
Simplified72.0%
Final simplification71.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.6e+154)
(not
(or (<= NaChar -1.95e+46)
(and (not (<= NaChar -4500.0)) (<= NaChar 5.2e-32)))))
(+
(* NaChar (/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Ev 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 <= -2.6e+154) || !((NaChar <= -1.95e+46) || (!(NaChar <= -4500.0) && (NaChar <= 5.2e-32)))) {
tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / 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 <= (-2.6d+154)) .or. (.not. (nachar <= (-1.95d+46)) .or. (.not. (nachar <= (-4500.0d0))) .and. (nachar <= 5.2d-32))) then
tmp = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((ev / 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 <= -2.6e+154) || !((NaChar <= -1.95e+46) || (!(NaChar <= -4500.0) && (NaChar <= 5.2e-32)))) {
tmp = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.6e+154) or not ((NaChar <= -1.95e+46) or (not (NaChar <= -4500.0) and (NaChar <= 5.2e-32))): tmp = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.6e+154) || !((NaChar <= -1.95e+46) || (!(NaChar <= -4500.0) && (NaChar <= 5.2e-32)))) tmp = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / 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 <= -2.6e+154) || ~(((NaChar <= -1.95e+46) || (~((NaChar <= -4500.0)) && (NaChar <= 5.2e-32))))) tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.6e+154], N[Not[Or[LessEqual[NaChar, -1.95e+46], And[N[Not[LessEqual[NaChar, -4500.0]], $MachinePrecision], LessEqual[NaChar, 5.2e-32]]]], $MachinePrecision]], N[(N[(NaChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.6 \cdot 10^{+154} \lor \neg \left(NaChar \leq -1.95 \cdot 10^{+46} \lor \neg \left(NaChar \leq -4500\right) \land NaChar \leq 5.2 \cdot 10^{-32}\right):\\
\;\;\;\;NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -2.59999999999999989e154 or -1.94999999999999997e46 < NaChar < -4500 or 5.1999999999999995e-32 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 61.8%
if -2.59999999999999989e154 < NaChar < -1.94999999999999997e46 or -4500 < NaChar < 5.1999999999999995e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.7%
Taylor expanded in Ev around 0 65.9%
+-commutative65.9%
Simplified65.9%
Final simplification64.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -6.2e+37) (not (<= NdChar 3.45e-26)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(+
(* NaChar (/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.2e+37) || !(NdChar <= 3.45e-26)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-6.2d+37)) .or. (.not. (ndchar <= 3.45d-26))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else
tmp = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.2e+37) || !(NdChar <= 3.45e-26)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -6.2e+37) or not (NdChar <= 3.45e-26): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) else: tmp = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -6.2e+37) || !(NdChar <= 3.45e-26)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); else tmp = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -6.2e+37) || ~((NdChar <= 3.45e-26))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); else tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -6.2e+37], N[Not[LessEqual[NdChar, 3.45e-26]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -6.2 \cdot 10^{+37} \lor \neg \left(NdChar \leq 3.45 \cdot 10^{-26}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -6.2000000000000004e37 or 3.44999999999999999e-26 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.8%
Taylor expanded in EAccept around 0 66.3%
if -6.2000000000000004e37 < NdChar < 3.44999999999999999e-26Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 58.7%
Final simplification62.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -7000.0) (not (<= NdChar 4.2e-23)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(* NaChar 0.5))
(+
(* NaChar (/ 1.0 (+ 1.0 (exp (/ (+ Vef (- (+ EAccept Ev) mu)) KbT)))))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -7000.0) || !(NdChar <= 4.2e-23)) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-7000.0d0)) .or. (.not. (ndchar <= 4.2d-23))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar * (1.0d0 / (1.0d0 + exp(((vef + ((eaccept + ev) - mu)) / kbt))))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -7000.0) || !(NdChar <= 4.2e-23)) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar * (1.0 / (1.0 + Math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -7000.0) or not (NdChar <= 4.2e-23): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar * (1.0 / (1.0 + math.exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -7000.0) || !(NdChar <= 4.2e-23)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Float64(EAccept + Ev) - mu)) / KbT))))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -7000.0) || ~((NdChar <= 4.2e-23))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); else tmp = (NaChar * (1.0 / (1.0 + exp(((Vef + ((EAccept + Ev) - mu)) / KbT))))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -7000.0], N[Not[LessEqual[NdChar, 4.2e-23]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(Vef + N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -7000 \lor \neg \left(NdChar \leq 4.2 \cdot 10^{-23}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot \frac{1}{1 + e^{\frac{Vef + \left(\left(EAccept + Ev\right) - mu\right)}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -7e3 or 4.2000000000000002e-23 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.7%
*-commutative59.7%
Simplified59.7%
if -7e3 < NdChar < 4.2000000000000002e-23Initial program 100.0%
Simplified100.0%
clear-num99.9%
associate-/r/100.0%
div-inv100.0%
div-inv100.0%
associate-+r-100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 58.9%
Final simplification59.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.02e+193) (not (<= NaChar 3.3e-32))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)) (+ (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (* NaChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e+193) || !(NaChar <= 3.3e-32)) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.02d+193)) .or. (.not. (nachar <= 3.3d-32))) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e+193) || !(NaChar <= 3.3e-32)) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.02e+193) or not (NaChar <= 3.3e-32): tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.02e+193) || !(NaChar <= 3.3e-32)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.02e+193) || ~((NaChar <= 3.3e-32))) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.02e+193], N[Not[LessEqual[NaChar, 3.3e-32]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.02 \cdot 10^{+193} \lor \neg \left(NaChar \leq 3.3 \cdot 10^{-32}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -1.02000000000000004e193 or 3.30000000000000025e-32 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 64.8%
Taylor expanded in KbT around inf 45.8%
if -1.02000000000000004e193 < NaChar < 3.30000000000000025e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.9%
*-commutative58.9%
Simplified58.9%
Taylor expanded in EDonor around 0 52.5%
+-commutative52.5%
Simplified52.5%
Final simplification50.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -5500.0)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NaChar 1.85e-32)
(+ (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (* NaChar 0.5))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5500.0) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NaChar <= 1.85e-32) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-5500.0d0)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
else if (nachar <= 1.85d-32) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -5500.0) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NaChar <= 1.85e-32) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -5500.0: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))) elif NaChar <= 1.85e-32: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -5500.0) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NaChar <= 1.85e-32) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -5500.0) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))); elseif (NaChar <= 1.85e-32) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -5500.0], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.85e-32], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5500:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.85 \cdot 10^{-32}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -5500Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 69.1%
Taylor expanded in KbT around inf 45.4%
associate-+r+31.8%
Simplified45.4%
Taylor expanded in EDonor around inf 46.2%
if -5500 < NaChar < 1.85e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.6%
*-commutative61.6%
Simplified61.6%
Taylor expanded in EDonor around 0 54.9%
+-commutative54.9%
Simplified54.9%
if 1.85e-32 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 70.7%
Taylor expanded in KbT around inf 47.6%
Final simplification50.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Vef -6.8e+254)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ KbT (/ Vef NdChar)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(* NaChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -6.8e+254) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (KbT / (Vef / NdChar));
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= (-6.8d+254)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (kbt / (vef / ndchar))
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -6.8e+254) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT / (Vef / NdChar));
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -6.8e+254: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (KbT / (Vef / NdChar)) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -6.8e+254) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT / Float64(Vef / NdChar))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -6.8e+254) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (KbT / (Vef / NdChar)); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -6.8e+254], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT / N[(Vef / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -6.8 \cdot 10^{+254}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{KbT}{\frac{Vef}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -6.8000000000000001e254Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in KbT around inf 53.3%
associate-+r+29.6%
Simplified53.3%
Taylor expanded in Vef around inf 45.5%
associate-/l*50.1%
Simplified50.1%
if -6.8000000000000001e254 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.8%
*-commutative52.8%
Simplified52.8%
Final simplification52.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 2.8e-93)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= EAccept 1.95e+123)
(+
(/
NdChar
(+
1.0
(- (+ (+ 1.0 (/ EDonor KbT)) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(/ NaChar (- (+ (/ Vef KbT) (+ (/ Ev KbT) 2.0)) (/ mu KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 2.8e-93) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 1.95e+123) {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar / (((Vef / KbT) + ((Ev / KbT) + 2.0)) - (mu / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 2.8d-93) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (eaccept <= 1.95d+123) then
tmp = (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))) + (nachar / (((vef / kbt) + ((ev / kbt) + 2.0d0)) - (mu / kbt)))
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 2.8e-93) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 1.95e+123) {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar / (((Vef / KbT) + ((Ev / KbT) + 2.0)) - (mu / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 2.8e-93: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif EAccept <= 1.95e+123: tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar / (((Vef / KbT) + ((Ev / KbT) + 2.0)) - (mu / KbT))) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 2.8e-93) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (EAccept <= 1.95e+123) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + 2.0)) - Float64(mu / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 2.8e-93) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (EAccept <= 1.95e+123) tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar / (((Vef / KbT) + ((Ev / KbT) + 2.0)) - (mu / KbT))); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 2.8e-93], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.95e+123], N[(N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 2.8 \cdot 10^{-93}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;EAccept \leq 1.95 \cdot 10^{+123}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{\left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + 2\right)\right) - \frac{mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 2.79999999999999998e-93Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 71.4%
Taylor expanded in KbT around inf 37.5%
if 2.79999999999999998e-93 < EAccept < 1.94999999999999996e123Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.2%
+-commutative67.2%
Simplified67.2%
Taylor expanded in KbT around inf 36.1%
associate-+r+36.1%
Simplified36.1%
Taylor expanded in EAccept around 0 36.1%
associate-+r+36.1%
+-commutative36.1%
Simplified36.1%
if 1.94999999999999996e123 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 83.7%
Taylor expanded in KbT around inf 59.5%
Final simplification40.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 1.5e-243)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= EAccept 2.3e+123)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e-243) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 2.3e+123) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.5d-243) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (eaccept <= 2.3d+123) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e-243) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 2.3e+123) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.5e-243: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif EAccept <= 2.3e+123: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.5e-243) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (EAccept <= 2.3e+123) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.5e-243) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (EAccept <= 2.3e+123) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.5e-243], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 2.3e+123], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.5 \cdot 10^{-243}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;EAccept \leq 2.3 \cdot 10^{+123}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 1.5000000000000001e-243Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.1%
Taylor expanded in KbT around inf 37.8%
if 1.5000000000000001e-243 < EAccept < 2.2999999999999999e123Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.9%
*-commutative51.9%
Simplified51.9%
Taylor expanded in EDonor around inf 44.4%
if 2.2999999999999999e123 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 83.7%
Taylor expanded in KbT around inf 59.5%
Final simplification43.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Vef -4.2e+255)
(+
(/
NaChar
(+
1.0
(- (+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(/
NdChar
(+
1.0
(-
(+
(+ 1.0 (/ EDonor KbT))
(/ (+ KbT (* Vef (/ KbT mu))) (* KbT (/ KbT mu))))
(/ Ec KbT)))))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -4.2e+255) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((KbT + (Vef * (KbT / mu))) / (KbT * (KbT / mu)))) - (Ec / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= (-4.2d+255)) then
tmp = (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))) + (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + ((kbt + (vef * (kbt / mu))) / (kbt * (kbt / mu)))) - (ec / kbt))))
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -4.2e+255) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((KbT + (Vef * (KbT / mu))) / (KbT * (KbT / mu)))) - (Ec / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -4.2e+255: tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((KbT + (Vef * (KbT / mu))) / (KbT * (KbT / mu)))) - (Ec / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -4.2e+255) tmp = Float64(Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(KbT + Float64(Vef * Float64(KbT / mu))) / Float64(KbT * Float64(KbT / mu)))) - Float64(Ec / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -4.2e+255) tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((KbT + (Vef * (KbT / mu))) / (KbT * (KbT / mu)))) - (Ec / KbT)))); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -4.2e+255], N[(N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(KbT + N[(Vef * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(KbT * N[(KbT / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{+255}:\\
\;\;\;\;\frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)} + \frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \frac{KbT + Vef \cdot \frac{KbT}{mu}}{KbT \cdot \frac{KbT}{mu}}\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -4.2e255Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
+-commutative55.6%
Simplified55.6%
Taylor expanded in KbT around inf 31.0%
associate-+r+31.0%
Simplified31.0%
+-commutative31.0%
clear-num31.0%
frac-add35.6%
*-un-lft-identity35.6%
Applied egg-rr35.6%
if -4.2e255 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.8%
Taylor expanded in KbT around inf 42.3%
Final simplification41.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT)))))
(t_1 (+ 1.0 (/ EDonor KbT))))
(if (<= KbT -2e+105)
(+ (* NdChar 0.5) (* NaChar 0.5))
(if (<= KbT 1.6e-226)
(+ t_0 (/ NdChar t_1))
(if (<= KbT 9.2e+142)
(+ t_0 (/ NdChar (- 1.0 (/ Ec KbT))))
(+
(/ NdChar (+ 1.0 (- (+ t_1 (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(* NaChar 0.5)))))))
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 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_1 = 1.0 + (EDonor / KbT);
double tmp;
if (KbT <= -2e+105) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else if (KbT <= 1.6e-226) {
tmp = t_0 + (NdChar / t_1);
} else if (KbT <= 9.2e+142) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + ((t_1 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
t_1 = 1.0d0 + (edonor / kbt)
if (kbt <= (-2d+105)) then
tmp = (ndchar * 0.5d0) + (nachar * 0.5d0)
else if (kbt <= 1.6d-226) then
tmp = t_0 + (ndchar / t_1)
else if (kbt <= 9.2d+142) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + ((t_1 + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double t_1 = 1.0 + (EDonor / KbT);
double tmp;
if (KbT <= -2e+105) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else if (KbT <= 1.6e-226) {
tmp = t_0 + (NdChar / t_1);
} else if (KbT <= 9.2e+142) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + ((t_1 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) t_1 = 1.0 + (EDonor / KbT) tmp = 0 if KbT <= -2e+105: tmp = (NdChar * 0.5) + (NaChar * 0.5) elif KbT <= 1.6e-226: tmp = t_0 + (NdChar / t_1) elif KbT <= 9.2e+142: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) else: tmp = (NdChar / (1.0 + ((t_1 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) t_1 = Float64(1.0 + Float64(EDonor / KbT)) tmp = 0.0 if (KbT <= -2e+105) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)); elseif (KbT <= 1.6e-226) tmp = Float64(t_0 + Float64(NdChar / t_1)); elseif (KbT <= 9.2e+142) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(t_1 + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); t_1 = 1.0 + (EDonor / KbT); tmp = 0.0; if (KbT <= -2e+105) tmp = (NdChar * 0.5) + (NaChar * 0.5); elseif (KbT <= 1.6e-226) tmp = t_0 + (NdChar / t_1); elseif (KbT <= 9.2e+142) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); else tmp = (NdChar / (1.0 + ((t_1 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5); 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[(N[(1.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]}, Block[{t$95$1 = N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2e+105], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.6e-226], N[(t$95$0 + N[(NdChar / t$95$1), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 9.2e+142], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(N[(t$95$1 + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
t_1 := 1 + \frac{EDonor}{KbT}\\
\mathbf{if}\;KbT \leq -2 \cdot 10^{+105}:\\
\;\;\;\;NdChar \cdot 0.5 + NaChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.6 \cdot 10^{-226}:\\
\;\;\;\;t_0 + \frac{NdChar}{t_1}\\
\mathbf{elif}\;KbT \leq 9.2 \cdot 10^{+142}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(t_1 + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -1.9999999999999999e105Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 83.4%
*-commutative83.4%
Simplified83.4%
Taylor expanded in KbT around inf 70.5%
if -1.9999999999999999e105 < KbT < 1.59999999999999991e-226Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.0%
+-commutative50.0%
Simplified50.0%
Taylor expanded in KbT around inf 18.8%
associate-+r+18.8%
Simplified18.8%
Taylor expanded in EDonor around inf 24.9%
if 1.59999999999999991e-226 < KbT < 9.20000000000000009e142Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.8%
+-commutative49.8%
Simplified49.8%
Taylor expanded in KbT around inf 13.2%
associate-+r+13.2%
Simplified13.2%
Taylor expanded in Ec around inf 27.3%
neg-mul-127.3%
distribute-neg-frac27.3%
Simplified27.3%
if 9.20000000000000009e142 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.2%
*-commutative63.2%
Simplified63.2%
Taylor expanded in KbT around inf 59.9%
associate-+r+56.2%
Simplified59.9%
Final simplification38.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (/ EDonor KbT))))
(if (<= KbT -3.3e+105)
(+ (* NdChar 0.5) (* NaChar 0.5))
(if (<= KbT 4.8e+70)
(+
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(/ NdChar t_0))
(+
(/ NdChar (+ 1.0 (- (+ t_0 (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(* NaChar 0.5))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + (EDonor / KbT);
double tmp;
if (KbT <= -3.3e+105) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else if (KbT <= 4.8e+70) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / t_0);
} else {
tmp = (NdChar / (1.0 + ((t_0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 1.0d0 + (edonor / kbt)
if (kbt <= (-3.3d+105)) then
tmp = (ndchar * 0.5d0) + (nachar * 0.5d0)
else if (kbt <= 4.8d+70) then
tmp = (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))) + (ndchar / t_0)
else
tmp = (ndchar / (1.0d0 + ((t_0 + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + (EDonor / KbT);
double tmp;
if (KbT <= -3.3e+105) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else if (KbT <= 4.8e+70) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / t_0);
} else {
tmp = (NdChar / (1.0 + ((t_0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + (EDonor / KbT) tmp = 0 if KbT <= -3.3e+105: tmp = (NdChar * 0.5) + (NaChar * 0.5) elif KbT <= 4.8e+70: tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / t_0) else: tmp = (NdChar / (1.0 + ((t_0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + Float64(EDonor / KbT)) tmp = 0.0 if (KbT <= -3.3e+105) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)); elseif (KbT <= 4.8e+70) tmp = Float64(Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) + Float64(NdChar / t_0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(t_0 + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + (EDonor / KbT); tmp = 0.0; if (KbT <= -3.3e+105) tmp = (NdChar * 0.5) + (NaChar * 0.5); elseif (KbT <= 4.8e+70) tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)))) + (NdChar / t_0); else tmp = (NdChar / (1.0 + ((t_0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -3.3e+105], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.8e+70], N[(N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(N[(t$95$0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + \frac{EDonor}{KbT}\\
\mathbf{if}\;KbT \leq -3.3 \cdot 10^{+105}:\\
\;\;\;\;NdChar \cdot 0.5 + NaChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 4.8 \cdot 10^{+70}:\\
\;\;\;\;\frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)} + \frac{NdChar}{t_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(t_0 + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -3.29999999999999997e105Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 83.4%
*-commutative83.4%
Simplified83.4%
Taylor expanded in KbT around inf 70.5%
if -3.29999999999999997e105 < KbT < 4.79999999999999974e70Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.7%
+-commutative48.7%
Simplified48.7%
Taylor expanded in KbT around inf 16.3%
associate-+r+16.3%
Simplified16.3%
Taylor expanded in EDonor around inf 22.3%
if 4.79999999999999974e70 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.2%
*-commutative64.2%
Simplified64.2%
Taylor expanded in KbT around inf 50.1%
associate-+r+46.7%
Simplified50.1%
Final simplification36.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (* 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 * 0.5) + (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 * 0.5d0) + (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 * 0.5) + (NaChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.1%
*-commutative50.1%
Simplified50.1%
Taylor expanded in KbT around inf 30.9%
Final simplification30.9%
herbie shell --seed 2024021
(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))))))