
(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 19 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%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -2.1e-234)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= NdChar 3.5e-35)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.1e-234) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (NdChar <= 3.5e-35) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-2.1d-234)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (ndchar <= 3.5d-35) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else
tmp = ndchar / (1.0d0 + exp((((edonor + (mu + vef)) - ec) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.1e-234) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (NdChar <= 3.5e-35) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.1e-234: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif NdChar <= 3.5e-35: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) else: tmp = NdChar / (1.0 + math.exp((((EDonor + (mu + Vef)) - Ec) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.1e-234) 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 (NdChar <= 3.5e-35) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -2.1e-234) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (NdChar <= 3.5e-35) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); else tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.1e-234], 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[NdChar, 3.5e-35], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.1 \cdot 10^{-234}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 3.5 \cdot 10^{-35}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -2.09999999999999991e-234Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.1%
if -2.09999999999999991e-234 < NdChar < 3.49999999999999996e-35Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.1%
if 3.49999999999999996e-35 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 82.9%
Final simplification77.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -53000000.0) (not (<= NdChar 6.4e-42))) (/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ 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 ((NdChar <= -53000000.0) || !(NdChar <= 6.4e-42)) {
tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((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 ((ndchar <= (-53000000.0d0)) .or. (.not. (ndchar <= 6.4d-42))) then
tmp = ndchar / (1.0d0 + exp((((edonor + (mu + vef)) - ec) / kbt)))
else
tmp = nachar / (1.0d0 + exp((((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 ((NdChar <= -53000000.0) || !(NdChar <= 6.4e-42)) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -53000000.0) or not (NdChar <= 6.4e-42): tmp = NdChar / (1.0 + math.exp((((EDonor + (mu + Vef)) - Ec) / KbT))) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -53000000.0) || !(NdChar <= 6.4e-42)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(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 ((NdChar <= -53000000.0) || ~((NdChar <= 6.4e-42))) tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT))); else tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -53000000.0], N[Not[LessEqual[NdChar, 6.4e-42]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -53000000 \lor \neg \left(NdChar \leq 6.4 \cdot 10^{-42}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -5.3e7 or 6.4000000000000005e-42 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.6%
if -5.3e7 < NdChar < 6.4000000000000005e-42Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.9%
Final simplification76.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -34000000.0) (not (<= NdChar 1.3e-32))) (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ 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 ((NdChar <= -34000000.0) || !(NdChar <= 1.3e-32)) {
tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((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 ((ndchar <= (-34000000.0d0)) .or. (.not. (ndchar <= 1.3d-32))) then
tmp = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
else
tmp = nachar / (1.0d0 + exp((((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 ((NdChar <= -34000000.0) || !(NdChar <= 1.3e-32)) {
tmp = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -34000000.0) or not (NdChar <= 1.3e-32): tmp = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -34000000.0) || !(NdChar <= 1.3e-32)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(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 ((NdChar <= -34000000.0) || ~((NdChar <= 1.3e-32))) tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); else tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -34000000.0], N[Not[LessEqual[NdChar, 1.3e-32]], $MachinePrecision]], 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[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -34000000 \lor \neg \left(NdChar \leq 1.3 \cdot 10^{-32}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -3.4e7 or 1.2999999999999999e-32 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.6%
Taylor expanded in EDonor around 0 77.1%
if -3.4e7 < NdChar < 1.2999999999999999e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.9%
Final simplification74.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -3.5e-18)
t_0
(if (<= Vef 5.2e-232)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= Vef 1.32e+115) (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -3.5e-18) {
tmp = t_0;
} else if (Vef <= 5.2e-232) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (Vef <= 1.32e+115) {
tmp = NaChar / (1.0 + exp((Ev / 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 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-3.5d-18)) then
tmp = t_0
else if (vef <= 5.2d-232) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (vef <= 1.32d+115) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -3.5e-18) {
tmp = t_0;
} else if (Vef <= 5.2e-232) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (Vef <= 1.32e+115) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -3.5e-18: tmp = t_0 elif Vef <= 5.2e-232: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif Vef <= 1.32e+115: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -3.5e-18) tmp = t_0; elseif (Vef <= 5.2e-232) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (Vef <= 1.32e+115) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -3.5e-18) tmp = t_0; elseif (Vef <= 5.2e-232) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (Vef <= 1.32e+115) tmp = NaChar / (1.0 + exp((Ev / 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[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.5e-18], t$95$0, If[LessEqual[Vef, 5.2e-232], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.32e+115], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.5 \cdot 10^{-18}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 5.2 \cdot 10^{-232}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.32 \cdot 10^{+115}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -3.4999999999999999e-18 or 1.32e115 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.8%
Taylor expanded in EDonor around 0 67.5%
Taylor expanded in Vef around inf 60.8%
if -3.4999999999999999e-18 < Vef < 5.19999999999999992e-232Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.7%
Taylor expanded in mu around inf 50.1%
if 5.19999999999999992e-232 < Vef < 1.32e115Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 64.2%
Taylor expanded in Ev around inf 47.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -9.5e+135)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -6.4e-272)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= Ev 8e-147)
(/
NdChar
(+ 2.0 (* mu (+ (/ 1.0 KbT) (/ (- (/ Vef KbT) (/ Ec KbT)) mu)))))
(/ 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 <= -9.5e+135) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -6.4e-272) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else if (Ev <= 8e-147) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + (((Vef / KbT) - (Ec / KbT)) / mu))));
} else {
tmp = 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 <= (-9.5d+135)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-6.4d-272)) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else if (ev <= 8d-147) then
tmp = ndchar / (2.0d0 + (mu * ((1.0d0 / kbt) + (((vef / kbt) - (ec / kbt)) / mu))))
else
tmp = 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 <= -9.5e+135) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -6.4e-272) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else if (Ev <= 8e-147) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + (((Vef / KbT) - (Ec / KbT)) / mu))));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -9.5e+135: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -6.4e-272: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) elif Ev <= 8e-147: tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + (((Vef / KbT) - (Ec / KbT)) / mu)))) else: tmp = 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 <= -9.5e+135) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -6.4e-272) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (Ev <= 8e-147) tmp = Float64(NdChar / Float64(2.0 + Float64(mu * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(Vef / KbT) - Float64(Ec / KbT)) / mu))))); else tmp = 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 <= -9.5e+135) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -6.4e-272) tmp = NaChar / (1.0 + exp((Vef / KbT))); elseif (Ev <= 8e-147) tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + (((Vef / KbT) - (Ec / KbT)) / mu)))); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -9.5e+135], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -6.4e-272], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 8e-147], N[(NdChar / N[(2.0 + N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(Vef / KbT), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -9.5 \cdot 10^{+135}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -6.4 \cdot 10^{-272}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Ev \leq 8 \cdot 10^{-147}:\\
\;\;\;\;\frac{NdChar}{2 + mu \cdot \left(\frac{1}{KbT} + \frac{\frac{Vef}{KbT} - \frac{Ec}{KbT}}{mu}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -9.50000000000000036e135Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.9%
Taylor expanded in Ev around inf 50.5%
if -9.50000000000000036e135 < Ev < -6.400000000000001e-272Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 57.4%
Taylor expanded in Vef around inf 37.3%
if -6.400000000000001e-272 < Ev < 7.9999999999999998e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.6%
Taylor expanded in EDonor around 0 66.4%
Taylor expanded in KbT around inf 27.4%
associate--l+27.4%
associate--l+27.4%
div-sub27.4%
Simplified27.4%
Taylor expanded in mu around inf 26.6%
associate--l+26.6%
associate-/r*26.7%
associate-/r*29.8%
div-sub32.6%
Simplified32.6%
if 7.9999999999999998e-147 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 50.6%
Taylor expanded in EAccept around inf 33.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -16000000.0) (not (<= NdChar 9.6e-37))) (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ 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 ((NdChar <= -16000000.0) || !(NdChar <= 9.6e-37)) {
tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((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 ((ndchar <= (-16000000.0d0)) .or. (.not. (ndchar <= 9.6d-37))) then
tmp = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
else
tmp = nachar / (1.0d0 + exp((((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 ((NdChar <= -16000000.0) || !(NdChar <= 9.6e-37)) {
tmp = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((Ev + EAccept) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -16000000.0) or not (NdChar <= 9.6e-37): tmp = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) else: tmp = NaChar / (1.0 + math.exp((((Ev + EAccept) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -16000000.0) || !(NdChar <= 9.6e-37)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(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 ((NdChar <= -16000000.0) || ~((NdChar <= 9.6e-37))) tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); else tmp = NaChar / (1.0 + exp((((Ev + EAccept) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -16000000.0], N[Not[LessEqual[NdChar, 9.6e-37]], $MachinePrecision]], 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[(N[(N[(Ev + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -16000000 \lor \neg \left(NdChar \leq 9.6 \cdot 10^{-37}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Ev + EAccept\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.6e7 or 9.59999999999999963e-37 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.6%
Taylor expanded in EDonor around 0 77.1%
if -1.6e7 < NdChar < 9.59999999999999963e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.9%
Taylor expanded in Vef around 0 62.6%
Final simplification69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -80000000000.0)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= NdChar 4.9e-8)
(/ NaChar (+ 1.0 (exp (/ (- (+ Ev EAccept) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -80000000000.0) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (NdChar <= 4.9e-8) {
tmp = NaChar / (1.0 + exp((((Ev + EAccept) - mu) / KbT)));
} else {
tmp = NdChar / (1.0 + exp((Ec / -KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-80000000000.0d0)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (ndchar <= 4.9d-8) then
tmp = nachar / (1.0d0 + exp((((ev + eaccept) - mu) / kbt)))
else
tmp = ndchar / (1.0d0 + exp((ec / -kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -80000000000.0) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (NdChar <= 4.9e-8) {
tmp = NaChar / (1.0 + Math.exp((((Ev + EAccept) - mu) / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((Ec / -KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -80000000000.0: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif NdChar <= 4.9e-8: tmp = NaChar / (1.0 + math.exp((((Ev + EAccept) - mu) / KbT))) else: tmp = NdChar / (1.0 + math.exp((Ec / -KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -80000000000.0) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (NdChar <= 4.9e-8) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Ev + EAccept) - mu) / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -80000000000.0) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (NdChar <= 4.9e-8) tmp = NaChar / (1.0 + exp((((Ev + EAccept) - mu) / KbT))); else tmp = NdChar / (1.0 + exp((Ec / -KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -80000000000.0], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.9e-8], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Ev + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -80000000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 4.9 \cdot 10^{-8}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Ev + EAccept\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\end{array}
\end{array}
if NdChar < -8e10Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 80.1%
Taylor expanded in EDonor around 0 74.0%
Taylor expanded in Vef around inf 59.7%
if -8e10 < NdChar < 4.9000000000000002e-8Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.5%
Taylor expanded in Vef around 0 62.6%
if 4.9000000000000002e-8 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 84.6%
Taylor expanded in Ec around inf 59.7%
associate-*r/59.7%
mul-1-neg59.7%
Simplified59.7%
Final simplification61.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -150000000.0)
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= NdChar 7.2e-9)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -150000000.0) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else if (NdChar <= 7.2e-9) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else {
tmp = NdChar / (1.0 + exp((Ec / -KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-150000000.0d0)) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else if (ndchar <= 7.2d-9) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else
tmp = ndchar / (1.0d0 + exp((ec / -kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -150000000.0) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else if (NdChar <= 7.2e-9) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((Ec / -KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -150000000.0: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) elif NdChar <= 7.2e-9: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) else: tmp = NdChar / (1.0 + math.exp((Ec / -KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -150000000.0) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (NdChar <= 7.2e-9) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -150000000.0) tmp = NdChar / (1.0 + exp((Vef / KbT))); elseif (NdChar <= 7.2e-9) tmp = NaChar / (1.0 + exp((Ev / KbT))); else tmp = NdChar / (1.0 + exp((Ec / -KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -150000000.0], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 7.2e-9], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -150000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 7.2 \cdot 10^{-9}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.5e8Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 80.1%
Taylor expanded in EDonor around 0 74.0%
Taylor expanded in Vef around inf 59.7%
if -1.5e8 < NdChar < 7.2e-9Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.5%
Taylor expanded in Ev around inf 44.7%
if 7.2e-9 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 84.6%
Taylor expanded in Ec around inf 59.7%
associate-*r/59.7%
mul-1-neg59.7%
Simplified59.7%
Final simplification52.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -16000000.0) (not (<= NdChar 7.4e-9))) (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -16000000.0) || !(NdChar <= 7.4e-9)) {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = NaChar / (1.0 + exp((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) :: tmp
if ((ndchar <= (-16000000.0d0)) .or. (.not. (ndchar <= 7.4d-9))) then
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
else
tmp = nachar / (1.0d0 + exp((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 tmp;
if ((NdChar <= -16000000.0) || !(NdChar <= 7.4e-9)) {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -16000000.0) or not (NdChar <= 7.4e-9): tmp = NdChar / (1.0 + math.exp((Vef / KbT))) else: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -16000000.0) || !(NdChar <= 7.4e-9)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -16000000.0) || ~((NdChar <= 7.4e-9))) tmp = NdChar / (1.0 + exp((Vef / KbT))); else tmp = NaChar / (1.0 + exp((Ev / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -16000000.0], N[Not[LessEqual[NdChar, 7.4e-9]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -16000000 \lor \neg \left(NdChar \leq 7.4 \cdot 10^{-9}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.6e7 or 7.4e-9 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 82.3%
Taylor expanded in EDonor around 0 77.7%
Taylor expanded in Vef around inf 58.6%
if -1.6e7 < NdChar < 7.4e-9Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.5%
Taylor expanded in Ev around inf 44.7%
Final simplification51.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.7e+34) (not (<= KbT 3.9e+183))) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ 1.0 (exp (/ Ev 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.7e+34) || !(KbT <= 3.9e+183)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (1.0 + exp((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) :: tmp
if ((kbt <= (-2.7d+34)) .or. (.not. (kbt <= 3.9d+183))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (1.0d0 + exp((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 tmp;
if ((KbT <= -2.7e+34) || !(KbT <= 3.9e+183)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.7e+34) or not (KbT <= 3.9e+183): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.7e+34) || !(KbT <= 3.9e+183)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.7e+34) || ~((KbT <= 3.9e+183))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (1.0 + exp((Ev / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.7e+34], N[Not[LessEqual[KbT, 3.9e+183]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.7 \cdot 10^{+34} \lor \neg \left(KbT \leq 3.9 \cdot 10^{+183}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if KbT < -2.7e34 or 3.8999999999999999e183 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
distribute-lft-out61.0%
Simplified61.0%
if -2.7e34 < KbT < 3.8999999999999999e183Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 58.9%
Taylor expanded in Ev around inf 32.9%
Final simplification41.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -3.2e+38) (not (<= KbT 1.2e+99))) (* 0.5 (+ NdChar NaChar)) (/ 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 ((KbT <= -3.2e+38) || !(KbT <= 1.2e+99)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 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 ((kbt <= (-3.2d+38)) .or. (.not. (kbt <= 1.2d+99))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 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 ((KbT <= -3.2e+38) || !(KbT <= 1.2e+99)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.2e+38) or not (KbT <= 1.2e+99): tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.2e+38) || !(KbT <= 1.2e+99)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = 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 ((KbT <= -3.2e+38) || ~((KbT <= 1.2e+99))) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.2e+38], N[Not[LessEqual[KbT, 1.2e+99]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.2 \cdot 10^{+38} \lor \neg \left(KbT \leq 1.2 \cdot 10^{+99}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if KbT < -3.19999999999999985e38 or 1.2000000000000001e99 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.4%
distribute-lft-out55.4%
Simplified55.4%
if -3.19999999999999985e38 < KbT < 1.2000000000000001e99Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.9%
Taylor expanded in EAccept around inf 33.5%
Final simplification41.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -6.7e+130)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -6.5e-250)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6.7e+130) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -6.5e-250) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-6.7d+130)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-6.5d-250)) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6.7e+130) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -6.5e-250) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -6.7e+130: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -6.5e-250: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) else: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -6.7e+130) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -6.5e-250) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -6.7e+130) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -6.5e-250) tmp = NaChar / (1.0 + exp((Vef / KbT))); else tmp = NdChar / (1.0 + exp((EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -6.7e+130], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -6.5e-250], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -6.7 \cdot 10^{+130}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -6.5 \cdot 10^{-250}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Ev < -6.7000000000000001e130Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.9%
Taylor expanded in Ev around inf 50.5%
if -6.7000000000000001e130 < Ev < -6.49999999999999942e-250Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 57.7%
Taylor expanded in Vef around inf 37.6%
if -6.49999999999999942e-250 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 67.7%
Taylor expanded in EDonor around inf 36.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.1e-252) (not (<= KbT 1.75e+154))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (+ 2.0 (* Vef (+ (/ 1.0 KbT) (/ (/ (- mu Ec) KbT) Vef)))))))
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.1e-252) || !(KbT <= 1.75e+154)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + (Vef * ((1.0 / KbT) + (((mu - Ec) / KbT) / Vef))));
}
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.1d-252)) .or. (.not. (kbt <= 1.75d+154))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (2.0d0 + (vef * ((1.0d0 / kbt) + (((mu - ec) / kbt) / vef))))
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.1e-252) || !(KbT <= 1.75e+154)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + (Vef * ((1.0 / KbT) + (((mu - Ec) / KbT) / Vef))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.1e-252) or not (KbT <= 1.75e+154): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (2.0 + (Vef * ((1.0 / KbT) + (((mu - Ec) / KbT) / Vef)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.1e-252) || !(KbT <= 1.75e+154)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(2.0 + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(mu - Ec) / KbT) / Vef))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.1e-252) || ~((KbT <= 1.75e+154))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (2.0 + (Vef * ((1.0 / KbT) + (((mu - Ec) / KbT) / Vef)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.1e-252], N[Not[LessEqual[KbT, 1.75e+154]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(mu - Ec), $MachinePrecision] / KbT), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.1 \cdot 10^{-252} \lor \neg \left(KbT \leq 1.75 \cdot 10^{+154}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 + Vef \cdot \left(\frac{1}{KbT} + \frac{\frac{mu - Ec}{KbT}}{Vef}\right)}\\
\end{array}
\end{array}
if KbT < -2.1e-252 or 1.7500000000000001e154 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.7%
distribute-lft-out41.7%
Simplified41.7%
if -2.1e-252 < KbT < 1.7500000000000001e154Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 65.8%
Taylor expanded in EDonor around 0 54.6%
Taylor expanded in KbT around inf 15.6%
associate--l+15.6%
associate--l+15.6%
div-sub17.5%
Simplified17.5%
Taylor expanded in Vef around inf 22.0%
associate--l+22.0%
associate-/r*22.0%
associate-/r*21.1%
div-sub22.1%
div-sub24.9%
Simplified24.9%
Final simplification34.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.7e-238) (not (<= KbT 7.8e-140))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (+ (/ 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.7e-238) || !(KbT <= 7.8e-140)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / ((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.7d-238)) .or. (.not. (kbt <= 7.8d-140))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / ((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.7e-238) || !(KbT <= 7.8e-140)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / ((Vef / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.7e-238) or not (KbT <= 7.8e-140): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / ((Vef / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.7e-238) || !(KbT <= 7.8e-140)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / 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.7e-238) || ~((KbT <= 7.8e-140))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / ((Vef / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.7e-238], N[Not[LessEqual[KbT, 7.8e-140]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.7 \cdot 10^{-238} \lor \neg \left(KbT \leq 7.8 \cdot 10^{-140}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -1.69999999999999992e-238 or 7.80000000000000038e-140 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 33.5%
distribute-lft-out33.5%
Simplified33.5%
if -1.69999999999999992e-238 < KbT < 7.80000000000000038e-140Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 68.2%
Taylor expanded in EDonor around 0 56.0%
Taylor expanded in KbT around inf 17.3%
associate--l+17.3%
associate--l+17.3%
div-sub21.1%
Simplified21.1%
Taylor expanded in Vef around inf 33.1%
Final simplification33.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -5.8e-265) (not (<= KbT 6.8e-141))) (* 0.5 (+ NdChar NaChar)) (* KbT (/ NdChar Vef))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -5.8e-265) || !(KbT <= 6.8e-141)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = KbT * (NdChar / Vef);
}
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 <= (-5.8d-265)) .or. (.not. (kbt <= 6.8d-141))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = kbt * (ndchar / vef)
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 <= -5.8e-265) || !(KbT <= 6.8e-141)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = KbT * (NdChar / Vef);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -5.8e-265) or not (KbT <= 6.8e-141): tmp = 0.5 * (NdChar + NaChar) else: tmp = KbT * (NdChar / Vef) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -5.8e-265) || !(KbT <= 6.8e-141)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(KbT * Float64(NdChar / Vef)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -5.8e-265) || ~((KbT <= 6.8e-141))) tmp = 0.5 * (NdChar + NaChar); else tmp = KbT * (NdChar / Vef); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -5.8e-265], N[Not[LessEqual[KbT, 6.8e-141]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.8 \cdot 10^{-265} \lor \neg \left(KbT \leq 6.8 \cdot 10^{-141}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{Vef}\\
\end{array}
\end{array}
if KbT < -5.7999999999999995e-265 or 6.7999999999999997e-141 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 32.9%
distribute-lft-out32.9%
Simplified32.9%
if -5.7999999999999995e-265 < KbT < 6.7999999999999997e-141Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 66.8%
Taylor expanded in EDonor around 0 57.2%
Taylor expanded in KbT around inf 18.6%
associate--l+18.6%
associate--l+18.6%
div-sub22.8%
Simplified22.8%
Taylor expanded in Vef around inf 31.0%
associate-/l*30.9%
Simplified30.9%
Final simplification32.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NaChar -3.6e+60) (/ 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 <= -3.6e+60) {
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 <= (-3.6d+60)) 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 <= -3.6e+60) {
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 <= -3.6e+60: 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 <= -3.6e+60) 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 <= -3.6e+60) 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[LessEqual[NaChar, -3.6e+60], N[(NaChar / 2.0), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.6 \cdot 10^{+60}:\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -3.59999999999999968e60Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.0%
Taylor expanded in KbT around inf 28.5%
if -3.59999999999999968e60 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.8%
distribute-lft-out27.8%
Simplified27.8%
Taylor expanded in NaChar around 0 23.9%
Final simplification24.7%
(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 28.6%
distribute-lft-out28.6%
Simplified28.6%
Final simplification28.6%
(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 28.6%
distribute-lft-out28.6%
Simplified28.6%
Taylor expanded in NaChar around 0 22.1%
Final simplification22.1%
herbie shell --seed 2024131
(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))))))