
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)) (/ NaChar (+ (exp (/ (- Vef (- (- mu EAccept) Ev)) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.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 = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((vef - ((mu - eaccept) - ev)) / kbt)) + 1.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 (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef - Float64(Float64(mu - EAccept) - Ev)) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef - N[(N[(mu - EAccept), $MachinePrecision] - Ev), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef - \left(\left(mu - EAccept\right) - Ev\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 4.8e-199)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ Ev KbT)) 1.0)))
(if (<= EAccept 2.3e+210)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.8e-199) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((Ev / KbT)) + 1.0));
} else if (EAccept <= 2.3e+210) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 4.8d-199) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((ev / kbt)) + 1.0d0))
else if (eaccept <= 2.3d+210) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.8e-199) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((Ev / KbT)) + 1.0));
} else if (EAccept <= 2.3e+210) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 4.8e-199: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((Ev / KbT)) + 1.0)) elif EAccept <= 2.3e+210: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 4.8e-199) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0))); elseif (EAccept <= 2.3e+210) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 4.8e-199) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((Ev / KbT)) + 1.0)); elseif (EAccept <= 2.3e+210) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 4.8e-199], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 2.3e+210], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 4.8 \cdot 10^{-199}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 2.3 \cdot 10^{+210}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 4.79999999999999991e-199Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.8%
if 4.79999999999999991e-199 < EAccept < 2.2999999999999999e210Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 81.2%
if 2.2999999999999999e210 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around inf 84.9%
Final simplification77.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.56e-25) (not (<= NaChar 3.6e-98))) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)) (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.56e-25) || !(NaChar <= 3.6e-98)) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.56d-25)) .or. (.not. (nachar <= 3.6d-98))) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.56e-25) || !(NaChar <= 3.6e-98)) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.56e-25) or not (NaChar <= 3.6e-98): tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.56e-25) || !(NaChar <= 3.6e-98)) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.56e-25) || ~((NaChar <= 3.6e-98))) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.56e-25], N[Not[LessEqual[NaChar, 3.6e-98]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.56 \cdot 10^{-25} \lor \neg \left(NaChar \leq 3.6 \cdot 10^{-98}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -1.55999999999999995e-25 or 3.6000000000000002e-98 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 74.6%
if -1.55999999999999995e-25 < NaChar < 3.6000000000000002e-98Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.4%
Final simplification76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.35e-24) (not (<= NaChar 1.2e-100))) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)) (/ NdChar (+ (exp (/ (- (+ mu Vef) Ec) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.35e-24) || !(NaChar <= 1.2e-100)) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.35d-24)) .or. (.not. (nachar <= 1.2d-100))) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((((mu + vef) - ec) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.35e-24) || !(NaChar <= 1.2e-100)) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((((mu + Vef) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.35e-24) or not (NaChar <= 1.2e-100): tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((((mu + Vef) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.35e-24) || !(NaChar <= 1.2e-100)) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.35e-24) || ~((NaChar <= 1.2e-100))) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.35e-24], N[Not[LessEqual[NaChar, 1.2e-100]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.35 \cdot 10^{-24} \lor \neg \left(NaChar \leq 1.2 \cdot 10^{-100}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + Vef\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -1.35000000000000003e-24 or 1.2000000000000001e-100 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 74.6%
if -1.35000000000000003e-24 < NaChar < 1.2000000000000001e-100Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.4%
Taylor expanded in EDonor around 0 67.3%
Final simplification71.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ Vef KbT)) 1.0))))
(if (<= Vef -6e+40)
t_0
(if (<= Vef -4.9e-195)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(if (<= Vef 3.8e+115) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) 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 / (exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -6e+40) {
tmp = t_0;
} else if (Vef <= -4.9e-195) {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
} else if (Vef <= 3.8e+115) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp((vef / kbt)) + 1.0d0)
if (vef <= (-6d+40)) then
tmp = t_0
else if (vef <= (-4.9d-195)) then
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
else if (vef <= 3.8d+115) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
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 / (Math.exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -6e+40) {
tmp = t_0;
} else if (Vef <= -4.9e-195) {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
} else if (Vef <= 3.8e+115) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((Vef / KbT)) + 1.0) tmp = 0 if Vef <= -6e+40: tmp = t_0 elif Vef <= -4.9e-195: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) elif Vef <= 3.8e+115: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) tmp = 0.0 if (Vef <= -6e+40) tmp = t_0; elseif (Vef <= -4.9e-195) tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); elseif (Vef <= 3.8e+115) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((Vef / KbT)) + 1.0); tmp = 0.0; if (Vef <= -6e+40) tmp = t_0; elseif (Vef <= -4.9e-195) tmp = NdChar / (exp((EDonor / KbT)) + 1.0); elseif (Vef <= 3.8e+115) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6e+40], t$95$0, If[LessEqual[Vef, -4.9e-195], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.8e+115], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -6 \cdot 10^{+40}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq -4.9 \cdot 10^{-195}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 3.8 \cdot 10^{+115}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -6.0000000000000004e40 or 3.8000000000000001e115 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.4%
Taylor expanded in EDonor around 0 59.6%
Taylor expanded in Vef around inf 53.2%
if -6.0000000000000004e40 < Vef < -4.9000000000000003e-195Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 61.7%
Taylor expanded in EDonor around inf 53.4%
if -4.9000000000000003e-195 < Vef < 3.8000000000000001e115Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 63.5%
Taylor expanded in EAccept around inf 43.6%
Final simplification49.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -1.186e+100)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -3.6e-88)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(if (<= Ev -3.1e-165)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.186e+100) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -3.6e-88) {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
} else if (Ev <= -3.1e-165) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-1.186d+100)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-3.6d-88)) then
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
else if (ev <= (-3.1d-165)) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.186e+100) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -3.6e-88) {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
} else if (Ev <= -3.1e-165) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -1.186e+100: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -3.6e-88: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) elif Ev <= -3.1e-165: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -1.186e+100) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -3.6e-88) tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); elseif (Ev <= -3.1e-165) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -1.186e+100) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -3.6e-88) tmp = NdChar / (exp((EDonor / KbT)) + 1.0); elseif (Ev <= -3.1e-165) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -1.186e+100], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -3.6e-88], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -3.1e-165], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -1.186 \cdot 10^{+100}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -3.6 \cdot 10^{-88}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -3.1 \cdot 10^{-165}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -1.1859999999999999e100Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.0%
Taylor expanded in NdChar around 0 45.2%
if -1.1859999999999999e100 < Ev < -3.5999999999999999e-88Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.3%
Taylor expanded in EDonor around inf 44.5%
if -3.5999999999999999e-88 < Ev < -3.09999999999999996e-165Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
Taylor expanded in Vef around inf 45.0%
if -3.09999999999999996e-165 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 66.1%
Taylor expanded in EAccept around inf 38.5%
Final simplification41.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar 9.2e-287) (not (<= NdChar 1.45e-142))) (/ NdChar (+ (exp (/ (- (+ mu Vef) Ec) KbT)) 1.0)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= 9.2e-287) || !(NdChar <= 1.45e-142)) {
tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= 9.2d-287) .or. (.not. (ndchar <= 1.45d-142))) then
tmp = ndchar / (exp((((mu + vef) - ec) / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= 9.2e-287) || !(NdChar <= 1.45e-142)) {
tmp = NdChar / (Math.exp((((mu + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= 9.2e-287) or not (NdChar <= 1.45e-142): tmp = NdChar / (math.exp((((mu + Vef) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= 9.2e-287) || !(NdChar <= 1.45e-142)) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= 9.2e-287) || ~((NdChar <= 1.45e-142))) tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, 9.2e-287], N[Not[LessEqual[NdChar, 1.45e-142]], $MachinePrecision]], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq 9.2 \cdot 10^{-287} \lor \neg \left(NdChar \leq 1.45 \cdot 10^{-142}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + Vef\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < 9.19999999999999944e-287 or 1.44999999999999995e-142 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 67.9%
Taylor expanded in EDonor around 0 59.6%
if 9.19999999999999944e-287 < NdChar < 1.44999999999999995e-142Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 92.6%
Taylor expanded in EAccept around inf 56.1%
Final simplification59.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -9.2e+109)
(- t_0 (* 0.25 (* Ev (/ NaChar KbT))))
(if (<= KbT 4e+216)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(+ t_0 (* -0.25 (* mu (/ (- NdChar NaChar) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -9.2e+109) {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
} else if (KbT <= 4e+216) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / 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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-9.2d+109)) then
tmp = t_0 - (0.25d0 * (ev * (nachar / kbt)))
else if (kbt <= 4d+216) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else
tmp = t_0 + ((-0.25d0) * (mu * ((ndchar - nachar) / 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -9.2e+109) {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
} else if (KbT <= 4e+216) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -9.2e+109: tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))) elif KbT <= 4e+216: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) else: tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -9.2e+109) tmp = Float64(t_0 - Float64(0.25 * Float64(Ev * Float64(NaChar / KbT)))); elseif (KbT <= 4e+216) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); else tmp = Float64(t_0 + Float64(-0.25 * Float64(mu * Float64(Float64(NdChar - NaChar) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -9.2e+109) tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))); elseif (KbT <= 4e+216) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); else tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9.2e+109], N[(t$95$0 - N[(0.25 * N[(Ev * N[(NaChar / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4e+216], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(-0.25 * N[(mu * N[(N[(NdChar - NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -9.2 \cdot 10^{+109}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Ev \cdot \frac{NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 4 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -0.25 \cdot \left(mu \cdot \frac{NdChar - NaChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -9.20000000000000042e109Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.3%
Simplified37.3%
Taylor expanded in Ev around inf 52.6%
associate-/l*58.4%
Simplified58.4%
if -9.20000000000000042e109 < KbT < 4.0000000000000001e216Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 64.5%
Taylor expanded in EAccept around inf 34.8%
if 4.0000000000000001e216 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.6%
Simplified45.6%
Taylor expanded in mu around -inf 78.2%
associate-/l*78.8%
mul-1-neg78.8%
sub-neg78.8%
Simplified78.8%
Final simplification41.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 1.5e+70) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e+70) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.5d+70) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e+70) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.5e+70: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.5e+70) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.5e+70) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.5e+70], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.5 \cdot 10^{+70}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 1.49999999999999988e70Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 61.5%
Taylor expanded in Vef around inf 37.5%
if 1.49999999999999988e70 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 61.1%
Taylor expanded in EAccept around inf 50.7%
Final simplification40.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 6e+69) (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6e+69) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 6d+69) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6e+69) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 6e+69: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 6e+69) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 6e+69) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 6e+69], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 6 \cdot 10^{+69}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 5.99999999999999967e69Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.7%
Taylor expanded in NdChar around 0 38.5%
if 5.99999999999999967e69 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 61.1%
Taylor expanded in EAccept around inf 50.7%
Final simplification40.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -7.5e-105)
t_0
(if (<= KbT 4e+216)
(/
NaChar
(+ 2.0 (* mu (+ (/ (+ EAccept (+ Vef Ev)) (* mu KbT)) (/ -1.0 KbT)))))
(+ t_0 (* -0.25 (* mu (/ (- NdChar NaChar) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.5e-105) {
tmp = t_0;
} else if (KbT <= 4e+216) {
tmp = NaChar / (2.0 + (mu * (((EAccept + (Vef + Ev)) / (mu * KbT)) + (-1.0 / KbT))));
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / 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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-7.5d-105)) then
tmp = t_0
else if (kbt <= 4d+216) then
tmp = nachar / (2.0d0 + (mu * (((eaccept + (vef + ev)) / (mu * kbt)) + ((-1.0d0) / kbt))))
else
tmp = t_0 + ((-0.25d0) * (mu * ((ndchar - nachar) / 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.5e-105) {
tmp = t_0;
} else if (KbT <= 4e+216) {
tmp = NaChar / (2.0 + (mu * (((EAccept + (Vef + Ev)) / (mu * KbT)) + (-1.0 / KbT))));
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -7.5e-105: tmp = t_0 elif KbT <= 4e+216: tmp = NaChar / (2.0 + (mu * (((EAccept + (Vef + Ev)) / (mu * KbT)) + (-1.0 / KbT)))) else: tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -7.5e-105) tmp = t_0; elseif (KbT <= 4e+216) tmp = Float64(NaChar / Float64(2.0 + Float64(mu * Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) / Float64(mu * KbT)) + Float64(-1.0 / KbT))))); else tmp = Float64(t_0 + Float64(-0.25 * Float64(mu * Float64(Float64(NdChar - NaChar) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -7.5e-105) tmp = t_0; elseif (KbT <= 4e+216) tmp = NaChar / (2.0 + (mu * (((EAccept + (Vef + Ev)) / (mu * KbT)) + (-1.0 / KbT)))); else tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -7.5e-105], t$95$0, If[LessEqual[KbT, 4e+216], N[(NaChar / N[(2.0 + N[(mu * N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] / N[(mu * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(-0.25 * N[(mu * N[(N[(NdChar - NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -7.5 \cdot 10^{-105}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 4 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{2 + mu \cdot \left(\frac{EAccept + \left(Vef + Ev\right)}{mu \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -0.25 \cdot \left(mu \cdot \frac{NdChar - NaChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -7.5000000000000006e-105Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.1%
distribute-lft-out37.1%
Simplified37.1%
if -7.5000000000000006e-105 < KbT < 4.0000000000000001e216Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 64.6%
Taylor expanded in KbT around inf 20.5%
Taylor expanded in KbT around -inf 23.2%
mul-1-neg23.2%
unsub-neg23.2%
sub-neg23.2%
associate-+r+23.2%
mul-1-neg23.2%
unsub-neg23.2%
mul-1-neg23.2%
unsub-neg23.2%
mul-1-neg23.2%
mul-1-neg23.2%
remove-double-neg23.2%
Simplified23.2%
Taylor expanded in mu around inf 27.1%
+-commutative27.1%
mul-1-neg27.1%
unsub-neg27.1%
Simplified27.1%
if 4.0000000000000001e216 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.6%
Simplified45.6%
Taylor expanded in mu around -inf 78.2%
associate-/l*78.8%
mul-1-neg78.8%
sub-neg78.8%
Simplified78.8%
Final simplification33.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.85e+74)
(- t_0 (* 0.25 (* Ev (/ NaChar KbT))))
(if (<= KbT 7.2e-31)
(/ NaChar (+ 2.0 (/ (* Ev (+ (/ (- (+ Vef EAccept) mu) Ev) 1.0)) KbT)))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.85e+74) {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
} else if (KbT <= 7.2e-31) {
tmp = NaChar / (2.0 + ((Ev * ((((Vef + EAccept) - mu) / Ev) + 1.0)) / KbT));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-1.85d+74)) then
tmp = t_0 - (0.25d0 * (ev * (nachar / kbt)))
else if (kbt <= 7.2d-31) then
tmp = nachar / (2.0d0 + ((ev * ((((vef + eaccept) - mu) / ev) + 1.0d0)) / kbt))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.85e+74) {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
} else if (KbT <= 7.2e-31) {
tmp = NaChar / (2.0 + ((Ev * ((((Vef + EAccept) - mu) / Ev) + 1.0)) / KbT));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -1.85e+74: tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))) elif KbT <= 7.2e-31: tmp = NaChar / (2.0 + ((Ev * ((((Vef + EAccept) - mu) / Ev) + 1.0)) / KbT)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -1.85e+74) tmp = Float64(t_0 - Float64(0.25 * Float64(Ev * Float64(NaChar / KbT)))); elseif (KbT <= 7.2e-31) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(Ev * Float64(Float64(Float64(Float64(Vef + EAccept) - mu) / Ev) + 1.0)) / KbT))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -1.85e+74) tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))); elseif (KbT <= 7.2e-31) tmp = NaChar / (2.0 + ((Ev * ((((Vef + EAccept) - mu) / Ev) + 1.0)) / KbT)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.85e+74], N[(t$95$0 - N[(0.25 * N[(Ev * N[(NaChar / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.2e-31], N[(NaChar / N[(2.0 + N[(N[(Ev * N[(N[(N[(N[(Vef + EAccept), $MachinePrecision] - mu), $MachinePrecision] / Ev), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -1.85 \cdot 10^{+74}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Ev \cdot \frac{NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 7.2 \cdot 10^{-31}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{Ev \cdot \left(\frac{\left(Vef + EAccept\right) - mu}{Ev} + 1\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -1.8500000000000001e74Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.7%
Simplified31.7%
Taylor expanded in Ev around inf 45.1%
associate-/l*49.9%
Simplified49.9%
if -1.8500000000000001e74 < KbT < 7.20000000000000007e-31Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 65.8%
Taylor expanded in KbT around inf 19.2%
Taylor expanded in KbT around -inf 22.3%
mul-1-neg22.3%
unsub-neg22.3%
sub-neg22.3%
associate-+r+22.3%
mul-1-neg22.3%
unsub-neg22.3%
mul-1-neg22.3%
unsub-neg22.3%
mul-1-neg22.3%
mul-1-neg22.3%
remove-double-neg22.3%
Simplified22.3%
Taylor expanded in Ev around -inf 24.3%
associate-*r*24.3%
mul-1-neg24.3%
mul-1-neg24.3%
unsub-neg24.3%
+-commutative24.3%
Simplified24.3%
if 7.20000000000000007e-31 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 33.9%
distribute-lft-out33.9%
Simplified33.9%
Final simplification31.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -6.5e-105)
t_0
(if (<= KbT 4e+216)
(/ NaChar (+ 2.0 (/ (* mu (+ (/ (+ EAccept (+ Vef Ev)) mu) -1.0)) KbT)))
(+ t_0 (* -0.25 (* mu (/ (- NdChar NaChar) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -6.5e-105) {
tmp = t_0;
} else if (KbT <= 4e+216) {
tmp = NaChar / (2.0 + ((mu * (((EAccept + (Vef + Ev)) / mu) + -1.0)) / KbT));
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / 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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-6.5d-105)) then
tmp = t_0
else if (kbt <= 4d+216) then
tmp = nachar / (2.0d0 + ((mu * (((eaccept + (vef + ev)) / mu) + (-1.0d0))) / kbt))
else
tmp = t_0 + ((-0.25d0) * (mu * ((ndchar - nachar) / 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -6.5e-105) {
tmp = t_0;
} else if (KbT <= 4e+216) {
tmp = NaChar / (2.0 + ((mu * (((EAccept + (Vef + Ev)) / mu) + -1.0)) / KbT));
} else {
tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -6.5e-105: tmp = t_0 elif KbT <= 4e+216: tmp = NaChar / (2.0 + ((mu * (((EAccept + (Vef + Ev)) / mu) + -1.0)) / KbT)) else: tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -6.5e-105) tmp = t_0; elseif (KbT <= 4e+216) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(mu * Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) / mu) + -1.0)) / KbT))); else tmp = Float64(t_0 + Float64(-0.25 * Float64(mu * Float64(Float64(NdChar - NaChar) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -6.5e-105) tmp = t_0; elseif (KbT <= 4e+216) tmp = NaChar / (2.0 + ((mu * (((EAccept + (Vef + Ev)) / mu) + -1.0)) / KbT)); else tmp = t_0 + (-0.25 * (mu * ((NdChar - NaChar) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -6.5e-105], t$95$0, If[LessEqual[KbT, 4e+216], N[(NaChar / N[(2.0 + N[(N[(mu * N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(-0.25 * N[(mu * N[(N[(NdChar - NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -6.5 \cdot 10^{-105}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 4 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{mu \cdot \left(\frac{EAccept + \left(Vef + Ev\right)}{mu} + -1\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -0.25 \cdot \left(mu \cdot \frac{NdChar - NaChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -6.50000000000000006e-105Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.1%
distribute-lft-out37.1%
Simplified37.1%
if -6.50000000000000006e-105 < KbT < 4.0000000000000001e216Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 64.6%
Taylor expanded in KbT around inf 20.5%
Taylor expanded in KbT around -inf 23.2%
mul-1-neg23.2%
unsub-neg23.2%
sub-neg23.2%
associate-+r+23.2%
mul-1-neg23.2%
unsub-neg23.2%
mul-1-neg23.2%
unsub-neg23.2%
mul-1-neg23.2%
mul-1-neg23.2%
remove-double-neg23.2%
Simplified23.2%
Taylor expanded in mu around inf 25.0%
mul-1-neg25.0%
unsub-neg25.0%
Simplified25.0%
if 4.0000000000000001e216 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.6%
Simplified45.6%
Taylor expanded in mu around -inf 78.2%
associate-/l*78.8%
mul-1-neg78.8%
sub-neg78.8%
Simplified78.8%
Final simplification31.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -3.2e-109) (not (<= KbT 7e-129))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ 2.0 (/ (- (+ 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) {
double tmp;
if ((KbT <= -3.2e-109) || !(KbT <= 7e-129)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 + (((Vef + (Ev + EAccept)) - mu) / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-3.2d-109)) .or. (.not. (kbt <= 7d-129))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (2.0d0 + (((vef + (ev + eaccept)) - mu) / kbt))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.2e-109) || !(KbT <= 7e-129)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 + (((Vef + (Ev + EAccept)) - mu) / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.2e-109) or not (KbT <= 7e-129): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (2.0 + (((Vef + (Ev + EAccept)) - mu) / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.2e-109) || !(KbT <= 7e-129)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.2e-109) || ~((KbT <= 7e-129))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (2.0 + (((Vef + (Ev + EAccept)) - mu) / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.2e-109], N[Not[LessEqual[KbT, 7e-129]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(2.0 + N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.2 \cdot 10^{-109} \lor \neg \left(KbT \leq 7 \cdot 10^{-129}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -3.2000000000000002e-109 or 6.9999999999999995e-129 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.2%
distribute-lft-out31.2%
Simplified31.2%
if -3.2000000000000002e-109 < KbT < 6.9999999999999995e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in KbT around inf 26.6%
Taylor expanded in KbT around -inf 30.8%
mul-1-neg30.8%
unsub-neg30.8%
sub-neg30.8%
associate-+r+30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
mul-1-neg30.8%
remove-double-neg30.8%
Simplified30.8%
Final simplification31.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.2e-110) (not (<= KbT 1.05e-128))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.2e-110) || !(KbT <= 1.05e-128)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2.2d-110)) .or. (.not. (kbt <= 1.05d-128))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (((eaccept + (vef + ev)) - mu) / kbt)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.2e-110) || !(KbT <= 1.05e-128)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.2e-110) or not (KbT <= 1.05e-128): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.2e-110) || !(KbT <= 1.05e-128)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.2e-110) || ~((KbT <= 1.05e-128))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.2e-110], N[Not[LessEqual[KbT, 1.05e-128]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.2 \cdot 10^{-110} \lor \neg \left(KbT \leq 1.05 \cdot 10^{-128}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -2.1999999999999999e-110 or 1.0500000000000001e-128 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.2%
distribute-lft-out31.2%
Simplified31.2%
if -2.1999999999999999e-110 < KbT < 1.0500000000000001e-128Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in KbT around inf 26.6%
Taylor expanded in KbT around 0 30.8%
Final simplification31.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.4e-109) (not (<= KbT 6.5e-130))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ (/ Vef KbT) 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.4e-109) || !(KbT <= 6.5e-130)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((Vef / KbT) + 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-1.4d-109)) .or. (.not. (kbt <= 6.5d-130))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((vef / kbt) + 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.4e-109) || !(KbT <= 6.5e-130)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((Vef / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.4e-109) or not (KbT <= 6.5e-130): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((Vef / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.4e-109) || !(KbT <= 6.5e-130)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.4e-109) || ~((KbT <= 6.5e-130))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((Vef / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.4e-109], N[Not[LessEqual[KbT, 6.5e-130]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.4 \cdot 10^{-109} \lor \neg \left(KbT \leq 6.5 \cdot 10^{-130}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -1.39999999999999989e-109 or 6.5000000000000002e-130 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.2%
distribute-lft-out31.2%
Simplified31.2%
if -1.39999999999999989e-109 < KbT < 6.5000000000000002e-130Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in KbT around inf 26.6%
Taylor expanded in KbT around -inf 30.8%
mul-1-neg30.8%
unsub-neg30.8%
sub-neg30.8%
associate-+r+30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
mul-1-neg30.8%
remove-double-neg30.8%
Simplified30.8%
Taylor expanded in Vef around inf 24.3%
associate-*r/24.3%
mul-1-neg24.3%
Simplified24.3%
Final simplification29.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -9.5e-107) (not (<= KbT 7.1e-130))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (/ 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 ((KbT <= -9.5e-107) || !(KbT <= 7.1e-130)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (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 ((kbt <= (-9.5d-107)) .or. (.not. (kbt <= 7.1d-130))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (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 ((KbT <= -9.5e-107) || !(KbT <= 7.1e-130)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (Vef / KbT);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -9.5e-107) or not (KbT <= 7.1e-130): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (Vef / KbT) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -9.5e-107) || !(KbT <= 7.1e-130)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Vef / KbT)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -9.5e-107) || ~((KbT <= 7.1e-130))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (Vef / KbT); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -9.5e-107], N[Not[LessEqual[KbT, 7.1e-130]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -9.5 \cdot 10^{-107} \lor \neg \left(KbT \leq 7.1 \cdot 10^{-130}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{Vef}{KbT}}\\
\end{array}
\end{array}
if KbT < -9.4999999999999999e-107 or 7.1000000000000001e-130 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.2%
distribute-lft-out31.2%
Simplified31.2%
if -9.4999999999999999e-107 < KbT < 7.1000000000000001e-130Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in KbT around inf 26.6%
Taylor expanded in KbT around -inf 30.8%
mul-1-neg30.8%
unsub-neg30.8%
sub-neg30.8%
associate-+r+30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
unsub-neg30.8%
mul-1-neg30.8%
mul-1-neg30.8%
remove-double-neg30.8%
Simplified30.8%
Taylor expanded in Vef around inf 23.8%
Final simplification28.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -2.6e-79) (not (<= NaChar 1.35e-96))) (/ NaChar 2.0) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.6e-79) || !(NaChar <= 1.35e-96)) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-2.6d-79)) .or. (.not. (nachar <= 1.35d-96))) then
tmp = nachar / 2.0d0
else
tmp = ndchar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.6e-79) || !(NaChar <= 1.35e-96)) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.6e-79) or not (NaChar <= 1.35e-96): tmp = NaChar / 2.0 else: tmp = NdChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.6e-79) || !(NaChar <= 1.35e-96)) tmp = Float64(NaChar / 2.0); else tmp = Float64(NdChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.6e-79) || ~((NaChar <= 1.35e-96))) tmp = NaChar / 2.0; else tmp = NdChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.6e-79], N[Not[LessEqual[NaChar, 1.35e-96]], $MachinePrecision]], N[(NaChar / 2.0), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.6 \cdot 10^{-79} \lor \neg \left(NaChar \leq 1.35 \cdot 10^{-96}\right):\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -2.59999999999999994e-79 or 1.35e-96 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.4%
Taylor expanded in KbT around inf 20.1%
if -2.59999999999999994e-79 < NaChar < 1.35e-96Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.0%
distribute-lft-out27.0%
Simplified27.0%
Taylor expanded in NaChar around 0 26.0%
*-commutative26.0%
Simplified26.0%
Final simplification22.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 24.5%
distribute-lft-out24.5%
Simplified24.5%
Final simplification24.5%
(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 24.5%
distribute-lft-out24.5%
Simplified24.5%
Taylor expanded in NaChar around 0 16.1%
*-commutative16.1%
Simplified16.1%
herbie shell --seed 2024150
(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))))))