
(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 14 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar (/ 1.0 (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))) (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept 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 * (1.0 / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))) + (NaChar / (exp(((Vef + (Ev + (EAccept - 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 * (1.0d0 / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))) + (nachar / (exp(((vef + (ev + (eaccept - 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 * (1.0 / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))) + (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * (1.0 / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))) + (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * Float64(1.0 / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * (1.0 / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * N[(1.0 / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot \frac{1}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(t_1 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))
(t_2
(+ (/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0)) t_1))
(t_3 (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
(if (<= t_2 -1e-179)
(+ (* NdChar (/ 1.0 t_0)) t_3)
(if (<= t_2 1e-267)
t_1
(if (<= t_2 4e+232)
(+ (/ NdChar t_0) t_3)
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/ NdChar 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0;
double t_1 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1;
double t_3 = NaChar / (exp((EAccept / KbT)) + 1.0);
double tmp;
if (t_2 <= -1e-179) {
tmp = (NdChar * (1.0 / t_0)) + t_3;
} else if (t_2 <= 1e-267) {
tmp = t_1;
} else if (t_2 <= 4e+232) {
tmp = (NdChar / t_0) + t_3;
} else {
tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0
t_1 = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
t_2 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + t_1
t_3 = nachar / (exp((eaccept / kbt)) + 1.0d0)
if (t_2 <= (-1d-179)) then
tmp = (ndchar * (1.0d0 / t_0)) + t_3
else if (t_2 <= 1d-267) then
tmp = t_1
else if (t_2 <= 4d+232) then
tmp = (ndchar / t_0) + t_3
else
tmp = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0;
double t_1 = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_2 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1;
double t_3 = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
double tmp;
if (t_2 <= -1e-179) {
tmp = (NdChar * (1.0 / t_0)) + t_3;
} else if (t_2 <= 1e-267) {
tmp = t_1;
} else if (t_2 <= 4e+232) {
tmp = (NdChar / t_0) + t_3;
} else {
tmp = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0 t_1 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) t_2 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1 t_3 = NaChar / (math.exp((EAccept / KbT)) + 1.0) tmp = 0 if t_2 <= -1e-179: tmp = (NdChar * (1.0 / t_0)) + t_3 elif t_2 <= 1e-267: tmp = t_1 elif t_2 <= 4e+232: tmp = (NdChar / t_0) + t_3 else: tmp = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0) t_1 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) t_2 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + t_1) t_3 = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) tmp = 0.0 if (t_2 <= -1e-179) tmp = Float64(Float64(NdChar * Float64(1.0 / t_0)) + t_3); elseif (t_2 <= 1e-267) tmp = t_1; elseif (t_2 <= 4e+232) tmp = Float64(Float64(NdChar / t_0) + t_3); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0; t_1 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1; t_3 = NaChar / (exp((EAccept / KbT)) + 1.0); tmp = 0.0; if (t_2 <= -1e-179) tmp = (NdChar * (1.0 / t_0)) + t_3; elseif (t_2 <= 1e-267) tmp = t_1; elseif (t_2 <= 4e+232) tmp = (NdChar / t_0) + t_3; else tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -1e-179], N[(N[(NdChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[t$95$2, 1e-267], t$95$1, If[LessEqual[t$95$2, 4e+232], N[(N[(NdChar / t$95$0), $MachinePrecision] + t$95$3), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1\\
t_1 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
t_2 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + t\_1\\
t_3 := \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{if}\;t\_2 \leq -1 \cdot 10^{-179}:\\
\;\;\;\;NdChar \cdot \frac{1}{t\_0} + t\_3\\
\mathbf{elif}\;t\_2 \leq 10^{-267}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t\_2 \leq 4 \cdot 10^{+232}:\\
\;\;\;\;\frac{NdChar}{t\_0} + t\_3\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1e-179Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in EAccept around inf 79.4%
if -1e-179 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999998e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 93.4%
if 9.9999999999999998e-268 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.00000000000000023e232Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 67.5%
if 4.00000000000000023e232 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 95.6%
Final simplification80.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
(t_1 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))
(t_2
(+
(/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
t_1)))
(if (<= t_2 -1e-179)
t_0
(if (<= t_2 1e-267)
t_1
(if (<= t_2 4e+232)
t_0
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/ NdChar 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
double t_1 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1;
double tmp;
if (t_2 <= -1e-179) {
tmp = t_0;
} else if (t_2 <= 1e-267) {
tmp = t_1;
} else if (t_2 <= 4e+232) {
tmp = t_0;
} else {
tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
t_1 = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
t_2 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + t_1
if (t_2 <= (-1d-179)) then
tmp = t_0
else if (t_2 <= 1d-267) then
tmp = t_1
else if (t_2 <= 4d+232) then
tmp = t_0
else
tmp = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
double t_1 = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_2 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1;
double tmp;
if (t_2 <= -1e-179) {
tmp = t_0;
} else if (t_2 <= 1e-267) {
tmp = t_1;
} else if (t_2 <= 4e+232) {
tmp = t_0;
} else {
tmp = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) t_1 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) t_2 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1 tmp = 0 if t_2 <= -1e-179: tmp = t_0 elif t_2 <= 1e-267: tmp = t_1 elif t_2 <= 4e+232: tmp = t_0 else: tmp = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))) t_1 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) t_2 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + t_1) tmp = 0.0 if (t_2 <= -1e-179) tmp = t_0; elseif (t_2 <= 1e-267) tmp = t_1; elseif (t_2 <= 4e+232) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); t_1 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); t_2 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + t_1; tmp = 0.0; if (t_2 <= -1e-179) tmp = t_0; elseif (t_2 <= 1e-267) tmp = t_1; elseif (t_2 <= 4e+232) tmp = t_0; else tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[t$95$2, -1e-179], t$95$0, If[LessEqual[t$95$2, 1e-267], t$95$1, If[LessEqual[t$95$2, 4e+232], t$95$0, N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
t_1 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
t_2 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + t\_1\\
\mathbf{if}\;t\_2 \leq -1 \cdot 10^{-179}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_2 \leq 10^{-267}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t\_2 \leq 4 \cdot 10^{+232}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -1e-179 or 9.9999999999999998e-268 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 4.00000000000000023e232Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.0%
if -1e-179 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 9.9999999999999998e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 93.4%
if 4.00000000000000023e232 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 95.6%
Final simplification80.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))))
(if (or (<= t_0 -500.0) (not (<= t_0 2e-291)))
(+ (/ NdChar 2.0) (/ 1.0 (/ (+ (exp (/ EAccept KbT)) 1.0) NaChar)))
(/ NdChar (+ (exp (/ Vef KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -500.0) || !(t_0 <= 2e-291)) {
tmp = (NdChar / 2.0) + (1.0 / ((exp((EAccept / KbT)) + 1.0) / NaChar));
} else {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0))
if ((t_0 <= (-500.0d0)) .or. (.not. (t_0 <= 2d-291))) then
tmp = (ndchar / 2.0d0) + (1.0d0 / ((exp((eaccept / kbt)) + 1.0d0) / nachar))
else
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -500.0) || !(t_0 <= 2e-291)) {
tmp = (NdChar / 2.0) + (1.0 / ((Math.exp((EAccept / KbT)) + 1.0) / NaChar));
} else {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0 if (t_0 <= -500.0) or not (t_0 <= 2e-291): tmp = (NdChar / 2.0) + (1.0 / ((math.exp((EAccept / KbT)) + 1.0) / NaChar)) else: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0))) tmp = 0.0 if ((t_0 <= -500.0) || !(t_0 <= 2e-291)) tmp = Float64(Float64(NdChar / 2.0) + Float64(1.0 / Float64(Float64(exp(Float64(EAccept / KbT)) + 1.0) / NaChar))); else tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)); tmp = 0.0; if ((t_0 <= -500.0) || ~((t_0 <= 2e-291))) tmp = (NdChar / 2.0) + (1.0 / ((exp((EAccept / KbT)) + 1.0) / NaChar)); else tmp = NdChar / (exp((Vef / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$0, -500.0], N[Not[LessEqual[t$95$0, 2e-291]], $MachinePrecision]], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(1.0 / N[(N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;t\_0 \leq -500 \lor \neg \left(t\_0 \leq 2 \cdot 10^{-291}\right):\\
\;\;\;\;\frac{NdChar}{2} + \frac{1}{\frac{e^{\frac{EAccept}{KbT}} + 1}{NaChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\end{array}
\end{array}
if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -500 or 1.99999999999999992e-291 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.9%
Applied egg-rr99.9%
unpow-199.8%
Simplified99.8%
Taylor expanded in KbT around inf 64.4%
Taylor expanded in EAccept around inf 49.6%
if -500 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1.99999999999999992e-291Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 78.7%
Taylor expanded in Vef around inf 54.2%
Final simplification51.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))))
(if (or (<= t_0 -2e-206) (not (<= t_0 1e-270)))
(* 0.5 (+ NdChar NaChar))
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -2e-206) || !(t_0 <= 1e-270)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0))
if ((t_0 <= (-2d-206)) .or. (.not. (t_0 <= 1d-270))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / 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 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -2e-206) || !(t_0 <= 1e-270)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0 if (t_0 <= -2e-206) or not (t_0 <= 1e-270): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0))) tmp = 0.0 if ((t_0 <= -2e-206) || !(t_0 <= 1e-270)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)); tmp = 0.0; if ((t_0 <= -2e-206) || ~((t_0 <= 1e-270))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$0, -2e-206], N[Not[LessEqual[t$95$0, 1e-270]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;t\_0 \leq -2 \cdot 10^{-206} \lor \neg \left(t\_0 \leq 10^{-270}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -2.00000000000000006e-206 or 1e-270 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 36.0%
distribute-lft-out36.0%
Simplified36.0%
if -2.00000000000000006e-206 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1e-270Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 88.6%
Taylor expanded in KbT around inf 42.1%
Final simplification37.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))))
(if (or (<= t_0 -5e-135) (not (<= t_0 1e-270)))
(* 0.5 (+ NdChar NaChar))
(/ NdChar (+ 2.0 (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -5e-135) || !(t_0 <= 1e-270)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + (EDonor / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp(((mu + (edonor + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0))
if ((t_0 <= (-5d-135)) .or. (.not. (t_0 <= 1d-270))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (2.0d0 + (edonor / 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 = (NdChar / (Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0));
double tmp;
if ((t_0 <= -5e-135) || !(t_0 <= 1e-270)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + (EDonor / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0 if (t_0 <= -5e-135) or not (t_0 <= 1e-270): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (2.0 + (EDonor / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0))) tmp = 0.0 if ((t_0 <= -5e-135) || !(t_0 <= 1e-270)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp(((mu + (EDonor + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0)); tmp = 0.0; if ((t_0 <= -5e-135) || ~((t_0 <= 1e-270))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (2.0 + (EDonor / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$0, -5e-135], N[Not[LessEqual[t$95$0, 1e-270]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;t\_0 \leq -5 \cdot 10^{-135} \lor \neg \left(t\_0 \leq 10^{-270}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < -5.0000000000000002e-135 or 1e-270 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.7%
distribute-lft-out37.7%
Simplified37.7%
if -5.0000000000000002e-135 < (+.f64 (/.f64 NdChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (neg.f64 (-.f64 (-.f64 (-.f64 Ec Vef) EDonor) mu)) KbT)))) (/.f64 NaChar (+.f64 #s(literal 1 binary64) (exp.f64 (/.f64 (+.f64 (+.f64 (+.f64 Ev Vef) EAccept) (neg.f64 mu)) KbT))))) < 1e-270Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 81.9%
Taylor expanded in EDonor around inf 37.2%
Taylor expanded in EDonor around 0 24.5%
Final simplification33.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0)) (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1.2e-159) (not (<= NdChar 3.1e+179))) (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0)) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef 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) {
double tmp;
if ((NdChar <= -1.2e-159) || !(NdChar <= 3.1e+179)) {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - 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.2d-159)) .or. (.not. (ndchar <= 3.1d+179))) then
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - 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.2e-159) || !(NdChar <= 3.1e+179)) {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.2e-159) or not (NdChar <= 3.1e+179): tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.2e-159) || !(NdChar <= 3.1e+179)) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - 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.2e-159) || ~((NdChar <= 3.1e+179))) tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.2e-159], N[Not[LessEqual[NdChar, 3.1e+179]], $MachinePrecision]], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.2 \cdot 10^{-159} \lor \neg \left(NdChar \leq 3.1 \cdot 10^{+179}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -1.19999999999999999e-159 or 3.1e179 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 73.7%
if -1.19999999999999999e-159 < NdChar < 3.1e179Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 77.1%
Final simplification75.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -5.5e+255)
(+
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
(+ (* -0.25 (/ (* NaChar EAccept) KbT)) (* NaChar 0.5)))
(if (<= KbT 1.65e+218)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(* 0.5 (+ NdChar NaChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.5e+255) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + ((-0.25 * ((NaChar * EAccept) / KbT)) + (NaChar * 0.5));
} else if (KbT <= 1.65e+218) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-5.5d+255)) then
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + (((-0.25d0) * ((nachar * eaccept) / kbt)) + (nachar * 0.5d0))
else if (kbt <= 1.65d+218) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.5e+255) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + ((-0.25 * ((NaChar * EAccept) / KbT)) + (NaChar * 0.5));
} else if (KbT <= 1.65e+218) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -5.5e+255: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + ((-0.25 * ((NaChar * EAccept) / KbT)) + (NaChar * 0.5)) elif KbT <= 1.65e+218: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -5.5e+255) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + Float64(Float64(-0.25 * Float64(Float64(NaChar * EAccept) / KbT)) + Float64(NaChar * 0.5))); elseif (KbT <= 1.65e+218) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -5.5e+255) tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + ((-0.25 * ((NaChar * EAccept) / KbT)) + (NaChar * 0.5)); elseif (KbT <= 1.65e+218) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5.5e+255], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(-0.25 * N[(N[(NaChar * EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.65e+218], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.5 \cdot 10^{+255}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + \left(-0.25 \cdot \frac{NaChar \cdot EAccept}{KbT} + NaChar \cdot 0.5\right)\\
\mathbf{elif}\;KbT \leq 1.65 \cdot 10^{+218}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -5.4999999999999998e255Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 80.0%
Taylor expanded in EAccept around inf 96.0%
Taylor expanded in KbT around inf 90.9%
if -5.4999999999999998e255 < KbT < 1.64999999999999999e218Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 67.0%
if 1.64999999999999999e218 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.1%
distribute-lft-out79.1%
Simplified79.1%
Final simplification69.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2e+40) (not (<= KbT 5.5e+58))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2e+40) || !(KbT <= 5.5e+58)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2d+40)) .or. (.not. (kbt <= 5.5d+58))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (exp((edonor / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2e+40) || !(KbT <= 5.5e+58)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (Math.exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2e+40) or not (KbT <= 5.5e+58): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (math.exp((EDonor / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2e+40) || !(KbT <= 5.5e+58)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2e+40) || ~((KbT <= 5.5e+58))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (exp((EDonor / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2e+40], N[Not[LessEqual[KbT, 5.5e+58]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2 \cdot 10^{+40} \lor \neg \left(KbT \leq 5.5 \cdot 10^{+58}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -2.00000000000000006e40 or 5.4999999999999999e58 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.2%
distribute-lft-out51.2%
Simplified51.2%
if -2.00000000000000006e40 < KbT < 5.4999999999999999e58Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 68.3%
Taylor expanded in EDonor around inf 35.9%
Final simplification42.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -5.8e+98)
(+ (/ NdChar 2.0) (+ (* NaChar 0.5) (* -0.25 (* NaChar (/ Vef KbT)))))
(if (<= KbT 1.3e+59)
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(* 0.5 (+ NdChar NaChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.8e+98) {
tmp = (NdChar / 2.0) + ((NaChar * 0.5) + (-0.25 * (NaChar * (Vef / KbT))));
} else if (KbT <= 1.3e+59) {
tmp = NdChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-5.8d+98)) then
tmp = (ndchar / 2.0d0) + ((nachar * 0.5d0) + ((-0.25d0) * (nachar * (vef / kbt))))
else if (kbt <= 1.3d+59) then
tmp = ndchar / (exp((vef / kbt)) + 1.0d0)
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.8e+98) {
tmp = (NdChar / 2.0) + ((NaChar * 0.5) + (-0.25 * (NaChar * (Vef / KbT))));
} else if (KbT <= 1.3e+59) {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -5.8e+98: tmp = (NdChar / 2.0) + ((NaChar * 0.5) + (-0.25 * (NaChar * (Vef / KbT)))) elif KbT <= 1.3e+59: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -5.8e+98) tmp = Float64(Float64(NdChar / 2.0) + Float64(Float64(NaChar * 0.5) + Float64(-0.25 * Float64(NaChar * Float64(Vef / KbT))))); elseif (KbT <= 1.3e+59) tmp = Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -5.8e+98) tmp = (NdChar / 2.0) + ((NaChar * 0.5) + (-0.25 * (NaChar * (Vef / KbT)))); elseif (KbT <= 1.3e+59) tmp = NdChar / (exp((Vef / KbT)) + 1.0); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5.8e+98], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(N[(NaChar * 0.5), $MachinePrecision] + N[(-0.25 * N[(NaChar * N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.3e+59], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.8 \cdot 10^{+98}:\\
\;\;\;\;\frac{NdChar}{2} + \left(NaChar \cdot 0.5 + -0.25 \cdot \left(NaChar \cdot \frac{Vef}{KbT}\right)\right)\\
\mathbf{elif}\;KbT \leq 1.3 \cdot 10^{+59}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -5.8000000000000002e98Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.0%
Taylor expanded in KbT around inf 45.7%
Taylor expanded in Vef around inf 53.8%
associate-/l*56.7%
Simplified56.7%
if -5.8000000000000002e98 < KbT < 1.3e59Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 66.8%
Taylor expanded in Vef around inf 43.5%
if 1.3e59 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.3%
distribute-lft-out52.3%
Simplified52.3%
Final simplification47.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -8.8e-159) (not (<= NdChar 1.9e+156))) (/ NdChar 2.0) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -8.8e-159) || !(NdChar <= 1.9e+156)) {
tmp = NdChar / 2.0;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-8.8d-159)) .or. (.not. (ndchar <= 1.9d+156))) then
tmp = ndchar / 2.0d0
else
tmp = nachar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -8.8e-159) || !(NdChar <= 1.9e+156)) {
tmp = NdChar / 2.0;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -8.8e-159) or not (NdChar <= 1.9e+156): tmp = NdChar / 2.0 else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -8.8e-159) || !(NdChar <= 1.9e+156)) tmp = Float64(NdChar / 2.0); else tmp = Float64(NaChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -8.8e-159) || ~((NdChar <= 1.9e+156))) tmp = NdChar / 2.0; else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -8.8e-159], N[Not[LessEqual[NdChar, 1.9e+156]], $MachinePrecision]], N[(NdChar / 2.0), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -8.8 \cdot 10^{-159} \lor \neg \left(NdChar \leq 1.9 \cdot 10^{+156}\right):\\
\;\;\;\;\frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -8.8e-159 or 1.90000000000000012e156 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.8%
Taylor expanded in KbT around inf 24.6%
if -8.8e-159 < NdChar < 1.90000000000000012e156Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 26.6%
distribute-lft-out26.6%
Simplified26.6%
Taylor expanded in NaChar around inf 25.4%
*-commutative25.4%
Simplified25.4%
Final simplification25.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.7%
distribute-lft-out27.7%
Simplified27.7%
Final simplification27.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.7%
distribute-lft-out27.7%
Simplified27.7%
Taylor expanded in NaChar around inf 18.4%
*-commutative18.4%
Simplified18.4%
herbie shell --seed 2024191
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:name "Bulmash initializePoisson"
:precision binary64
(+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))