
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) 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 - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / 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 - ((ec - vef) - mu)) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / 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 - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))))
(if (<= Ev -2.6e+123)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -7e-137)
(/ NaChar t_0)
(if (<= Ev -9.2e-225)
(/ NdChar t_0)
(if (<= Ev 1.52e-133)
(/ NaChar (+ 1.0 (exp (- (/ mu KbT)))))
(if (<= Ev 41000.0)
(/ NdChar (+ 1.0 (exp (/ mu 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 t_0 = 1.0 + exp((Vef / KbT));
double tmp;
if (Ev <= -2.6e+123) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -7e-137) {
tmp = NaChar / t_0;
} else if (Ev <= -9.2e-225) {
tmp = NdChar / t_0;
} else if (Ev <= 1.52e-133) {
tmp = NaChar / (1.0 + exp(-(mu / KbT)));
} else if (Ev <= 41000.0) {
tmp = NdChar / (1.0 + exp((mu / 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) :: t_0
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
if (ev <= (-2.6d+123)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-7d-137)) then
tmp = nachar / t_0
else if (ev <= (-9.2d-225)) then
tmp = ndchar / t_0
else if (ev <= 1.52d-133) then
tmp = nachar / (1.0d0 + exp(-(mu / kbt)))
else if (ev <= 41000.0d0) then
tmp = ndchar / (1.0d0 + exp((mu / 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 t_0 = 1.0 + Math.exp((Vef / KbT));
double tmp;
if (Ev <= -2.6e+123) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -7e-137) {
tmp = NaChar / t_0;
} else if (Ev <= -9.2e-225) {
tmp = NdChar / t_0;
} else if (Ev <= 1.52e-133) {
tmp = NaChar / (1.0 + Math.exp(-(mu / KbT)));
} else if (Ev <= 41000.0) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) tmp = 0 if Ev <= -2.6e+123: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -7e-137: tmp = NaChar / t_0 elif Ev <= -9.2e-225: tmp = NdChar / t_0 elif Ev <= 1.52e-133: tmp = NaChar / (1.0 + math.exp(-(mu / KbT))) elif Ev <= 41000.0: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) tmp = 0.0 if (Ev <= -2.6e+123) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -7e-137) tmp = Float64(NaChar / t_0); elseif (Ev <= -9.2e-225) tmp = Float64(NdChar / t_0); elseif (Ev <= 1.52e-133) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT))))); elseif (Ev <= 41000.0) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / 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) t_0 = 1.0 + exp((Vef / KbT)); tmp = 0.0; if (Ev <= -2.6e+123) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -7e-137) tmp = NaChar / t_0; elseif (Ev <= -9.2e-225) tmp = NdChar / t_0; elseif (Ev <= 1.52e-133) tmp = NaChar / (1.0 + exp(-(mu / KbT))); elseif (Ev <= 41000.0) tmp = NdChar / (1.0 + exp((mu / KbT))); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -2.6e+123], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -7e-137], N[(NaChar / t$95$0), $MachinePrecision], If[LessEqual[Ev, -9.2e-225], N[(NdChar / t$95$0), $MachinePrecision], If[LessEqual[Ev, 1.52e-133], N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 41000.0], N[(NdChar / N[(1.0 + N[Exp[N[(mu / 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}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
\mathbf{if}\;Ev \leq -2.6 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -7 \cdot 10^{-137}:\\
\;\;\;\;\frac{NaChar}{t\_0}\\
\mathbf{elif}\;Ev \leq -9.2 \cdot 10^{-225}:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\mathbf{elif}\;Ev \leq 1.52 \cdot 10^{-133}:\\
\;\;\;\;\frac{NaChar}{1 + e^{-\frac{mu}{KbT}}}\\
\mathbf{elif}\;Ev \leq 41000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -2.59999999999999985e123Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.5%
Taylor expanded in Ev around inf 62.5%
if -2.59999999999999985e123 < Ev < -7.0000000000000002e-137Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 67.8%
Taylor expanded in Vef around inf 50.7%
if -7.0000000000000002e-137 < Ev < -9.1999999999999995e-225Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around inf 75.0%
Taylor expanded in EDonor around 0 70.8%
Taylor expanded in Vef around inf 48.1%
if -9.1999999999999995e-225 < Ev < 1.52000000000000001e-133Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 66.8%
Taylor expanded in mu around inf 51.0%
associate-*r/51.0%
neg-mul-151.0%
Simplified51.0%
if 1.52000000000000001e-133 < Ev < 41000Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 56.4%
Taylor expanded in mu around inf 33.2%
if 41000 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 58.7%
Taylor expanded in EAccept around inf 35.9%
Final simplification45.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -2100000.0) (not (<= NdChar 6.2e-46))) (/ 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 <= -2100000.0) || !(NdChar <= 6.2e-46)) {
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 <= (-2100000.0d0)) .or. (.not. (ndchar <= 6.2d-46))) 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 <= -2100000.0) || !(NdChar <= 6.2e-46)) {
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 <= -2100000.0) or not (NdChar <= 6.2e-46): 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 <= -2100000.0) || !(NdChar <= 6.2e-46)) 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 <= -2100000.0) || ~((NdChar <= 6.2e-46))) 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, -2100000.0], N[Not[LessEqual[NdChar, 6.2e-46]], $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 -2100000 \lor \neg \left(NdChar \leq 6.2 \cdot 10^{-46}\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 < -2.1e6 or 6.2000000000000002e-46 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 70.3%
if -2.1e6 < NdChar < 6.2000000000000002e-46Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 78.2%
Final simplification74.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -5800000000.0) (not (<= NdChar 1e+55))) (/ 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 <= -5800000000.0) || !(NdChar <= 1e+55)) {
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 <= (-5800000000.0d0)) .or. (.not. (ndchar <= 1d+55))) 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 <= -5800000000.0) || !(NdChar <= 1e+55)) {
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 <= -5800000000.0) or not (NdChar <= 1e+55): 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 <= -5800000000.0) || !(NdChar <= 1e+55)) 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 <= -5800000000.0) || ~((NdChar <= 1e+55))) 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, -5800000000.0], N[Not[LessEqual[NdChar, 1e+55]], $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 -5800000000 \lor \neg \left(NdChar \leq 10^{+55}\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 < -5.8e9 or 1.00000000000000001e55 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.4%
Taylor expanded in EDonor around 0 65.9%
if -5.8e9 < NdChar < 1.00000000000000001e55Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 74.8%
Final simplification70.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -1.1e+124)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -5.5e-101)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= Ev -2.7e-281)
(/ NdChar (+ 1.0 (exp (- (/ Ec 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 (Ev <= -1.1e+124) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -5.5e-101) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else if (Ev <= -2.7e-281) {
tmp = NdChar / (1.0 + exp(-(Ec / 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 (ev <= (-1.1d+124)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-5.5d-101)) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else if (ev <= (-2.7d-281)) then
tmp = ndchar / (1.0d0 + exp(-(ec / 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 (Ev <= -1.1e+124) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -5.5e-101) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else if (Ev <= -2.7e-281) {
tmp = NdChar / (1.0 + Math.exp(-(Ec / 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 Ev <= -1.1e+124: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -5.5e-101: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) elif Ev <= -2.7e-281: tmp = NdChar / (1.0 + math.exp(-(Ec / 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 (Ev <= -1.1e+124) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -5.5e-101) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (Ev <= -2.7e-281) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(-Float64(Ec / 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 (Ev <= -1.1e+124) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -5.5e-101) tmp = NaChar / (1.0 + exp((Vef / KbT))); elseif (Ev <= -2.7e-281) tmp = NdChar / (1.0 + exp(-(Ec / 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[Ev, -1.1e+124], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -5.5e-101], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -2.7e-281], N[(NdChar / N[(1.0 + N[Exp[(-N[(Ec / 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}\;Ev \leq -1.1 \cdot 10^{+124}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -5.5 \cdot 10^{-101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Ev \leq -2.7 \cdot 10^{-281}:\\
\;\;\;\;\frac{NdChar}{1 + e^{-\frac{Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -1.1e124Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.5%
Taylor expanded in Ev around inf 62.5%
if -1.1e124 < Ev < -5.49999999999999973e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 68.5%
Taylor expanded in Vef around inf 51.5%
if -5.49999999999999973e-101 < Ev < -2.6999999999999999e-281Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 69.8%
Taylor expanded in Ec around inf 49.0%
associate-*r/49.0%
mul-1-neg49.0%
Simplified49.0%
if -2.6999999999999999e-281 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.8%
Taylor expanded in EAccept around inf 42.9%
Final simplification48.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -3e+124)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -1.5e-135)
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(if (<= Ev -1.2e-281)
(/ NdChar (+ 1.0 (exp (/ EDonor 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 (Ev <= -3e+124) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -1.5e-135) {
tmp = NaChar / (1.0 + exp((Vef / KbT)));
} else if (Ev <= -1.2e-281) {
tmp = NdChar / (1.0 + exp((EDonor / 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 (ev <= (-3d+124)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-1.5d-135)) then
tmp = nachar / (1.0d0 + exp((vef / kbt)))
else if (ev <= (-1.2d-281)) then
tmp = ndchar / (1.0d0 + exp((edonor / 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 (Ev <= -3e+124) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -1.5e-135) {
tmp = NaChar / (1.0 + Math.exp((Vef / KbT)));
} else if (Ev <= -1.2e-281) {
tmp = NdChar / (1.0 + Math.exp((EDonor / 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 Ev <= -3e+124: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -1.5e-135: tmp = NaChar / (1.0 + math.exp((Vef / KbT))) elif Ev <= -1.2e-281: tmp = NdChar / (1.0 + math.exp((EDonor / 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 (Ev <= -3e+124) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -1.5e-135) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))); elseif (Ev <= -1.2e-281) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / 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 (Ev <= -3e+124) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -1.5e-135) tmp = NaChar / (1.0 + exp((Vef / KbT))); elseif (Ev <= -1.2e-281) tmp = NdChar / (1.0 + exp((EDonor / 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[Ev, -3e+124], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.5e-135], N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.2e-281], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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}\;Ev \leq -3 \cdot 10^{+124}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.5 \cdot 10^{-135}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.2 \cdot 10^{-281}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -3e124Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.5%
Taylor expanded in Ev around inf 62.5%
if -3e124 < Ev < -1.50000000000000006e-135Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 67.8%
Taylor expanded in Vef around inf 50.7%
if -1.50000000000000006e-135 < Ev < -1.2e-281Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 68.2%
Taylor expanded in EDonor around inf 37.8%
if -1.2e-281 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.8%
Taylor expanded in EAccept around inf 42.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1500000000.0) (not (<= NdChar 1.36e+55))) (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ 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 <= -1500000000.0) || !(NdChar <= 1.36e+55)) {
tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((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 <= (-1500000000.0d0)) .or. (.not. (ndchar <= 1.36d+55))) then
tmp = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
else
tmp = nachar / (1.0d0 + exp((((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 <= -1500000000.0) || !(NdChar <= 1.36e+55)) {
tmp = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1500000000.0) or not (NdChar <= 1.36e+55): tmp = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) else: tmp = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1500000000.0) || !(NdChar <= 1.36e+55)) 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(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 <= -1500000000.0) || ~((NdChar <= 1.36e+55))) tmp = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); else tmp = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1500000000.0], N[Not[LessEqual[NdChar, 1.36e+55]], $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[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1500000000 \lor \neg \left(NdChar \leq 1.36 \cdot 10^{+55}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.5e9 or 1.36e55 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.4%
Taylor expanded in EDonor around 0 65.9%
if -1.5e9 < NdChar < 1.36e55Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 74.8%
Taylor expanded in EAccept around 0 66.8%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -5.5e+134) (not (<= NdChar 1.9e+167))) (/ NdChar (+ 1.0 (exp (- (/ Ec KbT))))) (/ NaChar (+ 1.0 (exp (/ (- (+ 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 <= -5.5e+134) || !(NdChar <= 1.9e+167)) {
tmp = NdChar / (1.0 + exp(-(Ec / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((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 <= (-5.5d+134)) .or. (.not. (ndchar <= 1.9d+167))) then
tmp = ndchar / (1.0d0 + exp(-(ec / kbt)))
else
tmp = nachar / (1.0d0 + exp((((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 <= -5.5e+134) || !(NdChar <= 1.9e+167)) {
tmp = NdChar / (1.0 + Math.exp(-(Ec / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -5.5e+134) or not (NdChar <= 1.9e+167): tmp = NdChar / (1.0 + math.exp(-(Ec / KbT))) else: tmp = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -5.5e+134) || !(NdChar <= 1.9e+167)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(-Float64(Ec / KbT))))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(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 <= -5.5e+134) || ~((NdChar <= 1.9e+167))) tmp = NdChar / (1.0 + exp(-(Ec / KbT))); else tmp = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -5.5e+134], N[Not[LessEqual[NdChar, 1.9e+167]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[(-N[(Ec / KbT), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -5.5 \cdot 10^{+134} \lor \neg \left(NdChar \leq 1.9 \cdot 10^{+167}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{-\frac{Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -5.4999999999999999e134 or 1.89999999999999997e167 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.4%
Taylor expanded in Ec around inf 57.0%
associate-*r/57.0%
mul-1-neg57.0%
Simplified57.0%
if -5.4999999999999999e134 < NdChar < 1.89999999999999997e167Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 68.9%
Taylor expanded in EAccept around 0 61.1%
Final simplification60.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 1.4e+79)
(/ NaChar (+ 1.0 (exp (/ (+ Vef Ev) KbT))))
(if (<= EAccept 1.65e+171)
(/ NdChar (+ 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.4e+79) {
tmp = NaChar / (1.0 + exp(((Vef + Ev) / KbT)));
} else if (EAccept <= 1.65e+171) {
tmp = NdChar / (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.4d+79) then
tmp = nachar / (1.0d0 + exp(((vef + ev) / kbt)))
else if (eaccept <= 1.65d+171) then
tmp = ndchar / (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.4e+79) {
tmp = NaChar / (1.0 + Math.exp(((Vef + Ev) / KbT)));
} else if (EAccept <= 1.65e+171) {
tmp = NdChar / (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.4e+79: tmp = NaChar / (1.0 + math.exp(((Vef + Ev) / KbT))) elif EAccept <= 1.65e+171: tmp = NdChar / (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.4e+79) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Ev) / KbT)))); elseif (EAccept <= 1.65e+171) tmp = Float64(NdChar / 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.4e+79) tmp = NaChar / (1.0 + exp(((Vef + Ev) / KbT))); elseif (EAccept <= 1.65e+171) tmp = NdChar / (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.4e+79], N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.65e+171], N[(NdChar / 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.4 \cdot 10^{+79}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.65 \cdot 10^{+171}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.4000000000000001e79Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 63.0%
Taylor expanded in EAccept around 0 58.5%
Taylor expanded in mu around 0 51.0%
+-commutative51.0%
Simplified51.0%
if 1.4000000000000001e79 < EAccept < 1.64999999999999996e171Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.7%
Taylor expanded in EDonor around 0 72.4%
Taylor expanded in Vef around inf 51.5%
if 1.64999999999999996e171 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 67.3%
Taylor expanded in EAccept around inf 57.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -8.5e+123)
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(if (<= Ev -8.8e-268)
(/ 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 (Ev <= -8.5e+123) {
tmp = NaChar / (1.0 + exp((Ev / KbT)));
} else if (Ev <= -8.8e-268) {
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 (ev <= (-8.5d+123)) then
tmp = nachar / (1.0d0 + exp((ev / kbt)))
else if (ev <= (-8.8d-268)) 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 (Ev <= -8.5e+123) {
tmp = NaChar / (1.0 + Math.exp((Ev / KbT)));
} else if (Ev <= -8.8e-268) {
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 Ev <= -8.5e+123: tmp = NaChar / (1.0 + math.exp((Ev / KbT))) elif Ev <= -8.8e-268: 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 (Ev <= -8.5e+123) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))); elseif (Ev <= -8.8e-268) 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 (Ev <= -8.5e+123) tmp = NaChar / (1.0 + exp((Ev / KbT))); elseif (Ev <= -8.8e-268) 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[Ev, -8.5e+123], N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -8.8e-268], 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}\;Ev \leq -8.5 \cdot 10^{+123}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -8.8 \cdot 10^{-268}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -8.5e123Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.5%
Taylor expanded in Ev around inf 62.5%
if -8.5e123 < Ev < -8.80000000000000017e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 61.2%
Taylor expanded in Vef around inf 45.3%
if -8.80000000000000017e-268 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 61.1%
Taylor expanded in EAccept around inf 41.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -8e+227)
(- t_0 (* 0.25 (* Vef (/ (+ NdChar NaChar) KbT))))
(if (<= KbT 7.2e+126)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(- t_0 (* 0.25 (* Ev (/ NaChar KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -8e+227) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= 7.2e+126) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-8d+227)) then
tmp = t_0 - (0.25d0 * (vef * ((ndchar + nachar) / kbt)))
else if (kbt <= 7.2d+126) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = t_0 - (0.25d0 * (ev * (nachar / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -8e+227) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= 7.2e+126) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = t_0 - (0.25 * (Ev * (NaChar / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -8e+227: tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))) elif KbT <= 7.2e+126: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -8e+227) tmp = Float64(t_0 - Float64(0.25 * Float64(Vef * Float64(Float64(NdChar + NaChar) / KbT)))); elseif (KbT <= 7.2e+126) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(t_0 - Float64(0.25 * Float64(Ev * Float64(NaChar / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -8e+227) tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))); elseif (KbT <= 7.2e+126) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = t_0 - (0.25 * (Ev * (NaChar / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8e+227], N[(t$95$0 - N[(0.25 * N[(Vef * N[(N[(NdChar + NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.2e+126], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(0.25 * N[(Ev * N[(NaChar / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -8 \cdot 10^{+227}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Vef \cdot \frac{NdChar + NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 7.2 \cdot 10^{+126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Ev \cdot \frac{NaChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -8.0000000000000007e227Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 43.7%
Simplified43.7%
Taylor expanded in Vef around inf 64.9%
associate-/l*82.2%
Simplified82.2%
if -8.0000000000000007e227 < KbT < 7.2000000000000001e126Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.5%
Taylor expanded in EAccept around inf 34.9%
if 7.2000000000000001e126 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 37.8%
Simplified37.8%
Taylor expanded in Ev around inf 62.7%
associate-/l*71.3%
Simplified71.3%
Final simplification42.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 5e+176) (/ 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 <= 5e+176) {
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 <= 5d+176) 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 <= 5e+176) {
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 <= 5e+176: 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 <= 5e+176) 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 <= 5e+176) 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, 5e+176], 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 5 \cdot 10^{+176}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 5e176Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 62.3%
Taylor expanded in Ev around inf 37.4%
if 5e176 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 63.9%
Taylor expanded in EAccept around inf 60.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -2.6e+14)
(- t_0 (* 0.25 (* Vef (/ (+ NdChar NaChar) KbT))))
(if (<= KbT -5.9e-180)
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
(if (<= KbT 7.4e+107)
(/
NaChar
(*
mu
(+
(/ (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) mu)
(/ -1.0 KbT))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -2.6e+14) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= -5.9e-180) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else if (KbT <= 7.4e+107) {
tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-2.6d+14)) then
tmp = t_0 - (0.25d0 * (vef * ((ndchar + nachar) / kbt)))
else if (kbt <= (-5.9d-180)) then
tmp = ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))
else if (kbt <= 7.4d+107) then
tmp = nachar / (mu * (((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) / mu) + ((-1.0d0) / kbt)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -2.6e+14) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= -5.9e-180) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else if (KbT <= 7.4e+107) {
tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -2.6e+14: tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))) elif KbT <= -5.9e-180: tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) elif KbT <= 7.4e+107: tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -2.6e+14) tmp = Float64(t_0 - Float64(0.25 * Float64(Vef * Float64(Float64(NdChar + NaChar) / KbT)))); elseif (KbT <= -5.9e-180) tmp = Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))); elseif (KbT <= 7.4e+107) tmp = Float64(NaChar / Float64(mu * Float64(Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) / mu) + Float64(-1.0 / KbT)))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -2.6e+14) tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))); elseif (KbT <= -5.9e-180) tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)); elseif (KbT <= 7.4e+107) tmp = NaChar / (mu * (((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) / mu) + (-1.0 / KbT))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.6e+14], N[(t$95$0 - N[(0.25 * N[(Vef * N[(N[(NdChar + NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -5.9e-180], 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], If[LessEqual[KbT, 7.4e+107], N[(NaChar / N[(mu * N[(N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -2.6 \cdot 10^{+14}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Vef \cdot \frac{NdChar + NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq -5.9 \cdot 10^{-180}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;KbT \leq 7.4 \cdot 10^{+107}:\\
\;\;\;\;\frac{NaChar}{mu \cdot \left(\frac{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -2.6e14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.9%
Simplified30.9%
Taylor expanded in Vef around inf 41.2%
associate-/l*49.3%
Simplified49.3%
if -2.6e14 < KbT < -5.9000000000000003e-180Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 60.0%
Taylor expanded in KbT around inf 27.0%
if -5.9000000000000003e-180 < KbT < 7.4e107Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 60.2%
Taylor expanded in KbT around inf 16.7%
Taylor expanded in mu around -inf 21.3%
associate-*r*21.3%
mul-1-neg21.3%
+-commutative21.3%
mul-1-neg21.3%
unsub-neg21.3%
+-commutative21.3%
Simplified21.3%
if 7.4e107 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.3%
distribute-lft-out61.3%
Simplified61.3%
Final simplification35.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EDonor -9.5e+168)
(* KbT (/ NdChar EDonor))
(if (<= EDonor 1.2e+225)
(* 0.5 (+ NdChar NaChar))
(/
NaChar
(-
(+ 2.0 (- (/ EAccept KbT) (* Ev (- (/ -1.0 KbT) (/ Vef (* KbT 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 (EDonor <= -9.5e+168) {
tmp = KbT * (NdChar / EDonor);
} else if (EDonor <= 1.2e+225) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) - (Ev * ((-1.0 / KbT) - (Vef / (KbT * 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 (edonor <= (-9.5d+168)) then
tmp = kbt * (ndchar / edonor)
else if (edonor <= 1.2d+225) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((2.0d0 + ((eaccept / kbt) - (ev * (((-1.0d0) / kbt) - (vef / (kbt * 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 (EDonor <= -9.5e+168) {
tmp = KbT * (NdChar / EDonor);
} else if (EDonor <= 1.2e+225) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((2.0 + ((EAccept / KbT) - (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))) - (mu / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -9.5e+168: tmp = KbT * (NdChar / EDonor) elif EDonor <= 1.2e+225: tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((2.0 + ((EAccept / KbT) - (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))) - (mu / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -9.5e+168) tmp = Float64(KbT * Float64(NdChar / EDonor)); elseif (EDonor <= 1.2e+225) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) - Float64(Ev * Float64(Float64(-1.0 / KbT) - Float64(Vef / Float64(KbT * Ev)))))) - Float64(mu / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= -9.5e+168) tmp = KbT * (NdChar / EDonor); elseif (EDonor <= 1.2e+225) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((2.0 + ((EAccept / KbT) - (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))) - (mu / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -9.5e+168], N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 1.2e+225], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] - N[(Ev * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -9.5 \cdot 10^{+168}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{elif}\;EDonor \leq 1.2 \cdot 10^{+225}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} - Ev \cdot \left(\frac{-1}{KbT} - \frac{Vef}{KbT \cdot Ev}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if EDonor < -9.49999999999999979e168Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.8%
Taylor expanded in EDonor around inf 57.2%
Taylor expanded in EDonor around 0 27.5%
Taylor expanded in EDonor around inf 27.6%
associate-/l*33.9%
Simplified33.9%
if -9.49999999999999979e168 < EDonor < 1.2e225Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 31.6%
distribute-lft-out31.6%
Simplified31.6%
if 1.2e225 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 87.1%
Taylor expanded in KbT around inf 42.4%
Taylor expanded in Ev around inf 49.0%
*-commutative49.0%
Simplified49.0%
Final simplification32.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -40000000000000.0)
(- t_0 (* 0.25 (* Vef (/ (+ NdChar NaChar) KbT))))
(if (<= KbT -1.6e-177)
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
(if (<= KbT 1.26e+85)
(/ NaChar (/ (- (+ EAccept (+ Vef Ev)) 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -40000000000000.0) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= -1.6e-177) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else if (KbT <= 1.26e+85) {
tmp = NaChar / (((EAccept + (Vef + Ev)) - 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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-40000000000000.0d0)) then
tmp = t_0 - (0.25d0 * (vef * ((ndchar + nachar) / kbt)))
else if (kbt <= (-1.6d-177)) then
tmp = ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))
else if (kbt <= 1.26d+85) then
tmp = nachar / (((eaccept + (vef + ev)) - 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -40000000000000.0) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= -1.6e-177) {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
} else if (KbT <= 1.26e+85) {
tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -40000000000000.0: tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))) elif KbT <= -1.6e-177: tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) elif KbT <= 1.26e+85: tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -40000000000000.0) tmp = Float64(t_0 - Float64(0.25 * Float64(Vef * Float64(Float64(NdChar + NaChar) / KbT)))); elseif (KbT <= -1.6e-177) tmp = Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))); elseif (KbT <= 1.26e+85) tmp = Float64(NaChar / Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - 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 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -40000000000000.0) tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))); elseif (KbT <= -1.6e-177) tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)); elseif (KbT <= 1.26e+85) tmp = NaChar / (((EAccept + (Vef + Ev)) - 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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -40000000000000.0], N[(t$95$0 - N[(0.25 * N[(Vef * N[(N[(NdChar + NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -1.6e-177], 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], If[LessEqual[KbT, 1.26e+85], N[(NaChar / N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -40000000000000:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Vef \cdot \frac{NdChar + NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq -1.6 \cdot 10^{-177}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;KbT \leq 1.26 \cdot 10^{+85}:\\
\;\;\;\;\frac{NaChar}{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -4e13Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.9%
Simplified30.9%
Taylor expanded in Vef around inf 41.2%
associate-/l*49.3%
Simplified49.3%
if -4e13 < KbT < -1.5999999999999999e-177Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 60.0%
Taylor expanded in KbT around inf 27.0%
if -1.5999999999999999e-177 < KbT < 1.26000000000000003e85Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 58.4%
Taylor expanded in KbT around inf 16.5%
Taylor expanded in KbT around 0 20.1%
if 1.26000000000000003e85 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.2%
distribute-lft-out50.2%
Simplified50.2%
Final simplification34.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -9.2e-26)
(- t_0 (* 0.25 (* Vef (/ (+ NdChar NaChar) KbT))))
(if (<= KbT 1.26e+85)
(/ NaChar (/ (- (+ EAccept (+ Vef Ev)) 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -9.2e-26) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= 1.26e+85) {
tmp = NaChar / (((EAccept + (Vef + Ev)) - 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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-9.2d-26)) then
tmp = t_0 - (0.25d0 * (vef * ((ndchar + nachar) / kbt)))
else if (kbt <= 1.26d+85) then
tmp = nachar / (((eaccept + (vef + ev)) - 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -9.2e-26) {
tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT)));
} else if (KbT <= 1.26e+85) {
tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -9.2e-26: tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))) elif KbT <= 1.26e+85: tmp = NaChar / (((EAccept + (Vef + Ev)) - mu) / KbT) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -9.2e-26) tmp = Float64(t_0 - Float64(0.25 * Float64(Vef * Float64(Float64(NdChar + NaChar) / KbT)))); elseif (KbT <= 1.26e+85) tmp = Float64(NaChar / Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - 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 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -9.2e-26) tmp = t_0 - (0.25 * (Vef * ((NdChar + NaChar) / KbT))); elseif (KbT <= 1.26e+85) tmp = NaChar / (((EAccept + (Vef + Ev)) - 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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9.2e-26], N[(t$95$0 - N[(0.25 * N[(Vef * N[(N[(NdChar + NaChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.26e+85], N[(NaChar / N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -9.2 \cdot 10^{-26}:\\
\;\;\;\;t\_0 - 0.25 \cdot \left(Vef \cdot \frac{NdChar + NaChar}{KbT}\right)\\
\mathbf{elif}\;KbT \leq 1.26 \cdot 10^{+85}:\\
\;\;\;\;\frac{NaChar}{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -9.20000000000000035e-26Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 27.6%
Simplified27.6%
Taylor expanded in Vef around inf 37.8%
associate-/l*44.7%
Simplified44.7%
if -9.20000000000000035e-26 < KbT < 1.26000000000000003e85Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.3%
Taylor expanded in KbT around inf 15.8%
Taylor expanded in KbT around 0 18.6%
if 1.26000000000000003e85 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.2%
distribute-lft-out50.2%
Simplified50.2%
Final simplification32.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -4.4e+132) (not (<= NdChar 3e-47))) (/ NdChar 2.0) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.4e+132) || !(NdChar <= 3e-47)) {
tmp = NdChar / 2.0;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-4.4d+132)) .or. (.not. (ndchar <= 3d-47))) then
tmp = ndchar / 2.0d0
else
tmp = nachar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.4e+132) || !(NdChar <= 3e-47)) {
tmp = NdChar / 2.0;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -4.4e+132) or not (NdChar <= 3e-47): tmp = NdChar / 2.0 else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -4.4e+132) || !(NdChar <= 3e-47)) tmp = Float64(NdChar / 2.0); else tmp = Float64(NaChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -4.4e+132) || ~((NdChar <= 3e-47))) tmp = NdChar / 2.0; else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -4.4e+132], N[Not[LessEqual[NdChar, 3e-47]], $MachinePrecision]], N[(NdChar / 2.0), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -4.4 \cdot 10^{+132} \lor \neg \left(NdChar \leq 3 \cdot 10^{-47}\right):\\
\;\;\;\;\frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -4.39999999999999977e132 or 3.00000000000000017e-47 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.8%
Taylor expanded in KbT around inf 30.9%
if -4.39999999999999977e132 < NdChar < 3.00000000000000017e-47Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 25.9%
distribute-lft-out25.9%
Simplified25.9%
Taylor expanded in NaChar around inf 25.1%
*-commutative25.1%
Simplified25.1%
Final simplification27.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EDonor -1e+169) (* KbT (/ NdChar EDonor)) (* 0.5 (+ NdChar NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -1e+169) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
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 (edonor <= (-1d+169)) then
tmp = kbt * (ndchar / edonor)
else
tmp = 0.5d0 * (ndchar + nachar)
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 (EDonor <= -1e+169) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -1e+169: tmp = KbT * (NdChar / EDonor) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -1e+169) tmp = Float64(KbT * Float64(NdChar / EDonor)); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= -1e+169) tmp = KbT * (NdChar / EDonor); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -1e+169], N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -1 \cdot 10^{+169}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if EDonor < -9.99999999999999934e168Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.8%
Taylor expanded in EDonor around inf 57.2%
Taylor expanded in EDonor around 0 27.5%
Taylor expanded in EDonor around inf 27.6%
associate-/l*33.9%
Simplified33.9%
if -9.99999999999999934e168 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.5%
distribute-lft-out30.5%
Simplified30.5%
Final simplification30.9%
(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.7%
distribute-lft-out28.7%
Simplified28.7%
Final simplification28.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 28.7%
distribute-lft-out28.7%
Simplified28.7%
Taylor expanded in NaChar around inf 19.3%
*-commutative19.3%
Simplified19.3%
herbie shell --seed 2024144
(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))))))