
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ (exp (/ (+ Vef (+ mu (- EDonor Ec))) 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 / (exp(((Vef + (mu + (EDonor - Ec))) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / 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 = (ndchar / (exp(((vef + (mu + (edonor - ec))) / kbt)) + 1.0d0)) + (nachar / (exp(((vef + (eaccept + (ev - mu))) / 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 (NdChar / (Math.exp(((Vef + (mu + (EDonor - Ec))) / 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.exp(((Vef + (mu + (EDonor - Ec))) / 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(Float64(Float64(Vef + Float64(mu + Float64(EDonor - Ec))) / 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 / (exp(((Vef + (mu + (EDonor - Ec))) / 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[Exp[N[(N[(Vef + N[(mu + N[(EDonor - Ec), $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^{\frac{Vef + \left(mu + \left(EDonor - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- EDonor (- (- Ec mu) Vef)) KbT)) 1.0)))
(t_1 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
(t_2
(+
(/ NaChar (+ (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)) 1.0))
t_1)))
(if (<= EDonor -2.1e+101)
t_2
(if (<= EDonor -8.5e-89)
t_0
(if (<= EDonor -5.6e-173)
(+ t_1 (/ NaChar (+ (exp (/ (- (+ EAccept Ev) mu) KbT)) 1.0)))
(if (<= EDonor -3.5e-193)
t_0
(if (<= EDonor 3.6e-179)
(/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))
(if (<= EDonor 4.6e-20) t_0 t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = NdChar / (exp((EDonor / KbT)) + 1.0);
double t_2 = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + t_1;
double tmp;
if (EDonor <= -2.1e+101) {
tmp = t_2;
} else if (EDonor <= -8.5e-89) {
tmp = t_0;
} else if (EDonor <= -5.6e-173) {
tmp = t_1 + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
} else if (EDonor <= -3.5e-193) {
tmp = t_0;
} else if (EDonor <= 3.6e-179) {
tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else if (EDonor <= 4.6e-20) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (exp(((edonor - ((ec - mu) - vef)) / kbt)) + 1.0d0)
t_1 = ndchar / (exp((edonor / kbt)) + 1.0d0)
t_2 = (nachar / (exp(((vef + (eaccept + (ev - mu))) / kbt)) + 1.0d0)) + t_1
if (edonor <= (-2.1d+101)) then
tmp = t_2
else if (edonor <= (-8.5d-89)) then
tmp = t_0
else if (edonor <= (-5.6d-173)) then
tmp = t_1 + (nachar / (exp((((eaccept + ev) - mu) / kbt)) + 1.0d0))
else if (edonor <= (-3.5d-193)) then
tmp = t_0
else if (edonor <= 3.6d-179) then
tmp = nachar / (exp(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
else if (edonor <= 4.6d-20) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
double t_2 = (NaChar / (Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + t_1;
double tmp;
if (EDonor <= -2.1e+101) {
tmp = t_2;
} else if (EDonor <= -8.5e-89) {
tmp = t_0;
} else if (EDonor <= -5.6e-173) {
tmp = t_1 + (NaChar / (Math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
} else if (EDonor <= -3.5e-193) {
tmp = t_0;
} else if (EDonor <= 3.6e-179) {
tmp = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else if (EDonor <= 4.6e-20) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0) t_1 = NdChar / (math.exp((EDonor / KbT)) + 1.0) t_2 = (NaChar / (math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + t_1 tmp = 0 if EDonor <= -2.1e+101: tmp = t_2 elif EDonor <= -8.5e-89: tmp = t_0 elif EDonor <= -5.6e-173: tmp = t_1 + (NaChar / (math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0)) elif EDonor <= -3.5e-193: tmp = t_0 elif EDonor <= 3.6e-179: tmp = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) elif EDonor <= 4.6e-20: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - mu) - Vef)) / KbT)) + 1.0)) t_1 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) t_2 = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)) + 1.0)) + t_1) tmp = 0.0 if (EDonor <= -2.1e+101) tmp = t_2; elseif (EDonor <= -8.5e-89) tmp = t_0; elseif (EDonor <= -5.6e-173) tmp = Float64(t_1 + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Ev) - mu) / KbT)) + 1.0))); elseif (EDonor <= -3.5e-193) tmp = t_0; elseif (EDonor <= 3.6e-179) tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)); elseif (EDonor <= 4.6e-20) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0); t_1 = NdChar / (exp((EDonor / KbT)) + 1.0); t_2 = (NaChar / (exp(((Vef + (EAccept + (Ev - mu))) / KbT)) + 1.0)) + t_1; tmp = 0.0; if (EDonor <= -2.1e+101) tmp = t_2; elseif (EDonor <= -8.5e-89) tmp = t_0; elseif (EDonor <= -5.6e-173) tmp = t_1 + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0)); elseif (EDonor <= -3.5e-193) tmp = t_0; elseif (EDonor <= 3.6e-179) tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); elseif (EDonor <= 4.6e-20) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - mu), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[EDonor, -2.1e+101], t$95$2, If[LessEqual[EDonor, -8.5e-89], t$95$0, If[LessEqual[EDonor, -5.6e-173], N[(t$95$1 + N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3.5e-193], t$95$0, If[LessEqual[EDonor, 3.6e-179], 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[EDonor, 4.6e-20], t$95$0, t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - mu\right) - Vef\right)}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
t_2 := \frac{NaChar}{e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}} + 1} + t\_1\\
\mathbf{if}\;EDonor \leq -2.1 \cdot 10^{+101}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EDonor \leq -8.5 \cdot 10^{-89}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq -5.6 \cdot 10^{-173}:\\
\;\;\;\;t\_1 + \frac{NaChar}{e^{\frac{\left(EAccept + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq -3.5 \cdot 10^{-193}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 3.6 \cdot 10^{-179}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 4.6 \cdot 10^{-20}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EDonor < -2.1e101 or 4.5999999999999998e-20 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6489.0%
Simplified89.0%
if -2.1e101 < EDonor < -8.49999999999999937e-89 or -5.5999999999999998e-173 < EDonor < -3.50000000000000005e-193 or 3.60000000000000007e-179 < EDonor < 4.5999999999999998e-20Initial 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
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--.f6480.6%
Simplified80.6%
if -8.49999999999999937e-89 < EDonor < -5.5999999999999998e-173Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf
/-lowering-/.f6494.8%
Simplified94.8%
Taylor expanded in Vef around 0
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
+-lowering-+.f6494.8%
Simplified94.8%
if -3.50000000000000005e-193 < EDonor < 3.60000000000000007e-179Initial 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--.f6473.5%
Simplified73.5%
Final simplification83.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- EDonor (- (- Ec mu) Vef)) KbT)) 1.0)))
(t_1
(+
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ EAccept Ev) mu) KbT)) 1.0)))))
(if (<= EDonor -2.2e+101)
t_1
(if (<= EDonor -9e-89)
t_0
(if (<= EDonor -1.7e-172)
t_1
(if (<= EDonor -1.05e-192)
t_0
(if (<= EDonor 2.9e-179)
(/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))
(if (<= EDonor 1.5e-21) t_0 t_1))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
double tmp;
if (EDonor <= -2.2e+101) {
tmp = t_1;
} else if (EDonor <= -9e-89) {
tmp = t_0;
} else if (EDonor <= -1.7e-172) {
tmp = t_1;
} else if (EDonor <= -1.05e-192) {
tmp = t_0;
} else if (EDonor <= 2.9e-179) {
tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else if (EDonor <= 1.5e-21) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (exp(((edonor - ((ec - mu) - vef)) / kbt)) + 1.0d0)
t_1 = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / (exp((((eaccept + ev) - mu) / kbt)) + 1.0d0))
if (edonor <= (-2.2d+101)) then
tmp = t_1
else if (edonor <= (-9d-89)) then
tmp = t_0
else if (edonor <= (-1.7d-172)) then
tmp = t_1
else if (edonor <= (-1.05d-192)) then
tmp = t_0
else if (edonor <= 2.9d-179) then
tmp = nachar / (exp(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
else if (edonor <= 1.5d-21) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / (Math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
double tmp;
if (EDonor <= -2.2e+101) {
tmp = t_1;
} else if (EDonor <= -9e-89) {
tmp = t_0;
} else if (EDonor <= -1.7e-172) {
tmp = t_1;
} else if (EDonor <= -1.05e-192) {
tmp = t_0;
} else if (EDonor <= 2.9e-179) {
tmp = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
} else if (EDonor <= 1.5e-21) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0) t_1 = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / (math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0)) tmp = 0 if EDonor <= -2.2e+101: tmp = t_1 elif EDonor <= -9e-89: tmp = t_0 elif EDonor <= -1.7e-172: tmp = t_1 elif EDonor <= -1.05e-192: tmp = t_0 elif EDonor <= 2.9e-179: tmp = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) elif EDonor <= 1.5e-21: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - mu) - Vef)) / KbT)) + 1.0)) t_1 = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Ev) - mu) / KbT)) + 1.0))) tmp = 0.0 if (EDonor <= -2.2e+101) tmp = t_1; elseif (EDonor <= -9e-89) tmp = t_0; elseif (EDonor <= -1.7e-172) tmp = t_1; elseif (EDonor <= -1.05e-192) tmp = t_0; elseif (EDonor <= 2.9e-179) tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)); elseif (EDonor <= 1.5e-21) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0); t_1 = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0)); tmp = 0.0; if (EDonor <= -2.2e+101) tmp = t_1; elseif (EDonor <= -9e-89) tmp = t_0; elseif (EDonor <= -1.7e-172) tmp = t_1; elseif (EDonor <= -1.05e-192) tmp = t_0; elseif (EDonor <= 2.9e-179) tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); elseif (EDonor <= 1.5e-21) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - mu), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / 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 / N[(N[Exp[N[(N[(N[(EAccept + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -2.2e+101], t$95$1, If[LessEqual[EDonor, -9e-89], t$95$0, If[LessEqual[EDonor, -1.7e-172], t$95$1, If[LessEqual[EDonor, -1.05e-192], t$95$0, If[LessEqual[EDonor, 2.9e-179], 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[EDonor, 1.5e-21], t$95$0, t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - mu\right) - Vef\right)}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(EAccept + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;EDonor \leq -2.2 \cdot 10^{+101}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq -9 \cdot 10^{-89}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq -1.7 \cdot 10^{-172}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq -1.05 \cdot 10^{-192}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 2.9 \cdot 10^{-179}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 1.5 \cdot 10^{-21}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -2.2000000000000001e101 or -8.9999999999999998e-89 < EDonor < -1.6999999999999999e-172 or 1.49999999999999996e-21 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6490.0%
Simplified90.0%
Taylor expanded in Vef around 0
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
+-lowering-+.f6487.4%
Simplified87.4%
if -2.2000000000000001e101 < EDonor < -8.9999999999999998e-89 or -1.6999999999999999e-172 < EDonor < -1.04999999999999997e-192 or 2.8999999999999999e-179 < EDonor < 1.49999999999999996e-21Initial 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
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--.f6480.6%
Simplified80.6%
if -1.04999999999999997e-192 < EDonor < 2.8999999999999999e-179Initial 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--.f6473.5%
Simplified73.5%
Final simplification82.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ Ev KbT)) 1.0)))
(t_1 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
(t_2 (+ (/ NdChar 2.0) t_0)))
(if (<= KbT -22000000000000.0)
t_2
(if (<= KbT -7.5e-245)
t_1
(if (<= KbT 4e+32) t_0 (if (<= KbT 2.15e+138) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((Ev / KbT)) + 1.0);
double t_1 = NdChar / (exp((EDonor / KbT)) + 1.0);
double t_2 = (NdChar / 2.0) + t_0;
double tmp;
if (KbT <= -22000000000000.0) {
tmp = t_2;
} else if (KbT <= -7.5e-245) {
tmp = t_1;
} else if (KbT <= 4e+32) {
tmp = t_0;
} else if (KbT <= 2.15e+138) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (exp((ev / kbt)) + 1.0d0)
t_1 = ndchar / (exp((edonor / kbt)) + 1.0d0)
t_2 = (ndchar / 2.0d0) + t_0
if (kbt <= (-22000000000000.0d0)) then
tmp = t_2
else if (kbt <= (-7.5d-245)) then
tmp = t_1
else if (kbt <= 4d+32) then
tmp = t_0
else if (kbt <= 2.15d+138) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((Ev / KbT)) + 1.0);
double t_1 = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
double t_2 = (NdChar / 2.0) + t_0;
double tmp;
if (KbT <= -22000000000000.0) {
tmp = t_2;
} else if (KbT <= -7.5e-245) {
tmp = t_1;
} else if (KbT <= 4e+32) {
tmp = t_0;
} else if (KbT <= 2.15e+138) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((Ev / KbT)) + 1.0) t_1 = NdChar / (math.exp((EDonor / KbT)) + 1.0) t_2 = (NdChar / 2.0) + t_0 tmp = 0 if KbT <= -22000000000000.0: tmp = t_2 elif KbT <= -7.5e-245: tmp = t_1 elif KbT <= 4e+32: tmp = t_0 elif KbT <= 2.15e+138: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)) t_1 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) t_2 = Float64(Float64(NdChar / 2.0) + t_0) tmp = 0.0 if (KbT <= -22000000000000.0) tmp = t_2; elseif (KbT <= -7.5e-245) tmp = t_1; elseif (KbT <= 4e+32) tmp = t_0; elseif (KbT <= 2.15e+138) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((Ev / KbT)) + 1.0); t_1 = NdChar / (exp((EDonor / KbT)) + 1.0); t_2 = (NdChar / 2.0) + t_0; tmp = 0.0; if (KbT <= -22000000000000.0) tmp = t_2; elseif (KbT <= -7.5e-245) tmp = t_1; elseif (KbT <= 4e+32) tmp = t_0; elseif (KbT <= 2.15e+138) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / 2.0), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[KbT, -22000000000000.0], t$95$2, If[LessEqual[KbT, -7.5e-245], t$95$1, If[LessEqual[KbT, 4e+32], t$95$0, If[LessEqual[KbT, 2.15e+138], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
t_2 := \frac{NdChar}{2} + t\_0\\
\mathbf{if}\;KbT \leq -22000000000000:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq -7.5 \cdot 10^{-245}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 4 \cdot 10^{+32}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 2.15 \cdot 10^{+138}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if KbT < -2.2e13 or 2.1499999999999999e138 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified75.9%
Taylor expanded in Ev around inf
/-lowering-/.f6466.9%
Simplified66.9%
if -2.2e13 < KbT < -7.5000000000000003e-245 or 4.00000000000000021e32 < KbT < 2.1499999999999999e138Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6473.6%
Simplified73.6%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6451.9%
Simplified51.9%
if -7.5000000000000003e-245 < KbT < 4.00000000000000021e32Initial 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 Ev around inf
/-lowering-/.f6436.6%
Simplified36.6%
Final simplification52.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (- EDonor (- (- Ec mu) Vef)) KbT)) 1.0)))
(t_1 (/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) KbT)) 1.0))))
(if (<= NaChar -1.8e+261)
t_0
(if (<= NaChar -1.65e+131) t_1 (if (<= NaChar 1.75e+135) t_0 t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.8e+261) {
tmp = t_0;
} else if (NaChar <= -1.65e+131) {
tmp = t_1;
} else if (NaChar <= 1.75e+135) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (exp(((edonor - ((ec - mu) - vef)) / kbt)) + 1.0d0)
t_1 = nachar / (exp(((eaccept + (ev + (vef - mu))) / kbt)) + 1.0d0)
if (nachar <= (-1.8d+261)) then
tmp = t_0
else if (nachar <= (-1.65d+131)) then
tmp = t_1
else if (nachar <= 1.75d+135) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0);
double t_1 = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.8e+261) {
tmp = t_0;
} else if (NaChar <= -1.65e+131) {
tmp = t_1;
} else if (NaChar <= 1.75e+135) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0) t_1 = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) tmp = 0 if NaChar <= -1.8e+261: tmp = t_0 elif NaChar <= -1.65e+131: tmp = t_1 elif NaChar <= 1.75e+135: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - mu) - Vef)) / KbT)) + 1.0)) t_1 = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -1.8e+261) tmp = t_0; elseif (NaChar <= -1.65e+131) tmp = t_1; elseif (NaChar <= 1.75e+135) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor - ((Ec - mu) - Vef)) / KbT)) + 1.0); t_1 = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -1.8e+261) tmp = t_0; elseif (NaChar <= -1.65e+131) tmp = t_1; elseif (NaChar <= 1.75e+135) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - mu), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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, -1.8e+261], t$95$0, If[LessEqual[NaChar, -1.65e+131], t$95$1, If[LessEqual[NaChar, 1.75e+135], t$95$0, t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - mu\right) - Vef\right)}{KbT}} + 1}\\
t_1 := \frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -1.8 \cdot 10^{+261}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.65 \cdot 10^{+131}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.75 \cdot 10^{+135}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -1.80000000000000009e261 or -1.6499999999999999e131 < NaChar < 1.7500000000000001e135Initial 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
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--.f6474.2%
Simplified74.2%
if -1.80000000000000009e261 < NaChar < -1.6499999999999999e131 or 1.7500000000000001e135 < 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--.f6479.5%
Simplified79.5%
Final simplification75.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
(t_1 (/ NaChar (+ (exp (/ Vef KbT)) 1.0))))
(if (<= Vef -4.1e+177)
t_1
(if (<= Vef 5.8e-304)
t_0
(if (<= Vef 2.2e-187)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(if (<= Vef 3.8e+145) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp((EDonor / KbT)) + 1.0);
double t_1 = NaChar / (exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -4.1e+177) {
tmp = t_1;
} else if (Vef <= 5.8e-304) {
tmp = t_0;
} else if (Vef <= 2.2e-187) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else if (Vef <= 3.8e+145) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (exp((edonor / kbt)) + 1.0d0)
t_1 = nachar / (exp((vef / kbt)) + 1.0d0)
if (vef <= (-4.1d+177)) then
tmp = t_1
else if (vef <= 5.8d-304) then
tmp = t_0
else if (vef <= 2.2d-187) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else if (vef <= 3.8d+145) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
double t_1 = NaChar / (Math.exp((Vef / KbT)) + 1.0);
double tmp;
if (Vef <= -4.1e+177) {
tmp = t_1;
} else if (Vef <= 5.8e-304) {
tmp = t_0;
} else if (Vef <= 2.2e-187) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else if (Vef <= 3.8e+145) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((EDonor / KbT)) + 1.0) t_1 = NaChar / (math.exp((Vef / KbT)) + 1.0) tmp = 0 if Vef <= -4.1e+177: tmp = t_1 elif Vef <= 5.8e-304: tmp = t_0 elif Vef <= 2.2e-187: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) elif Vef <= 3.8e+145: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) t_1 = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) tmp = 0.0 if (Vef <= -4.1e+177) tmp = t_1; elseif (Vef <= 5.8e-304) tmp = t_0; elseif (Vef <= 2.2e-187) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); elseif (Vef <= 3.8e+145) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((EDonor / KbT)) + 1.0); t_1 = NaChar / (exp((Vef / KbT)) + 1.0); tmp = 0.0; if (Vef <= -4.1e+177) tmp = t_1; elseif (Vef <= 5.8e-304) tmp = t_0; elseif (Vef <= 2.2e-187) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); elseif (Vef <= 3.8e+145) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.1e+177], t$95$1, If[LessEqual[Vef, 5.8e-304], t$95$0, If[LessEqual[Vef, 2.2e-187], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.8e+145], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
t_1 := \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -4.1 \cdot 10^{+177}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 5.8 \cdot 10^{-304}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2.2 \cdot 10^{-187}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 3.8 \cdot 10^{+145}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -4.10000000000000014e177 or 3.80000000000000012e145 < Vef 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.9%
Simplified72.9%
Taylor expanded in Vef around inf
/-lowering-/.f6469.9%
Simplified69.9%
if -4.10000000000000014e177 < Vef < 5.8e-304 or 2.20000000000000008e-187 < Vef < 3.80000000000000012e145Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf
/-lowering-/.f6475.8%
Simplified75.8%
Taylor expanded in NdChar around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
exp-lowering-exp.f64N/A
/-lowering-/.f6448.3%
Simplified48.3%
if 5.8e-304 < Vef < 2.20000000000000008e-187Initial 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--.f6470.1%
Simplified70.1%
Taylor expanded in EAccept around inf
/-lowering-/.f6452.0%
Simplified52.0%
Final simplification53.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar -1.05e+155) (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0)) (/ NaChar (+ (exp (/ (+ EAccept (+ Ev (- Vef mu))) 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 (NdChar <= -1.05e+155) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / 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 (ndchar <= (-1.05d+155)) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else
tmp = nachar / (exp(((eaccept + (ev + (vef - mu))) / 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 (NdChar <= -1.05e+155) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (Math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -1.05e+155: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = NaChar / (math.exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -1.05e+155) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Float64(Vef - mu))) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -1.05e+155) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); else tmp = NaChar / (exp(((EAccept + (Ev + (Vef - mu))) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -1.05e+155], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.05 \cdot 10^{+155}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + \left(Vef - mu\right)\right)}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -1.05e155Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf
/-lowering-/.f6465.8%
Simplified65.8%
Taylor expanded in KbT around inf
Simplified58.7%
if -1.05e155 < NdChar Initial 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--.f6463.0%
Simplified63.0%
Final simplification62.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -7.2e-14)
(+ (/ NdChar 2.0) (/ NaChar (+ 2.0 (/ Ev KbT))))
(if (<= KbT 2.9e+103)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ Vef KbT) (+ (/ Ev KbT) (/ EAccept KbT))))
(/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7.2e-14) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 2.9e+103) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-7.2d-14)) then
tmp = (ndchar / 2.0d0) + (nachar / (2.0d0 + (ev / kbt)))
else if (kbt <= 2.9d+103) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((vef / kbt) + ((ev / kbt) + (eaccept / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7.2e-14) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 2.9e+103) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -7.2e-14: tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))) elif KbT <= 2.9e+103: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -7.2e-14) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))); elseif (KbT <= 2.9e+103) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -7.2e-14) tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))); elseif (KbT <= 2.9e+103) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -7.2e-14], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.9e+103], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -7.2 \cdot 10^{-14}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{elif}\;KbT \leq 2.9 \cdot 10^{+103}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -7.1999999999999996e-14Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
Simplified71.7%
Taylor expanded in Ev around inf
/-lowering-/.f6462.9%
Simplified62.9%
Taylor expanded in Ev around 0
+-lowering-+.f64N/A
/-lowering-/.f6453.2%
Simplified53.2%
if -7.1999999999999996e-14 < KbT < 2.8999999999999998e103Initial 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.1%
Simplified61.1%
Taylor expanded in Vef around inf
/-lowering-/.f6437.5%
Simplified37.5%
if 2.8999999999999998e103 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified71.5%
Taylor expanded in KbT around inf
--lowering--.f64N/A
+-lowering-+.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6463.6%
Simplified63.6%
Final simplification45.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4e+25)
(+ (/ NdChar 2.0) (/ NaChar (+ 2.0 (/ Ev KbT))))
(if (<= KbT 1.42e+78)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ Vef KbT) (+ (/ Ev KbT) (/ EAccept KbT))))
(/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4e+25) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.42e+78) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-4d+25)) then
tmp = (ndchar / 2.0d0) + (nachar / (2.0d0 + (ev / kbt)))
else if (kbt <= 1.42d+78) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((vef / kbt) + ((ev / kbt) + (eaccept / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4e+25) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.42e+78) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4e+25: tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))) elif KbT <= 1.42e+78: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4e+25) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))); elseif (KbT <= 1.42e+78) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4e+25) tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))); elseif (KbT <= 1.42e+78) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4e+25], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.42e+78], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4 \cdot 10^{+25}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{elif}\;KbT \leq 1.42 \cdot 10^{+78}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -4.00000000000000036e25Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
Simplified74.3%
Taylor expanded in Ev around inf
/-lowering-/.f6466.5%
Simplified66.5%
Taylor expanded in Ev around 0
+-lowering-+.f64N/A
/-lowering-/.f6457.5%
Simplified57.5%
if -4.00000000000000036e25 < KbT < 1.42e78Initial 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--.f6459.8%
Simplified59.8%
Taylor expanded in Ev around inf
/-lowering-/.f6434.2%
Simplified34.2%
if 1.42e78 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified64.6%
Taylor expanded in KbT around inf
--lowering--.f64N/A
+-lowering-+.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6457.5%
Simplified57.5%
Final simplification43.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.3e+21)
(+ (/ NdChar 2.0) (/ NaChar (+ 2.0 (/ Ev KbT))))
(if (<= KbT 1.08e+102)
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ Vef KbT) (+ (/ Ev KbT) (/ EAccept KbT))))
(/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.3e+21) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.08e+102) {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-2.3d+21)) then
tmp = (ndchar / 2.0d0) + (nachar / (2.0d0 + (ev / kbt)))
else if (kbt <= 1.08d+102) then
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((vef / kbt) + ((ev / kbt) + (eaccept / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -2.3e+21) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.08e+102) {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.3e+21: tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))) elif KbT <= 1.08e+102: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.3e+21) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))); elseif (KbT <= 1.08e+102) tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -2.3e+21) tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))); elseif (KbT <= 1.08e+102) tmp = NaChar / (exp((EAccept / KbT)) + 1.0); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.3e+21], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.08e+102], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.3 \cdot 10^{+21}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{elif}\;KbT \leq 1.08 \cdot 10^{+102}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -2.3e21Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
Simplified73.8%
Taylor expanded in Ev around inf
/-lowering-/.f6464.5%
Simplified64.5%
Taylor expanded in Ev around 0
+-lowering-+.f64N/A
/-lowering-/.f6455.6%
Simplified55.6%
if -2.3e21 < KbT < 1.08000000000000002e102Initial 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.1%
Simplified61.1%
Taylor expanded in EAccept around inf
/-lowering-/.f6430.9%
Simplified30.9%
if 1.08000000000000002e102 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified71.5%
Taylor expanded in KbT around inf
--lowering--.f64N/A
+-lowering-+.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6463.6%
Simplified63.6%
Final simplification41.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (- (+ EAccept (+ Vef Ev)) mu)) (t_1 (* t_0 t_0)))
(if (<= KbT -4.7e+64)
(+ (/ NdChar 2.0) (/ NaChar (+ 2.0 (/ Ev KbT))))
(if (<= KbT 1.35e+104)
(/
NaChar
(+
2.0
(/
(+
t_0
(/ (+ (* 0.16666666666666666 (/ (* t_0 t_1) KbT)) (* t_1 0.5)) KbT))
KbT)))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ Vef KbT) (+ (/ Ev KbT) (/ EAccept KbT))))
(/ mu KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (EAccept + (Vef + Ev)) - mu;
double t_1 = t_0 * t_0;
double tmp;
if (KbT <= -4.7e+64) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.35e+104) {
tmp = NaChar / (2.0 + ((t_0 + (((0.16666666666666666 * ((t_0 * t_1) / KbT)) + (t_1 * 0.5)) / KbT)) / KbT));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (eaccept + (vef + ev)) - mu
t_1 = t_0 * t_0
if (kbt <= (-4.7d+64)) then
tmp = (ndchar / 2.0d0) + (nachar / (2.0d0 + (ev / kbt)))
else if (kbt <= 1.35d+104) then
tmp = nachar / (2.0d0 + ((t_0 + (((0.16666666666666666d0 * ((t_0 * t_1) / kbt)) + (t_1 * 0.5d0)) / kbt)) / kbt))
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((vef / kbt) + ((ev / kbt) + (eaccept / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (EAccept + (Vef + Ev)) - mu;
double t_1 = t_0 * t_0;
double tmp;
if (KbT <= -4.7e+64) {
tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
} else if (KbT <= 1.35e+104) {
tmp = NaChar / (2.0 + ((t_0 + (((0.16666666666666666 * ((t_0 * t_1) / KbT)) + (t_1 * 0.5)) / KbT)) / KbT));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (EAccept + (Vef + Ev)) - mu t_1 = t_0 * t_0 tmp = 0 if KbT <= -4.7e+64: tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))) elif KbT <= 1.35e+104: tmp = NaChar / (2.0 + ((t_0 + (((0.16666666666666666 * ((t_0 * t_1) / KbT)) + (t_1 * 0.5)) / KbT)) / KbT)) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) t_1 = Float64(t_0 * t_0) tmp = 0.0 if (KbT <= -4.7e+64) tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))); elseif (KbT <= 1.35e+104) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(t_0 + Float64(Float64(Float64(0.16666666666666666 * Float64(Float64(t_0 * t_1) / KbT)) + Float64(t_1 * 0.5)) / KbT)) / KbT))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (EAccept + (Vef + Ev)) - mu; t_1 = t_0 * t_0; tmp = 0.0; if (KbT <= -4.7e+64) tmp = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))); elseif (KbT <= 1.35e+104) tmp = NaChar / (2.0 + ((t_0 + (((0.16666666666666666 * ((t_0 * t_1) / KbT)) + (t_1 * 0.5)) / KbT)) / KbT)); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * t$95$0), $MachinePrecision]}, If[LessEqual[KbT, -4.7e+64], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.35e+104], N[(NaChar / N[(2.0 + N[(N[(t$95$0 + N[(N[(N[(0.16666666666666666 * N[(N[(t$95$0 * t$95$1), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] + N[(t$95$1 * 0.5), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(EAccept + \left(Vef + Ev\right)\right) - mu\\
t_1 := t\_0 \cdot t\_0\\
\mathbf{if}\;KbT \leq -4.7 \cdot 10^{+64}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{elif}\;KbT \leq 1.35 \cdot 10^{+104}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{t\_0 + \frac{0.16666666666666666 \cdot \frac{t\_0 \cdot t\_1}{KbT} + t\_1 \cdot 0.5}{KbT}}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -4.70000000000000029e64Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
Simplified79.1%
Taylor expanded in Ev around inf
/-lowering-/.f6471.9%
Simplified71.9%
Taylor expanded in Ev around 0
+-lowering-+.f64N/A
/-lowering-/.f6463.3%
Simplified63.3%
if -4.70000000000000029e64 < KbT < 1.34999999999999992e104Initial 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--.f6460.3%
Simplified60.3%
Taylor expanded in KbT around -inf
+-lowering-+.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
Simplified29.6%
if 1.34999999999999992e104 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified71.5%
Taylor expanded in KbT around inf
--lowering--.f64N/A
+-lowering-+.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6463.6%
Simplified63.6%
Final simplification41.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ EAccept (+ Vef Ev))) (t_1 (- t_0 mu)))
(if (<= KbT -3.6e-33)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 7.1e+103)
(/ NaChar (+ 2.0 (/ (+ t_1 (* -0.5 (/ (* t_1 (- mu t_0)) KbT))) KbT)))
(+
(/ NdChar 2.0)
(/
NaChar
(-
(+ 2.0 (+ (/ Vef KbT) (+ (/ Ev KbT) (/ EAccept KbT))))
(/ mu KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = EAccept + (Vef + Ev);
double t_1 = t_0 - mu;
double tmp;
if (KbT <= -3.6e-33) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 7.1e+103) {
tmp = NaChar / (2.0 + ((t_1 + (-0.5 * ((t_1 * (mu - t_0)) / KbT))) / KbT));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = eaccept + (vef + ev)
t_1 = t_0 - mu
if (kbt <= (-3.6d-33)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 7.1d+103) then
tmp = nachar / (2.0d0 + ((t_1 + ((-0.5d0) * ((t_1 * (mu - t_0)) / kbt))) / kbt))
else
tmp = (ndchar / 2.0d0) + (nachar / ((2.0d0 + ((vef / kbt) + ((ev / kbt) + (eaccept / kbt)))) - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = EAccept + (Vef + Ev);
double t_1 = t_0 - mu;
double tmp;
if (KbT <= -3.6e-33) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 7.1e+103) {
tmp = NaChar / (2.0 + ((t_1 + (-0.5 * ((t_1 * (mu - t_0)) / KbT))) / KbT));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = EAccept + (Vef + Ev) t_1 = t_0 - mu tmp = 0 if KbT <= -3.6e-33: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 7.1e+103: tmp = NaChar / (2.0 + ((t_1 + (-0.5 * ((t_1 * (mu - t_0)) / KbT))) / KbT)) else: tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(EAccept + Float64(Vef + Ev)) t_1 = Float64(t_0 - mu) tmp = 0.0 if (KbT <= -3.6e-33) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 7.1e+103) tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(t_1 + Float64(-0.5 * Float64(Float64(t_1 * Float64(mu - t_0)) / KbT))) / KbT))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = EAccept + (Vef + Ev); t_1 = t_0 - mu; tmp = 0.0; if (KbT <= -3.6e-33) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 7.1e+103) tmp = NaChar / (2.0 + ((t_1 + (-0.5 * ((t_1 * (mu - t_0)) / KbT))) / KbT)); else tmp = (NdChar / 2.0) + (NaChar / ((2.0 + ((Vef / KbT) + ((Ev / KbT) + (EAccept / KbT)))) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 - mu), $MachinePrecision]}, If[LessEqual[KbT, -3.6e-33], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.1e+103], N[(NaChar / N[(2.0 + N[(N[(t$95$1 + N[(-0.5 * N[(N[(t$95$1 * N[(mu - t$95$0), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := EAccept + \left(Vef + Ev\right)\\
t_1 := t\_0 - mu\\
\mathbf{if}\;KbT \leq -3.6 \cdot 10^{-33}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 7.1 \cdot 10^{+103}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{t\_1 + -0.5 \cdot \frac{t\_1 \cdot \left(mu - t\_0\right)}{KbT}}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\left(2 + \left(\frac{Vef}{KbT} + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -3.60000000000000034e-33Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6452.1%
Simplified52.1%
if -3.60000000000000034e-33 < KbT < 7.1000000000000002e103Initial 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--.f6460.7%
Simplified60.7%
Taylor expanded in KbT around -inf
+-lowering-+.f64N/A
mul-1-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
Simplified28.8%
if 7.1000000000000002e103 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified71.5%
Taylor expanded in KbT around inf
--lowering--.f64N/A
+-lowering-+.f64N/A
associate-+r+N/A
+-lowering-+.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6463.6%
Simplified63.6%
Final simplification40.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar 2.0) (/ NaChar (+ 2.0 (/ Ev KbT))))))
(if (<= KbT -9200000000000.0)
t_0
(if (<= KbT 9e+135)
(*
0.5
(/
-1.0
(/
(+ -1.0 (/ (- NaChar (/ (* NaChar NaChar) NdChar)) NdChar))
NdChar)))
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 / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
double tmp;
if (KbT <= -9200000000000.0) {
tmp = t_0;
} else if (KbT <= 9e+135) {
tmp = 0.5 * (-1.0 / ((-1.0 + ((NaChar - ((NaChar * NaChar) / NdChar)) / NdChar)) / NdChar));
} 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 / 2.0d0) + (nachar / (2.0d0 + (ev / kbt)))
if (kbt <= (-9200000000000.0d0)) then
tmp = t_0
else if (kbt <= 9d+135) then
tmp = 0.5d0 * ((-1.0d0) / (((-1.0d0) + ((nachar - ((nachar * nachar) / ndchar)) / ndchar)) / ndchar))
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 / 2.0) + (NaChar / (2.0 + (Ev / KbT)));
double tmp;
if (KbT <= -9200000000000.0) {
tmp = t_0;
} else if (KbT <= 9e+135) {
tmp = 0.5 * (-1.0 / ((-1.0 + ((NaChar - ((NaChar * NaChar) / NdChar)) / NdChar)) / NdChar));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))) tmp = 0 if KbT <= -9200000000000.0: tmp = t_0 elif KbT <= 9e+135: tmp = 0.5 * (-1.0 / ((-1.0 + ((NaChar - ((NaChar * NaChar) / NdChar)) / NdChar)) / NdChar)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(2.0 + Float64(Ev / KbT)))) tmp = 0.0 if (KbT <= -9200000000000.0) tmp = t_0; elseif (KbT <= 9e+135) tmp = Float64(0.5 * Float64(-1.0 / Float64(Float64(-1.0 + Float64(Float64(NaChar - Float64(Float64(NaChar * NaChar) / NdChar)) / NdChar)) / NdChar))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / 2.0) + (NaChar / (2.0 + (Ev / KbT))); tmp = 0.0; if (KbT <= -9200000000000.0) tmp = t_0; elseif (KbT <= 9e+135) tmp = 0.5 * (-1.0 / ((-1.0 + ((NaChar - ((NaChar * NaChar) / NdChar)) / NdChar)) / NdChar)); 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 / 2.0), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9200000000000.0], t$95$0, If[LessEqual[KbT, 9e+135], N[(0.5 * N[(-1.0 / N[(N[(-1.0 + N[(N[(NaChar - N[(N[(NaChar * NaChar), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{2} + \frac{NaChar}{2 + \frac{Ev}{KbT}}\\
\mathbf{if}\;KbT \leq -9200000000000:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 9 \cdot 10^{+135}:\\
\;\;\;\;0.5 \cdot \frac{-1}{\frac{-1 + \frac{NaChar - \frac{NaChar \cdot NaChar}{NdChar}}{NdChar}}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if KbT < -9.2e12 or 9.00000000000000014e135 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
Simplified75.3%
Taylor expanded in Ev around inf
/-lowering-/.f6466.4%
Simplified66.4%
Taylor expanded in Ev around 0
+-lowering-+.f64N/A
/-lowering-/.f6460.0%
Simplified60.0%
if -9.2e12 < KbT < 9.00000000000000014e135Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6412.2%
Simplified12.2%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
+-lowering-+.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f646.0%
Applied egg-rr6.0%
Taylor expanded in NdChar around -inf
associate-*r/N/A
sub-negN/A
metadata-evalN/A
distribute-lft-inN/A
associate-*r/N/A
distribute-lft-inN/A
neg-mul-1N/A
mul-1-negN/A
remove-double-negN/A
metadata-evalN/A
+-commutativeN/A
/-lowering-/.f64N/A
Simplified21.6%
Final simplification35.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Vef -1.55e+208)
(*
0.5
(/ -1.0 (/ (* NaChar (- NdChar NaChar)) (* NdChar (* NdChar NdChar)))))
(if (<= Vef 1.2e+268)
(* 0.5 (+ NdChar NaChar))
(* 0.5 (/ -1.0 (+ (/ NdChar (* NaChar NaChar)) (/ -1.0 NaChar)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -1.55e+208) {
tmp = 0.5 * (-1.0 / ((NaChar * (NdChar - NaChar)) / (NdChar * (NdChar * NdChar))));
} else if (Vef <= 1.2e+268) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / 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 (vef <= (-1.55d+208)) then
tmp = 0.5d0 * ((-1.0d0) / ((nachar * (ndchar - nachar)) / (ndchar * (ndchar * ndchar))))
else if (vef <= 1.2d+268) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 0.5d0 * ((-1.0d0) / ((ndchar / (nachar * nachar)) + ((-1.0d0) / 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 (Vef <= -1.55e+208) {
tmp = 0.5 * (-1.0 / ((NaChar * (NdChar - NaChar)) / (NdChar * (NdChar * NdChar))));
} else if (Vef <= 1.2e+268) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -1.55e+208: tmp = 0.5 * (-1.0 / ((NaChar * (NdChar - NaChar)) / (NdChar * (NdChar * NdChar)))) elif Vef <= 1.2e+268: tmp = 0.5 * (NdChar + NaChar) else: tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -1.55e+208) tmp = Float64(0.5 * Float64(-1.0 / Float64(Float64(NaChar * Float64(NdChar - NaChar)) / Float64(NdChar * Float64(NdChar * NdChar))))); elseif (Vef <= 1.2e+268) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(0.5 * Float64(-1.0 / Float64(Float64(NdChar / Float64(NaChar * NaChar)) + Float64(-1.0 / NaChar)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -1.55e+208) tmp = 0.5 * (-1.0 / ((NaChar * (NdChar - NaChar)) / (NdChar * (NdChar * NdChar)))); elseif (Vef <= 1.2e+268) tmp = 0.5 * (NdChar + NaChar); else tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -1.55e+208], N[(0.5 * N[(-1.0 / N[(N[(NaChar * N[(NdChar - NaChar), $MachinePrecision]), $MachinePrecision] / N[(NdChar * N[(NdChar * NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.2e+268], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(-1.0 / N[(N[(NdChar / N[(NaChar * NaChar), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1.55 \cdot 10^{+208}:\\
\;\;\;\;0.5 \cdot \frac{-1}{\frac{NaChar \cdot \left(NdChar - NaChar\right)}{NdChar \cdot \left(NdChar \cdot NdChar\right)}}\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{+268}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{-1}{\frac{NdChar}{NaChar \cdot NaChar} + \frac{-1}{NaChar}}\\
\end{array}
\end{array}
if Vef < -1.5499999999999999e208Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6414.0%
Simplified14.0%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
+-lowering-+.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f647.2%
Applied egg-rr7.2%
Taylor expanded in NdChar around 0
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
unpow2N/A
distribute-lft-inN/A
+-commutativeN/A
*-lowering-*.f64N/A
mul-1-negN/A
unsub-negN/A
--lowering--.f647.5%
Simplified7.5%
Taylor expanded in NaChar around 0
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6431.8%
Simplified31.8%
if -1.5499999999999999e208 < Vef < 1.2e268Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6432.3%
Simplified32.3%
if 1.2e268 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f648.3%
Simplified8.3%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
+-lowering-+.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f645.3%
Applied egg-rr5.3%
Taylor expanded in NdChar around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6458.3%
Simplified58.3%
Final simplification33.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 2.4e+265) (* 0.5 (+ NdChar NaChar)) (* 0.5 (/ -1.0 (+ (/ NdChar (* NaChar NaChar)) (/ -1.0 NaChar))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 2.4e+265) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / 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 (vef <= 2.4d+265) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 0.5d0 * ((-1.0d0) / ((ndchar / (nachar * nachar)) + ((-1.0d0) / 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 (Vef <= 2.4e+265) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 2.4e+265: tmp = 0.5 * (NdChar + NaChar) else: tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 2.4e+265) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(0.5 * Float64(-1.0 / Float64(Float64(NdChar / Float64(NaChar * NaChar)) + Float64(-1.0 / NaChar)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 2.4e+265) tmp = 0.5 * (NdChar + NaChar); else tmp = 0.5 * (-1.0 / ((NdChar / (NaChar * NaChar)) + (-1.0 / NaChar))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 2.4e+265], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(-1.0 / N[(N[(NdChar / N[(NaChar * NaChar), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 2.4 \cdot 10^{+265}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{-1}{\frac{NdChar}{NaChar \cdot NaChar} + \frac{-1}{NaChar}}\\
\end{array}
\end{array}
if Vef < 2.4e265Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6430.6%
Simplified30.6%
if 2.4e265 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f648.3%
Simplified8.3%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
+-lowering-+.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f645.3%
Applied egg-rr5.3%
Taylor expanded in NdChar around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6458.3%
Simplified58.3%
Final simplification31.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 4.85e+260) (* 0.5 (+ NdChar NaChar)) (* 0.5 (/ -1.0 (/ (+ -1.0 (/ NdChar NaChar)) NaChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 4.85e+260) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((-1.0 + (NdChar / NaChar)) / 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 (vef <= 4.85d+260) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 0.5d0 * ((-1.0d0) / (((-1.0d0) + (ndchar / nachar)) / 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 (Vef <= 4.85e+260) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * (-1.0 / ((-1.0 + (NdChar / NaChar)) / NaChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 4.85e+260: tmp = 0.5 * (NdChar + NaChar) else: tmp = 0.5 * (-1.0 / ((-1.0 + (NdChar / NaChar)) / NaChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 4.85e+260) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(0.5 * Float64(-1.0 / Float64(Float64(-1.0 + Float64(NdChar / NaChar)) / NaChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 4.85e+260) tmp = 0.5 * (NdChar + NaChar); else tmp = 0.5 * (-1.0 / ((-1.0 + (NdChar / NaChar)) / NaChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 4.85e+260], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(-1.0 / N[(N[(-1.0 + N[(NdChar / NaChar), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 4.85 \cdot 10^{+260}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{-1}{\frac{-1 + \frac{NdChar}{NaChar}}{NaChar}}\\
\end{array}
\end{array}
if Vef < 4.8500000000000002e260Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6430.8%
Simplified30.8%
if 4.8500000000000002e260 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f648.8%
Simplified8.8%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
+-lowering-+.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f646.3%
Applied egg-rr6.3%
Taylor expanded in NaChar around inf
/-lowering-/.f64N/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f6449.7%
Simplified49.7%
Final simplification31.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 3.8e+270) (* 0.5 (+ NdChar NaChar)) (* 0.5 (* (* NaChar NaChar) (/ -1.0 (- 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 (Vef <= 3.8e+270) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * ((NaChar * NaChar) * (-1.0 / (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 (vef <= 3.8d+270) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 0.5d0 * ((nachar * nachar) * ((-1.0d0) / (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 (Vef <= 3.8e+270) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 0.5 * ((NaChar * NaChar) * (-1.0 / (NdChar - NaChar)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 3.8e+270: tmp = 0.5 * (NdChar + NaChar) else: tmp = 0.5 * ((NaChar * NaChar) * (-1.0 / (NdChar - NaChar))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 3.8e+270) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(0.5 * Float64(Float64(NaChar * NaChar) * Float64(-1.0 / Float64(NdChar - NaChar)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 3.8e+270) tmp = 0.5 * (NdChar + NaChar); else tmp = 0.5 * ((NaChar * NaChar) * (-1.0 / (NdChar - NaChar))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 3.8e+270], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(N[(NaChar * NaChar), $MachinePrecision] * N[(-1.0 / N[(NdChar - NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 3.8 \cdot 10^{+270}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(NaChar \cdot NaChar\right) \cdot \frac{-1}{NdChar - NaChar}\right)\\
\end{array}
\end{array}
if Vef < 3.80000000000000018e270Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6430.6%
Simplified30.6%
if 3.80000000000000018e270 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f648.3%
Simplified8.3%
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6418.0%
Applied egg-rr18.0%
Taylor expanded in NaChar around inf
unpow2N/A
*-lowering-*.f6458.1%
Simplified58.1%
Final simplification31.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NaChar -1.26e+138) (/ NaChar 2.0) (if (<= NaChar 2.15e+181) (* NdChar 0.5) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.26e+138) {
tmp = NaChar / 2.0;
} else if (NaChar <= 2.15e+181) {
tmp = NdChar * 0.5;
} else {
tmp = NaChar / 2.0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-1.26d+138)) then
tmp = nachar / 2.0d0
else if (nachar <= 2.15d+181) then
tmp = ndchar * 0.5d0
else
tmp = nachar / 2.0d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.26e+138) {
tmp = NaChar / 2.0;
} else if (NaChar <= 2.15e+181) {
tmp = NdChar * 0.5;
} else {
tmp = NaChar / 2.0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.26e+138: tmp = NaChar / 2.0 elif NaChar <= 2.15e+181: tmp = NdChar * 0.5 else: tmp = NaChar / 2.0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.26e+138) tmp = Float64(NaChar / 2.0); elseif (NaChar <= 2.15e+181) tmp = Float64(NdChar * 0.5); else tmp = Float64(NaChar / 2.0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.26e+138) tmp = NaChar / 2.0; elseif (NaChar <= 2.15e+181) tmp = NdChar * 0.5; else tmp = NaChar / 2.0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.26e+138], N[(NaChar / 2.0), $MachinePrecision], If[LessEqual[NaChar, 2.15e+181], N[(NdChar * 0.5), $MachinePrecision], N[(NaChar / 2.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.26 \cdot 10^{+138}:\\
\;\;\;\;\frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq 2.15 \cdot 10^{+181}:\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.25999999999999994e138 or 2.14999999999999986e181 < 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--.f6474.3%
Simplified74.3%
Taylor expanded in KbT around inf
Simplified29.0%
if -1.25999999999999994e138 < NaChar < 2.14999999999999986e181Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6429.7%
Simplified29.7%
Taylor expanded in NaChar around 0
*-lowering-*.f6425.6%
Simplified25.6%
Final simplification26.5%
(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 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6429.8%
Simplified29.8%
Final simplification29.8%
(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 99.9%
Simplified99.9%
Taylor expanded in KbT around inf
distribute-lft-outN/A
*-lowering-*.f64N/A
+-lowering-+.f6429.8%
Simplified29.8%
Taylor expanded in NaChar around 0
*-lowering-*.f6421.1%
Simplified21.1%
Final simplification21.1%
herbie shell --seed 2024158
(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))))))