
(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 (+ 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 / (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 / (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 / (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 / (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 / 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 / (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[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $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}
\\
NdChar \cdot \frac{1}{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%
div-inv100.0%
Applied egg-rr100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -5.2e-27)
t_0
(if (<= Vef 7.2e-113)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= Vef 45000000.0)
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ Vef mu)) Ec) KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -5.2e-27) {
tmp = t_0;
} else if (Vef <= 7.2e-113) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= 45000000.0) {
tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-5.2d-27)) then
tmp = t_0
else if (vef <= 7.2d-113) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else if (vef <= 45000000.0d0) then
tmp = ndchar / (1.0d0 + exp((((edonor + (vef + mu)) - ec) / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -5.2e-27) {
tmp = t_0;
} else if (Vef <= 7.2e-113) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (Vef <= 45000000.0) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -5.2e-27: tmp = t_0 elif Vef <= 7.2e-113: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif Vef <= 45000000.0: tmp = NdChar / (1.0 + math.exp((((EDonor + (Vef + mu)) - Ec) / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -5.2e-27) tmp = t_0; elseif (Vef <= 7.2e-113) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (Vef <= 45000000.0) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(Vef + mu)) - Ec) / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -5.2e-27) tmp = t_0; elseif (Vef <= 7.2e-113) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); elseif (Vef <= 45000000.0) tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5.2e-27], t$95$0, If[LessEqual[Vef, 7.2e-113], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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], If[LessEqual[Vef, 45000000.0], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -5.2 \cdot 10^{-27}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 7.2 \cdot 10^{-113}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;Vef \leq 45000000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -5.20000000000000034e-27 or 4.5e7 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 82.9%
if -5.20000000000000034e-27 < Vef < 7.1999999999999995e-113Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.6%
if 7.1999999999999995e-113 < Vef < 4.5e7Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 79.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ec -1.75e+124)
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ Vef mu)) Ec) KbT))))
(if (<= Ec 2.5e+140)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Ev Vef)) 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 (Ec <= -1.75e+124) {
tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else if (Ec <= 2.5e+140) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - 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 (ec <= (-1.75d+124)) then
tmp = ndchar / (1.0d0 + exp((((edonor + (vef + mu)) - ec) / kbt)))
else if (ec <= 2.5d+140) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else
tmp = nachar / (1.0d0 + exp((((eaccept + (ev + vef)) - 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 (Ec <= -1.75e+124) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else if (Ec <= 2.5e+140) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ec <= -1.75e+124: tmp = NdChar / (1.0 + math.exp((((EDonor + (Vef + mu)) - Ec) / KbT))) elif Ec <= 2.5e+140: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Ev + Vef)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ec <= -1.75e+124) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(Vef + mu)) - Ec) / KbT)))); elseif (Ec <= 2.5e+140) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Ev + Vef)) - mu) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ec <= -1.75e+124) tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT))); elseif (Ec <= 2.5e+140) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); else tmp = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ec, -1.75e+124], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ec, 2.5e+140], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -1.75 \cdot 10^{+124}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}\\
\mathbf{elif}\;Ec \leq 2.5 \cdot 10^{+140}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Ec < -1.7500000000000001e124Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.3%
if -1.7500000000000001e124 < Ec < 2.50000000000000004e140Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.9%
if 2.50000000000000004e140 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 82.5%
(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
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- Vef mu) KbT))))))
(if (<= Vef -6.4e+68)
t_1
(if (<= Vef -4.5e-36)
t_0
(if (<= Vef -3.65e-174)
t_1
(if (<= Vef 7.2e-299)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= Vef 1.55e+70) t_0 t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef - mu) / KbT)));
double tmp;
if (Vef <= -6.4e+68) {
tmp = t_1;
} else if (Vef <= -4.5e-36) {
tmp = t_0;
} else if (Vef <= -3.65e-174) {
tmp = t_1;
} else if (Vef <= 7.2e-299) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (Vef <= 1.55e+70) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef - mu) / kbt)))
if (vef <= (-6.4d+68)) then
tmp = t_1
else if (vef <= (-4.5d-36)) then
tmp = t_0
else if (vef <= (-3.65d-174)) then
tmp = t_1
else if (vef <= 7.2d-299) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (vef <= 1.55d+70) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef - mu) / KbT)));
double tmp;
if (Vef <= -6.4e+68) {
tmp = t_1;
} else if (Vef <= -4.5e-36) {
tmp = t_0;
} else if (Vef <= -3.65e-174) {
tmp = t_1;
} else if (Vef <= 7.2e-299) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (Vef <= 1.55e+70) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef - mu) / KbT))) tmp = 0 if Vef <= -6.4e+68: tmp = t_1 elif Vef <= -4.5e-36: tmp = t_0 elif Vef <= -3.65e-174: tmp = t_1 elif Vef <= 7.2e-299: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif Vef <= 1.55e+70: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef - mu) / KbT)))) tmp = 0.0 if (Vef <= -6.4e+68) tmp = t_1; elseif (Vef <= -4.5e-36) tmp = t_0; elseif (Vef <= -3.65e-174) tmp = t_1; elseif (Vef <= 7.2e-299) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (Vef <= 1.55e+70) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = NaChar / (1.0 + exp(((Vef - mu) / KbT))); tmp = 0.0; if (Vef <= -6.4e+68) tmp = t_1; elseif (Vef <= -4.5e-36) tmp = t_0; elseif (Vef <= -3.65e-174) tmp = t_1; elseif (Vef <= 7.2e-299) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (Vef <= 1.55e+70) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6.4e+68], t$95$1, If[LessEqual[Vef, -4.5e-36], t$95$0, If[LessEqual[Vef, -3.65e-174], t$95$1, If[LessEqual[Vef, 7.2e-299], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.55e+70], t$95$0, t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -6.4 \cdot 10^{+68}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -4.5 \cdot 10^{-36}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq -3.65 \cdot 10^{-174}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 7.2 \cdot 10^{-299}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.55 \cdot 10^{+70}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -6.39999999999999989e68 or -4.50000000000000024e-36 < Vef < -3.65e-174 or 1.55000000000000015e70 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 68.0%
Taylor expanded in Vef around inf 60.5%
if -6.39999999999999989e68 < Vef < -4.50000000000000024e-36 or 7.2e-299 < Vef < 1.55000000000000015e70Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.6%
Taylor expanded in mu around inf 54.5%
if -3.65e-174 < Vef < 7.2e-299Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 75.8%
Taylor expanded in EAccept around inf 60.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (+ 1.0 (exp (/ Vef KbT))))
(t_2 (/ NaChar t_1)))
(if (<= Vef -5.5e+91)
t_2
(if (<= Vef -1.9e-175)
t_0
(if (<= Vef 2e-298)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= Vef 1.25e+70)
t_0
(if (<= Vef 2.3e+184) (/ NdChar t_1) t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = 1.0 + exp((Vef / KbT));
double t_2 = NaChar / t_1;
double tmp;
if (Vef <= -5.5e+91) {
tmp = t_2;
} else if (Vef <= -1.9e-175) {
tmp = t_0;
} else if (Vef <= 2e-298) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (Vef <= 1.25e+70) {
tmp = t_0;
} else if (Vef <= 2.3e+184) {
tmp = NdChar / t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = 1.0d0 + exp((vef / kbt))
t_2 = nachar / t_1
if (vef <= (-5.5d+91)) then
tmp = t_2
else if (vef <= (-1.9d-175)) then
tmp = t_0
else if (vef <= 2d-298) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (vef <= 1.25d+70) then
tmp = t_0
else if (vef <= 2.3d+184) then
tmp = ndchar / t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = 1.0 + Math.exp((Vef / KbT));
double t_2 = NaChar / t_1;
double tmp;
if (Vef <= -5.5e+91) {
tmp = t_2;
} else if (Vef <= -1.9e-175) {
tmp = t_0;
} else if (Vef <= 2e-298) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (Vef <= 1.25e+70) {
tmp = t_0;
} else if (Vef <= 2.3e+184) {
tmp = NdChar / t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = 1.0 + math.exp((Vef / KbT)) t_2 = NaChar / t_1 tmp = 0 if Vef <= -5.5e+91: tmp = t_2 elif Vef <= -1.9e-175: tmp = t_0 elif Vef <= 2e-298: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif Vef <= 1.25e+70: tmp = t_0 elif Vef <= 2.3e+184: tmp = NdChar / t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(1.0 + exp(Float64(Vef / KbT))) t_2 = Float64(NaChar / t_1) tmp = 0.0 if (Vef <= -5.5e+91) tmp = t_2; elseif (Vef <= -1.9e-175) tmp = t_0; elseif (Vef <= 2e-298) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (Vef <= 1.25e+70) tmp = t_0; elseif (Vef <= 2.3e+184) tmp = Float64(NdChar / t_1); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = 1.0 + exp((Vef / KbT)); t_2 = NaChar / t_1; tmp = 0.0; if (Vef <= -5.5e+91) tmp = t_2; elseif (Vef <= -1.9e-175) tmp = t_0; elseif (Vef <= 2e-298) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (Vef <= 1.25e+70) tmp = t_0; elseif (Vef <= 2.3e+184) tmp = NdChar / t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / t$95$1), $MachinePrecision]}, If[LessEqual[Vef, -5.5e+91], t$95$2, If[LessEqual[Vef, -1.9e-175], t$95$0, If[LessEqual[Vef, 2e-298], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.25e+70], t$95$0, If[LessEqual[Vef, 2.3e+184], N[(NdChar / t$95$1), $MachinePrecision], t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := 1 + e^{\frac{Vef}{KbT}}\\
t_2 := \frac{NaChar}{t\_1}\\
\mathbf{if}\;Vef \leq -5.5 \cdot 10^{+91}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq -1.9 \cdot 10^{-175}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2 \cdot 10^{-298}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.25 \cdot 10^{+70}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2.3 \cdot 10^{+184}:\\
\;\;\;\;\frac{NdChar}{t\_1}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if Vef < -5.4999999999999998e91 or 2.3e184 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 79.1%
Taylor expanded in Vef around inf 71.1%
if -5.4999999999999998e91 < Vef < -1.9e-175 or 1.99999999999999982e-298 < Vef < 1.2500000000000001e70Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 66.5%
Taylor expanded in mu around inf 48.2%
if -1.9e-175 < Vef < 1.99999999999999982e-298Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 78.1%
Taylor expanded in EAccept around inf 61.8%
if 1.2500000000000001e70 < Vef < 2.3e184Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 69.8%
Taylor expanded in Vef around inf 55.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ Vef mu)) Ec) KbT))))))
(if (<= NdChar -1.9e-149)
t_0
(if (<= NdChar 1.6e-198)
(+
(/ NdChar (+ 2.0 (/ EDonor KbT)))
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(if (<= NdChar 5.6e-18)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Ev Vef)) mu) KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
double tmp;
if (NdChar <= -1.9e-149) {
tmp = t_0;
} else if (NdChar <= 1.6e-198) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (NdChar <= 5.6e-18) {
tmp = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / 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((((edonor + (vef + mu)) - ec) / kbt)))
if (ndchar <= (-1.9d-149)) then
tmp = t_0
else if (ndchar <= 1.6d-198) then
tmp = (ndchar / (2.0d0 + (edonor / kbt))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
else if (ndchar <= 5.6d-18) then
tmp = nachar / (1.0d0 + exp((((eaccept + (ev + vef)) - mu) / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
double tmp;
if (NdChar <= -1.9e-149) {
tmp = t_0;
} else if (NdChar <= 1.6e-198) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
} else if (NdChar <= 5.6e-18) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((EDonor + (Vef + mu)) - Ec) / KbT))) tmp = 0 if NdChar <= -1.9e-149: tmp = t_0 elif NdChar <= 1.6e-198: tmp = (NdChar / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) elif NdChar <= 5.6e-18: tmp = NaChar / (1.0 + math.exp((((EAccept + (Ev + Vef)) - mu) / 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(Float64(Float64(EDonor + Float64(Vef + mu)) - Ec) / KbT)))) tmp = 0.0 if (NdChar <= -1.9e-149) tmp = t_0; elseif (NdChar <= 1.6e-198) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))); elseif (NdChar <= 5.6e-18) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Ev + Vef)) - mu) / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT))); tmp = 0.0; if (NdChar <= -1.9e-149) tmp = t_0; elseif (NdChar <= 1.6e-198) tmp = (NdChar / (2.0 + (EDonor / KbT))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); elseif (NdChar <= 5.6e-18) tmp = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / 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[(N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.9e-149], t$95$0, If[LessEqual[NdChar, 1.6e-198], N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $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], If[LessEqual[NdChar, 5.6e-18], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}\\
\mathbf{if}\;NdChar \leq -1.9 \cdot 10^{-149}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 1.6 \cdot 10^{-198}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 5.6 \cdot 10^{-18}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -1.90000000000000003e-149 or 5.60000000000000025e-18 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 70.3%
if -1.90000000000000003e-149 < NdChar < 1.59999999999999997e-198Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.7%
Taylor expanded in EDonor around 0 82.3%
if 1.59999999999999997e-198 < NdChar < 5.60000000000000025e-18Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 77.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- Vef mu) KbT))))))
(if (<= Vef -2.4e+72)
t_0
(if (<= Vef -5.8e-175)
(/ NdChar (+ 1.0 (exp (* -1.0 (/ Ec KbT)))))
(if (<= Vef 4.8e-298)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= Vef 5.5e+70) (/ NdChar (+ 1.0 (exp (/ mu 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 = NaChar / (1.0 + exp(((Vef - mu) / KbT)));
double tmp;
if (Vef <= -2.4e+72) {
tmp = t_0;
} else if (Vef <= -5.8e-175) {
tmp = NdChar / (1.0 + exp((-1.0 * (Ec / KbT))));
} else if (Vef <= 4.8e-298) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (Vef <= 5.5e+70) {
tmp = NdChar / (1.0 + exp((mu / 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 = nachar / (1.0d0 + exp(((vef - mu) / kbt)))
if (vef <= (-2.4d+72)) then
tmp = t_0
else if (vef <= (-5.8d-175)) then
tmp = ndchar / (1.0d0 + exp(((-1.0d0) * (ec / kbt))))
else if (vef <= 4.8d-298) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (vef <= 5.5d+70) then
tmp = ndchar / (1.0d0 + exp((mu / 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 = NaChar / (1.0 + Math.exp(((Vef - mu) / KbT)));
double tmp;
if (Vef <= -2.4e+72) {
tmp = t_0;
} else if (Vef <= -5.8e-175) {
tmp = NdChar / (1.0 + Math.exp((-1.0 * (Ec / KbT))));
} else if (Vef <= 4.8e-298) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (Vef <= 5.5e+70) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef - mu) / KbT))) tmp = 0 if Vef <= -2.4e+72: tmp = t_0 elif Vef <= -5.8e-175: tmp = NdChar / (1.0 + math.exp((-1.0 * (Ec / KbT)))) elif Vef <= 4.8e-298: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif Vef <= 5.5e+70: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef - mu) / KbT)))) tmp = 0.0 if (Vef <= -2.4e+72) tmp = t_0; elseif (Vef <= -5.8e-175) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(-1.0 * Float64(Ec / KbT))))); elseif (Vef <= 4.8e-298) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (Vef <= 5.5e+70) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef - mu) / KbT))); tmp = 0.0; if (Vef <= -2.4e+72) tmp = t_0; elseif (Vef <= -5.8e-175) tmp = NdChar / (1.0 + exp((-1.0 * (Ec / KbT)))); elseif (Vef <= 4.8e-298) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (Vef <= 5.5e+70) tmp = NdChar / (1.0 + exp((mu / 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[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.4e+72], t$95$0, If[LessEqual[Vef, -5.8e-175], N[(NdChar / N[(1.0 + N[Exp[N[(-1.0 * N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.8e-298], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 5.5e+70], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef - mu}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.4 \cdot 10^{+72}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq -5.8 \cdot 10^{-175}:\\
\;\;\;\;\frac{NdChar}{1 + e^{-1 \cdot \frac{Ec}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.8 \cdot 10^{-298}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 5.5 \cdot 10^{+70}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -2.4000000000000001e72 or 5.49999999999999986e70 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.5%
Taylor expanded in Vef around inf 65.3%
if -2.4000000000000001e72 < Vef < -5.79999999999999998e-175Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.3%
Taylor expanded in Ec around inf 49.2%
if -5.79999999999999998e-175 < Vef < 4.79999999999999975e-298Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 78.1%
Taylor expanded in EAccept around inf 61.8%
if 4.79999999999999975e-298 < Vef < 5.49999999999999986e70Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 70.0%
Taylor expanded in mu around inf 54.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))) (t_1 (/ NaChar t_0)))
(if (<= Vef -3.9e+91)
t_1
(if (<= Vef -3.6e-174)
(/ NdChar t_0)
(if (<= Vef 1.16e-298)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= Vef 9e+89) (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -3.9e+91) {
tmp = t_1;
} else if (Vef <= -3.6e-174) {
tmp = NdChar / t_0;
} else if (Vef <= 1.16e-298) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (Vef <= 9e+89) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
if (vef <= (-3.9d+91)) then
tmp = t_1
else if (vef <= (-3.6d-174)) then
tmp = ndchar / t_0
else if (vef <= 1.16d-298) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (vef <= 9d+89) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -3.9e+91) {
tmp = t_1;
} else if (Vef <= -3.6e-174) {
tmp = NdChar / t_0;
} else if (Vef <= 1.16e-298) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (Vef <= 9e+89) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 tmp = 0 if Vef <= -3.9e+91: tmp = t_1 elif Vef <= -3.6e-174: tmp = NdChar / t_0 elif Vef <= 1.16e-298: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif Vef <= 9e+89: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (Vef <= -3.9e+91) tmp = t_1; elseif (Vef <= -3.6e-174) tmp = Float64(NdChar / t_0); elseif (Vef <= 1.16e-298) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (Vef <= 9e+89) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / t_0; tmp = 0.0; if (Vef <= -3.9e+91) tmp = t_1; elseif (Vef <= -3.6e-174) tmp = NdChar / t_0; elseif (Vef <= 1.16e-298) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (Vef <= 9e+89) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -3.9e+91], t$95$1, If[LessEqual[Vef, -3.6e-174], N[(NdChar / t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.16e-298], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9e+89], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t\_0}\\
\mathbf{if}\;Vef \leq -3.9 \cdot 10^{+91}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -3.6 \cdot 10^{-174}:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\mathbf{elif}\;Vef \leq 1.16 \cdot 10^{-298}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9 \cdot 10^{+89}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -3.89999999999999968e91 or 9e89 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in Vef around inf 62.1%
if -3.89999999999999968e91 < Vef < -3.59999999999999999e-174Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 61.9%
Taylor expanded in Vef around inf 38.0%
if -3.59999999999999999e-174 < Vef < 1.1600000000000001e-298Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 78.1%
Taylor expanded in EAccept around inf 61.8%
if 1.1600000000000001e-298 < Vef < 9e89Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 66.8%
Taylor expanded in NdChar around inf 47.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -3.15e+91)
t_1
(if (<= Vef -3.9e-174)
t_0
(if (<= Vef 2.7e-298)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= Vef 9e+89) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_1 = NaChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -3.15e+91) {
tmp = t_1;
} else if (Vef <= -3.9e-174) {
tmp = t_0;
} else if (Vef <= 2.7e-298) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (Vef <= 9e+89) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_1 = nachar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-3.15d+91)) then
tmp = t_1
else if (vef <= (-3.9d-174)) then
tmp = t_0
else if (vef <= 2.7d-298) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (vef <= 9d+89) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -3.15e+91) {
tmp = t_1;
} else if (Vef <= -3.9e-174) {
tmp = t_0;
} else if (Vef <= 2.7e-298) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (Vef <= 9e+89) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_1 = NaChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -3.15e+91: tmp = t_1 elif Vef <= -3.9e-174: tmp = t_0 elif Vef <= 2.7e-298: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif Vef <= 9e+89: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -3.15e+91) tmp = t_1; elseif (Vef <= -3.9e-174) tmp = t_0; elseif (Vef <= 2.7e-298) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (Vef <= 9e+89) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); t_1 = NaChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -3.15e+91) tmp = t_1; elseif (Vef <= -3.9e-174) tmp = t_0; elseif (Vef <= 2.7e-298) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (Vef <= 9e+89) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.15e+91], t$95$1, If[LessEqual[Vef, -3.9e-174], t$95$0, If[LessEqual[Vef, 2.7e-298], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9e+89], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.15 \cdot 10^{+91}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -3.9 \cdot 10^{-174}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2.7 \cdot 10^{-298}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9 \cdot 10^{+89}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -3.15e91 or 9e89 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 71.8%
Taylor expanded in Vef around inf 62.1%
if -3.15e91 < Vef < -3.8999999999999999e-174 or 2.7000000000000001e-298 < Vef < 9e89Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 68.6%
Taylor expanded in NdChar around inf 43.2%
if -3.8999999999999999e-174 < Vef < 2.7000000000000001e-298Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0 76.5%
Taylor expanded in EAccept around inf 58.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Ev Vef)) mu) KbT))))))
(if (<= NaChar -5.5e-44)
t_0
(if (<= NaChar 7.6e-36)
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ Vef mu)) Ec) KbT))))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
double tmp;
if (NaChar <= -5.5e-44) {
tmp = t_0;
} else if (NaChar <= 7.6e-36) {
tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (ev + vef)) - mu) / kbt)))
if (nachar <= (-5.5d-44)) then
tmp = t_0
else if (nachar <= 7.6d-36) then
tmp = ndchar / (1.0d0 + exp((((edonor + (vef + mu)) - ec) / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
double tmp;
if (NaChar <= -5.5e-44) {
tmp = t_0;
} else if (NaChar <= 7.6e-36) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (Vef + mu)) - Ec) / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Ev + Vef)) - mu) / KbT))) tmp = 0 if NaChar <= -5.5e-44: tmp = t_0 elif NaChar <= 7.6e-36: tmp = NdChar / (1.0 + math.exp((((EDonor + (Vef + mu)) - Ec) / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Ev + Vef)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -5.5e-44) tmp = t_0; elseif (NaChar <= 7.6e-36) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(Vef + mu)) - Ec) / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -5.5e-44) tmp = t_0; elseif (NaChar <= 7.6e-36) tmp = NdChar / (1.0 + exp((((EDonor + (Vef + mu)) - Ec) / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.5e-44], t$95$0, If[LessEqual[NaChar, 7.6e-36], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(Vef + mu), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -5.5 \cdot 10^{-44}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 7.6 \cdot 10^{-36}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(Vef + mu\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -5.49999999999999993e-44 or 7.59999999999999942e-36 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 73.9%
if -5.49999999999999993e-44 < NaChar < 7.59999999999999942e-36Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 70.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Ev Vef)) mu) KbT))))))
(if (<= NaChar -2.35e-178)
t_0
(if (<= NaChar 3.2e-238)
(/ NdChar (+ 1.0 (exp (* -1.0 (/ Ec KbT)))))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.35e-178) {
tmp = t_0;
} else if (NaChar <= 3.2e-238) {
tmp = NdChar / (1.0 + exp((-1.0 * (Ec / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (ev + vef)) - mu) / kbt)))
if (nachar <= (-2.35d-178)) then
tmp = t_0
else if (nachar <= 3.2d-238) then
tmp = ndchar / (1.0d0 + exp(((-1.0d0) * (ec / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Ev + Vef)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.35e-178) {
tmp = t_0;
} else if (NaChar <= 3.2e-238) {
tmp = NdChar / (1.0 + Math.exp((-1.0 * (Ec / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Ev + Vef)) - mu) / KbT))) tmp = 0 if NaChar <= -2.35e-178: tmp = t_0 elif NaChar <= 3.2e-238: tmp = NdChar / (1.0 + math.exp((-1.0 * (Ec / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Ev + Vef)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -2.35e-178) tmp = t_0; elseif (NaChar <= 3.2e-238) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(-1.0 * Float64(Ec / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Ev + Vef)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -2.35e-178) tmp = t_0; elseif (NaChar <= 3.2e-238) tmp = NdChar / (1.0 + exp((-1.0 * (Ec / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.35e-178], t$95$0, If[LessEqual[NaChar, 3.2e-238], N[(NdChar / N[(1.0 + N[Exp[N[(-1.0 * N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Ev + Vef\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.35 \cdot 10^{-178}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 3.2 \cdot 10^{-238}:\\
\;\;\;\;\frac{NdChar}{1 + e^{-1 \cdot \frac{Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -2.35e-178 or 3.2000000000000002e-238 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 65.6%
if -2.35e-178 < NaChar < 3.2000000000000002e-238Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 80.7%
Taylor expanded in Ec around inf 64.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept -1.45e-93)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= EAccept 0.0085)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= -1.45e-93) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (EAccept <= 0.0085) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} 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 (eaccept <= (-1.45d-93)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (eaccept <= 0.0085d0) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
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 (EAccept <= -1.45e-93) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (EAccept <= 0.0085) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} 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 EAccept <= -1.45e-93: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif EAccept <= 0.0085: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) 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 (EAccept <= -1.45e-93) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (EAccept <= 0.0085) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); 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 (EAccept <= -1.45e-93) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (EAccept <= 0.0085) tmp = NaChar / (1.0 + exp((Vef / KbT))); 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[EAccept, -1.45e-93], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 0.0085], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $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}\;EAccept \leq -1.45 \cdot 10^{-93}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 0.0085:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.4499999999999999e-93Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 53.6%
Taylor expanded in Ev around inf 36.6%
if -1.4499999999999999e-93 < EAccept < 0.0085000000000000006Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 63.4%
Taylor expanded in Vef around inf 40.1%
if 0.0085000000000000006 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.9%
Taylor expanded in EAccept around inf 46.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -5.5e+138)
(* 0.5 (+ NaChar NdChar))
(if (<= KbT 6.5e+213)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ 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 <= -5.5e+138) {
tmp = 0.5 * (NaChar + NdChar);
} else if (KbT <= 6.5e+213) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (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 <= (-5.5d+138)) then
tmp = 0.5d0 * (nachar + ndchar)
else if (kbt <= 6.5d+213) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (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 <= -5.5e+138) {
tmp = 0.5 * (NaChar + NdChar);
} else if (KbT <= 6.5e+213) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -5.5e+138: tmp = 0.5 * (NaChar + NdChar) elif KbT <= 6.5e+213: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -5.5e+138) tmp = Float64(0.5 * Float64(NaChar + NdChar)); elseif (KbT <= 6.5e+213) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -5.5e+138) tmp = 0.5 * (NaChar + NdChar); elseif (KbT <= 6.5e+213) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5.5e+138], N[(0.5 * N[(NaChar + NdChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 6.5e+213], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.5 \cdot 10^{+138}:\\
\;\;\;\;0.5 \cdot \left(NaChar + NdChar\right)\\
\mathbf{elif}\;KbT \leq 6.5 \cdot 10^{+213}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -5.4999999999999999e138Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.0%
distribute-lft-out52.0%
Applied egg-rr52.0%
if -5.4999999999999999e138 < KbT < 6.49999999999999982e213Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.8%
Taylor expanded in EAccept around inf 34.3%
if 6.49999999999999982e213 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 86.2%
Taylor expanded in KbT around inf 80.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 0.0076) (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 0.0076) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} 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 (eaccept <= 0.0076d0) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
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 (EAccept <= 0.0076) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} 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 EAccept <= 0.0076: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) 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 (EAccept <= 0.0076) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); 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 (EAccept <= 0.0076) tmp = NaChar / (1.0 + exp((Ev / KbT))); 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[EAccept, 0.0076], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $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}\;EAccept \leq 0.0076:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 0.00759999999999999998Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 58.4%
Taylor expanded in Ev around inf 37.2%
if 0.00759999999999999998 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.9%
Taylor expanded in EAccept around inf 46.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -3.7e+190)
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
(* 0.5 (+ NaChar NdChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -3.7e+190) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else {
tmp = 0.5 * (NaChar + NdChar);
}
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 <= (-3.7d+190)) then
tmp = ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))
else
tmp = 0.5d0 * (nachar + ndchar)
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 <= -3.7e+190) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else {
tmp = 0.5 * (NaChar + NdChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -3.7e+190: tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) else: tmp = 0.5 * (NaChar + NdChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -3.7e+190) tmp = Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))); else tmp = Float64(0.5 * Float64(NaChar + NdChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -3.7e+190) tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)); else tmp = 0.5 * (NaChar + NdChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -3.7e+190], N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NaChar + NdChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -3.7 \cdot 10^{+190}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NaChar + NdChar\right)\\
\end{array}
\end{array}
if Ev < -3.69999999999999971e190Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 75.8%
Taylor expanded in KbT around inf 31.6%
if -3.69999999999999971e190 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 28.0%
distribute-lft-out28.0%
Applied egg-rr28.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar -4e-149) (* 0.5 NdChar) (if (<= NdChar 3.1e-18) (/ NaChar 2.0) (* 0.5 NdChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -4e-149) {
tmp = 0.5 * NdChar;
} else if (NdChar <= 3.1e-18) {
tmp = NaChar / 2.0;
} else {
tmp = 0.5 * NdChar;
}
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 <= (-4d-149)) then
tmp = 0.5d0 * ndchar
else if (ndchar <= 3.1d-18) then
tmp = nachar / 2.0d0
else
tmp = 0.5d0 * ndchar
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 <= -4e-149) {
tmp = 0.5 * NdChar;
} else if (NdChar <= 3.1e-18) {
tmp = NaChar / 2.0;
} else {
tmp = 0.5 * NdChar;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -4e-149: tmp = 0.5 * NdChar elif NdChar <= 3.1e-18: tmp = NaChar / 2.0 else: tmp = 0.5 * NdChar return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -4e-149) tmp = Float64(0.5 * NdChar); elseif (NdChar <= 3.1e-18) tmp = Float64(NaChar / 2.0); else tmp = Float64(0.5 * NdChar); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -4e-149) tmp = 0.5 * NdChar; elseif (NdChar <= 3.1e-18) tmp = NaChar / 2.0; else tmp = 0.5 * NdChar; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -4e-149], N[(0.5 * NdChar), $MachinePrecision], If[LessEqual[NdChar, 3.1e-18], N[(NaChar / 2.0), $MachinePrecision], N[(0.5 * NdChar), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -4 \cdot 10^{-149}:\\
\;\;\;\;0.5 \cdot NdChar\\
\mathbf{elif}\;NdChar \leq 3.1 \cdot 10^{-18}:\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot NdChar\\
\end{array}
\end{array}
if NdChar < -3.99999999999999992e-149 or 3.10000000000000007e-18 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 24.9%
Taylor expanded in NaChar around 0 24.8%
if -3.99999999999999992e-149 < NdChar < 3.10000000000000007e-18Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 74.8%
Taylor expanded in KbT around inf 28.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -2.2e+207) (* 0.5 NdChar) (* 0.5 (+ NaChar NdChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.2e+207) {
tmp = 0.5 * NdChar;
} else {
tmp = 0.5 * (NaChar + NdChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-2.2d+207)) then
tmp = 0.5d0 * ndchar
else
tmp = 0.5d0 * (nachar + ndchar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.2e+207) {
tmp = 0.5 * NdChar;
} else {
tmp = 0.5 * (NaChar + NdChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.2e+207: tmp = 0.5 * NdChar else: tmp = 0.5 * (NaChar + NdChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.2e+207) tmp = Float64(0.5 * NdChar); else tmp = Float64(0.5 * Float64(NaChar + NdChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -2.2e+207) tmp = 0.5 * NdChar; else tmp = 0.5 * (NaChar + NdChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.2e+207], N[(0.5 * NdChar), $MachinePrecision], N[(0.5 * N[(NaChar + NdChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.2 \cdot 10^{+207}:\\
\;\;\;\;0.5 \cdot NdChar\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NaChar + NdChar\right)\\
\end{array}
\end{array}
if Ev < -2.20000000000000009e207Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.4%
Taylor expanded in NaChar around 0 31.4%
if -2.20000000000000009e207 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.7%
distribute-lft-out27.7%
Applied egg-rr27.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 NdChar))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * NdChar;
}
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
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;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * NdChar
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * NdChar) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * NdChar; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * NdChar), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot NdChar
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.7%
Taylor expanded in NaChar around 0 20.0%
herbie shell --seed 2024116 -o generate:simplify
(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))))))