
(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 24 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 (/ (- (- (- (- 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) - 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) - mu}{KbT}}}
\end{array}
Initial program 100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))
(t_1 (/ NaChar (+ 1.0 t_0)))
(t_2 (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))))
(t_3 (+ t_2 t_1))
(t_4 (+ t_2 (* 0.5 NaChar))))
(if (<= t_3 -4e+133)
(+ (* 0.5 NdChar) t_1)
(if (<= t_3 -2e-180)
t_4
(if (<= t_3 5e-88)
(/ NaChar (+ t_0 1.0))
(if (<= t_3 5e+98)
(+ (/ NdChar (+ 2.0 (/ (- (+ (+ mu Vef) EDonor) Ec) KbT))) t_1)
t_4))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = NaChar / (1.0 + t_0);
double t_2 = NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_3 = t_2 + t_1;
double t_4 = t_2 + (0.5 * NaChar);
double tmp;
if (t_3 <= -4e+133) {
tmp = (0.5 * NdChar) + t_1;
} else if (t_3 <= -2e-180) {
tmp = t_4;
} else if (t_3 <= 5e-88) {
tmp = NaChar / (t_0 + 1.0);
} else if (t_3 <= 5e+98) {
tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_1;
} else {
tmp = t_4;
}
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) :: t_4
real(8) :: tmp
t_0 = exp(((((ev + vef) + eaccept) - mu) / kbt))
t_1 = nachar / (1.0d0 + t_0)
t_2 = ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))
t_3 = t_2 + t_1
t_4 = t_2 + (0.5d0 * nachar)
if (t_3 <= (-4d+133)) then
tmp = (0.5d0 * ndchar) + t_1
else if (t_3 <= (-2d-180)) then
tmp = t_4
else if (t_3 <= 5d-88) then
tmp = nachar / (t_0 + 1.0d0)
else if (t_3 <= 5d+98) then
tmp = (ndchar / (2.0d0 + ((((mu + vef) + edonor) - ec) / kbt))) + t_1
else
tmp = t_4
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(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = NaChar / (1.0 + t_0);
double t_2 = NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_3 = t_2 + t_1;
double t_4 = t_2 + (0.5 * NaChar);
double tmp;
if (t_3 <= -4e+133) {
tmp = (0.5 * NdChar) + t_1;
} else if (t_3 <= -2e-180) {
tmp = t_4;
} else if (t_3 <= 5e-88) {
tmp = NaChar / (t_0 + 1.0);
} else if (t_3 <= 5e+98) {
tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_1;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) t_1 = NaChar / (1.0 + t_0) t_2 = NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT))) t_3 = t_2 + t_1 t_4 = t_2 + (0.5 * NaChar) tmp = 0 if t_3 <= -4e+133: tmp = (0.5 * NdChar) + t_1 elif t_3 <= -2e-180: tmp = t_4 elif t_3 <= 5e-88: tmp = NaChar / (t_0 + 1.0) elif t_3 <= 5e+98: tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_1 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) t_1 = Float64(NaChar / Float64(1.0 + t_0)) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) t_3 = Float64(t_2 + t_1) t_4 = Float64(t_2 + Float64(0.5 * NaChar)) tmp = 0.0 if (t_3 <= -4e+133) tmp = Float64(Float64(0.5 * NdChar) + t_1); elseif (t_3 <= -2e-180) tmp = t_4; elseif (t_3 <= 5e-88) tmp = Float64(NaChar / Float64(t_0 + 1.0)); elseif (t_3 <= 5e+98) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Float64(mu + Vef) + EDonor) - Ec) / KbT))) + t_1); else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((((Ev + Vef) + EAccept) - mu) / KbT)); t_1 = NaChar / (1.0 + t_0); t_2 = NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT))); t_3 = t_2 + t_1; t_4 = t_2 + (0.5 * NaChar); tmp = 0.0; if (t_3 <= -4e+133) tmp = (0.5 * NdChar) + t_1; elseif (t_3 <= -2e-180) tmp = t_4; elseif (t_3 <= 5e-88) tmp = NaChar / (t_0 + 1.0); elseif (t_3 <= 5e+98) tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_1; else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + t$95$1), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$2 + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$3, -4e+133], N[(N[(0.5 * NdChar), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[t$95$3, -2e-180], t$95$4, If[LessEqual[t$95$3, 5e-88], N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+98], N[(N[(NdChar / N[(2.0 + N[(N[(N[(N[(mu + Vef), $MachinePrecision] + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], t$95$4]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}\\
t_1 := \frac{NaChar}{1 + t\_0}\\
t_2 := \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}}\\
t_3 := t\_2 + t\_1\\
t_4 := t\_2 + 0.5 \cdot NaChar\\
\mathbf{if}\;t\_3 \leq -4 \cdot 10^{+133}:\\
\;\;\;\;0.5 \cdot NdChar + t\_1\\
\mathbf{elif}\;t\_3 \leq -2 \cdot 10^{-180}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{-88}:\\
\;\;\;\;\frac{NaChar}{t\_0 + 1}\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+98}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{\left(\left(mu + Vef\right) + EDonor\right) - Ec}{KbT}} + t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_4\\
\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))))) < -4.0000000000000001e133Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6483.5
Applied rewrites83.5%
if -4.0000000000000001e133 < (+.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))))) < -2e-180 or 4.9999999999999998e98 < (+.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%
Taylor expanded in KbT around inf
lower-*.f6471.0
Applied rewrites71.0%
if -2e-180 < (+.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.00000000000000009e-88Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6481.3
Applied rewrites81.3%
if 5.00000000000000009e-88 < (+.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.9999999999999998e98Initial program 100.0%
Taylor expanded in KbT around inf
associate--l+N/A
div-add-revN/A
div-addN/A
div-subN/A
lower-+.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
+-commutativeN/A
lower-+.f6482.6
Applied rewrites82.6%
Final simplification77.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))))
(t_1 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))
(t_2 (/ NaChar (+ 1.0 t_1)))
(t_3 (+ t_0 t_2)))
(if (<= t_3 -1e-232)
(+
(/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(if (<= t_3 5e-88)
(/ NaChar (+ t_1 1.0))
(if (<= t_3 5e+98)
(+ (/ NdChar (+ 2.0 (/ (- (+ (+ mu Vef) EDonor) Ec) KbT))) t_2)
(+ t_0 (* 0.5 NaChar)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_1 = exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_2 = NaChar / (1.0 + t_1);
double t_3 = t_0 + t_2;
double tmp;
if (t_3 <= -1e-232) {
tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (t_3 <= 5e-88) {
tmp = NaChar / (t_1 + 1.0);
} else if (t_3 <= 5e+98) {
tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_2;
} else {
tmp = t_0 + (0.5 * 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) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))
t_1 = exp(((((ev + vef) + eaccept) - mu) / kbt))
t_2 = nachar / (1.0d0 + t_1)
t_3 = t_0 + t_2
if (t_3 <= (-1d-232)) then
tmp = (ndchar / (exp((-ec / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else if (t_3 <= 5d-88) then
tmp = nachar / (t_1 + 1.0d0)
else if (t_3 <= 5d+98) then
tmp = (ndchar / (2.0d0 + ((((mu + vef) + edonor) - ec) / kbt))) + t_2
else
tmp = t_0 + (0.5d0 * 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 t_0 = NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_1 = Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_2 = NaChar / (1.0 + t_1);
double t_3 = t_0 + t_2;
double tmp;
if (t_3 <= -1e-232) {
tmp = (NdChar / (Math.exp((-Ec / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (t_3 <= 5e-88) {
tmp = NaChar / (t_1 + 1.0);
} else if (t_3 <= 5e+98) {
tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_2;
} else {
tmp = t_0 + (0.5 * NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT))) t_1 = math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) t_2 = NaChar / (1.0 + t_1) t_3 = t_0 + t_2 tmp = 0 if t_3 <= -1e-232: tmp = (NdChar / (math.exp((-Ec / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) elif t_3 <= 5e-88: tmp = NaChar / (t_1 + 1.0) elif t_3 <= 5e+98: tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_2 else: tmp = t_0 + (0.5 * NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) t_1 = exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) t_2 = Float64(NaChar / Float64(1.0 + t_1)) t_3 = Float64(t_0 + t_2) tmp = 0.0 if (t_3 <= -1e-232) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); elseif (t_3 <= 5e-88) tmp = Float64(NaChar / Float64(t_1 + 1.0)); elseif (t_3 <= 5e+98) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(Float64(mu + Vef) + EDonor) - Ec) / KbT))) + t_2); else tmp = Float64(t_0 + Float64(0.5 * NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT))); t_1 = exp(((((Ev + Vef) + EAccept) - mu) / KbT)); t_2 = NaChar / (1.0 + t_1); t_3 = t_0 + t_2; tmp = 0.0; if (t_3 <= -1e-232) tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); elseif (t_3 <= 5e-88) tmp = NaChar / (t_1 + 1.0); elseif (t_3 <= 5e+98) tmp = (NdChar / (2.0 + ((((mu + Vef) + EDonor) - Ec) / KbT))) + t_2; else tmp = t_0 + (0.5 * NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 + t$95$2), $MachinePrecision]}, If[LessEqual[t$95$3, -1e-232], N[(N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e-88], N[(NaChar / N[(t$95$1 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+98], N[(N[(NdChar / N[(2.0 + N[(N[(N[(N[(mu + Vef), $MachinePrecision] + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision], N[(t$95$0 + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}}\\
t_1 := e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}\\
t_2 := \frac{NaChar}{1 + t\_1}\\
t_3 := t\_0 + t\_2\\
\mathbf{if}\;t\_3 \leq -1 \cdot 10^{-232}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{-88}:\\
\;\;\;\;\frac{NaChar}{t\_1 + 1}\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+98}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{\left(\left(mu + Vef\right) + EDonor\right) - Ec}{KbT}} + t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + 0.5 \cdot NaChar\\
\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))))) < -1.00000000000000002e-232Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites84.6%
Taylor expanded in Vef around 0
Applied rewrites75.8%
Taylor expanded in EDonor around 0
Applied rewrites70.4%
if -1.00000000000000002e-232 < (+.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.00000000000000009e-88Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6482.0
Applied rewrites82.0%
if 5.00000000000000009e-88 < (+.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.9999999999999998e98Initial program 100.0%
Taylor expanded in KbT around inf
associate--l+N/A
div-add-revN/A
div-addN/A
div-subN/A
lower-+.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
+-commutativeN/A
lower-+.f6482.6
Applied rewrites82.6%
if 4.9999999999999998e98 < (+.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%
Taylor expanded in KbT around inf
lower-*.f6476.3
Applied rewrites76.3%
Final simplification76.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))))
(t_1 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))
(t_2 (/ NaChar (+ 1.0 t_1)))
(t_3 (+ t_0 t_2)))
(if (<= t_3 -4e+133)
(+ (* 0.5 NdChar) t_2)
(if (or (<= t_3 -2e-180) (not (<= t_3 5e+79)))
(+ t_0 (* 0.5 NaChar))
(/ NaChar (+ t_1 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 / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_1 = exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_2 = NaChar / (1.0 + t_1);
double t_3 = t_0 + t_2;
double tmp;
if (t_3 <= -4e+133) {
tmp = (0.5 * NdChar) + t_2;
} else if ((t_3 <= -2e-180) || !(t_3 <= 5e+79)) {
tmp = t_0 + (0.5 * NaChar);
} else {
tmp = NaChar / (t_1 + 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) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))
t_1 = exp(((((ev + vef) + eaccept) - mu) / kbt))
t_2 = nachar / (1.0d0 + t_1)
t_3 = t_0 + t_2
if (t_3 <= (-4d+133)) then
tmp = (0.5d0 * ndchar) + t_2
else if ((t_3 <= (-2d-180)) .or. (.not. (t_3 <= 5d+79))) then
tmp = t_0 + (0.5d0 * nachar)
else
tmp = nachar / (t_1 + 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 / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)));
double t_1 = Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_2 = NaChar / (1.0 + t_1);
double t_3 = t_0 + t_2;
double tmp;
if (t_3 <= -4e+133) {
tmp = (0.5 * NdChar) + t_2;
} else if ((t_3 <= -2e-180) || !(t_3 <= 5e+79)) {
tmp = t_0 + (0.5 * NaChar);
} else {
tmp = NaChar / (t_1 + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT))) t_1 = math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) t_2 = NaChar / (1.0 + t_1) t_3 = t_0 + t_2 tmp = 0 if t_3 <= -4e+133: tmp = (0.5 * NdChar) + t_2 elif (t_3 <= -2e-180) or not (t_3 <= 5e+79): tmp = t_0 + (0.5 * NaChar) else: tmp = NaChar / (t_1 + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) t_1 = exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) t_2 = Float64(NaChar / Float64(1.0 + t_1)) t_3 = Float64(t_0 + t_2) tmp = 0.0 if (t_3 <= -4e+133) tmp = Float64(Float64(0.5 * NdChar) + t_2); elseif ((t_3 <= -2e-180) || !(t_3 <= 5e+79)) tmp = Float64(t_0 + Float64(0.5 * NaChar)); else tmp = Float64(NaChar / Float64(t_1 + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT))); t_1 = exp(((((Ev + Vef) + EAccept) - mu) / KbT)); t_2 = NaChar / (1.0 + t_1); t_3 = t_0 + t_2; tmp = 0.0; if (t_3 <= -4e+133) tmp = (0.5 * NdChar) + t_2; elseif ((t_3 <= -2e-180) || ~((t_3 <= 5e+79))) tmp = t_0 + (0.5 * NaChar); else tmp = NaChar / (t_1 + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 + t$95$2), $MachinePrecision]}, If[LessEqual[t$95$3, -4e+133], N[(N[(0.5 * NdChar), $MachinePrecision] + t$95$2), $MachinePrecision], If[Or[LessEqual[t$95$3, -2e-180], N[Not[LessEqual[t$95$3, 5e+79]], $MachinePrecision]], N[(t$95$0 + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(t$95$1 + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}}\\
t_1 := e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}\\
t_2 := \frac{NaChar}{1 + t\_1}\\
t_3 := t\_0 + t\_2\\
\mathbf{if}\;t\_3 \leq -4 \cdot 10^{+133}:\\
\;\;\;\;0.5 \cdot NdChar + t\_2\\
\mathbf{elif}\;t\_3 \leq -2 \cdot 10^{-180} \lor \neg \left(t\_3 \leq 5 \cdot 10^{+79}\right):\\
\;\;\;\;t\_0 + 0.5 \cdot NaChar\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_1 + 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))))) < -4.0000000000000001e133Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6483.5
Applied rewrites83.5%
if -4.0000000000000001e133 < (+.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))))) < -2e-180 or 5e79 < (+.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%
Taylor expanded in KbT around inf
lower-*.f6470.7
Applied rewrites70.7%
if -2e-180 < (+.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))))) < 5e79Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6476.3
Applied rewrites76.3%
Final simplification75.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))
(t_1 (/ NaChar (+ 1.0 t_0)))
(t_2 (+ (* 0.5 NdChar) t_1))
(t_3
(+
(/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT))))
t_1)))
(if (<= t_3 -10.0)
t_2
(if (<= t_3 -2e-180)
(+ (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))) (* 0.5 NaChar))
(if (<= t_3 1e-94) (/ NaChar (+ t_0 1.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 = exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = NaChar / (1.0 + t_0);
double t_2 = (0.5 * NdChar) + t_1;
double t_3 = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + t_1;
double tmp;
if (t_3 <= -10.0) {
tmp = t_2;
} else if (t_3 <= -2e-180) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (0.5 * NaChar);
} else if (t_3 <= 1e-94) {
tmp = NaChar / (t_0 + 1.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) :: t_3
real(8) :: tmp
t_0 = exp(((((ev + vef) + eaccept) - mu) / kbt))
t_1 = nachar / (1.0d0 + t_0)
t_2 = (0.5d0 * ndchar) + t_1
t_3 = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + t_1
if (t_3 <= (-10.0d0)) then
tmp = t_2
else if (t_3 <= (-2d-180)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (0.5d0 * nachar)
else if (t_3 <= 1d-94) then
tmp = nachar / (t_0 + 1.0d0)
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 = Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = NaChar / (1.0 + t_0);
double t_2 = (0.5 * NdChar) + t_1;
double t_3 = (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + t_1;
double tmp;
if (t_3 <= -10.0) {
tmp = t_2;
} else if (t_3 <= -2e-180) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (0.5 * NaChar);
} else if (t_3 <= 1e-94) {
tmp = NaChar / (t_0 + 1.0);
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) t_1 = NaChar / (1.0 + t_0) t_2 = (0.5 * NdChar) + t_1 t_3 = (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + t_1 tmp = 0 if t_3 <= -10.0: tmp = t_2 elif t_3 <= -2e-180: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (0.5 * NaChar) elif t_3 <= 1e-94: tmp = NaChar / (t_0 + 1.0) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) t_1 = Float64(NaChar / Float64(1.0 + t_0)) t_2 = Float64(Float64(0.5 * NdChar) + t_1) t_3 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + t_1) tmp = 0.0 if (t_3 <= -10.0) tmp = t_2; elseif (t_3 <= -2e-180) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(0.5 * NaChar)); elseif (t_3 <= 1e-94) tmp = Float64(NaChar / Float64(t_0 + 1.0)); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((((Ev + Vef) + EAccept) - mu) / KbT)); t_1 = NaChar / (1.0 + t_0); t_2 = (0.5 * NdChar) + t_1; t_3 = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + t_1; tmp = 0.0; if (t_3 <= -10.0) tmp = t_2; elseif (t_3 <= -2e-180) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (0.5 * NaChar); elseif (t_3 <= 1e-94) tmp = NaChar / (t_0 + 1.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[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(0.5 * NdChar), $MachinePrecision] + t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[t$95$3, -10.0], t$95$2, If[LessEqual[t$95$3, -2e-180], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 * NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 1e-94], N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}\\
t_1 := \frac{NaChar}{1 + t\_0}\\
t_2 := 0.5 \cdot NdChar + t\_1\\
t_3 := \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + t\_1\\
\mathbf{if}\;t\_3 \leq -10:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_3 \leq -2 \cdot 10^{-180}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + 0.5 \cdot NaChar\\
\mathbf{elif}\;t\_3 \leq 10^{-94}:\\
\;\;\;\;\frac{NaChar}{t\_0 + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_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))))) < -10 or 9.9999999999999996e-95 < (+.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%
Taylor expanded in KbT around inf
lower-*.f6470.2
Applied rewrites70.2%
if -10 < (+.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))))) < -2e-180Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6477.3
Applied rewrites77.3%
Taylor expanded in EDonor around 0
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f6468.3
Applied rewrites68.3%
if -2e-180 < (+.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.9999999999999996e-95Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6482.0
Applied rewrites82.0%
Final simplification73.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT))))
(/ NaChar (+ 1.0 t_0)))))
(if (or (<= t_1 -1e-304) (not (<= t_1 2e-228)))
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(/ NaChar (+ t_0 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + t_0));
double tmp;
if ((t_1 <= -1e-304) || !(t_1 <= 2e-228)) {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else {
tmp = NaChar / (t_0 + 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) :: t_1
real(8) :: tmp
t_0 = exp(((((ev + vef) + eaccept) - mu) / kbt))
t_1 = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + t_0))
if ((t_1 <= (-1d-304)) .or. (.not. (t_1 <= 2d-228))) then
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else
tmp = nachar / (t_0 + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + t_0));
double tmp;
if ((t_1 <= -1e-304) || !(t_1 <= 2e-228)) {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else {
tmp = NaChar / (t_0 + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) t_1 = (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + t_0)) tmp = 0 if (t_1 <= -1e-304) or not (t_1 <= 2e-228): tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) else: tmp = NaChar / (t_0 + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + t_0))) tmp = 0.0 if ((t_1 <= -1e-304) || !(t_1 <= 2e-228)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); else tmp = Float64(NaChar / Float64(t_0 + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((((Ev + Vef) + EAccept) - mu) / KbT)); t_1 = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + t_0)); tmp = 0.0; if ((t_1 <= -1e-304) || ~((t_1 <= 2e-228))) tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); else tmp = NaChar / (t_0 + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = 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 + t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, -1e-304], N[Not[LessEqual[t$95$1, 2e-228]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + t\_0}\\
\mathbf{if}\;t\_1 \leq -1 \cdot 10^{-304} \lor \neg \left(t\_1 \leq 2 \cdot 10^{-228}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{t\_0 + 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))))) < -9.99999999999999971e-305 or 2.00000000000000007e-228 < (+.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%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites86.7%
Taylor expanded in Vef around 0
Applied rewrites76.4%
if -9.99999999999999971e-305 < (+.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.00000000000000007e-228Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6493.9
Applied rewrites93.9%
Final simplification80.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))))))
(if (or (<= t_0 -1e-304) (not (<= t_0 5e-267)))
(* 0.5 (+ NaChar NdChar))
(/ NaChar (+ 2.0 (/ (+ EAccept (+ Ev Vef)) 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 / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT))));
double tmp;
if ((t_0 <= -1e-304) || !(t_0 <= 5e-267)) {
tmp = 0.5 * (NaChar + NdChar);
} else {
tmp = NaChar / (2.0 + ((EAccept + (Ev + Vef)) / 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 / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) - mu) / kbt))))
if ((t_0 <= (-1d-304)) .or. (.not. (t_0 <= 5d-267))) then
tmp = 0.5d0 * (nachar + ndchar)
else
tmp = nachar / (2.0d0 + ((eaccept + (ev + vef)) / 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 / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT))));
double tmp;
if ((t_0 <= -1e-304) || !(t_0 <= 5e-267)) {
tmp = 0.5 * (NaChar + NdChar);
} else {
tmp = NaChar / (2.0 + ((EAccept + (Ev + Vef)) / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)))) tmp = 0 if (t_0 <= -1e-304) or not (t_0 <= 5e-267): tmp = 0.5 * (NaChar + NdChar) else: tmp = NaChar / (2.0 + ((EAccept + (Ev + Vef)) / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 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) - mu) / KbT))))) tmp = 0.0 if ((t_0 <= -1e-304) || !(t_0 <= 5e-267)) tmp = Float64(0.5 * Float64(NaChar + NdChar)); else tmp = Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept + Float64(Ev + Vef)) / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT)))); tmp = 0.0; if ((t_0 <= -1e-304) || ~((t_0 <= 5e-267))) tmp = 0.5 * (NaChar + NdChar); else tmp = NaChar / (2.0 + ((EAccept + (Ev + Vef)) / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = 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]}, If[Or[LessEqual[t$95$0, -1e-304], N[Not[LessEqual[t$95$0, 5e-267]], $MachinePrecision]], N[(0.5 * N[(NaChar + NdChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(2.0 + N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \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) - mu}{KbT}}}\\
\mathbf{if}\;t\_0 \leq -1 \cdot 10^{-304} \lor \neg \left(t\_0 \leq 5 \cdot 10^{-267}\right):\\
\;\;\;\;0.5 \cdot \left(NaChar + NdChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{EAccept + \left(Ev + Vef\right)}{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))))) < -9.99999999999999971e-305 or 4.9999999999999999e-267 < (+.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%
Taylor expanded in KbT around inf
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6436.9
Applied rewrites36.9%
if -9.99999999999999971e-305 < (+.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.9999999999999999e-267Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites82.1%
Taylor expanded in NdChar around 0
Applied rewrites89.6%
Taylor expanded in KbT around inf
Applied rewrites47.3%
Final simplification39.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))))
(t_1 (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)))
(if (<= Vef -1.06e+127)
t_1
(if (<= Vef -6.2e-186)
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(if (<= Vef 3.1e-29)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_0)
(if (<= Vef 3.5e+114)
(+
(/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -1.06e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 3.1e-29) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0;
} else if (Vef <= 3.5e+114) {
tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((((ev + vef) + eaccept) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
if (vef <= (-1.06d+127)) then
tmp = t_1
else if (vef <= (-6.2d-186)) then
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else if (vef <= 3.1d-29) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_0
else if (vef <= 3.5d+114) then
tmp = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -1.06e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 3.1e-29) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
} else if (Vef <= 3.5e+114) {
tmp = (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 tmp = 0 if Vef <= -1.06e+127: tmp = t_1 elif Vef <= -6.2e-186: tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) elif Vef <= 3.1e-29: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 elif Vef <= 3.5e+114: tmp = (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0) tmp = 0.0 if (Vef <= -1.06e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); elseif (Vef <= 3.1e-29) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0); elseif (Vef <= 3.5e+114) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; tmp = 0.0; if (Vef <= -1.06e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); elseif (Vef <= 3.1e-29) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; elseif (Vef <= 3.5e+114) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -1.06e+127], t$95$1, If[LessEqual[Vef, -6.2e-186], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.1e-29], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 3.5e+114], 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[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{if}\;Vef \leq -1.06 \cdot 10^{+127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -6.2 \cdot 10^{-186}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 3.1 \cdot 10^{-29}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_0\\
\mathbf{elif}\;Vef \leq 3.5 \cdot 10^{+114}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.06000000000000006e127 or 3.5000000000000001e114 < Vef Initial program 100.0%
Taylor expanded in Vef around inf
lower-/.f6488.8
Applied rewrites88.8%
if -1.06000000000000006e127 < Vef < -6.20000000000000018e-186Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites93.6%
Taylor expanded in Vef around 0
Applied rewrites84.1%
if -6.20000000000000018e-186 < Vef < 3.10000000000000026e-29Initial program 100.0%
Taylor expanded in EDonor around inf
lower-/.f6486.5
Applied rewrites86.5%
if 3.10000000000000026e-29 < Vef < 3.5000000000000001e114Initial program 99.9%
Taylor expanded in Ev around inf
lower-/.f6495.6
Applied rewrites95.6%
Final simplification87.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)))))
(t_1 (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)))
(if (<= Vef -1.06e+127)
t_1
(if (<= Vef -6.2e-186)
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(if (<= Vef 1.4e-163)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) t_0)
(if (<= Vef 1.08e+114)
(+
(/ NdChar (+ (exp (/ (- (+ mu EDonor) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -1.06e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.4e-163) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0;
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((((ev + vef) + eaccept) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
if (vef <= (-1.06d+127)) then
tmp = t_1
else if (vef <= (-6.2d-186)) then
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else if (vef <= 1.4d-163) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + t_0
else if (vef <= 1.08d+114) then
tmp = (ndchar / (exp((((mu + edonor) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -1.06e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.4e-163) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (Math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 tmp = 0 if Vef <= -1.06e+127: tmp = t_1 elif Vef <= -6.2e-186: tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) elif Vef <= 1.4e-163: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 elif Vef <= 1.08e+114: tmp = (NdChar / (math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0) tmp = 0.0 if (Vef <= -1.06e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); elseif (Vef <= 1.4e-163) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0); elseif (Vef <= 1.08e+114) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + EDonor) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; tmp = 0.0; if (Vef <= -1.06e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); elseif (Vef <= 1.4e-163) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; elseif (Vef <= 1.08e+114) tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -1.06e+127], t$95$1, If[LessEqual[Vef, -6.2e-186], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.4e-163], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.08e+114], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(mu + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{if}\;Vef \leq -1.06 \cdot 10^{+127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -6.2 \cdot 10^{-186}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.4 \cdot 10^{-163}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_0\\
\mathbf{elif}\;Vef \leq 1.08 \cdot 10^{+114}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + EDonor\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.06000000000000006e127 or 1.08000000000000004e114 < Vef Initial program 100.0%
Taylor expanded in Vef around inf
lower-/.f6488.8
Applied rewrites88.8%
if -1.06000000000000006e127 < Vef < -6.20000000000000018e-186Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites93.6%
Taylor expanded in Vef around 0
Applied rewrites84.1%
if -6.20000000000000018e-186 < Vef < 1.4e-163Initial program 100.0%
Taylor expanded in EDonor around inf
lower-/.f6490.2
Applied rewrites90.2%
if 1.4e-163 < Vef < 1.08000000000000004e114Initial program 100.0%
Taylor expanded in Vef around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites95.6%
Taylor expanded in EAccept around inf
Applied rewrites80.9%
Final simplification86.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (+ Ev Vef) EAccept))
(t_1
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ t_0 KbT)) 1.0)))))
(if (<= Vef -4.5e+127)
t_1
(if (<= Vef -6.2e-186)
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(if (<= Vef 1.4e-163)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- t_0 mu) KbT)))))
(if (<= Vef 1.08e+114)
(+
(/ NdChar (+ (exp (/ (- (+ mu EDonor) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (Ev + Vef) + EAccept;
double t_1 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((t_0 / KbT)) + 1.0));
double tmp;
if (Vef <= -4.5e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.4e-163) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((t_0 - mu) / KbT))));
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ev + vef) + eaccept
t_1 = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp((t_0 / kbt)) + 1.0d0))
if (vef <= (-4.5d+127)) then
tmp = t_1
else if (vef <= (-6.2d-186)) then
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else if (vef <= 1.4d-163) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp(((t_0 - mu) / kbt))))
else if (vef <= 1.08d+114) then
tmp = (ndchar / (exp((((mu + edonor) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (Ev + Vef) + EAccept;
double t_1 = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp((t_0 / KbT)) + 1.0));
double tmp;
if (Vef <= -4.5e+127) {
tmp = t_1;
} else if (Vef <= -6.2e-186) {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.4e-163) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp(((t_0 - mu) / KbT))));
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (Math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Ev + Vef) + EAccept t_1 = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp((t_0 / KbT)) + 1.0)) tmp = 0 if Vef <= -4.5e+127: tmp = t_1 elif Vef <= -6.2e-186: tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) elif Vef <= 1.4e-163: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp(((t_0 - mu) / KbT)))) elif Vef <= 1.08e+114: tmp = (NdChar / (math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Ev + Vef) + EAccept) t_1 = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(t_0 / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -4.5e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); elseif (Vef <= 1.4e-163) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(t_0 - mu) / KbT))))); elseif (Vef <= 1.08e+114) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + EDonor) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Ev + Vef) + EAccept; t_1 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((t_0 / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -4.5e+127) tmp = t_1; elseif (Vef <= -6.2e-186) tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); elseif (Vef <= 1.4e-163) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp(((t_0 - mu) / KbT)))); elseif (Vef <= 1.08e+114) tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(t$95$0 / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.5e+127], t$95$1, If[LessEqual[Vef, -6.2e-186], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.4e-163], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(t$95$0 - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.08e+114], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(mu + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(Ev + Vef\right) + EAccept\\
t_1 := \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{t\_0}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -4.5 \cdot 10^{+127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -6.2 \cdot 10^{-186}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.4 \cdot 10^{-163}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{t\_0 - mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.08 \cdot 10^{+114}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + EDonor\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -4.50000000000000034e127 or 1.08000000000000004e114 < Vef Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites88.7%
Taylor expanded in Vef around inf
Applied rewrites82.5%
if -4.50000000000000034e127 < Vef < -6.20000000000000018e-186Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites93.6%
Taylor expanded in Vef around 0
Applied rewrites84.1%
if -6.20000000000000018e-186 < Vef < 1.4e-163Initial program 100.0%
Taylor expanded in EDonor around inf
lower-/.f6490.2
Applied rewrites90.2%
if 1.4e-163 < Vef < 1.08000000000000004e114Initial program 100.0%
Taylor expanded in Vef around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites95.6%
Taylor expanded in EAccept around inf
Applied rewrites80.9%
Final simplification84.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= mu -9.2e+29) (not (<= mu 1.9e+192)))
(+
(/ NdChar (+ (exp (/ (- (+ mu EDonor) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ EAccept Ev) mu) KbT)) 1.0)))
(+
(/ NdChar (+ (exp (/ (- (+ EDonor Vef) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ (+ Ev Vef) EAccept) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -9.2e+29) || !(mu <= 1.9e+192)) {
tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
} else {
tmp = (NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((mu <= (-9.2d+29)) .or. (.not. (mu <= 1.9d+192))) then
tmp = (ndchar / (exp((((mu + edonor) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((((eaccept + ev) - mu) / kbt)) + 1.0d0))
else
tmp = (ndchar / (exp((((edonor + vef) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((((ev + vef) + eaccept) / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -9.2e+29) || !(mu <= 1.9e+192)) {
tmp = (NdChar / (Math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0));
} else {
tmp = (NdChar / (Math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (mu <= -9.2e+29) or not (mu <= 1.9e+192): tmp = (NdChar / (math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((((EAccept + Ev) - mu) / KbT)) + 1.0)) else: tmp = (NdChar / (math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((mu <= -9.2e+29) || !(mu <= 1.9e+192)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + EDonor) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Ev) - mu) / KbT)) + 1.0))); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Ev + Vef) + EAccept) / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((mu <= -9.2e+29) || ~((mu <= 1.9e+192))) tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((((EAccept + Ev) - mu) / KbT)) + 1.0)); else tmp = (NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[mu, -9.2e+29], N[Not[LessEqual[mu, 1.9e+192]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(mu + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / 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], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -9.2 \cdot 10^{+29} \lor \neg \left(mu \leq 1.9 \cdot 10^{+192}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + EDonor\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(EAccept + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(Ev + Vef\right) + EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if mu < -9.2000000000000004e29 or 1.9e192 < mu Initial program 100.0%
Taylor expanded in Vef around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites93.3%
if -9.2000000000000004e29 < mu < 1.9e192Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites99.4%
Final simplification97.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (+ Ev Vef) EAccept)))
(if (or (<= mu -6e+81) (not (<= mu 1.08e+193)))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- t_0 mu) KbT)))))
(+
(/ NdChar (+ (exp (/ (- (+ EDonor Vef) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ t_0 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 = (Ev + Vef) + EAccept;
double tmp;
if ((mu <= -6e+81) || !(mu <= 1.08e+193)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(((t_0 - mu) / KbT))));
} else {
tmp = (NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((t_0 / 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 = (ev + vef) + eaccept
if ((mu <= (-6d+81)) .or. (.not. (mu <= 1.08d+193))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(((t_0 - mu) / kbt))))
else
tmp = (ndchar / (exp((((edonor + vef) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((t_0 / 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 = (Ev + Vef) + EAccept;
double tmp;
if ((mu <= -6e+81) || !(mu <= 1.08e+193)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(((t_0 - mu) / KbT))));
} else {
tmp = (NdChar / (Math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((t_0 / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Ev + Vef) + EAccept tmp = 0 if (mu <= -6e+81) or not (mu <= 1.08e+193): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(((t_0 - mu) / KbT)))) else: tmp = (NdChar / (math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((t_0 / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Ev + Vef) + EAccept) tmp = 0.0 if ((mu <= -6e+81) || !(mu <= 1.08e+193)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(t_0 - mu) / KbT))))); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(t_0 / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Ev + Vef) + EAccept; tmp = 0.0; if ((mu <= -6e+81) || ~((mu <= 1.08e+193))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(((t_0 - mu) / KbT)))); else tmp = (NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((t_0 / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision]}, If[Or[LessEqual[mu, -6e+81], N[Not[LessEqual[mu, 1.08e+193]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(t$95$0 - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(t$95$0 / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(Ev + Vef\right) + EAccept\\
\mathbf{if}\;mu \leq -6 \cdot 10^{+81} \lor \neg \left(mu \leq 1.08 \cdot 10^{+193}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{t\_0 - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{t\_0}{KbT}} + 1}\\
\end{array}
\end{array}
if mu < -5.99999999999999995e81 or 1.07999999999999996e193 < mu Initial program 100.0%
Taylor expanded in mu around inf
lower-/.f6486.4
Applied rewrites86.4%
if -5.99999999999999995e81 < mu < 1.07999999999999996e193Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites98.5%
Final simplification95.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ (+ Ev Vef) EAccept) KbT)) 1.0)))))
(if (<= Vef -4.5e+127)
t_0
(if (<= Vef 1e-162)
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))
(if (<= Vef 1.08e+114)
(+
(/ NdChar (+ (exp (/ (- (+ mu EDonor) Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
double tmp;
if (Vef <= -4.5e+127) {
tmp = t_0;
} else if (Vef <= 1e-162) {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp((((ev + vef) + eaccept) / kbt)) + 1.0d0))
if (vef <= (-4.5d+127)) then
tmp = t_0
else if (vef <= 1d-162) then
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / kbt)) + 1.0d0))
else if (vef <= 1.08d+114) then
tmp = (ndchar / (exp((((mu + edonor) - ec) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
double tmp;
if (Vef <= -4.5e+127) {
tmp = t_0;
} else if (Vef <= 1e-162) {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
} else if (Vef <= 1.08e+114) {
tmp = (NdChar / (Math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)) tmp = 0 if Vef <= -4.5e+127: tmp = t_0 elif Vef <= 1e-162: tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) elif Vef <= 1.08e+114: tmp = (NdChar / (math.exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Ev + Vef) + EAccept) / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -4.5e+127) tmp = t_0; elseif (Vef <= 1e-162) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); elseif (Vef <= 1.08e+114) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + EDonor) - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -4.5e+127) tmp = t_0; elseif (Vef <= 1e-162) tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); elseif (Vef <= 1.08e+114) tmp = (NdChar / (exp((((mu + EDonor) - Ec) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.5e+127], t$95$0, If[LessEqual[Vef, 1e-162], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.08e+114], N[(N[(NdChar / N[(N[Exp[N[(N[(N[(mu + EDonor), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(Ev + Vef\right) + EAccept}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -4.5 \cdot 10^{+127}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 10^{-162}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.08 \cdot 10^{+114}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + EDonor\right) - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -4.50000000000000034e127 or 1.08000000000000004e114 < Vef Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites88.7%
Taylor expanded in Vef around inf
Applied rewrites82.5%
if -4.50000000000000034e127 < Vef < 9.99999999999999954e-163Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites86.8%
Taylor expanded in Vef around 0
Applied rewrites82.1%
if 9.99999999999999954e-163 < Vef < 1.08000000000000004e114Initial program 100.0%
Taylor expanded in Vef around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites95.6%
Taylor expanded in EAccept around inf
Applied rewrites80.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -4.5e+127) (not (<= Vef 1.08e+114)))
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ (+ Ev Vef) EAccept) KbT)) 1.0)))
(+
(/ NdChar (+ (exp (/ (- EDonor Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -4.5e+127) || !(Vef <= 1.08e+114)) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
} else {
tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / 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 ((vef <= (-4.5d+127)) .or. (.not. (vef <= 1.08d+114))) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp((((ev + vef) + eaccept) / kbt)) + 1.0d0))
else
tmp = (ndchar / (exp(((edonor - ec) / kbt)) + 1.0d0)) + (nachar / (exp(((eaccept + ev) / 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 ((Vef <= -4.5e+127) || !(Vef <= 1.08e+114)) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0));
} else {
tmp = (NdChar / (Math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -4.5e+127) or not (Vef <= 1.08e+114): tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)) else: tmp = (NdChar / (math.exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -4.5e+127) || !(Vef <= 1.08e+114)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Ev + Vef) + EAccept) / KbT)) + 1.0))); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -4.5e+127) || ~((Vef <= 1.08e+114))) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Ev + Vef) + EAccept) / KbT)) + 1.0)); else tmp = (NdChar / (exp(((EDonor - Ec) / KbT)) + 1.0)) + (NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -4.5e+127], N[Not[LessEqual[Vef, 1.08e+114]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -4.5 \cdot 10^{+127} \lor \neg \left(Vef \leq 1.08 \cdot 10^{+114}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(Ev + Vef\right) + EAccept}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\end{array}
\end{array}
if Vef < -4.50000000000000034e127 or 1.08000000000000004e114 < Vef Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites88.7%
Taylor expanded in Vef around inf
Applied rewrites82.5%
if -4.50000000000000034e127 < Vef < 1.08000000000000004e114Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites84.0%
Taylor expanded in Vef around 0
Applied rewrites79.6%
Final simplification80.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT 4.5e+22)
(/ NaChar (+ (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)) 1.0))
(if (<= KbT 1.25e+199)
(/ NdChar (+ (exp (/ (- (+ EDonor Vef) Ec) KbT)) 1.0))
(+ (* 0.5 NdChar) (/ NaChar (+ 1.0 (exp (/ (- (+ Ev Vef) 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 <= 4.5e+22) {
tmp = NaChar / (exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0);
} else if (KbT <= 1.25e+199) {
tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (1.0 + exp((((Ev + Vef) - 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 <= 4.5d+22) then
tmp = nachar / (exp(((((ev + vef) + eaccept) - mu) / kbt)) + 1.0d0)
else if (kbt <= 1.25d+199) then
tmp = ndchar / (exp((((edonor + vef) - ec) / kbt)) + 1.0d0)
else
tmp = (0.5d0 * ndchar) + (nachar / (1.0d0 + exp((((ev + vef) - 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 <= 4.5e+22) {
tmp = NaChar / (Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0);
} else if (KbT <= 1.25e+199) {
tmp = NdChar / (Math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (1.0 + Math.exp((((Ev + Vef) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 4.5e+22: tmp = NaChar / (math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0) elif KbT <= 1.25e+199: tmp = NdChar / (math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0) else: tmp = (0.5 * NdChar) + (NaChar / (1.0 + math.exp((((Ev + Vef) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 4.5e+22) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) + 1.0)); elseif (KbT <= 1.25e+199) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT)) + 1.0)); else tmp = Float64(Float64(0.5 * NdChar) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Ev + Vef) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 4.5e+22) tmp = NaChar / (exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0); elseif (KbT <= 1.25e+199) tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0); else tmp = (0.5 * NdChar) + (NaChar / (1.0 + exp((((Ev + Vef) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 4.5e+22], N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.25e+199], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 * NdChar), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Ev + Vef), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 4.5 \cdot 10^{+22}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;KbT \leq 1.25 \cdot 10^{+199}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot NdChar + \frac{NaChar}{1 + e^{\frac{\left(Ev + Vef\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if KbT < 4.4999999999999998e22Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6468.8
Applied rewrites68.8%
if 4.4999999999999998e22 < KbT < 1.25e199Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites89.3%
Taylor expanded in NdChar around 0
Applied rewrites41.5%
Taylor expanded in NdChar around inf
Applied rewrites72.2%
if 1.25e199 < KbT Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6491.0
Applied rewrites91.0%
Taylor expanded in EAccept around 0
lower-/.f64N/A
lower--.f64N/A
lower-+.f6487.9
Applied rewrites87.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT 4.5e+22)
(/ NaChar (+ (exp (/ (- (+ (+ Ev Vef) EAccept) mu) KbT)) 1.0))
(if (<= KbT 4.3e+226)
(/ NdChar (+ (exp (/ (- (+ EDonor Vef) Ec) KbT)) 1.0))
(+ (* 0.5 NdChar) (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 4.5e+22) {
tmp = NaChar / (exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0);
} else if (KbT <= 4.3e+226) {
tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (1.0 + exp((Ev / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= 4.5d+22) then
tmp = nachar / (exp(((((ev + vef) + eaccept) - mu) / kbt)) + 1.0d0)
else if (kbt <= 4.3d+226) then
tmp = ndchar / (exp((((edonor + vef) - ec) / kbt)) + 1.0d0)
else
tmp = (0.5d0 * ndchar) + (nachar / (1.0d0 + exp((ev / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 4.5e+22) {
tmp = NaChar / (Math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0);
} else if (KbT <= 4.3e+226) {
tmp = NdChar / (Math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 4.5e+22: tmp = NaChar / (math.exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0) elif KbT <= 4.3e+226: tmp = NdChar / (math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0) else: tmp = (0.5 * NdChar) + (NaChar / (1.0 + math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 4.5e+22) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) - mu) / KbT)) + 1.0)); elseif (KbT <= 4.3e+226) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT)) + 1.0)); else tmp = Float64(Float64(0.5 * NdChar) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 4.5e+22) tmp = NaChar / (exp(((((Ev + Vef) + EAccept) - mu) / KbT)) + 1.0); elseif (KbT <= 4.3e+226) tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0); else tmp = (0.5 * NdChar) + (NaChar / (1.0 + exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 4.5e+22], N[(NaChar / N[(N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.3e+226], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 * NdChar), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 4.5 \cdot 10^{+22}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;KbT \leq 4.3 \cdot 10^{+226}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot NdChar + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if KbT < 4.4999999999999998e22Initial program 100.0%
Taylor expanded in NdChar around 0
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-+.f6468.8
Applied rewrites68.8%
if 4.4999999999999998e22 < KbT < 4.29999999999999987e226Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites90.9%
Taylor expanded in NdChar around 0
Applied rewrites43.9%
Taylor expanded in NdChar around inf
Applied rewrites70.2%
if 4.29999999999999987e226 < KbT Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6492.9
Applied rewrites92.9%
Taylor expanded in Ev around inf
lower-/.f6488.6
Applied rewrites88.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -4.6e-93) (not (<= NdChar 4.1e+136))) (/ NdChar (+ (exp (/ (- (+ EDonor Vef) Ec) KbT)) 1.0)) (/ NaChar (+ (exp (/ (+ EAccept (+ Ev 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 tmp;
if ((NdChar <= -4.6e-93) || !(NdChar <= 4.1e+136)) {
tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (exp(((EAccept + (Ev + 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) :: tmp
if ((ndchar <= (-4.6d-93)) .or. (.not. (ndchar <= 4.1d+136))) then
tmp = ndchar / (exp((((edonor + vef) - ec) / kbt)) + 1.0d0)
else
tmp = nachar / (exp(((eaccept + (ev + 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 tmp;
if ((NdChar <= -4.6e-93) || !(NdChar <= 4.1e+136)) {
tmp = NdChar / (Math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -4.6e-93) or not (NdChar <= 4.1e+136): tmp = NdChar / (math.exp((((EDonor + Vef) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -4.6e-93) || !(NdChar <= 4.1e+136)) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Vef)) / 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 <= -4.6e-93) || ~((NdChar <= 4.1e+136))) tmp = NdChar / (exp((((EDonor + Vef) - Ec) / KbT)) + 1.0); else tmp = NaChar / (exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -4.6e-93], N[Not[LessEqual[NdChar, 4.1e+136]], $MachinePrecision]], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -4.6 \cdot 10^{-93} \lor \neg \left(NdChar \leq 4.1 \cdot 10^{+136}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + Vef\right)}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -4.5999999999999996e-93 or 4.0999999999999998e136 < NdChar Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites81.7%
Taylor expanded in NdChar around 0
Applied rewrites41.5%
Taylor expanded in NdChar around inf
Applied rewrites61.0%
if -4.5999999999999996e-93 < NdChar < 4.0999999999999998e136Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites88.9%
Taylor expanded in NdChar around 0
Applied rewrites72.4%
Final simplification67.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -2.55e+241)
(/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0))
(if (<= NdChar 1.5e+138)
(/ NaChar (+ (exp (/ (+ EAccept (+ Ev Vef)) KbT)) 1.0))
(/ 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 tmp;
if (NdChar <= -2.55e+241) {
tmp = NdChar / (exp((-Ec / KbT)) + 1.0);
} else if (NdChar <= 1.5e+138) {
tmp = NaChar / (exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0);
} 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) :: tmp
if (ndchar <= (-2.55d+241)) then
tmp = ndchar / (exp((-ec / kbt)) + 1.0d0)
else if (ndchar <= 1.5d+138) then
tmp = nachar / (exp(((eaccept + (ev + vef)) / kbt)) + 1.0d0)
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 tmp;
if (NdChar <= -2.55e+241) {
tmp = NdChar / (Math.exp((-Ec / KbT)) + 1.0);
} else if (NdChar <= 1.5e+138) {
tmp = NaChar / (Math.exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((Vef / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.55e+241: tmp = NdChar / (math.exp((-Ec / KbT)) + 1.0) elif NdChar <= 1.5e+138: tmp = NaChar / (math.exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0) else: tmp = NdChar / (math.exp((Vef / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.55e+241) tmp = Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0)); elseif (NdChar <= 1.5e+138) tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Float64(Ev + Vef)) / KbT)) + 1.0)); 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) tmp = 0.0; if (NdChar <= -2.55e+241) tmp = NdChar / (exp((-Ec / KbT)) + 1.0); elseif (NdChar <= 1.5e+138) tmp = NaChar / (exp(((EAccept + (Ev + Vef)) / KbT)) + 1.0); else tmp = NdChar / (exp((Vef / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.55e+241], N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e+138], N[(NaChar / N[(N[Exp[N[(N[(EAccept + N[(Ev + Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.55 \cdot 10^{+241}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1}\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{+138}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + \left(Ev + Vef\right)}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -2.5500000000000001e241Initial program 99.9%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites82.6%
Taylor expanded in NdChar around 0
Applied rewrites27.5%
Taylor expanded in NdChar around inf
Applied rewrites70.1%
Taylor expanded in Ec around inf
Applied rewrites64.4%
if -2.5500000000000001e241 < NdChar < 1.50000000000000005e138Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites87.4%
Taylor expanded in NdChar around 0
Applied rewrites65.8%
if 1.50000000000000005e138 < NdChar Initial program 99.9%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites75.7%
Taylor expanded in NdChar around 0
Applied rewrites27.2%
Taylor expanded in NdChar around inf
Applied rewrites66.7%
Taylor expanded in Vef around inf
Applied rewrites55.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Vef -2.9e+203) (not (<= Vef 2.5e+97))) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) (/ NaChar (+ (exp (/ (+ EAccept Ev) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -2.9e+203) || !(Vef <= 2.5e+97)) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (exp(((EAccept + Ev) / 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 ((vef <= (-2.9d+203)) .or. (.not. (vef <= 2.5d+97))) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = nachar / (exp(((eaccept + ev) / 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 ((Vef <= -2.9e+203) || !(Vef <= 2.5e+97)) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp(((EAccept + Ev) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -2.9e+203) or not (Vef <= 2.5e+97): tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = NaChar / (math.exp(((EAccept + Ev) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -2.9e+203) || !(Vef <= 2.5e+97)) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(EAccept + Ev) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -2.9e+203) || ~((Vef <= 2.5e+97))) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NaChar / (exp(((EAccept + Ev) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -2.9e+203], N[Not[LessEqual[Vef, 2.5e+97]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(EAccept + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.9 \cdot 10^{+203} \lor \neg \left(Vef \leq 2.5 \cdot 10^{+97}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept + Ev}{KbT}} + 1}\\
\end{array}
\end{array}
if Vef < -2.90000000000000011e203 or 2.49999999999999999e97 < Vef Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites93.8%
Taylor expanded in NdChar around 0
Applied rewrites67.1%
Taylor expanded in Vef around inf
Applied rewrites63.4%
if -2.90000000000000011e203 < Vef < 2.49999999999999999e97Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites82.3%
Taylor expanded in NdChar around 0
Applied rewrites55.3%
Taylor expanded in Vef around 0
Applied rewrites53.6%
Final simplification56.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 3.6e+207) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 3.6e+207) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((EDonor / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 3.6d+207) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
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 (EAccept <= 3.6e+207) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} 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 EAccept <= 3.6e+207: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) 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 (EAccept <= 3.6e+207) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 3.6e+207) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = NdChar / (exp((EDonor / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 3.6e+207], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 3.6 \cdot 10^{+207}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 3.60000000000000014e207Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites85.8%
Taylor expanded in NdChar around 0
Applied rewrites59.2%
Taylor expanded in Vef around inf
Applied rewrites43.6%
if 3.60000000000000014e207 < EAccept Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites84.3%
Taylor expanded in NdChar around 0
Applied rewrites53.9%
Taylor expanded in NdChar around inf
Applied rewrites55.1%
Taylor expanded in EDonor around inf
Applied rewrites59.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT 7.5e+209) (/ NaChar (+ (exp (/ Vef KbT)) 1.0)) (+ (* 0.5 NdChar) (/ NaChar (+ 2.0 (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 7.5e+209) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= 7.5d+209) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else
tmp = (0.5d0 * ndchar) + (nachar / (2.0d0 + (eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 7.5e+209) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else {
tmp = (0.5 * NdChar) + (NaChar / (2.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 7.5e+209: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) else: tmp = (0.5 * NdChar) + (NaChar / (2.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 7.5e+209) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); else tmp = Float64(Float64(0.5 * NdChar) + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 7.5e+209) tmp = NaChar / (exp((Vef / KbT)) + 1.0); else tmp = (0.5 * NdChar) + (NaChar / (2.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 7.5e+209], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 * NdChar), $MachinePrecision] + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 7.5 \cdot 10^{+209}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot NdChar + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if KbT < 7.50000000000000055e209Initial program 100.0%
Taylor expanded in mu around 0
+-commutativeN/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower-exp.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites84.6%
Taylor expanded in NdChar around 0
Applied rewrites59.3%
Taylor expanded in Vef around inf
Applied rewrites40.6%
if 7.50000000000000055e209 < KbT Initial program 100.0%
Taylor expanded in KbT around inf
lower-*.f6489.9
Applied rewrites89.9%
Taylor expanded in KbT around inf
associate--l+N/A
div-add-revN/A
div-addN/A
div-subN/A
lower-+.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower-+.f64N/A
lower-+.f6477.4
Applied rewrites77.4%
Taylor expanded in EAccept around inf
Applied rewrites74.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -3.9e-69) (not (<= NaChar 90000000000.0))) (* 0.5 NaChar) (* 0.5 NdChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -3.9e-69) || !(NaChar <= 90000000000.0)) {
tmp = 0.5 * NaChar;
} else {
tmp = 0.5 * NdChar;
}
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 <= (-3.9d-69)) .or. (.not. (nachar <= 90000000000.0d0))) then
tmp = 0.5d0 * nachar
else
tmp = 0.5d0 * ndchar
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 <= -3.9e-69) || !(NaChar <= 90000000000.0)) {
tmp = 0.5 * NaChar;
} else {
tmp = 0.5 * NdChar;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.9e-69) or not (NaChar <= 90000000000.0): tmp = 0.5 * NaChar else: tmp = 0.5 * NdChar return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -3.9e-69) || !(NaChar <= 90000000000.0)) tmp = Float64(0.5 * NaChar); else tmp = Float64(0.5 * NdChar); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -3.9e-69) || ~((NaChar <= 90000000000.0))) tmp = 0.5 * NaChar; else tmp = 0.5 * NdChar; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -3.9e-69], N[Not[LessEqual[NaChar, 90000000000.0]], $MachinePrecision]], N[(0.5 * NaChar), $MachinePrecision], N[(0.5 * NdChar), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.9 \cdot 10^{-69} \lor \neg \left(NaChar \leq 90000000000\right):\\
\;\;\;\;0.5 \cdot NaChar\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot NdChar\\
\end{array}
\end{array}
if NaChar < -3.89999999999999981e-69 or 9e10 < NaChar Initial program 100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6431.2
Applied rewrites31.2%
Taylor expanded in NdChar around 0
Applied rewrites27.7%
if -3.89999999999999981e-69 < NaChar < 9e10Initial program 100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6427.7
Applied rewrites27.7%
Taylor expanded in NdChar around 0
Applied rewrites11.2%
Taylor expanded in NdChar around inf
Applied rewrites25.0%
Final simplification26.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NaChar NdChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NaChar + NdChar);
}
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 * (nachar + ndchar)
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 * (NaChar + NdChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NaChar + NdChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NaChar + NdChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NaChar + NdChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NaChar + NdChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NaChar + NdChar\right)
\end{array}
Initial program 100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6429.8
Applied rewrites29.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 NaChar))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * 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 * 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 * NaChar;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * NaChar
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * NaChar) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * NaChar; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * NaChar), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot NaChar
\end{array}
Initial program 100.0%
Taylor expanded in KbT around inf
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6429.8
Applied rewrites29.8%
Taylor expanded in NdChar around 0
Applied rewrites21.1%
herbie shell --seed 2024343
(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))))))