
(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 21 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 (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (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(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= mu -2.2e+243)
t_0
(if (<= mu -4.6e-173)
t_1
(if (<= mu -4.25e-224)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 2.1e+95) t_1 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_0;
} else if (mu <= -4.6e-173) {
tmp = t_1;
} else if (mu <= -4.25e-224) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 2.1e+95) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (mu <= (-2.2d+243)) then
tmp = t_0
else if (mu <= (-4.6d-173)) then
tmp = t_1
else if (mu <= (-4.25d-224)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 2.1d+95) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_0;
} else if (mu <= -4.6e-173) {
tmp = t_1;
} else if (mu <= -4.25e-224) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 2.1e+95) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if mu <= -2.2e+243: tmp = t_0 elif mu <= -4.6e-173: tmp = t_1 elif mu <= -4.25e-224: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 2.1e+95: tmp = t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (mu <= -2.2e+243) tmp = t_0; elseif (mu <= -4.6e-173) tmp = t_1; elseif (mu <= -4.25e-224) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 2.1e+95) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (mu <= -2.2e+243) tmp = t_0; elseif (mu <= -4.6e-173) tmp = t_1; elseif (mu <= -4.25e-224) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 2.1e+95) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.2e+243], t$95$0, If[LessEqual[mu, -4.6e-173], t$95$1, If[LessEqual[mu, -4.25e-224], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.1e+95], t$95$1, t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -2.2 \cdot 10^{+243}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq -4.6 \cdot 10^{-173}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -4.25 \cdot 10^{-224}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.1 \cdot 10^{+95}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -2.20000000000000009e243 or 2.1e95 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 94.2%
Taylor expanded in mu around inf 85.6%
associate-*r/68.3%
mul-1-neg68.3%
Simplified85.6%
if -2.20000000000000009e243 < mu < -4.59999999999999976e-173 or -4.2499999999999998e-224 < mu < 2.1e95Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.9%
if -4.59999999999999976e-173 < mu < -4.2499999999999998e-224Initial program 99.8%
Simplified99.8%
Taylor expanded in Vef around inf 91.7%
Taylor expanded in EDonor around 0 86.9%
+-commutative86.9%
Simplified86.9%
Final simplification83.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -2.2e+243)
t_2
(if (<= mu -1.8e-178)
t_1
(if (<= mu -1.32e-223)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 5.5e+35) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -1.8e-178) {
tmp = t_1;
} else if (mu <= -1.32e-223) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 5.5e+35) {
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 + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-2.2d+243)) then
tmp = t_2
else if (mu <= (-1.8d-178)) then
tmp = t_1
else if (mu <= (-1.32d-223)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 5.5d+35) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -1.8e-178) {
tmp = t_1;
} else if (mu <= -1.32e-223) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 5.5e+35) {
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 + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -2.2e+243: tmp = t_2 elif mu <= -1.8e-178: tmp = t_1 elif mu <= -1.32e-223: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 5.5e+35: 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(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -1.8e-178) tmp = t_1; elseif (mu <= -1.32e-223) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 5.5e+35) 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 + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -1.8e-178) tmp = t_1; elseif (mu <= -1.32e-223) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 5.5e+35) 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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.2e+243], t$95$2, If[LessEqual[mu, -1.8e-178], t$95$1, If[LessEqual[mu, -1.32e-223], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 5.5e+35], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.2 \cdot 10^{+243}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -1.8 \cdot 10^{-178}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -1.32 \cdot 10^{-223}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 5.5 \cdot 10^{+35}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.20000000000000009e243 or 5.50000000000000001e35 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.8%
if -2.20000000000000009e243 < mu < -1.79999999999999997e-178 or -1.3200000000000001e-223 < mu < 5.50000000000000001e35Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.8%
if -1.79999999999999997e-178 < mu < -1.3200000000000001e-223Initial program 99.8%
Simplified99.8%
Taylor expanded in Vef around inf 91.7%
Taylor expanded in EDonor around 0 86.9%
+-commutative86.9%
Simplified86.9%
Final simplification86.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -2.2e+243)
t_2
(if (<= mu -1.55e-143)
t_1
(if (<= mu -5e-292)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu 1.6e+36) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -1.55e-143) {
tmp = t_1;
} else if (mu <= -5e-292) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= 1.6e+36) {
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 + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-2.2d+243)) then
tmp = t_2
else if (mu <= (-1.55d-143)) then
tmp = t_1
else if (mu <= (-5d-292)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= 1.6d+36) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -1.55e-143) {
tmp = t_1;
} else if (mu <= -5e-292) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= 1.6e+36) {
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 + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -2.2e+243: tmp = t_2 elif mu <= -1.55e-143: tmp = t_1 elif mu <= -5e-292: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= 1.6e+36: 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(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -1.55e-143) tmp = t_1; elseif (mu <= -5e-292) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= 1.6e+36) 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 + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -1.55e-143) tmp = t_1; elseif (mu <= -5e-292) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= 1.6e+36) 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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.2e+243], t$95$2, If[LessEqual[mu, -1.55e-143], t$95$1, If[LessEqual[mu, -5e-292], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.6e+36], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.2 \cdot 10^{+243}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -1.55 \cdot 10^{-143}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -5 \cdot 10^{-292}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.6 \cdot 10^{+36}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.20000000000000009e243 or 1.5999999999999999e36 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.8%
if -2.20000000000000009e243 < mu < -1.55000000000000004e-143 or -4.99999999999999981e-292 < mu < 1.5999999999999999e36Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.9%
if -1.55000000000000004e-143 < mu < -4.99999999999999981e-292Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.2%
Final simplification85.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -2.2e+243)
t_2
(if (<= mu -2.8e-174)
t_1
(if (<= mu 8.2e-171)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 2.6e+34) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -2.8e-174) {
tmp = t_1;
} else if (mu <= 8.2e-171) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 2.6e+34) {
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 + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-2.2d+243)) then
tmp = t_2
else if (mu <= (-2.8d-174)) then
tmp = t_1
else if (mu <= 8.2d-171) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 2.6d+34) 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 + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -2.2e+243) {
tmp = t_2;
} else if (mu <= -2.8e-174) {
tmp = t_1;
} else if (mu <= 8.2e-171) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 2.6e+34) {
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 + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -2.2e+243: tmp = t_2 elif mu <= -2.8e-174: tmp = t_1 elif mu <= 8.2e-171: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 2.6e+34: 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(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -2.8e-174) tmp = t_1; elseif (mu <= 8.2e-171) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 2.6e+34) 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 + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -2.2e+243) tmp = t_2; elseif (mu <= -2.8e-174) tmp = t_1; elseif (mu <= 8.2e-171) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 2.6e+34) 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[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.2e+243], t$95$2, If[LessEqual[mu, -2.8e-174], t$95$1, If[LessEqual[mu, 8.2e-171], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + 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[mu, 2.6e+34], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -2.2 \cdot 10^{+243}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -2.8 \cdot 10^{-174}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 8.2 \cdot 10^{-171}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.6 \cdot 10^{+34}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.20000000000000009e243 or 2.59999999999999997e34 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 92.8%
if -2.20000000000000009e243 < mu < -2.79999999999999999e-174 or 8.2e-171 < mu < 2.59999999999999997e34Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.4%
if -2.79999999999999999e-174 < mu < 8.2e-171Initial program 99.8%
Simplified99.8%
Taylor expanded in Ev around inf 86.2%
Final simplification86.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
NdChar
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))))
(if (<= NaChar -1.16e-94)
t_1
(if (<= NaChar 7.8e-196)
(+ t_0 (/ NaChar (+ 1.0 (+ 1.0 (/ Vef KbT)))))
(if (<= NaChar 1.05e-144)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= NaChar 1.2e-69)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ (+ 1.0 (/ EAccept KbT)) (+ (/ Ev KbT) (/ Vef KbT)))
(/ mu KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -1.16e-94) {
tmp = t_1;
} else if (NaChar <= 7.8e-196) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Vef / KbT))));
} else if (NaChar <= 1.05e-144) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (NaChar <= 1.2e-69) {
tmp = t_0 + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
if (nachar <= (-1.16d-94)) then
tmp = t_1
else if (nachar <= 7.8d-196) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 + (vef / kbt))))
else if (nachar <= 1.05d-144) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (nachar <= 1.2d-69) then
tmp = t_0 + (nachar / (1.0d0 + (((1.0d0 + (eaccept / kbt)) + ((ev / kbt) + (vef / kbt))) - (mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
double tmp;
if (NaChar <= -1.16e-94) {
tmp = t_1;
} else if (NaChar <= 7.8e-196) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Vef / KbT))));
} else if (NaChar <= 1.05e-144) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (NaChar <= 1.2e-69) {
tmp = t_0 + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) tmp = 0 if NaChar <= -1.16e-94: tmp = t_1 elif NaChar <= 7.8e-196: tmp = t_0 + (NaChar / (1.0 + (1.0 + (Vef / KbT)))) elif NaChar <= 1.05e-144: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif NaChar <= 1.2e-69: tmp = t_0 + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) tmp = 0.0 if (NaChar <= -1.16e-94) tmp = t_1; elseif (NaChar <= 7.8e-196) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Vef / KbT))))); elseif (NaChar <= 1.05e-144) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (NaChar <= 1.2e-69) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EAccept / KbT)) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); tmp = 0.0; if (NaChar <= -1.16e-94) tmp = t_1; elseif (NaChar <= 7.8e-196) tmp = t_0 + (NaChar / (1.0 + (1.0 + (Vef / KbT)))); elseif (NaChar <= 1.05e-144) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (NaChar <= 1.2e-69) tmp = t_0 + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.16e-94], t$95$1, If[LessEqual[NaChar, 7.8e-196], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.05e-144], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.2e-69], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.16 \cdot 10^{-94}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 7.8 \cdot 10^{-196}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + \left(1 + \frac{Vef}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.05 \cdot 10^{-144}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.2 \cdot 10^{-69}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + \left(\left(\left(1 + \frac{EAccept}{KbT}\right) + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -1.16000000000000001e-94 or 1.2000000000000001e-69 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in mu around inf 62.5%
Taylor expanded in mu around 0 80.5%
if -1.16000000000000001e-94 < NaChar < 7.80000000000000031e-196Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.5%
Taylor expanded in Vef around 0 71.7%
if 7.80000000000000031e-196 < NaChar < 1.0500000000000001e-144Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
Taylor expanded in mu around inf 100.0%
associate-*r/3.0%
mul-1-neg3.0%
Simplified100.0%
if 1.0500000000000001e-144 < NaChar < 1.2000000000000001e-69Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 77.0%
associate-+r+29.3%
+-commutative29.3%
Simplified77.0%
Final simplification78.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.8e-98) (not (<= NaChar 9e-68)))
(+ NdChar (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Vef KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.8e-98) || !(NaChar <= 9e-68)) {
tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-2.8d-98)) .or. (.not. (nachar <= 9d-68))) then
tmp = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.8e-98) || !(NaChar <= 9e-68)) {
tmp = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.8e-98) or not (NaChar <= 9e-68): tmp = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.8e-98) || !(NaChar <= 9e-68)) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.8e-98) || ~((NaChar <= 9e-68))) tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.8e-98], N[Not[LessEqual[NaChar, 9e-68]], $MachinePrecision]], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.8 \cdot 10^{-98} \lor \neg \left(NaChar \leq 9 \cdot 10^{-68}\right):\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Vef}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -2.7999999999999999e-98 or 8.99999999999999998e-68 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in mu around inf 62.5%
Taylor expanded in mu around 0 80.5%
if -2.7999999999999999e-98 < NaChar < 8.99999999999999998e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.6%
Taylor expanded in Vef around 0 68.3%
Final simplification76.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -3.7e-98) (not (<= NaChar 1.65e-68)))
(+ NdChar (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ 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 <= -3.7e-98) || !(NaChar <= 1.65e-68)) {
tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (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 <= (-3.7d-98)) .or. (.not. (nachar <= 1.65d-68))) then
tmp = ndchar + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (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 <= -3.7e-98) || !(NaChar <= 1.65e-68)) {
tmp = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.7e-98) or not (NaChar <= 1.65e-68): tmp = NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (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 <= -3.7e-98) || !(NaChar <= 1.65e-68)) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + 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 ((NaChar <= -3.7e-98) || ~((NaChar <= 1.65e-68))) tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); else tmp = (NdChar / (1.0 + exp(((EDonor + (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, -3.7e-98], N[Not[LessEqual[NaChar, 1.65e-68]], $MachinePrecision]], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + 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}\;NaChar \leq -3.7 \cdot 10^{-98} \lor \neg \left(NaChar \leq 1.65 \cdot 10^{-68}\right):\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -3.7e-98 or 1.6499999999999999e-68 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in mu around inf 62.5%
Taylor expanded in mu around 0 80.5%
if -3.7e-98 < NaChar < 1.6499999999999999e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.6%
Taylor expanded in Vef around 0 53.6%
Final simplification71.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -2.3e+201)
(+ NdChar (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev 1.12e-262)
(+ NdChar (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(+ NdChar (/ 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 tmp;
if (Ev <= -2.3e+201) {
tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= 1.12e-262) {
tmp = NdChar + (NaChar / (1.0 + exp((mu / -KbT))));
} else {
tmp = NdChar + (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) :: tmp
if (ev <= (-2.3d+201)) then
tmp = ndchar + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= 1.12d-262) then
tmp = ndchar + (nachar / (1.0d0 + exp((mu / -kbt))))
else
tmp = ndchar + (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 tmp;
if (Ev <= -2.3e+201) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= 1.12e-262) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else {
tmp = NdChar + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.3e+201: tmp = NdChar + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= 1.12e-262: tmp = NdChar + (NaChar / (1.0 + math.exp((mu / -KbT)))) else: tmp = NdChar + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.3e+201) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= 1.12e-262) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); else tmp = Float64(NdChar + 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) tmp = 0.0; if (Ev <= -2.3e+201) tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= 1.12e-262) tmp = NdChar + (NaChar / (1.0 + exp((mu / -KbT)))); else tmp = NdChar + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.3e+201], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.12e-262], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.3 \cdot 10^{+201}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq 1.12 \cdot 10^{-262}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -2.3000000000000001e201Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.7%
Taylor expanded in mu around inf 41.2%
Taylor expanded in mu around 0 56.3%
Taylor expanded in Ev around inf 56.3%
if -2.3000000000000001e201 < Ev < 1.12e-262Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.7%
Taylor expanded in mu around inf 51.6%
Taylor expanded in mu around 0 70.7%
Taylor expanded in mu around inf 58.7%
associate-*r/58.7%
mul-1-neg58.7%
Simplified58.7%
if 1.12e-262 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 61.6%
Taylor expanded in mu around inf 62.5%
Taylor expanded in mu around 0 67.6%
Taylor expanded in EAccept around inf 48.1%
Final simplification53.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept -5.6e-250)
(+ NdChar (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 1.95e+31)
(+ NdChar (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+ NdChar (/ 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 tmp;
if (EAccept <= -5.6e-250) {
tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 1.95e+31) {
tmp = NdChar + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = NdChar + (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) :: tmp
if (eaccept <= (-5.6d-250)) then
tmp = ndchar + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 1.95d+31) then
tmp = ndchar + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = ndchar + (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 tmp;
if (EAccept <= -5.6e-250) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 1.95e+31) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = NdChar + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= -5.6e-250: tmp = NdChar + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 1.95e+31: tmp = NdChar + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = NdChar + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= -5.6e-250) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 1.95e+31) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(NdChar + 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) tmp = 0.0; if (EAccept <= -5.6e-250) tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 1.95e+31) tmp = NdChar + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = NdChar + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, -5.6e-250], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.95e+31], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq -5.6 \cdot 10^{-250}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.95 \cdot 10^{+31}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -5.60000000000000055e-250Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.9%
Taylor expanded in mu around inf 56.6%
Taylor expanded in mu around 0 66.6%
Taylor expanded in Ev around inf 48.8%
if -5.60000000000000055e-250 < EAccept < 1.95e31Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 57.5%
Taylor expanded in mu around inf 56.9%
Taylor expanded in mu around 0 68.8%
Taylor expanded in Vef around inf 53.9%
if 1.95e31 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.1%
Taylor expanded in mu around inf 52.5%
Taylor expanded in mu around 0 69.8%
Taylor expanded in EAccept around inf 59.3%
Final simplification52.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ NdChar (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (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 + (nachar / (1.0d0 + exp(((vef + (ev + (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 + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.5%
Taylor expanded in mu around inf 55.8%
Taylor expanded in mu around 0 68.0%
Final simplification68.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= mu 7.8e+213) (+ NdChar (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))) (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Vef KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 7.8e+213) {
tmp = NdChar + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (mu <= 7.8d+213) then
tmp = ndchar + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 7.8e+213) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= 7.8e+213: tmp = NdChar + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= 7.8e+213) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= 7.8e+213) tmp = NdChar + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, 7.8e+213], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq 7.8 \cdot 10^{+213}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Vef}{KbT}}\\
\end{array}
\end{array}
if mu < 7.8000000000000003e213Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.7%
Taylor expanded in mu around inf 57.2%
Taylor expanded in mu around 0 68.7%
Taylor expanded in EAccept around inf 51.2%
if 7.8000000000000003e213 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.5%
Taylor expanded in KbT around inf 17.1%
associate-+r+17.1%
+-commutative17.1%
Simplified17.1%
Taylor expanded in Vef around inf 35.5%
Final simplification49.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 2.65e+26) (+ NdChar (/ NaChar (+ 1.0 (exp (/ Ev KbT))))) (+ NdChar (/ 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 tmp;
if (EAccept <= 2.65e+26) {
tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = NdChar + (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) :: tmp
if (eaccept <= 2.65d+26) then
tmp = ndchar + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = ndchar + (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 tmp;
if (EAccept <= 2.65e+26) {
tmp = NdChar + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = NdChar + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 2.65e+26: tmp = NdChar + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = NdChar + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 2.65e+26) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(NdChar + 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) tmp = 0.0; if (EAccept <= 2.65e+26) tmp = NdChar + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = NdChar + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 2.65e+26], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 2.65 \cdot 10^{+26}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 2.64999999999999984e26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.3%
Taylor expanded in mu around inf 56.9%
Taylor expanded in mu around 0 67.8%
Taylor expanded in Ev around inf 50.7%
if 2.64999999999999984e26 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.9%
Taylor expanded in mu around inf 51.9%
Taylor expanded in mu around 0 68.9%
Taylor expanded in EAccept around inf 58.6%
Final simplification52.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(/
NaChar
(+
1.0
(-
(+ (+ 1.0 (/ EAccept KbT)) (+ (/ Ev KbT) (/ Vef KbT)))
(/ mu KbT))))))
(if (<= NaChar 12500000.0)
(+ NdChar t_0)
(if (<= NaChar 4.6e+109)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Vef KbT))))
(+
t_0
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (* mu (+ (/ 1.0 KbT) (/ Vef (* mu KbT))))))
(/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)));
double tmp;
if (NaChar <= 12500000.0) {
tmp = NdChar + t_0;
} else if (NaChar <= 4.6e+109) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + (((1.0d0 + (eaccept / kbt)) + ((ev / kbt) + (vef / kbt))) - (mu / kbt)))
if (nachar <= 12500000.0d0) then
tmp = ndchar + t_0
else if (nachar <= 4.6d+109) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (vef / kbt)))
else
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + (mu * ((1.0d0 / kbt) + (vef / (mu * kbt)))))) - (ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)));
double tmp;
if (NaChar <= 12500000.0) {
tmp = NdChar + t_0;
} else if (NaChar <= 4.6e+109) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))) tmp = 0 if NaChar <= 12500000.0: tmp = NdChar + t_0 elif NaChar <= 4.6e+109: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))) else: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EAccept / KbT)) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT)))) tmp = 0.0 if (NaChar <= 12500000.0) tmp = Float64(NdChar + t_0); elseif (NaChar <= 4.6e+109) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(mu * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(mu * KbT)))))) - Float64(Ec / KbT))))); 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)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))); tmp = 0.0; if (NaChar <= 12500000.0) tmp = NdChar + t_0; elseif (NaChar <= 4.6e+109) tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))); else tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (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[(N[(N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, 12500000.0], N[(NdChar + t$95$0), $MachinePrecision], If[LessEqual[NaChar, 4.6e+109], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + \left(\left(\left(1 + \frac{EAccept}{KbT}\right) + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq 12500000:\\
\;\;\;\;NdChar + t\_0\\
\mathbf{elif}\;NaChar \leq 4.6 \cdot 10^{+109}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + mu \cdot \left(\frac{1}{KbT} + \frac{Vef}{mu \cdot KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < 1.25e7Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.0%
Taylor expanded in mu around inf 52.0%
Taylor expanded in mu around 0 64.9%
Taylor expanded in KbT around inf 38.9%
associate-+r+21.5%
+-commutative21.5%
Simplified38.9%
if 1.25e7 < NaChar < 4.60000000000000021e109Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 81.5%
Taylor expanded in KbT around inf 19.8%
associate-+r+19.8%
+-commutative19.8%
Simplified19.8%
Taylor expanded in Vef around inf 41.8%
if 4.60000000000000021e109 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.1%
Taylor expanded in mu around inf 72.8%
*-commutative72.8%
Simplified72.8%
Taylor expanded in KbT around inf 34.8%
associate-+r+27.2%
+-commutative27.2%
Simplified34.8%
Final simplification38.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(/
NaChar
(+
1.0
(-
(+ (+ 1.0 (/ EAccept KbT)) (+ (/ Ev KbT) (/ Vef KbT)))
(/ mu KbT))))))
(if (<= KbT -1.65e+163)
(+
t_0
(/
NdChar
(+
1.0
(- (+ 1.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT)))) (/ Ec KbT)))))
(if (or (<= KbT -1.5e+17) (not (<= KbT -8.5e-109)))
(+ NdChar t_0)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Ev 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 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)));
double tmp;
if (KbT <= -1.65e+163) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
} else if ((KbT <= -1.5e+17) || !(KbT <= -8.5e-109)) {
tmp = NdChar + t_0;
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / 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 + (((1.0d0 + (eaccept / kbt)) + ((ev / kbt) + (vef / kbt))) - (mu / kbt)))
if (kbt <= (-1.65d+163)) then
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))))
else if ((kbt <= (-1.5d+17)) .or. (.not. (kbt <= (-8.5d-109)))) then
tmp = ndchar + t_0
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (ev / 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 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)));
double tmp;
if (KbT <= -1.65e+163) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))));
} else if ((KbT <= -1.5e+17) || !(KbT <= -8.5e-109)) {
tmp = NdChar + t_0;
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))) tmp = 0 if KbT <= -1.65e+163: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))) elif (KbT <= -1.5e+17) or not (KbT <= -8.5e-109): tmp = NdChar + t_0 else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EAccept / KbT)) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT)))) tmp = 0.0 if (KbT <= -1.65e+163) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))))); elseif ((KbT <= -1.5e+17) || !(KbT <= -8.5e-109)) tmp = Float64(NdChar + t_0); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Ev / KbT)))); 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)) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT))); tmp = 0.0; if (KbT <= -1.65e+163) tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT)))); elseif ((KbT <= -1.5e+17) || ~((KbT <= -8.5e-109))) tmp = NdChar + t_0; else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / 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[(N[(N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.65e+163], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[KbT, -1.5e+17], N[Not[LessEqual[KbT, -8.5e-109]], $MachinePrecision]], N[(NdChar + t$95$0), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + \left(\left(\left(1 + \frac{EAccept}{KbT}\right) + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{if}\;KbT \leq -1.65 \cdot 10^{+163}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;KbT \leq -1.5 \cdot 10^{+17} \lor \neg \left(KbT \leq -8.5 \cdot 10^{-109}\right):\\
\;\;\;\;NdChar + t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Ev}{KbT}}\\
\end{array}
\end{array}
if KbT < -1.65e163Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 81.8%
Taylor expanded in KbT around inf 70.7%
associate-+r+69.3%
+-commutative69.3%
Simplified70.7%
if -1.65e163 < KbT < -1.5e17 or -8.50000000000000005e-109 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in mu around inf 54.6%
Taylor expanded in mu around 0 68.5%
Taylor expanded in KbT around inf 35.9%
associate-+r+17.8%
+-commutative17.8%
Simplified35.9%
if -1.5e17 < KbT < -8.50000000000000005e-109Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.8%
Taylor expanded in KbT around inf 8.5%
associate-+r+8.5%
+-commutative8.5%
Simplified8.5%
Taylor expanded in Ev around inf 31.2%
Final simplification39.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ Ev KbT) (/ Vef KbT))))
(if (<= KbT -6.8e+162)
(+ (/ NdChar 2.0) (/ NaChar (- (+ t_0 2.0) (/ mu KbT))))
(if (or (<= KbT -1.45e+18) (not (<= KbT -8.8e-109)))
(+
NdChar
(/ NaChar (+ 1.0 (- (+ (+ 1.0 (/ EAccept KbT)) t_0) (/ mu KbT)))))
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Ev KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (Ev / KbT) + (Vef / KbT);
double tmp;
if (KbT <= -6.8e+162) {
tmp = (NdChar / 2.0) + (NaChar / ((t_0 + 2.0) - (mu / KbT)));
} else if ((KbT <= -1.45e+18) || !(KbT <= -8.8e-109)) {
tmp = NdChar + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + t_0) - (mu / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / 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 = (ev / kbt) + (vef / kbt)
if (kbt <= (-6.8d+162)) then
tmp = (ndchar / 2.0d0) + (nachar / ((t_0 + 2.0d0) - (mu / kbt)))
else if ((kbt <= (-1.45d+18)) .or. (.not. (kbt <= (-8.8d-109)))) then
tmp = ndchar + (nachar / (1.0d0 + (((1.0d0 + (eaccept / kbt)) + t_0) - (mu / kbt))))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (ev / 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 = (Ev / KbT) + (Vef / KbT);
double tmp;
if (KbT <= -6.8e+162) {
tmp = (NdChar / 2.0) + (NaChar / ((t_0 + 2.0) - (mu / KbT)));
} else if ((KbT <= -1.45e+18) || !(KbT <= -8.8e-109)) {
tmp = NdChar + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + t_0) - (mu / KbT))));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Ev / KbT) + (Vef / KbT) tmp = 0 if KbT <= -6.8e+162: tmp = (NdChar / 2.0) + (NaChar / ((t_0 + 2.0) - (mu / KbT))) elif (KbT <= -1.45e+18) or not (KbT <= -8.8e-109): tmp = NdChar + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + t_0) - (mu / KbT)))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Ev / KbT) + Float64(Vef / KbT)) tmp = 0.0 if (KbT <= -6.8e+162) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(t_0 + 2.0) - Float64(mu / KbT)))); elseif ((KbT <= -1.45e+18) || !(KbT <= -8.8e-109)) tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EAccept / KbT)) + t_0) - Float64(mu / KbT))))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Ev / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Ev / KbT) + (Vef / KbT); tmp = 0.0; if (KbT <= -6.8e+162) tmp = (NdChar / 2.0) + (NaChar / ((t_0 + 2.0) - (mu / KbT))); elseif ((KbT <= -1.45e+18) || ~((KbT <= -8.8e-109))) tmp = NdChar + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + t_0) - (mu / KbT)))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Ev / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -6.8e+162], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(t$95$0 + 2.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[KbT, -1.45e+18], N[Not[LessEqual[KbT, -8.8e-109]], $MachinePrecision]], N[(NdChar + N[(NaChar / N[(1.0 + N[(N[(N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Ev}{KbT} + \frac{Vef}{KbT}\\
\mathbf{if}\;KbT \leq -6.8 \cdot 10^{+162}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(t\_0 + 2\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq -1.45 \cdot 10^{+18} \lor \neg \left(KbT \leq -8.8 \cdot 10^{-109}\right):\\
\;\;\;\;NdChar + \frac{NaChar}{1 + \left(\left(\left(1 + \frac{EAccept}{KbT}\right) + t\_0\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Ev}{KbT}}\\
\end{array}
\end{array}
if KbT < -6.80000000000000006e162Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 80.4%
Taylor expanded in KbT around inf 69.3%
associate-+r+69.3%
+-commutative69.3%
Simplified69.3%
Taylor expanded in EAccept around 0 65.6%
if -6.80000000000000006e162 < KbT < -1.45e18 or -8.7999999999999997e-109 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in mu around inf 54.6%
Taylor expanded in mu around 0 68.5%
Taylor expanded in KbT around inf 35.9%
associate-+r+17.8%
+-commutative17.8%
Simplified35.9%
if -1.45e18 < KbT < -8.7999999999999997e-109Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.8%
Taylor expanded in KbT around inf 8.5%
associate-+r+8.5%
+-commutative8.5%
Simplified8.5%
Taylor expanded in Ev around inf 31.2%
Final simplification38.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Vef -2.45e+116)
(+ (/ NdChar 2.0) (/ NaChar (- 1.0 (/ mu KbT))))
(if (<= Vef -1.55e-128)
(+ (* NaChar 0.5) (/ NdChar 2.0))
(if (<= Vef 7.5e-141)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Vef KbT))))
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -2.45e+116) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT)));
} else if (Vef <= -1.55e-128) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else if (Vef <= 7.5e-141) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (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) :: tmp
if (vef <= (-2.45d+116)) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 - (mu / kbt)))
else if (vef <= (-1.55d-128)) then
tmp = (nachar * 0.5d0) + (ndchar / 2.0d0)
else if (vef <= 7.5d-141) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (vef / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (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 tmp;
if (Vef <= -2.45e+116) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT)));
} else if (Vef <= -1.55e-128) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else if (Vef <= 7.5e-141) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -2.45e+116: tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT))) elif Vef <= -1.55e-128: tmp = (NaChar * 0.5) + (NdChar / 2.0) elif Vef <= 7.5e-141: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -2.45e+116) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); elseif (Vef <= -1.55e-128) tmp = Float64(Float64(NaChar * 0.5) + Float64(NdChar / 2.0)); elseif (Vef <= 7.5e-141) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -2.45e+116) tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT))); elseif (Vef <= -1.55e-128) tmp = (NaChar * 0.5) + (NdChar / 2.0); elseif (Vef <= 7.5e-141) tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -2.45e+116], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.55e-128], N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7.5e-141], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.45 \cdot 10^{+116}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{elif}\;Vef \leq -1.55 \cdot 10^{-128}:\\
\;\;\;\;NaChar \cdot 0.5 + \frac{NdChar}{2}\\
\mathbf{elif}\;Vef \leq 7.5 \cdot 10^{-141}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if Vef < -2.4499999999999999e116Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.1%
Taylor expanded in KbT around inf 13.1%
associate-+r+13.1%
+-commutative13.1%
Simplified13.1%
Taylor expanded in mu around inf 29.9%
neg-mul-129.9%
distribute-neg-frac229.9%
Simplified29.9%
if -2.4499999999999999e116 < Vef < -1.55000000000000001e-128Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.4%
Taylor expanded in KbT around inf 40.5%
associate-+r+40.5%
+-commutative40.5%
Simplified40.5%
Taylor expanded in KbT around inf 25.0%
Taylor expanded in KbT around inf 41.0%
*-commutative41.0%
Simplified41.0%
if -1.55000000000000001e-128 < Vef < 7.50000000000000046e-141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.1%
Taylor expanded in KbT around inf 18.7%
associate-+r+18.7%
+-commutative18.7%
Simplified18.7%
Taylor expanded in Vef around inf 37.2%
if 7.50000000000000046e-141 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in KbT around inf 18.9%
associate-+r+18.9%
+-commutative18.9%
Simplified18.9%
Taylor expanded in EAccept around inf 21.8%
Final simplification31.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Vef -1.32e-132)
(+ (* NaChar 0.5) (/ NdChar 2.0))
(if (<= Vef 2.2e-138)
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ Vef KbT))))
(+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ EAccept 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.32e-132) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else if (Vef <= 2.2e-138) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (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) :: tmp
if (vef <= (-1.32d-132)) then
tmp = (nachar * 0.5d0) + (ndchar / 2.0d0)
else if (vef <= 2.2d-138) then
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (vef / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (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 tmp;
if (Vef <= -1.32e-132) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else if (Vef <= 2.2e-138) {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -1.32e-132: tmp = (NaChar * 0.5) + (NdChar / 2.0) elif Vef <= 2.2e-138: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -1.32e-132) tmp = Float64(Float64(NaChar * 0.5) + Float64(NdChar / 2.0)); elseif (Vef <= 2.2e-138) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -1.32e-132) tmp = (NaChar * 0.5) + (NdChar / 2.0); elseif (Vef <= 2.2e-138) tmp = (NdChar / 2.0) + (NaChar / (1.0 + (Vef / KbT))); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -1.32e-132], N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.2e-138], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1.32 \cdot 10^{-132}:\\
\;\;\;\;NaChar \cdot 0.5 + \frac{NdChar}{2}\\
\mathbf{elif}\;Vef \leq 2.2 \cdot 10^{-138}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if Vef < -1.32000000000000004e-132Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in KbT around inf 29.0%
associate-+r+29.0%
+-commutative29.0%
Simplified29.0%
Taylor expanded in KbT around inf 17.8%
Taylor expanded in KbT around inf 31.3%
*-commutative31.3%
Simplified31.3%
if -1.32000000000000004e-132 < Vef < 2.1999999999999999e-138Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.1%
Taylor expanded in KbT around inf 18.7%
associate-+r+18.7%
+-commutative18.7%
Simplified18.7%
Taylor expanded in Vef around inf 37.2%
if 2.1999999999999999e-138 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in KbT around inf 18.9%
associate-+r+18.9%
+-commutative18.9%
Simplified18.9%
Taylor expanded in EAccept around inf 21.8%
Final simplification29.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 6.1e-43) (+ (* NaChar 0.5) (/ NdChar 2.0)) (+ (/ NdChar 2.0) (/ NaChar (+ 1.0 (/ EAccept 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 <= 6.1e-43) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (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) :: tmp
if (vef <= 6.1d-43) then
tmp = (nachar * 0.5d0) + (ndchar / 2.0d0)
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 + (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 tmp;
if (Vef <= 6.1e-43) {
tmp = (NaChar * 0.5) + (NdChar / 2.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 6.1e-43: tmp = (NaChar * 0.5) + (NdChar / 2.0) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 6.1e-43) tmp = Float64(Float64(NaChar * 0.5) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 6.1e-43) tmp = (NaChar * 0.5) + (NdChar / 2.0); else tmp = (NdChar / 2.0) + (NaChar / (1.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 6.1e-43], N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 6.1 \cdot 10^{-43}:\\
\;\;\;\;NaChar \cdot 0.5 + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if Vef < 6.10000000000000037e-43Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.5%
Taylor expanded in KbT around inf 25.7%
associate-+r+25.7%
+-commutative25.7%
Simplified25.7%
Taylor expanded in KbT around inf 17.9%
Taylor expanded in KbT around inf 28.5%
*-commutative28.5%
Simplified28.5%
if 6.10000000000000037e-43 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 35.8%
Taylor expanded in KbT around inf 12.5%
associate-+r+12.5%
+-commutative12.5%
Simplified12.5%
Taylor expanded in EAccept around inf 18.6%
Final simplification25.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NaChar 0.5) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar * 0.5) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar * 0.5d0) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar * 0.5) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar * 0.5) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar * 0.5) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar * 0.5) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar * 0.5), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5 + \frac{NdChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.1%
Taylor expanded in KbT around inf 22.3%
associate-+r+22.3%
+-commutative22.3%
Simplified22.3%
Taylor expanded in KbT around inf 14.9%
Taylor expanded in KbT around inf 25.3%
*-commutative25.3%
Simplified25.3%
Final simplification25.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 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;
}
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
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;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.1%
Taylor expanded in KbT around inf 22.3%
associate-+r+22.3%
+-commutative22.3%
Simplified22.3%
Taylor expanded in EAccept around inf 8.0%
associate-/l*8.6%
Simplified8.6%
Taylor expanded in NdChar around inf 14.3%
Final simplification14.3%
herbie shell --seed 2024082
(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))))))