
(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 21 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 (+ (pow E (/ (- Vef (- Ec (+ mu EDonor))) KbT)) 1.0)) (/ NaChar (+ (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (pow(((double) M_E), ((Vef - (Ec - (mu + EDonor))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (Math.pow(Math.E, ((Vef - (Ec - (mu + EDonor))) / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.pow(math.e, ((Vef - (Ec - (mu + EDonor))) / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64((exp(1) ^ Float64(Float64(Vef - Float64(Ec - Float64(mu + EDonor))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / ((2.71828182845904523536 ^ ((Vef - (Ec - (mu + EDonor))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Power[E, N[(N[(Vef - N[(Ec - N[(mu + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{{e}^{\left(\frac{Vef - \left(Ec - \left(mu + EDonor\right)\right)}{KbT}\right)} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
clear-numN/A
div-invN/A
clear-numN/A
exp-prodN/A
pow-lowering-pow.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-+r-N/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
(-
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(/ NdChar (- -1.0 (exp (/ (+ Vef (+ mu (- EDonor Ec))) KbT)))))))
(if (<= Vef -15000000000000.0)
t_0
(if (<= Vef 1.35e-76)
(+
(/ NaChar (+ (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)) 1.0))
(/ NdChar (+ (exp (/ EDonor 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 / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((Vef + (mu + (EDonor - Ec))) / KbT))));
double tmp;
if (Vef <= -15000000000000.0) {
tmp = t_0;
} else if (Vef <= 1.35e-76) {
tmp = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / 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 / kbt)) + 1.0d0)) - (ndchar / ((-1.0d0) - exp(((vef + (mu + (edonor - ec))) / kbt))))
if (vef <= (-15000000000000.0d0)) then
tmp = t_0
else if (vef <= 1.35d-76) then
tmp = (nachar / (exp(((vef + (eaccept + (ev - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp((edonor / 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 / KbT)) + 1.0)) - (NdChar / (-1.0 - Math.exp(((Vef + (mu + (EDonor - Ec))) / KbT))));
double tmp;
if (Vef <= -15000000000000.0) {
tmp = t_0;
} else if (Vef <= 1.35e-76) {
tmp = (NaChar / (Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp((EDonor / 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 / KbT)) + 1.0)) - (NdChar / (-1.0 - math.exp(((Vef + (mu + (EDonor - Ec))) / KbT)))) tmp = 0 if Vef <= -15000000000000.0: tmp = t_0 elif Vef <= 1.35e-76: tmp = (NaChar / (math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(mu + Float64(EDonor - Ec))) / KbT))))) tmp = 0.0 if (Vef <= -15000000000000.0) tmp = t_0; elseif (Vef <= 1.35e-76) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(EDonor / 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 / KbT)) + 1.0)) - (NdChar / (-1.0 - exp(((Vef + (mu + (EDonor - Ec))) / KbT)))); tmp = 0.0; if (Vef <= -15000000000000.0) tmp = t_0; elseif (Vef <= 1.35e-76) tmp = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / 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[(N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(mu + N[(EDonor - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -15000000000000.0], t$95$0, If[LessEqual[Vef, 1.35e-76], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1} - \frac{NdChar}{-1 - e^{\frac{Vef + \left(mu + \left(EDonor - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -15000000000000:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 1.35 \cdot 10^{-76}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -1.5e13 or 1.35e-76 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf
/-lowering-/.f6483.4%
Simplified83.4%
if -1.5e13 < Vef < 1.35e-76Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6478.2%
Simplified78.2%
Final simplification81.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)) 1.0)) (/ NdChar (+ (exp (/ (+ Vef (+ mu (- EDonor 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 + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((Vef + (mu + (EDonor - 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 + (eaccept + (ev - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp(((vef + (mu + (edonor - 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 + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp(((Vef + (mu + (EDonor - Ec))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp(((Vef + (mu + (EDonor - 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(EAccept + Float64(Ev - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(Vef + Float64(mu + Float64(EDonor - Ec))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((Vef + (mu + (EDonor - 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[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(Vef + N[(mu + N[(EDonor - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef + \left(mu + \left(EDonor - Ec\right)\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= mu 1.6e+91)
(+
(/ NaChar (+ (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)) 1.0))
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
(/ NdChar (+ (exp (/ (- (+ mu (+ Vef EDonor)) Ec) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 1.6e+91) {
tmp = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / KbT)) + 1.0));
} else {
tmp = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (mu <= 1.6d+91) then
tmp = (nachar / (exp(((vef + (eaccept + (ev - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp((edonor / kbt)) + 1.0d0))
else
tmp = ndchar / (exp((((mu + (vef + edonor)) - ec) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= 1.6e+91) {
tmp = (NaChar / (Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
} else {
tmp = NdChar / (Math.exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= 1.6e+91: tmp = (NaChar / (math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) else: tmp = NdChar / (math.exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= 1.6e+91) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Float64(Vef + EDonor)) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= 1.6e+91) tmp = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / KbT)) + 1.0)); else tmp = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, 1.6e+91], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq 1.6 \cdot 10^{+91}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + \left(Vef + EDonor\right)\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if mu < 1.59999999999999995e91Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6471.8%
Simplified71.8%
if 1.59999999999999995e91 < mu Initial program 99.9%
Simplified99.9%
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%
Final simplification72.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
(t_1 (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0))))
(if (<= KbT -5.8e+144)
t_1
(if (<= KbT -1.2e-120)
t_0
(if (<= KbT -4e-210)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= KbT 8.5e-186)
t_0
(if (<= KbT 1.05e+139)
(/ NaChar (+ (exp (/ Ev 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 = NaChar / (exp((EAccept / KbT)) + 1.0);
double t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (KbT <= -5.8e+144) {
tmp = t_1;
} else if (KbT <= -1.2e-120) {
tmp = t_0;
} else if (KbT <= -4e-210) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else if (KbT <= 8.5e-186) {
tmp = t_0;
} else if (KbT <= 1.05e+139) {
tmp = NaChar / (exp((Ev / 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 = nachar / (exp((eaccept / kbt)) + 1.0d0)
t_1 = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
if (kbt <= (-5.8d+144)) then
tmp = t_1
else if (kbt <= (-1.2d-120)) then
tmp = t_0
else if (kbt <= (-4d-210)) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else if (kbt <= 8.5d-186) then
tmp = t_0
else if (kbt <= 1.05d+139) then
tmp = nachar / (exp((ev / 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 = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
double t_1 = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (KbT <= -5.8e+144) {
tmp = t_1;
} else if (KbT <= -1.2e-120) {
tmp = t_0;
} else if (KbT <= -4e-210) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (KbT <= 8.5e-186) {
tmp = t_0;
} else if (KbT <= 1.05e+139) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((EAccept / KbT)) + 1.0) t_1 = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) tmp = 0 if KbT <= -5.8e+144: tmp = t_1 elif KbT <= -1.2e-120: tmp = t_0 elif KbT <= -4e-210: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) elif KbT <= 8.5e-186: tmp = t_0 elif KbT <= 1.05e+139: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) t_1 = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -5.8e+144) tmp = t_1; elseif (KbT <= -1.2e-120) tmp = t_0; elseif (KbT <= -4e-210) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (KbT <= 8.5e-186) tmp = t_0; elseif (KbT <= 1.05e+139) tmp = Float64(NaChar / Float64(exp(Float64(Ev / 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 = NaChar / (exp((EAccept / KbT)) + 1.0); t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -5.8e+144) tmp = t_1; elseif (KbT <= -1.2e-120) tmp = t_0; elseif (KbT <= -4e-210) tmp = NdChar / (exp((Vef / KbT)) + 1.0); elseif (KbT <= 8.5e-186) tmp = t_0; elseif (KbT <= 1.05e+139) tmp = NaChar / (exp((Ev / 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[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -5.8e+144], t$95$1, If[LessEqual[KbT, -1.2e-120], t$95$0, If[LessEqual[KbT, -4e-210], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8.5e-186], t$95$0, If[LessEqual[KbT, 1.05e+139], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -5.8 \cdot 10^{+144}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq -1.2 \cdot 10^{-120}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -4 \cdot 10^{-210}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;KbT \leq 8.5 \cdot 10^{-186}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 1.05 \cdot 10^{+139}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if KbT < -5.79999999999999996e144 or 1.0499999999999999e139 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf
/-lowering-/.f6481.9%
Simplified81.9%
Taylor expanded in KbT around inf
Simplified77.1%
if -5.79999999999999996e144 < KbT < -1.2e-120 or -4.0000000000000002e-210 < KbT < 8.4999999999999994e-186Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6466.0%
Simplified66.0%
Taylor expanded in EAccept around inf
/-lowering-/.f6435.8%
Simplified35.8%
if -1.2e-120 < KbT < -4.0000000000000002e-210Initial program 100.0%
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-+.f6487.6%
Simplified87.6%
Taylor expanded in Vef around inf
/-lowering-/.f6456.1%
Simplified56.1%
if 8.4999999999999994e-186 < KbT < 1.0499999999999999e139Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6464.0%
Simplified64.0%
Taylor expanded in Ev around inf
/-lowering-/.f6443.5%
Simplified43.5%
Final simplification51.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
(t_1 (+ (exp (/ Vef KbT)) 1.0)))
(if (<= KbT -1.1e+139)
(+ t_0 (/ NdChar 2.0))
(if (<= KbT -3.7e-121)
t_0
(if (<= KbT -8.4e-211)
(/ NdChar t_1)
(if (<= KbT 2e-188)
t_0
(if (<= KbT 4.8e+46)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(+ (/ NaChar t_1) (/ NdChar 2.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((EAccept / KbT)) + 1.0);
double t_1 = exp((Vef / KbT)) + 1.0;
double tmp;
if (KbT <= -1.1e+139) {
tmp = t_0 + (NdChar / 2.0);
} else if (KbT <= -3.7e-121) {
tmp = t_0;
} else if (KbT <= -8.4e-211) {
tmp = NdChar / t_1;
} else if (KbT <= 2e-188) {
tmp = t_0;
} else if (KbT <= 4.8e+46) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = (NaChar / t_1) + (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) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (exp((eaccept / kbt)) + 1.0d0)
t_1 = exp((vef / kbt)) + 1.0d0
if (kbt <= (-1.1d+139)) then
tmp = t_0 + (ndchar / 2.0d0)
else if (kbt <= (-3.7d-121)) then
tmp = t_0
else if (kbt <= (-8.4d-211)) then
tmp = ndchar / t_1
else if (kbt <= 2d-188) then
tmp = t_0
else if (kbt <= 4.8d+46) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = (nachar / t_1) + (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 t_0 = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
double t_1 = Math.exp((Vef / KbT)) + 1.0;
double tmp;
if (KbT <= -1.1e+139) {
tmp = t_0 + (NdChar / 2.0);
} else if (KbT <= -3.7e-121) {
tmp = t_0;
} else if (KbT <= -8.4e-211) {
tmp = NdChar / t_1;
} else if (KbT <= 2e-188) {
tmp = t_0;
} else if (KbT <= 4.8e+46) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = (NaChar / t_1) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((EAccept / KbT)) + 1.0) t_1 = math.exp((Vef / KbT)) + 1.0 tmp = 0 if KbT <= -1.1e+139: tmp = t_0 + (NdChar / 2.0) elif KbT <= -3.7e-121: tmp = t_0 elif KbT <= -8.4e-211: tmp = NdChar / t_1 elif KbT <= 2e-188: tmp = t_0 elif KbT <= 4.8e+46: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = (NaChar / t_1) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) t_1 = Float64(exp(Float64(Vef / KbT)) + 1.0) tmp = 0.0 if (KbT <= -1.1e+139) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif (KbT <= -3.7e-121) tmp = t_0; elseif (KbT <= -8.4e-211) tmp = Float64(NdChar / t_1); elseif (KbT <= 2e-188) tmp = t_0; elseif (KbT <= 4.8e+46) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / t_1) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((EAccept / KbT)) + 1.0); t_1 = exp((Vef / KbT)) + 1.0; tmp = 0.0; if (KbT <= -1.1e+139) tmp = t_0 + (NdChar / 2.0); elseif (KbT <= -3.7e-121) tmp = t_0; elseif (KbT <= -8.4e-211) tmp = NdChar / t_1; elseif (KbT <= 2e-188) tmp = t_0; elseif (KbT <= 4.8e+46) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = (NaChar / t_1) + (NdChar / 2.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[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[KbT, -1.1e+139], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.7e-121], t$95$0, If[LessEqual[KbT, -8.4e-211], N[(NdChar / t$95$1), $MachinePrecision], If[LessEqual[KbT, 2e-188], t$95$0, If[LessEqual[KbT, 4.8e+46], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / t$95$1), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
t_1 := e^{\frac{Vef}{KbT}} + 1\\
\mathbf{if}\;KbT \leq -1.1 \cdot 10^{+139}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq -3.7 \cdot 10^{-121}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq -8.4 \cdot 10^{-211}:\\
\;\;\;\;\frac{NdChar}{t\_1}\\
\mathbf{elif}\;KbT \leq 2 \cdot 10^{-188}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 4.8 \cdot 10^{+46}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -1.1e139Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
Simplified82.8%
Taylor expanded in EAccept around inf
/-lowering-/.f6482.4%
Simplified82.4%
if -1.1e139 < KbT < -3.7000000000000002e-121 or -8.4000000000000003e-211 < KbT < 1.9999999999999999e-188Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6466.0%
Simplified66.0%
Taylor expanded in EAccept around inf
/-lowering-/.f6435.8%
Simplified35.8%
if -3.7000000000000002e-121 < KbT < -8.4000000000000003e-211Initial program 100.0%
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-+.f6487.6%
Simplified87.6%
Taylor expanded in Vef around inf
/-lowering-/.f6456.1%
Simplified56.1%
if 1.9999999999999999e-188 < KbT < 4.80000000000000017e46Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6461.3%
Simplified61.3%
Taylor expanded in Ev around inf
/-lowering-/.f6441.2%
Simplified41.2%
if 4.80000000000000017e46 < KbT Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
Simplified66.2%
Taylor expanded in Vef around inf
/-lowering-/.f6458.7%
Simplified58.7%
Final simplification50.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
(if (<= EDonor -1.72e+115)
t_0
(if (<= EDonor -1.85e-155)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(if (<= EDonor 2.6e+116)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= EDonor 6.2e+235) (/ NaChar (+ (exp (/ Ev 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 (EDonor <= -1.72e+115) {
tmp = t_0;
} else if (EDonor <= -1.85e-155) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else if (EDonor <= 2.6e+116) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else if (EDonor <= 6.2e+235) {
tmp = NaChar / (exp((Ev / 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 (edonor <= (-1.72d+115)) then
tmp = t_0
else if (edonor <= (-1.85d-155)) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else if (edonor <= 2.6d+116) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else if (edonor <= 6.2d+235) then
tmp = nachar / (exp((ev / 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 (EDonor <= -1.72e+115) {
tmp = t_0;
} else if (EDonor <= -1.85e-155) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else if (EDonor <= 2.6e+116) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (EDonor <= 6.2e+235) {
tmp = NaChar / (Math.exp((Ev / 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 EDonor <= -1.72e+115: tmp = t_0 elif EDonor <= -1.85e-155: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) elif EDonor <= 2.6e+116: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) elif EDonor <= 6.2e+235: tmp = NaChar / (math.exp((Ev / 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 (EDonor <= -1.72e+115) tmp = t_0; elseif (EDonor <= -1.85e-155) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); elseif (EDonor <= 2.6e+116) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (EDonor <= 6.2e+235) tmp = Float64(NaChar / Float64(exp(Float64(Ev / 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 (EDonor <= -1.72e+115) tmp = t_0; elseif (EDonor <= -1.85e-155) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); elseif (EDonor <= 2.6e+116) tmp = NdChar / (exp((Vef / KbT)) + 1.0); elseif (EDonor <= 6.2e+235) tmp = NaChar / (exp((Ev / 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[EDonor, -1.72e+115], t$95$0, If[LessEqual[EDonor, -1.85e-155], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 2.6e+116], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 6.2e+235], N[(NaChar / N[(N[Exp[N[(Ev / 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}\;EDonor \leq -1.72 \cdot 10^{+115}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq -1.85 \cdot 10^{-155}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 2.6 \cdot 10^{+116}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 6.2 \cdot 10^{+235}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if EDonor < -1.72e115 or 6.20000000000000022e235 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf
/-lowering-/.f6490.3%
Simplified90.3%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6457.3%
Simplified57.3%
if -1.72e115 < EDonor < -1.85e-155Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6469.0%
Simplified69.0%
Taylor expanded in EAccept around inf
/-lowering-/.f6451.3%
Simplified51.3%
if -1.85e-155 < EDonor < 2.59999999999999987e116Initial program 100.0%
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.3%
Simplified66.3%
Taylor expanded in Vef around inf
/-lowering-/.f6452.1%
Simplified52.1%
if 2.59999999999999987e116 < EDonor < 6.20000000000000022e235Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6479.9%
Simplified79.9%
Taylor expanded in Ev around inf
/-lowering-/.f6466.1%
Simplified66.1%
Final simplification54.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))))
(if (<= NaChar -5.8e-6)
t_0
(if (<= NaChar 2.85e-27)
(/ NdChar (+ (exp (/ (- (+ mu (+ Vef EDonor)) Ec) 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(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -5.8e-6) {
tmp = t_0;
} else if (NaChar <= 2.85e-27) {
tmp = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / 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(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
if (nachar <= (-5.8d-6)) then
tmp = t_0
else if (nachar <= 2.85d-27) then
tmp = ndchar / (exp((((mu + (vef + edonor)) - ec) / 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(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -5.8e-6) {
tmp = t_0;
} else if (NaChar <= 2.85e-27) {
tmp = NdChar / (Math.exp((((mu + (Vef + EDonor)) - Ec) / 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(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) tmp = 0 if NaChar <= -5.8e-6: tmp = t_0 elif NaChar <= 2.85e-27: tmp = NdChar / (math.exp((((mu + (Vef + EDonor)) - Ec) / 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(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -5.8e-6) tmp = t_0; elseif (NaChar <= 2.85e-27) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Float64(Vef + EDonor)) - Ec) / 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(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -5.8e-6) tmp = t_0; elseif (NaChar <= 2.85e-27) tmp = NdChar / (exp((((mu + (Vef + EDonor)) - Ec) / 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[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.8e-6], t$95$0, If[LessEqual[NaChar, 2.85e-27], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -5.8 \cdot 10^{-6}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 2.85 \cdot 10^{-27}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + \left(Vef + EDonor\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -5.8000000000000004e-6 or 2.8499999999999998e-27 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6472.0%
Simplified72.0%
if -5.8000000000000004e-6 < NaChar < 2.8499999999999998e-27Initial program 99.9%
Simplified99.9%
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.1%
Simplified72.1%
Final simplification72.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0))))
(if (<= KbT -2e+141)
t_0
(if (<= KbT 1e+249)
(/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef 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((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (KbT <= -2e+141) {
tmp = t_0;
} else if (KbT <= 1e+249) {
tmp = NaChar / (exp(((EAccept + (Ev + (Vef - 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((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
if (kbt <= (-2d+141)) then
tmp = t_0
else if (kbt <= 1d+249) then
tmp = nachar / (exp(((eaccept + (ev + (vef - 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((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
double tmp;
if (KbT <= -2e+141) {
tmp = t_0;
} else if (KbT <= 1e+249) {
tmp = NaChar / (Math.exp(((EAccept + (Ev + (Vef - 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((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) tmp = 0 if KbT <= -2e+141: tmp = t_0 elif KbT <= 1e+249: tmp = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -2e+141) tmp = t_0; elseif (KbT <= 1e+249) tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - 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((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -2e+141) tmp = t_0; elseif (KbT <= 1e+249) tmp = NaChar / (exp(((EAccept + (Ev + (Vef - 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[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2e+141], t$95$0, If[LessEqual[KbT, 1e+249], N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 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} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -2 \cdot 10^{+141}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 10^{+249}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -2.00000000000000003e141 or 9.9999999999999992e248 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf
/-lowering-/.f6490.0%
Simplified90.0%
Taylor expanded in KbT around inf
Simplified88.1%
if -2.00000000000000003e141 < KbT < 9.9999999999999992e248Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6462.5%
Simplified62.5%
Final simplification67.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.9e+136)
(+
(/ NdChar 2.0)
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= KbT 1.45e-186)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(if (<= KbT 4.2e+139)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(* 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 (KbT <= -1.9e+136) {
tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (KbT <= 1.45e-186) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else if (KbT <= 4.2e+139) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} 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 (kbt <= (-1.9d+136)) then
tmp = (ndchar / 2.0d0) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (kbt <= 1.45d-186) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else if (kbt <= 4.2d+139) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
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 (KbT <= -1.9e+136) {
tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (KbT <= 1.45e-186) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else if (KbT <= 4.2e+139) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.9e+136: tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif KbT <= 1.45e-186: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) elif KbT <= 4.2e+139: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.9e+136) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (KbT <= 1.45e-186) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); elseif (KbT <= 4.2e+139) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); 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 (KbT <= -1.9e+136) tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (KbT <= 1.45e-186) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); elseif (KbT <= 4.2e+139) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.9e+136], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.45e-186], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.2e+139], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.9 \cdot 10^{+136}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq 1.45 \cdot 10^{-186}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{elif}\;KbT \leq 4.2 \cdot 10^{+139}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -1.90000000000000007e136Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
Simplified81.3%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6479.0%
Simplified79.0%
if -1.90000000000000007e136 < KbT < 1.4500000000000001e-186Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6462.4%
Simplified62.4%
Taylor expanded in EAccept around inf
/-lowering-/.f6434.0%
Simplified34.0%
if 1.4500000000000001e-186 < KbT < 4.1999999999999997e139Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6464.0%
Simplified64.0%
Taylor expanded in Ev around inf
/-lowering-/.f6443.5%
Simplified43.5%
if 4.1999999999999997e139 < KbT Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6455.9%
Simplified55.9%
Final simplification46.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.55e+136)
(+
(/ NdChar 2.0)
(/
NaChar
(- (+ (+ 2.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT))) (/ mu KbT))))
(if (<= KbT 2.9e+27)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(* 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 (KbT <= -1.55e+136) {
tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (KbT <= 2.9e+27) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} 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 (kbt <= (-1.55d+136)) then
tmp = (ndchar / 2.0d0) + (nachar / (((2.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (mu / kbt)))
else if (kbt <= 2.9d+27) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
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 (KbT <= -1.55e+136) {
tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)));
} else if (KbT <= 2.9e+27) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.55e+136: tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))) elif KbT <= 2.9e+27: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.55e+136) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(Float64(2.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT)))); elseif (KbT <= 2.9e+27) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); 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 (KbT <= -1.55e+136) tmp = (NdChar / 2.0) + (NaChar / (((2.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))); elseif (KbT <= 2.9e+27) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.55e+136], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.9e+27], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.55 \cdot 10^{+136}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(\left(2 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq 2.9 \cdot 10^{+27}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -1.54999999999999992e136Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
Simplified81.3%
Taylor expanded in KbT around inf
--lowering--.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6479.0%
Simplified79.0%
if -1.54999999999999992e136 < KbT < 2.9000000000000001e27Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6462.2%
Simplified62.2%
Taylor expanded in EAccept around inf
/-lowering-/.f6437.0%
Simplified37.0%
if 2.9000000000000001e27 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6446.7%
Simplified46.7%
Final simplification46.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -4.2e+83)
t_0
(if (<= KbT 3.7e-61)
(/
NdChar
(+
2.0
(/
(+
(+ (+ Vef EDonor) (- mu Ec))
(*
(/ (+ Vef (+ mu (- EDonor Ec))) KbT)
(* (- (- (- Ec EDonor) mu) Vef) -0.5)))
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 <= -4.2e+83) {
tmp = t_0;
} else if (KbT <= 3.7e-61) {
tmp = NdChar / (2.0 + ((((Vef + EDonor) + (mu - Ec)) + (((Vef + (mu + (EDonor - Ec))) / KbT) * ((((Ec - EDonor) - mu) - Vef) * -0.5))) / 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 <= (-4.2d+83)) then
tmp = t_0
else if (kbt <= 3.7d-61) then
tmp = ndchar / (2.0d0 + ((((vef + edonor) + (mu - ec)) + (((vef + (mu + (edonor - ec))) / kbt) * ((((ec - edonor) - mu) - vef) * (-0.5d0)))) / 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 <= -4.2e+83) {
tmp = t_0;
} else if (KbT <= 3.7e-61) {
tmp = NdChar / (2.0 + ((((Vef + EDonor) + (mu - Ec)) + (((Vef + (mu + (EDonor - Ec))) / KbT) * ((((Ec - EDonor) - mu) - Vef) * -0.5))) / 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 <= -4.2e+83: tmp = t_0 elif KbT <= 3.7e-61: tmp = NdChar / (2.0 + ((((Vef + EDonor) + (mu - Ec)) + (((Vef + (mu + (EDonor - Ec))) / KbT) * ((((Ec - EDonor) - mu) - Vef) * -0.5))) / 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 <= -4.2e+83) tmp = t_0; elseif (KbT <= 3.7e-61) tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Float64(Vef + EDonor) + Float64(mu - Ec)) + Float64(Float64(Float64(Vef + Float64(mu + Float64(EDonor - Ec))) / KbT) * Float64(Float64(Float64(Float64(Ec - EDonor) - mu) - Vef) * -0.5))) / 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 <= -4.2e+83) tmp = t_0; elseif (KbT <= 3.7e-61) tmp = NdChar / (2.0 + ((((Vef + EDonor) + (mu - Ec)) + (((Vef + (mu + (EDonor - Ec))) / KbT) * ((((Ec - EDonor) - mu) - Vef) * -0.5))) / 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, -4.2e+83], t$95$0, If[LessEqual[KbT, 3.7e-61], N[(NdChar / N[(2.0 + N[(N[(N[(N[(Vef + EDonor), $MachinePrecision] + N[(mu - Ec), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(Vef + N[(mu + N[(EDonor - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] * N[(N[(N[(N[(Ec - EDonor), $MachinePrecision] - mu), $MachinePrecision] - Vef), $MachinePrecision] * -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -4.2 \cdot 10^{+83}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 3.7 \cdot 10^{-61}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{\left(\left(Vef + EDonor\right) + \left(mu - Ec\right)\right) + \frac{Vef + \left(mu + \left(EDonor - Ec\right)\right)}{KbT} \cdot \left(\left(\left(\left(Ec - EDonor\right) - mu\right) - Vef\right) \cdot -0.5\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -4.20000000000000005e83 or 3.7e-61 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6451.1%
Simplified51.1%
if -4.20000000000000005e83 < KbT < 3.7e-61Initial program 100.0%
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-+.f6464.5%
Simplified64.5%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified28.2%
associate-*r*N/A
associate-/l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-+r-N/A
associate-+l+N/A
+-commutativeN/A
associate-+r-N/A
associate-+r-N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Applied egg-rr28.2%
Final simplification39.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.75e+79)
t_0
(if (<= KbT 2.4e-197)
(/ NdChar (+ 2.0 (/ (+ (+ Vef mu) (- EDonor Ec)) KbT)))
(if (<= KbT 8.5e-17)
(/
NaChar
(- 2.0 (/ (- (* (/ (* EAccept EAccept) KbT) -0.5) EAccept) 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.75e+79) {
tmp = t_0;
} else if (KbT <= 2.4e-197) {
tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT));
} else if (KbT <= 8.5e-17) {
tmp = NaChar / (2.0 - (((((EAccept * EAccept) / KbT) * -0.5) - EAccept) / 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.75d+79)) then
tmp = t_0
else if (kbt <= 2.4d-197) then
tmp = ndchar / (2.0d0 + (((vef + mu) + (edonor - ec)) / kbt))
else if (kbt <= 8.5d-17) then
tmp = nachar / (2.0d0 - (((((eaccept * eaccept) / kbt) * (-0.5d0)) - eaccept) / 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.75e+79) {
tmp = t_0;
} else if (KbT <= 2.4e-197) {
tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT));
} else if (KbT <= 8.5e-17) {
tmp = NaChar / (2.0 - (((((EAccept * EAccept) / KbT) * -0.5) - EAccept) / 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.75e+79: tmp = t_0 elif KbT <= 2.4e-197: tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT)) elif KbT <= 8.5e-17: tmp = NaChar / (2.0 - (((((EAccept * EAccept) / KbT) * -0.5) - EAccept) / 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.75e+79) tmp = t_0; elseif (KbT <= 2.4e-197) tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Vef + mu) + Float64(EDonor - Ec)) / KbT))); elseif (KbT <= 8.5e-17) tmp = Float64(NaChar / Float64(2.0 - Float64(Float64(Float64(Float64(Float64(EAccept * EAccept) / KbT) * -0.5) - EAccept) / 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.75e+79) tmp = t_0; elseif (KbT <= 2.4e-197) tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT)); elseif (KbT <= 8.5e-17) tmp = NaChar / (2.0 - (((((EAccept * EAccept) / KbT) * -0.5) - EAccept) / 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.75e+79], t$95$0, If[LessEqual[KbT, 2.4e-197], N[(NdChar / N[(2.0 + N[(N[(N[(Vef + mu), $MachinePrecision] + N[(EDonor - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8.5e-17], N[(NaChar / N[(2.0 - N[(N[(N[(N[(N[(EAccept * EAccept), $MachinePrecision] / KbT), $MachinePrecision] * -0.5), $MachinePrecision] - EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{if}\;KbT \leq -1.75 \cdot 10^{+79}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.4 \cdot 10^{-197}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{\left(Vef + mu\right) + \left(EDonor - Ec\right)}{KbT}}\\
\mathbf{elif}\;KbT \leq 8.5 \cdot 10^{-17}:\\
\;\;\;\;\frac{NaChar}{2 - \frac{\frac{EAccept \cdot EAccept}{KbT} \cdot -0.5 - EAccept}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -1.7499999999999999e79 or 8.5e-17 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6454.0%
Simplified54.0%
if -1.7499999999999999e79 < KbT < 2.4000000000000001e-197Initial program 100.0%
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-+.f6462.7%
Simplified62.7%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified26.3%
Taylor expanded in KbT around inf
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
+-commutativeN/A
+-lowering-+.f6423.1%
Simplified23.1%
if 2.4000000000000001e-197 < KbT < 8.5e-17Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6463.6%
Simplified63.6%
Taylor expanded in EAccept around inf
/-lowering-/.f6444.5%
Simplified44.5%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6419.0%
Simplified19.0%
Final simplification36.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -8000000000.0)
t_0
(if (<= KbT 8.2e-19)
(/
NaChar
(+ 2.0 (* EAccept (+ (/ 1.0 KbT) (* 0.5 (/ EAccept (* 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 <= -8000000000.0) {
tmp = t_0;
} else if (KbT <= 8.2e-19) {
tmp = NaChar / (2.0 + (EAccept * ((1.0 / KbT) + (0.5 * (EAccept / (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 <= (-8000000000.0d0)) then
tmp = t_0
else if (kbt <= 8.2d-19) then
tmp = nachar / (2.0d0 + (eaccept * ((1.0d0 / kbt) + (0.5d0 * (eaccept / (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 <= -8000000000.0) {
tmp = t_0;
} else if (KbT <= 8.2e-19) {
tmp = NaChar / (2.0 + (EAccept * ((1.0 / KbT) + (0.5 * (EAccept / (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 <= -8000000000.0: tmp = t_0 elif KbT <= 8.2e-19: tmp = NaChar / (2.0 + (EAccept * ((1.0 / KbT) + (0.5 * (EAccept / (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 <= -8000000000.0) tmp = t_0; elseif (KbT <= 8.2e-19) tmp = Float64(NaChar / Float64(2.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(0.5 * Float64(EAccept / 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 <= -8000000000.0) tmp = t_0; elseif (KbT <= 8.2e-19) tmp = NaChar / (2.0 + (EAccept * ((1.0 / KbT) + (0.5 * (EAccept / (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, -8000000000.0], t$95$0, If[LessEqual[KbT, 8.2e-19], N[(NaChar / N[(2.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(0.5 * N[(EAccept / N[(KbT * KbT), $MachinePrecision]), $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 -8000000000:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 8.2 \cdot 10^{-19}:\\
\;\;\;\;\frac{NaChar}{2 + EAccept \cdot \left(\frac{1}{KbT} + 0.5 \cdot \frac{EAccept}{KbT \cdot KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -8e9 or 8.1999999999999997e-19 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6450.8%
Simplified50.8%
if -8e9 < KbT < 8.1999999999999997e-19Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6463.1%
Simplified63.1%
Taylor expanded in EAccept around inf
/-lowering-/.f6438.2%
Simplified38.2%
Taylor expanded in EAccept around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6422.1%
Simplified22.1%
Final simplification36.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -2.25e+79)
t_0
(if (<= KbT 2.6e-195)
(/ NdChar (+ 2.0 (/ (+ (+ Vef mu) (- EDonor Ec)) KbT)))
(if (<= KbT 6.5e-20) (/ NaChar (+ 2.0 (/ EAccept 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.25e+79) {
tmp = t_0;
} else if (KbT <= 2.6e-195) {
tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT));
} else if (KbT <= 6.5e-20) {
tmp = NaChar / (2.0 + (EAccept / 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.25d+79)) then
tmp = t_0
else if (kbt <= 2.6d-195) then
tmp = ndchar / (2.0d0 + (((vef + mu) + (edonor - ec)) / kbt))
else if (kbt <= 6.5d-20) then
tmp = nachar / (2.0d0 + (eaccept / 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.25e+79) {
tmp = t_0;
} else if (KbT <= 2.6e-195) {
tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT));
} else if (KbT <= 6.5e-20) {
tmp = NaChar / (2.0 + (EAccept / 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.25e+79: tmp = t_0 elif KbT <= 2.6e-195: tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT)) elif KbT <= 6.5e-20: tmp = NaChar / (2.0 + (EAccept / 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.25e+79) tmp = t_0; elseif (KbT <= 2.6e-195) tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Vef + mu) + Float64(EDonor - Ec)) / KbT))); elseif (KbT <= 6.5e-20) tmp = Float64(NaChar / Float64(2.0 + Float64(EAccept / 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.25e+79) tmp = t_0; elseif (KbT <= 2.6e-195) tmp = NdChar / (2.0 + (((Vef + mu) + (EDonor - Ec)) / KbT)); elseif (KbT <= 6.5e-20) tmp = NaChar / (2.0 + (EAccept / 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.25e+79], t$95$0, If[LessEqual[KbT, 2.6e-195], N[(NdChar / N[(2.0 + N[(N[(N[(Vef + mu), $MachinePrecision] + N[(EDonor - Ec), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 6.5e-20], N[(NaChar / N[(2.0 + N[(EAccept / 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 -2.25 \cdot 10^{+79}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.6 \cdot 10^{-195}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{\left(Vef + mu\right) + \left(EDonor - Ec\right)}{KbT}}\\
\mathbf{elif}\;KbT \leq 6.5 \cdot 10^{-20}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -2.24999999999999997e79 or 6.50000000000000032e-20 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6454.0%
Simplified54.0%
if -2.24999999999999997e79 < KbT < 2.6000000000000002e-195Initial program 100.0%
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-+.f6463.1%
Simplified63.1%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified27.1%
Taylor expanded in KbT around inf
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
+-commutativeN/A
+-lowering-+.f6423.9%
Simplified23.9%
if 2.6000000000000002e-195 < KbT < 6.50000000000000032e-20Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6462.6%
Simplified62.6%
Taylor expanded in EAccept around inf
/-lowering-/.f6443.1%
Simplified43.1%
Taylor expanded in EAccept around 0
+-lowering-+.f64N/A
/-lowering-/.f6416.6%
Simplified16.6%
Final simplification36.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -4.1e-88)
t_0
(if (<= KbT 4.4e-192)
(/ NdChar (/ (* 0.5 (* EDonor EDonor)) (* KbT KbT)))
(if (<= KbT 1.5e-18) (/ NaChar (+ 2.0 (/ EAccept 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 <= -4.1e-88) {
tmp = t_0;
} else if (KbT <= 4.4e-192) {
tmp = NdChar / ((0.5 * (EDonor * EDonor)) / (KbT * KbT));
} else if (KbT <= 1.5e-18) {
tmp = NaChar / (2.0 + (EAccept / 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 <= (-4.1d-88)) then
tmp = t_0
else if (kbt <= 4.4d-192) then
tmp = ndchar / ((0.5d0 * (edonor * edonor)) / (kbt * kbt))
else if (kbt <= 1.5d-18) then
tmp = nachar / (2.0d0 + (eaccept / 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 <= -4.1e-88) {
tmp = t_0;
} else if (KbT <= 4.4e-192) {
tmp = NdChar / ((0.5 * (EDonor * EDonor)) / (KbT * KbT));
} else if (KbT <= 1.5e-18) {
tmp = NaChar / (2.0 + (EAccept / 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 <= -4.1e-88: tmp = t_0 elif KbT <= 4.4e-192: tmp = NdChar / ((0.5 * (EDonor * EDonor)) / (KbT * KbT)) elif KbT <= 1.5e-18: tmp = NaChar / (2.0 + (EAccept / 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 <= -4.1e-88) tmp = t_0; elseif (KbT <= 4.4e-192) tmp = Float64(NdChar / Float64(Float64(0.5 * Float64(EDonor * EDonor)) / Float64(KbT * KbT))); elseif (KbT <= 1.5e-18) tmp = Float64(NaChar / Float64(2.0 + Float64(EAccept / 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 <= -4.1e-88) tmp = t_0; elseif (KbT <= 4.4e-192) tmp = NdChar / ((0.5 * (EDonor * EDonor)) / (KbT * KbT)); elseif (KbT <= 1.5e-18) tmp = NaChar / (2.0 + (EAccept / 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, -4.1e-88], t$95$0, If[LessEqual[KbT, 4.4e-192], N[(NdChar / N[(N[(0.5 * N[(EDonor * EDonor), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.5e-18], N[(NaChar / N[(2.0 + N[(EAccept / 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 -4.1 \cdot 10^{-88}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 4.4 \cdot 10^{-192}:\\
\;\;\;\;\frac{NdChar}{\frac{0.5 \cdot \left(EDonor \cdot EDonor\right)}{KbT \cdot KbT}}\\
\mathbf{elif}\;KbT \leq 1.5 \cdot 10^{-18}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -4.1000000000000001e-88 or 1.49999999999999991e-18 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6445.4%
Simplified45.4%
if -4.1000000000000001e-88 < KbT < 4.40000000000000011e-192Initial program 100.0%
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-+.f6465.4%
Simplified65.4%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified29.5%
Taylor expanded in EDonor around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6420.1%
Simplified20.1%
if 4.40000000000000011e-192 < KbT < 1.49999999999999991e-18Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6462.6%
Simplified62.6%
Taylor expanded in EAccept around inf
/-lowering-/.f6443.1%
Simplified43.1%
Taylor expanded in EAccept around 0
+-lowering-+.f64N/A
/-lowering-/.f6416.6%
Simplified16.6%
Final simplification34.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -8.2e-17)
t_0
(if (<= KbT 7.5e-124)
(/ (* 2.0 (* NdChar (* KbT KbT))) (* Vef Vef))
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 <= -8.2e-17) {
tmp = t_0;
} else if (KbT <= 7.5e-124) {
tmp = (2.0 * (NdChar * (KbT * KbT))) / (Vef * Vef);
} 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 <= (-8.2d-17)) then
tmp = t_0
else if (kbt <= 7.5d-124) then
tmp = (2.0d0 * (ndchar * (kbt * kbt))) / (vef * vef)
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 <= -8.2e-17) {
tmp = t_0;
} else if (KbT <= 7.5e-124) {
tmp = (2.0 * (NdChar * (KbT * KbT))) / (Vef * Vef);
} 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 <= -8.2e-17: tmp = t_0 elif KbT <= 7.5e-124: tmp = (2.0 * (NdChar * (KbT * KbT))) / (Vef * Vef) 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 <= -8.2e-17) tmp = t_0; elseif (KbT <= 7.5e-124) tmp = Float64(Float64(2.0 * Float64(NdChar * Float64(KbT * KbT))) / Float64(Vef * Vef)); 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 <= -8.2e-17) tmp = t_0; elseif (KbT <= 7.5e-124) tmp = (2.0 * (NdChar * (KbT * KbT))) / (Vef * Vef); 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, -8.2e-17], t$95$0, If[LessEqual[KbT, 7.5e-124], N[(N[(2.0 * N[(NdChar * N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(Vef * Vef), $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.2 \cdot 10^{-17}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 7.5 \cdot 10^{-124}:\\
\;\;\;\;\frac{2 \cdot \left(NdChar \cdot \left(KbT \cdot KbT\right)\right)}{Vef \cdot Vef}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -8.2000000000000001e-17 or 7.4999999999999996e-124 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6444.9%
Simplified44.9%
if -8.2000000000000001e-17 < KbT < 7.4999999999999996e-124Initial program 100.0%
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-+.f6465.6%
Simplified65.6%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified27.3%
Taylor expanded in Vef around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6422.0%
Simplified22.0%
Final simplification35.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (* 0.5 (+ NdChar NaChar))))
(if (<= KbT -1.3e-89)
t_0
(if (<= KbT 5e-128) (/ NdChar (/ (* 0.5 (* Ec Ec)) (* 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 <= -1.3e-89) {
tmp = t_0;
} else if (KbT <= 5e-128) {
tmp = NdChar / ((0.5 * (Ec * Ec)) / (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 <= (-1.3d-89)) then
tmp = t_0
else if (kbt <= 5d-128) then
tmp = ndchar / ((0.5d0 * (ec * ec)) / (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 <= -1.3e-89) {
tmp = t_0;
} else if (KbT <= 5e-128) {
tmp = NdChar / ((0.5 * (Ec * Ec)) / (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 <= -1.3e-89: tmp = t_0 elif KbT <= 5e-128: tmp = NdChar / ((0.5 * (Ec * Ec)) / (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 <= -1.3e-89) tmp = t_0; elseif (KbT <= 5e-128) tmp = Float64(NdChar / Float64(Float64(0.5 * Float64(Ec * Ec)) / 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 <= -1.3e-89) tmp = t_0; elseif (KbT <= 5e-128) tmp = NdChar / ((0.5 * (Ec * Ec)) / (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, -1.3e-89], t$95$0, If[LessEqual[KbT, 5e-128], N[(NdChar / N[(N[(0.5 * N[(Ec * Ec), $MachinePrecision]), $MachinePrecision] / N[(KbT * 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.3 \cdot 10^{-89}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 5 \cdot 10^{-128}:\\
\;\;\;\;\frac{NdChar}{\frac{0.5 \cdot \left(Ec \cdot Ec\right)}{KbT \cdot KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -1.2999999999999999e-89 or 5.0000000000000001e-128 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6441.1%
Simplified41.1%
if -1.2999999999999999e-89 < KbT < 5.0000000000000001e-128Initial program 100.0%
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-+.f6465.8%
Simplified65.8%
Taylor expanded in KbT around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
Simplified28.3%
Taylor expanded in Ec around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6423.1%
Simplified23.1%
Final simplification35.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar -1.12e-145) (* NdChar 0.5) (if (<= NdChar 4.1e+113) (/ NaChar 2.0) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -1.12e-145) {
tmp = NdChar * 0.5;
} else if (NdChar <= 4.1e+113) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-1.12d-145)) then
tmp = ndchar * 0.5d0
else if (ndchar <= 4.1d+113) then
tmp = nachar / 2.0d0
else
tmp = ndchar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -1.12e-145) {
tmp = NdChar * 0.5;
} else if (NdChar <= 4.1e+113) {
tmp = NaChar / 2.0;
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -1.12e-145: tmp = NdChar * 0.5 elif NdChar <= 4.1e+113: tmp = NaChar / 2.0 else: tmp = NdChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -1.12e-145) tmp = Float64(NdChar * 0.5); elseif (NdChar <= 4.1e+113) tmp = Float64(NaChar / 2.0); else tmp = Float64(NdChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -1.12e-145) tmp = NdChar * 0.5; elseif (NdChar <= 4.1e+113) tmp = NaChar / 2.0; else tmp = NdChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -1.12e-145], N[(NdChar * 0.5), $MachinePrecision], If[LessEqual[NdChar, 4.1e+113], N[(NaChar / 2.0), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.12 \cdot 10^{-145}:\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 4.1 \cdot 10^{+113}:\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -1.12000000000000001e-145 or 4.09999999999999993e113 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6429.6%
Simplified29.6%
Taylor expanded in NaChar around 0
*-commutativeN/A
*-lowering-*.f6425.8%
Simplified25.8%
if -1.12000000000000001e-145 < NdChar < 4.09999999999999993e113Initial program 99.9%
Simplified99.9%
Taylor expanded in NdChar around 0
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
associate--l+N/A
+-lowering-+.f64N/A
sub-negN/A
associate-+r+N/A
mul-1-negN/A
+-lowering-+.f64N/A
mul-1-negN/A
sub-negN/A
--lowering--.f6471.9%
Simplified71.9%
Taylor expanded in KbT around inf
Simplified30.6%
(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
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6431.3%
Simplified31.3%
Final simplification31.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = ndchar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6431.3%
Simplified31.3%
Taylor expanded in NaChar around 0
*-commutativeN/A
*-lowering-*.f6419.4%
Simplified19.4%
herbie shell --seed 2024149
(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))))))