
(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 (+ (* (/ -1.0 (- -1.0 (exp (/ (+ Vef (- (+ EDonor mu) Ec)) KbT)))) NdChar) (/ NaChar (+ (exp (/ (- Vef (- (- mu EAccept) Ev)) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return ((-1.0 / (-1.0 - exp(((Vef + ((EDonor + mu) - Ec)) / KbT)))) * NdChar) + (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (((-1.0d0) / ((-1.0d0) - exp(((vef + ((edonor + mu) - ec)) / kbt)))) * ndchar) + (nachar / (exp(((vef - ((mu - eaccept) - ev)) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return ((-1.0 / (-1.0 - Math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)))) * NdChar) + (NaChar / (Math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return ((-1.0 / (-1.0 - math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)))) * NdChar) + (NaChar / (math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(Float64(-1.0 / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Float64(EDonor + mu) - Ec)) / KbT)))) * NdChar) + Float64(NaChar / Float64(exp(Float64(Float64(Vef - Float64(Float64(mu - EAccept) - Ev)) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = ((-1.0 / (-1.0 - exp(((Vef + ((EDonor + mu) - Ec)) / KbT)))) * NdChar) + (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(N[(-1.0 / N[(-1.0 - N[Exp[N[(N[(Vef + N[(N[(EDonor + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * NdChar), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef - N[(N[(mu - EAccept), $MachinePrecision] - Ev), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{-1}{-1 - e^{\frac{Vef + \left(\left(EDonor + mu\right) - Ec\right)}{KbT}}} \cdot NdChar + \frac{NaChar}{e^{\frac{Vef - \left(\left(mu - EAccept\right) - Ev\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
--lowering--.f64N/A
+-lowering-+.f64100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ Vef (- (+ EDonor mu) Ec)) KbT)) 1.0)))
(t_1 (+ t_0 (/ NaChar (+ (exp (/ Vef KbT)) 1.0)))))
(if (<= Vef -4.2e+89)
t_1
(if (<= Vef 10.5) (+ t_0 (/ NaChar (+ (exp (/ EAccept KbT)) 1.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 / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0);
double t_1 = t_0 + (NaChar / (exp((Vef / KbT)) + 1.0));
double tmp;
if (Vef <= -4.2e+89) {
tmp = t_1;
} else if (Vef <= 10.5) {
tmp = t_0 + (NaChar / (exp((EAccept / KbT)) + 1.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 / (exp(((vef + ((edonor + mu) - ec)) / kbt)) + 1.0d0)
t_1 = t_0 + (nachar / (exp((vef / kbt)) + 1.0d0))
if (vef <= (-4.2d+89)) then
tmp = t_1
else if (vef <= 10.5d0) then
tmp = t_0 + (nachar / (exp((eaccept / kbt)) + 1.0d0))
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 / (Math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0);
double t_1 = t_0 + (NaChar / (Math.exp((Vef / KbT)) + 1.0));
double tmp;
if (Vef <= -4.2e+89) {
tmp = t_1;
} else if (Vef <= 10.5) {
tmp = t_0 + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0) t_1 = t_0 + (NaChar / (math.exp((Vef / KbT)) + 1.0)) tmp = 0 if Vef <= -4.2e+89: tmp = t_1 elif Vef <= 10.5: tmp = t_0 + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(Vef + Float64(Float64(EDonor + mu) - Ec)) / KbT)) + 1.0)) t_1 = Float64(t_0 + Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -4.2e+89) tmp = t_1; elseif (Vef <= 10.5) tmp = Float64(t_0 + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.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 / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0); t_1 = t_0 + (NaChar / (exp((Vef / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -4.2e+89) tmp = t_1; elseif (Vef <= 10.5) tmp = t_0 + (NaChar / (exp((EAccept / KbT)) + 1.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[(N[Exp[N[(N[(Vef + N[(N[(EDonor + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.2e+89], t$95$1, If[LessEqual[Vef, 10.5], N[(t$95$0 + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{Vef + \left(\left(EDonor + mu\right) - Ec\right)}{KbT}} + 1}\\
t_1 := t\_0 + \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -4.2 \cdot 10^{+89}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 10.5:\\
\;\;\;\;t\_0 + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -4.19999999999999972e89 or 10.5 < Vef Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in Vef around inf
/-lowering-/.f6484.6%
Simplified84.6%
if -4.19999999999999972e89 < Vef < 10.5Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in EAccept around inf
/-lowering-/.f6474.4%
Simplified74.4%
Final simplification79.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))))
(if (<= NaChar -2.8e+95)
t_0
(if (<= NaChar 2.9e-58)
(+
(/ NdChar (+ (exp (/ (+ Vef (- (+ EDonor mu) Ec)) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
double tmp;
if (NaChar <= -2.8e+95) {
tmp = t_0;
} else if (NaChar <= 2.9e-58) {
tmp = (NdChar / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
if (nachar <= (-2.8d+95)) then
tmp = t_0
else if (nachar <= 2.9d-58) then
tmp = (ndchar / (exp(((vef + ((edonor + mu) - ec)) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
double tmp;
if (NaChar <= -2.8e+95) {
tmp = t_0;
} else if (NaChar <= 2.9e-58) {
tmp = (NdChar / (Math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) tmp = 0 if NaChar <= -2.8e+95: tmp = t_0 elif NaChar <= 2.9e-58: tmp = (NdChar / (math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -2.8e+95) tmp = t_0; elseif (NaChar <= 2.9e-58) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Vef + Float64(Float64(EDonor + mu) - Ec)) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -2.8e+95) tmp = t_0; elseif (NaChar <= 2.9e-58) tmp = (NdChar / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.8e+95], t$95$0, If[LessEqual[NaChar, 2.9e-58], N[(N[(NdChar / N[(N[Exp[N[(N[(Vef + N[(N[(EDonor + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -2.8 \cdot 10^{+95}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 2.9 \cdot 10^{-58}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef + \left(\left(EDonor + mu\right) - Ec\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -2.7999999999999998e95 or 2.8999999999999999e-58 < NaChar Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f6478.3%
Simplified78.3%
if -2.7999999999999998e95 < NaChar < 2.8999999999999999e-58Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in EAccept around inf
/-lowering-/.f6477.4%
Simplified77.4%
Final simplification77.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ (- Vef (- (- mu EAccept) Ev)) KbT)) 1.0)) (/ NdChar (+ (exp (/ (+ Vef (- (+ EDonor mu) Ec)) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)) + (NdChar / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp(((vef - ((mu - eaccept) - ev)) / kbt)) + 1.0d0)) + (ndchar / (exp(((vef + ((edonor + mu) - ec)) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)) + (NdChar / (Math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)) + (NdChar / (math.exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef - Float64(Float64(mu - EAccept) - Ev)) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(Vef + Float64(Float64(EDonor + mu) - Ec)) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef - ((mu - EAccept) - Ev)) / KbT)) + 1.0)) + (NdChar / (exp(((Vef + ((EDonor + mu) - Ec)) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Exp[N[(N[(Vef - N[(N[(mu - EAccept), $MachinePrecision] - Ev), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(Vef + N[(N[(EDonor + mu), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef - \left(\left(mu - EAccept\right) - Ev\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef + \left(\left(EDonor + mu\right) - Ec\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- (+ mu (+ Vef EDonor)) Ec) KbT)) 1.0))))
(if (<= NdChar -1.9e-157)
t_0
(if (<= NdChar 6.3e+181)
(/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))
t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0);
double tmp;
if (NdChar <= -1.9e-157) {
tmp = t_0;
} else if (NdChar <= 6.3e+181) {
tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp((((mu + (vef + edonor)) - ec) / kbt)) + 1.0d0)
if (ndchar <= (-1.9d-157)) then
tmp = t_0
else if (ndchar <= 6.3d+181) then
tmp = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0);
double tmp;
if (NdChar <= -1.9e-157) {
tmp = t_0;
} else if (NdChar <= 6.3e+181) {
tmp = NaChar / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0) tmp = 0 if NdChar <= -1.9e-157: tmp = t_0 elif NdChar <= 6.3e+181: tmp = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Float64(Vef + EDonor)) - Ec) / KbT)) + 1.0)) tmp = 0.0 if (NdChar <= -1.9e-157) tmp = t_0; elseif (NdChar <= 6.3e+181) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0); tmp = 0.0; if (NdChar <= -1.9e-157) tmp = t_0; elseif (NdChar <= 6.3e+181) tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(N[(mu + N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.9e-157], t$95$0, If[LessEqual[NdChar, 6.3e+181], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{\left(mu + \left(Vef + EDonor\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{if}\;NdChar \leq -1.9 \cdot 10^{-157}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 6.3 \cdot 10^{+181}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -1.9000000000000001e-157 or 6.3000000000000003e181 < NdChar Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6473.7%
Simplified73.7%
if -1.9000000000000001e-157 < NdChar < 6.3000000000000003e181Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f6477.1%
Simplified77.1%
Final simplification75.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4.8e+244)
(+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0))
(if (<= KbT 3.6e+218)
(/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))
(- (* 0.5 (+ NdChar NaChar)) (* -0.25 (* Ec (/ NdChar 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 <= -4.8e+244) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (KbT <= 3.6e+218) {
tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
} else {
tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (Ec * (NdChar / 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 <= (-4.8d+244)) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (kbt <= 3.6d+218) then
tmp = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
else
tmp = (0.5d0 * (ndchar + nachar)) - ((-0.25d0) * (ec * (ndchar / 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 <= -4.8e+244) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (KbT <= 3.6e+218) {
tmp = NaChar / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
} else {
tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (Ec * (NdChar / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4.8e+244: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) elif KbT <= 3.6e+218: tmp = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) else: tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (Ec * (NdChar / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4.8e+244) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (KbT <= 3.6e+218) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(0.5 * Float64(NdChar + NaChar)) - Float64(-0.25 * Float64(Ec * Float64(NdChar / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4.8e+244) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); elseif (KbT <= 3.6e+218) tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); else tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (Ec * (NdChar / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4.8e+244], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.6e+218], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision] - N[(-0.25 * N[(Ec * N[(NdChar / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.8 \cdot 10^{+244}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 3.6 \cdot 10^{+218}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right) - -0.25 \cdot \left(Ec \cdot \frac{NdChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -4.79999999999999975e244Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
Simplified86.2%
Taylor expanded in EDonor around inf
/-lowering-/.f6482.3%
Simplified82.3%
if -4.79999999999999975e244 < KbT < 3.59999999999999991e218Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f6467.3%
Simplified67.3%
if 3.59999999999999991e218 < KbT Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in KbT around -inf
associate-+r+N/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-neg-inN/A
+-lowering-+.f64N/A
Simplified58.7%
Taylor expanded in Ec around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6479.7%
Simplified79.7%
Final simplification69.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (exp (/ Vef KbT)) 1.0)))
(if (<= NdChar -3.2e-156)
(/ NdChar t_0)
(if (<= NdChar 2.85e+189)
(/ NaChar t_0)
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp((Vef / KbT)) + 1.0;
double tmp;
if (NdChar <= -3.2e-156) {
tmp = NdChar / t_0;
} else if (NdChar <= 2.85e+189) {
tmp = NaChar / t_0;
} else {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = exp((vef / kbt)) + 1.0d0
if (ndchar <= (-3.2d-156)) then
tmp = ndchar / t_0
else if (ndchar <= 2.85d+189) then
tmp = nachar / t_0
else
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if (NdChar <= -3.2e-156) {
tmp = NdChar / t_0;
} else if (NdChar <= 2.85e+189) {
tmp = NaChar / t_0;
} else {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if NdChar <= -3.2e-156: tmp = NdChar / t_0 elif NdChar <= 2.85e+189: tmp = NaChar / t_0 else: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if (NdChar <= -3.2e-156) tmp = Float64(NdChar / t_0); elseif (NdChar <= 2.85e+189) tmp = Float64(NaChar / t_0); else tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if (NdChar <= -3.2e-156) tmp = NdChar / t_0; elseif (NdChar <= 2.85e+189) tmp = NaChar / t_0; else tmp = NdChar / (exp((EDonor / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[NdChar, -3.2e-156], N[(NdChar / t$95$0), $MachinePrecision], If[LessEqual[NdChar, 2.85e+189], N[(NaChar / t$95$0), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;NdChar \leq -3.2 \cdot 10^{-156}:\\
\;\;\;\;\frac{NdChar}{t\_0}\\
\mathbf{elif}\;NdChar \leq 2.85 \cdot 10^{+189}:\\
\;\;\;\;\frac{NaChar}{t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -3.19999999999999982e-156Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6472.0%
Simplified72.0%
Taylor expanded in Vef around inf
/-lowering-/.f6451.5%
Simplified51.5%
if -3.19999999999999982e-156 < NdChar < 2.8500000000000001e189Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in Vef around inf
/-lowering-/.f6465.4%
Simplified65.4%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6449.7%
Simplified49.7%
if 2.8500000000000001e189 < NdChar Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6483.0%
Simplified83.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6465.5%
Simplified65.5%
Final simplification52.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
(if (<= NdChar -3.8e-156)
t_0
(if (<= NdChar 2.85e+189) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((EDonor / KbT)) + 1.0);
double tmp;
if (NdChar <= -3.8e-156) {
tmp = t_0;
} else if (NdChar <= 2.85e+189) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp((edonor / kbt)) + 1.0d0)
if (ndchar <= (-3.8d-156)) then
tmp = t_0
else if (ndchar <= 2.85d+189) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
double tmp;
if (NdChar <= -3.8e-156) {
tmp = t_0;
} else if (NdChar <= 2.85e+189) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((EDonor / KbT)) + 1.0) tmp = 0 if NdChar <= -3.8e-156: tmp = t_0 elif NdChar <= 2.85e+189: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) tmp = 0.0 if (NdChar <= -3.8e-156) tmp = t_0; elseif (NdChar <= 2.85e+189) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((EDonor / KbT)) + 1.0); tmp = 0.0; if (NdChar <= -3.8e-156) tmp = t_0; elseif (NdChar <= 2.85e+189) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.8e-156], t$95$0, If[LessEqual[NdChar, 2.85e+189], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{if}\;NdChar \leq -3.8 \cdot 10^{-156}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 2.85 \cdot 10^{+189}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -3.80000000000000008e-156 or 2.8500000000000001e189 < NdChar Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6474.4%
Simplified74.4%
Taylor expanded in EDonor around inf
/-lowering-/.f6448.1%
Simplified48.1%
if -3.80000000000000008e-156 < NdChar < 2.8500000000000001e189Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in Vef around inf
/-lowering-/.f6465.4%
Simplified65.4%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6449.7%
Simplified49.7%
Final simplification48.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -7.2e+92)
t_0
(if (<= KbT 1.02e+148)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(+ t_0 (* (* Vef -0.25) (+ (/ NdChar KbT) (/ NaChar KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.2e+92) {
tmp = t_0;
} else if (KbT <= 1.02e+148) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = t_0 + ((Vef * -0.25) * ((NdChar / KbT) + (NaChar / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-7.2d+92)) then
tmp = t_0
else if (kbt <= 1.02d+148) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = t_0 + ((vef * (-0.25d0)) * ((ndchar / kbt) + (nachar / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.2e+92) {
tmp = t_0;
} else if (KbT <= 1.02e+148) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = t_0 + ((Vef * -0.25) * ((NdChar / KbT) + (NaChar / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -7.2e+92: tmp = t_0 elif KbT <= 1.02e+148: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = t_0 + ((Vef * -0.25) * ((NdChar / KbT) + (NaChar / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -7.2e+92) tmp = t_0; elseif (KbT <= 1.02e+148) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(t_0 + Float64(Float64(Vef * -0.25) * Float64(Float64(NdChar / KbT) + 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 <= -7.2e+92) tmp = t_0; elseif (KbT <= 1.02e+148) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = t_0 + ((Vef * -0.25) * ((NdChar / KbT) + (NaChar / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -7.2e+92], t$95$0, If[LessEqual[KbT, 1.02e+148], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(N[(Vef * -0.25), $MachinePrecision] * N[(N[(NdChar / KbT), $MachinePrecision] + 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 -7.2 \cdot 10^{+92}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.02 \cdot 10^{+148}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \left(Vef \cdot -0.25\right) \cdot \left(\frac{NdChar}{KbT} + \frac{NaChar}{KbT}\right)\\
\end{array}
\end{array}
if KbT < -7.2e92Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6456.4%
Simplified56.4%
if -7.2e92 < KbT < 1.02e148Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in Vef around inf
/-lowering-/.f6464.8%
Simplified64.8%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6443.5%
Simplified43.5%
if 1.02e148 < KbT Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in KbT around -inf
associate-+r+N/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-neg-inN/A
+-lowering-+.f64N/A
Simplified42.6%
Taylor expanded in Vef around inf
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6462.0%
Simplified62.0%
Final simplification48.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (+ Vef EDonor) (- mu Ec)))
(t_1 (* t_0 t_0))
(t_2 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.72e+75)
t_2
(if (<= KbT 4.3e+55)
(/
NdChar
(+
2.0
(/
(+
t_0
(/ (+ (/ (* 0.16666666666666666 (* t_0 t_1)) KbT) (* 0.5 t_1)) KbT))
KbT)))
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 = (Vef + EDonor) + (mu - Ec);
double t_1 = t_0 * t_0;
double t_2 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.72e+75) {
tmp = t_2;
} else if (KbT <= 4.3e+55) {
tmp = NdChar / (2.0 + ((t_0 + ((((0.16666666666666666 * (t_0 * t_1)) / KbT) + (0.5 * t_1)) / KbT)) / KbT));
} 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 = (vef + edonor) + (mu - ec)
t_1 = t_0 * t_0
t_2 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-1.72d+75)) then
tmp = t_2
else if (kbt <= 4.3d+55) then
tmp = ndchar / (2.0d0 + ((t_0 + ((((0.16666666666666666d0 * (t_0 * t_1)) / kbt) + (0.5d0 * t_1)) / kbt)) / kbt))
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 = (Vef + EDonor) + (mu - Ec);
double t_1 = t_0 * t_0;
double t_2 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.72e+75) {
tmp = t_2;
} else if (KbT <= 4.3e+55) {
tmp = NdChar / (2.0 + ((t_0 + ((((0.16666666666666666 * (t_0 * t_1)) / KbT) + (0.5 * t_1)) / KbT)) / KbT));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Vef + EDonor) + (mu - Ec) t_1 = t_0 * t_0 t_2 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -1.72e+75: tmp = t_2 elif KbT <= 4.3e+55: tmp = NdChar / (2.0 + ((t_0 + ((((0.16666666666666666 * (t_0 * t_1)) / KbT) + (0.5 * t_1)) / KbT)) / KbT)) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Vef + EDonor) + Float64(mu - Ec)) t_1 = Float64(t_0 * t_0) t_2 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -1.72e+75) tmp = t_2; elseif (KbT <= 4.3e+55) tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(t_0 + Float64(Float64(Float64(Float64(0.16666666666666666 * Float64(t_0 * t_1)) / KbT) + Float64(0.5 * t_1)) / KbT)) / KbT))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Vef + EDonor) + (mu - Ec); t_1 = t_0 * t_0; t_2 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -1.72e+75) tmp = t_2; elseif (KbT <= 4.3e+55) tmp = NdChar / (2.0 + ((t_0 + ((((0.16666666666666666 * (t_0 * t_1)) / KbT) + (0.5 * t_1)) / KbT)) / KbT)); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Vef + EDonor), $MachinePrecision] + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.72e+75], t$95$2, If[LessEqual[KbT, 4.3e+55], N[(NdChar / N[(2.0 + N[(N[(t$95$0 + N[(N[(N[(N[(0.16666666666666666 * N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] + N[(0.5 * t$95$1), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(Vef + EDonor\right) + \left(mu - Ec\right)\\
t_1 := t\_0 \cdot t\_0\\
t_2 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -1.72 \cdot 10^{+75}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq 4.3 \cdot 10^{+55}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{t\_0 + \frac{\frac{0.16666666666666666 \cdot \left(t\_0 \cdot t\_1\right)}{KbT} + 0.5 \cdot t\_1}{KbT}}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if KbT < -1.72e75 or 4.2999999999999999e55 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6452.9%
Simplified52.9%
if -1.72e75 < KbT < 4.2999999999999999e55Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6467.6%
Simplified67.6%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified34.6%
Final simplification42.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (+ Vef EDonor) (- mu Ec))) (t_1 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -4.7e+39)
t_1
(if (<= KbT 5.2e+57)
(/
NdChar
(+
2.0
(/
(+ t_0 (/ (* -0.5 (* t_0 (- (- Ec mu) (+ Vef EDonor)))) KbT))
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 = (Vef + EDonor) + (mu - Ec);
double t_1 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -4.7e+39) {
tmp = t_1;
} else if (KbT <= 5.2e+57) {
tmp = NdChar / (2.0 + ((t_0 + ((-0.5 * (t_0 * ((Ec - mu) - (Vef + EDonor)))) / KbT)) / 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 = (vef + edonor) + (mu - ec)
t_1 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-4.7d+39)) then
tmp = t_1
else if (kbt <= 5.2d+57) then
tmp = ndchar / (2.0d0 + ((t_0 + (((-0.5d0) * (t_0 * ((ec - mu) - (vef + edonor)))) / kbt)) / 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 = (Vef + EDonor) + (mu - Ec);
double t_1 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -4.7e+39) {
tmp = t_1;
} else if (KbT <= 5.2e+57) {
tmp = NdChar / (2.0 + ((t_0 + ((-0.5 * (t_0 * ((Ec - mu) - (Vef + EDonor)))) / KbT)) / KbT));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Vef + EDonor) + (mu - Ec) t_1 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -4.7e+39: tmp = t_1 elif KbT <= 5.2e+57: tmp = NdChar / (2.0 + ((t_0 + ((-0.5 * (t_0 * ((Ec - mu) - (Vef + EDonor)))) / KbT)) / KbT)) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Vef + EDonor) + Float64(mu - Ec)) t_1 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -4.7e+39) tmp = t_1; elseif (KbT <= 5.2e+57) tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(t_0 + Float64(Float64(-0.5 * Float64(t_0 * Float64(Float64(Ec - mu) - Float64(Vef + EDonor)))) / KbT)) / KbT))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Vef + EDonor) + (mu - Ec); t_1 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -4.7e+39) tmp = t_1; elseif (KbT <= 5.2e+57) tmp = NdChar / (2.0 + ((t_0 + ((-0.5 * (t_0 * ((Ec - mu) - (Vef + EDonor)))) / KbT)) / 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[(N[(Vef + EDonor), $MachinePrecision] + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -4.7e+39], t$95$1, If[LessEqual[KbT, 5.2e+57], N[(NdChar / N[(2.0 + N[(N[(t$95$0 + N[(N[(-0.5 * N[(t$95$0 * N[(N[(Ec - mu), $MachinePrecision] - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(Vef + EDonor\right) + \left(mu - Ec\right)\\
t_1 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -4.7 \cdot 10^{+39}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 5.2 \cdot 10^{+57}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{t\_0 + \frac{-0.5 \cdot \left(t\_0 \cdot \left(\left(Ec - mu\right) - \left(Vef + EDonor\right)\right)\right)}{KbT}}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if KbT < -4.6999999999999999e39 or 5.2e57 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6451.2%
Simplified51.2%
if -4.6999999999999999e39 < KbT < 5.2e57Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6468.3%
Simplified68.3%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified33.6%
Final simplification41.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.35e+39)
t_0
(if (<= KbT 1.7e-157)
(/ NdChar (+ 2.0 (* mu (+ (/ 1.0 KbT) (/ (* mu 0.5) (* KbT KbT))))))
(if (<= KbT 4.9e-45)
(/
NdChar
(-
(+
(+ (/ EDonor KbT) 2.0)
(* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT)))))
(/ 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.35e+39) {
tmp = t_0;
} else if (KbT <= 1.7e-157) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * KbT)))));
} else if (KbT <= 4.9e-45) {
tmp = NdChar / ((((EDonor / KbT) + 2.0) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-1.35d+39)) then
tmp = t_0
else if (kbt <= 1.7d-157) then
tmp = ndchar / (2.0d0 + (mu * ((1.0d0 / kbt) + ((mu * 0.5d0) / (kbt * kbt)))))
else if (kbt <= 4.9d-45) then
tmp = ndchar / ((((edonor / kbt) + 2.0d0) + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt))))) - (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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -1.35e+39) {
tmp = t_0;
} else if (KbT <= 1.7e-157) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * KbT)))));
} else if (KbT <= 4.9e-45) {
tmp = NdChar / ((((EDonor / KbT) + 2.0) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 0.5 * (NdChar + NaChar) tmp = 0 if KbT <= -1.35e+39: tmp = t_0 elif KbT <= 1.7e-157: tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * KbT))))) elif KbT <= 4.9e-45: tmp = NdChar / ((((EDonor / KbT) + 2.0) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(0.5 * Float64(NdChar + NaChar)) tmp = 0.0 if (KbT <= -1.35e+39) tmp = t_0; elseif (KbT <= 1.7e-157) tmp = Float64(NdChar / Float64(2.0 + Float64(mu * Float64(Float64(1.0 / KbT) + Float64(Float64(mu * 0.5) / Float64(KbT * KbT)))))); elseif (KbT <= 4.9e-45) tmp = Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT))))) - 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 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -1.35e+39) tmp = t_0; elseif (KbT <= 1.7e-157) tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * KbT))))); elseif (KbT <= 4.9e-45) tmp = NdChar / ((((EDonor / KbT) + 2.0) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -1.35e+39], t$95$0, If[LessEqual[KbT, 1.7e-157], N[(NdChar / N[(2.0 + N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(mu * 0.5), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.9e-45], N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -1.35 \cdot 10^{+39}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.7 \cdot 10^{-157}:\\
\;\;\;\;\frac{NdChar}{2 + mu \cdot \left(\frac{1}{KbT} + \frac{mu \cdot 0.5}{KbT \cdot KbT}\right)}\\
\mathbf{elif}\;KbT \leq 4.9 \cdot 10^{-45}:\\
\;\;\;\;\frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -1.35000000000000002e39 or 4.8999999999999998e-45 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6446.6%
Simplified46.6%
if -1.35000000000000002e39 < KbT < 1.69999999999999989e-157Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6466.5%
Simplified66.5%
Taylor expanded in mu around inf
/-lowering-/.f6432.3%
Simplified32.3%
Taylor expanded in mu around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6425.9%
Simplified25.9%
if 1.69999999999999989e-157 < KbT < 4.8999999999999998e-45Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6470.8%
Simplified70.8%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6427.7%
Simplified27.7%
Taylor expanded in Vef around inf
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6446.3%
Simplified46.3%
Final simplification37.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -7.2e+39)
t_0
(if (<= KbT 2.1e-46)
(/
NdChar
(-
(* Vef (+ (/ 1.0 KbT) (/ (+ (+ (/ EDonor KbT) 2.0) (/ mu KbT)) Vef)))
(/ 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.2e+39) {
tmp = t_0;
} else if (KbT <= 2.1e-46) {
tmp = NdChar / ((Vef * ((1.0 / KbT) + ((((EDonor / KbT) + 2.0) + (mu / KbT)) / Vef))) - (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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-7.2d+39)) then
tmp = t_0
else if (kbt <= 2.1d-46) then
tmp = ndchar / ((vef * ((1.0d0 / kbt) + ((((edonor / kbt) + 2.0d0) + (mu / kbt)) / vef))) - (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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -7.2e+39) {
tmp = t_0;
} else if (KbT <= 2.1e-46) {
tmp = NdChar / ((Vef * ((1.0 / KbT) + ((((EDonor / KbT) + 2.0) + (mu / KbT)) / Vef))) - (Ec / 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 <= -7.2e+39: tmp = t_0 elif KbT <= 2.1e-46: tmp = NdChar / ((Vef * ((1.0 / KbT) + ((((EDonor / KbT) + 2.0) + (mu / KbT)) / Vef))) - (Ec / 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 <= -7.2e+39) tmp = t_0; elseif (KbT <= 2.1e-46) tmp = Float64(NdChar / Float64(Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(mu / KbT)) / Vef))) - 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 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -7.2e+39) tmp = t_0; elseif (KbT <= 2.1e-46) tmp = NdChar / ((Vef * ((1.0 / KbT) + ((((EDonor / KbT) + 2.0) + (mu / KbT)) / Vef))) - (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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -7.2e+39], t$95$0, If[LessEqual[KbT, 2.1e-46], N[(NdChar / N[(N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -7.2 \cdot 10^{+39}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{-46}:\\
\;\;\;\;\frac{NdChar}{Vef \cdot \left(\frac{1}{KbT} + \frac{\left(\frac{EDonor}{KbT} + 2\right) + \frac{mu}{KbT}}{Vef}\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -7.19999999999999969e39 or 2.09999999999999987e-46 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6446.6%
Simplified46.6%
if -7.19999999999999969e39 < KbT < 2.09999999999999987e-46Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6467.1%
Simplified67.1%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6422.4%
Simplified22.4%
Taylor expanded in Vef around -inf
associate-*r*N/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
sub-negN/A
distribute-neg-fracN/A
metadata-evalN/A
+-lowering-+.f64N/A
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
Simplified27.5%
Final simplification36.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -8e+39)
t_0
(if (<= KbT 9.6e-5)
(/
NdChar
(-
(+ (+ (/ EDonor KbT) 2.0) (* mu (+ (/ 1.0 KbT) (/ Vef (* mu KbT)))))
(/ 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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -8e+39) {
tmp = t_0;
} else if (KbT <= 9.6e-5) {
tmp = NdChar / ((((EDonor / KbT) + 2.0) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT))))) - (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 = 0.5d0 * (ndchar + nachar)
if (kbt <= (-8d+39)) then
tmp = t_0
else if (kbt <= 9.6d-5) then
tmp = ndchar / ((((edonor / kbt) + 2.0d0) + (mu * ((1.0d0 / kbt) + (vef / (mu * kbt))))) - (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 = 0.5 * (NdChar + NaChar);
double tmp;
if (KbT <= -8e+39) {
tmp = t_0;
} else if (KbT <= 9.6e-5) {
tmp = NdChar / ((((EDonor / KbT) + 2.0) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT))))) - (Ec / 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 <= -8e+39: tmp = t_0 elif KbT <= 9.6e-5: tmp = NdChar / ((((EDonor / KbT) + 2.0) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT))))) - (Ec / 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 <= -8e+39) tmp = t_0; elseif (KbT <= 9.6e-5) tmp = Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(mu * Float64(Float64(1.0 / KbT) + Float64(Vef / Float64(mu * KbT))))) - 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 = 0.5 * (NdChar + NaChar); tmp = 0.0; if (KbT <= -8e+39) tmp = t_0; elseif (KbT <= 9.6e-5) tmp = NdChar / ((((EDonor / KbT) + 2.0) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT))))) - (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[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8e+39], t$95$0, If[LessEqual[KbT, 9.6e-5], N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -8 \cdot 10^{+39}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 9.6 \cdot 10^{-5}:\\
\;\;\;\;\frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + mu \cdot \left(\frac{1}{KbT} + \frac{Vef}{mu \cdot KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -7.99999999999999952e39 or 9.6000000000000002e-5 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6448.3%
Simplified48.3%
if -7.99999999999999952e39 < KbT < 9.6000000000000002e-5Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6467.2%
Simplified67.2%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6421.5%
Simplified21.5%
Taylor expanded in mu around inf
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6425.6%
Simplified25.6%
Final simplification36.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -2.15e+39)
t_0
(if (<= KbT 1.9e-80)
(/ NdChar (+ 2.0 (* mu (+ (/ 1.0 KbT) (/ (* mu 0.5) (* KbT 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.15e+39) {
tmp = t_0;
} else if (KbT <= 1.9e-80) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * 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.15d+39)) then
tmp = t_0
else if (kbt <= 1.9d-80) then
tmp = ndchar / (2.0d0 + (mu * ((1.0d0 / kbt) + ((mu * 0.5d0) / (kbt * 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.15e+39) {
tmp = t_0;
} else if (KbT <= 1.9e-80) {
tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * 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.15e+39: tmp = t_0 elif KbT <= 1.9e-80: tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * 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.15e+39) tmp = t_0; elseif (KbT <= 1.9e-80) tmp = Float64(NdChar / Float64(2.0 + Float64(mu * Float64(Float64(1.0 / KbT) + Float64(Float64(mu * 0.5) / Float64(KbT * 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.15e+39) tmp = t_0; elseif (KbT <= 1.9e-80) tmp = NdChar / (2.0 + (mu * ((1.0 / KbT) + ((mu * 0.5) / (KbT * 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.15e+39], t$95$0, If[LessEqual[KbT, 1.9e-80], N[(NdChar / N[(2.0 + N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(mu * 0.5), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $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.15 \cdot 10^{+39}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.9 \cdot 10^{-80}:\\
\;\;\;\;\frac{NdChar}{2 + mu \cdot \left(\frac{1}{KbT} + \frac{mu \cdot 0.5}{KbT \cdot KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -2.15e39 or 1.89999999999999983e-80 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6445.4%
Simplified45.4%
if -2.15e39 < KbT < 1.89999999999999983e-80Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6466.9%
Simplified66.9%
Taylor expanded in mu around inf
/-lowering-/.f6431.1%
Simplified31.1%
Taylor expanded in mu around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6424.3%
Simplified24.3%
Final simplification34.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -9.5e+38)
t_0
(if (<= KbT 1.45e-56) (/ NdChar (/ Vef 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.5e+38) {
tmp = t_0;
} else if (KbT <= 1.45e-56) {
tmp = NdChar / (Vef / 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.5d+38)) then
tmp = t_0
else if (kbt <= 1.45d-56) then
tmp = ndchar / (vef / 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.5e+38) {
tmp = t_0;
} else if (KbT <= 1.45e-56) {
tmp = NdChar / (Vef / 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.5e+38: tmp = t_0 elif KbT <= 1.45e-56: tmp = NdChar / (Vef / 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.5e+38) tmp = t_0; elseif (KbT <= 1.45e-56) tmp = Float64(NdChar / Float64(Vef / 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.5e+38) tmp = t_0; elseif (KbT <= 1.45e-56) tmp = NdChar / (Vef / 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.5e+38], t$95$0, If[LessEqual[KbT, 1.45e-56], N[(NdChar / N[(Vef / 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.5 \cdot 10^{+38}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.45 \cdot 10^{-56}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -9.4999999999999995e38 or 1.44999999999999996e-56 < KbT Initial program 99.9%
+-lowering-+.f64N/A
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6445.7%
Simplified45.7%
if -9.4999999999999995e38 < KbT < 1.44999999999999996e-56Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6467.1%
Simplified67.1%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6422.9%
Simplified22.9%
Taylor expanded in Vef around inf
/-lowering-/.f6420.2%
Simplified20.2%
Final simplification33.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar -2.5e-157) (/ NdChar 2.0) (if (<= NdChar 2.8e+156) (* NaChar 0.5) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.5e-157) {
tmp = NdChar / 2.0;
} else if (NdChar <= 2.8e+156) {
tmp = NaChar * 0.5;
} else {
tmp = NdChar / 2.0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-2.5d-157)) then
tmp = ndchar / 2.0d0
else if (ndchar <= 2.8d+156) then
tmp = nachar * 0.5d0
else
tmp = ndchar / 2.0d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.5e-157) {
tmp = NdChar / 2.0;
} else if (NdChar <= 2.8e+156) {
tmp = NaChar * 0.5;
} else {
tmp = NdChar / 2.0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.5e-157: tmp = NdChar / 2.0 elif NdChar <= 2.8e+156: tmp = NaChar * 0.5 else: tmp = NdChar / 2.0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.5e-157) tmp = Float64(NdChar / 2.0); elseif (NdChar <= 2.8e+156) tmp = Float64(NaChar * 0.5); else tmp = Float64(NdChar / 2.0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -2.5e-157) tmp = NdChar / 2.0; elseif (NdChar <= 2.8e+156) tmp = NaChar * 0.5; else tmp = NdChar / 2.0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.5e-157], N[(NdChar / 2.0), $MachinePrecision], If[LessEqual[NdChar, 2.8e+156], N[(NaChar * 0.5), $MachinePrecision], N[(NdChar / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.5 \cdot 10^{-157}:\\
\;\;\;\;\frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq 2.8 \cdot 10^{+156}:\\
\;\;\;\;NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -2.5000000000000001e-157 or 2.79999999999999988e156 < NdChar Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6472.8%
Simplified72.8%
Taylor expanded in KbT around inf
Simplified24.6%
if -2.5000000000000001e-157 < NdChar < 2.79999999999999988e156Initial program 100.0%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6426.6%
Simplified26.6%
Taylor expanded in NaChar around inf
*-lowering-*.f6425.4%
Simplified25.4%
Final simplification25.0%
(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%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6427.7%
Simplified27.7%
Final simplification27.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%
+-lowering-+.f64N/A
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6427.7%
Simplified27.7%
Taylor expanded in NaChar around inf
*-lowering-*.f6418.4%
Simplified18.4%
Final simplification18.4%
herbie shell --seed 2024191
(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))))))