
(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 26 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 (pow E (/ (+ (- Vef Ec) (+ mu EDonor)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- 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 + pow(((double) M_E), (((Vef - Ec) + (mu + EDonor)) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
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.pow(Math.E, (((Vef - Ec) + (mu + EDonor)) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.pow(math.e, (((Vef - Ec) + (mu + EDonor)) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + (exp(1) ^ Float64(Float64(Float64(Vef - Ec) + Float64(mu + EDonor)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + (2.71828182845904523536 ^ (((Vef - Ec) + (mu + EDonor)) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Power[E, N[(N[(N[(Vef - Ec), $MachinePrecision] + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + {e}^{\left(\frac{\left(Vef - Ec\right) + \left(mu + EDonor\right)}{KbT}\right)}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
+-commutative100.0%
associate-+l+100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_2 (+ t_0 t_1))
(t_3 (/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT)))))
(t_4 (+ t_3 t_1))
(t_5 (+ t_3 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -2.05e+166)
t_5
(if (<= Vef -7.5e+98)
t_2
(if (<= Vef -14000.0)
t_5
(if (<= Vef -6e-34)
t_2
(if (<= Vef 8.5e-297)
t_4
(if (<= Vef 8.8e-194)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 7.2e+111) t_4 t_5)))))))))
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((EDonor / KbT)));
double t_1 = NaChar / (1.0 + exp((Ev / KbT)));
double t_2 = t_0 + t_1;
double t_3 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)));
double t_4 = t_3 + t_1;
double t_5 = t_3 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -2.05e+166) {
tmp = t_5;
} else if (Vef <= -7.5e+98) {
tmp = t_2;
} else if (Vef <= -14000.0) {
tmp = t_5;
} else if (Vef <= -6e-34) {
tmp = t_2;
} else if (Vef <= 8.5e-297) {
tmp = t_4;
} else if (Vef <= 8.8e-194) {
tmp = t_0 + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 7.2e+111) {
tmp = t_4;
} else {
tmp = t_5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_1 = nachar / (1.0d0 + exp((ev / kbt)))
t_2 = t_0 + t_1
t_3 = ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))
t_4 = t_3 + t_1
t_5 = t_3 + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-2.05d+166)) then
tmp = t_5
else if (vef <= (-7.5d+98)) then
tmp = t_2
else if (vef <= (-14000.0d0)) then
tmp = t_5
else if (vef <= (-6d-34)) then
tmp = t_2
else if (vef <= 8.5d-297) then
tmp = t_4
else if (vef <= 8.8d-194) then
tmp = t_0 + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 7.2d+111) then
tmp = t_4
else
tmp = t_5
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((EDonor / KbT)));
double t_1 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_2 = t_0 + t_1;
double t_3 = NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)));
double t_4 = t_3 + t_1;
double t_5 = t_3 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -2.05e+166) {
tmp = t_5;
} else if (Vef <= -7.5e+98) {
tmp = t_2;
} else if (Vef <= -14000.0) {
tmp = t_5;
} else if (Vef <= -6e-34) {
tmp = t_2;
} else if (Vef <= 8.5e-297) {
tmp = t_4;
} else if (Vef <= 8.8e-194) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 7.2e+111) {
tmp = t_4;
} else {
tmp = t_5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_1 = NaChar / (1.0 + math.exp((Ev / KbT))) t_2 = t_0 + t_1 t_3 = NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT))) t_4 = t_3 + t_1 t_5 = t_3 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -2.05e+166: tmp = t_5 elif Vef <= -7.5e+98: tmp = t_2 elif Vef <= -14000.0: tmp = t_5 elif Vef <= -6e-34: tmp = t_2 elif Vef <= 8.5e-297: tmp = t_4 elif Vef <= 8.8e-194: tmp = t_0 + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 7.2e+111: tmp = t_4 else: tmp = t_5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_2 = Float64(t_0 + t_1) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) t_4 = Float64(t_3 + t_1) t_5 = Float64(t_3 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -2.05e+166) tmp = t_5; elseif (Vef <= -7.5e+98) tmp = t_2; elseif (Vef <= -14000.0) tmp = t_5; elseif (Vef <= -6e-34) tmp = t_2; elseif (Vef <= 8.5e-297) tmp = t_4; elseif (Vef <= 8.8e-194) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 7.2e+111) tmp = t_4; else tmp = t_5; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((EDonor / KbT))); t_1 = NaChar / (1.0 + exp((Ev / KbT))); t_2 = t_0 + t_1; t_3 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT))); t_4 = t_3 + t_1; t_5 = t_3 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -2.05e+166) tmp = t_5; elseif (Vef <= -7.5e+98) tmp = t_2; elseif (Vef <= -14000.0) tmp = t_5; elseif (Vef <= -6e-34) tmp = t_2; elseif (Vef <= 8.5e-297) tmp = t_4; elseif (Vef <= 8.8e-194) tmp = t_0 + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 7.2e+111) tmp = t_4; else tmp = t_5; 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[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 + t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$3 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.05e+166], t$95$5, If[LessEqual[Vef, -7.5e+98], t$95$2, If[LessEqual[Vef, -14000.0], t$95$5, If[LessEqual[Vef, -6e-34], t$95$2, If[LessEqual[Vef, 8.5e-297], t$95$4, If[LessEqual[Vef, 8.8e-194], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7.2e+111], t$95$4, t$95$5]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := t_0 + t_1\\
t_3 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}}\\
t_4 := t_3 + t_1\\
t_5 := t_3 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.05 \cdot 10^{+166}:\\
\;\;\;\;t_5\\
\mathbf{elif}\;Vef \leq -7.5 \cdot 10^{+98}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -14000:\\
\;\;\;\;t_5\\
\mathbf{elif}\;Vef \leq -6 \cdot 10^{-34}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 8.5 \cdot 10^{-297}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 8.8 \cdot 10^{-194}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 7.2 \cdot 10^{+111}:\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;t_5\\
\end{array}
\end{array}
if Vef < -2.0500000000000001e166 or -7.50000000000000036e98 < Vef < -14000 or 7.2000000000000004e111 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.4%
Taylor expanded in EDonor around 0 87.1%
+-commutative87.1%
+-commutative87.1%
Simplified87.1%
if -2.0500000000000001e166 < Vef < -7.50000000000000036e98 or -14000 < Vef < -6e-34Initial program 99.6%
Simplified99.6%
Taylor expanded in EDonor around inf 87.4%
Taylor expanded in Ev around inf 67.2%
if -6e-34 < Vef < 8.49999999999999991e-297 or 8.8000000000000005e-194 < Vef < 7.2000000000000004e111Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
+-commutative100.0%
associate-+l+100.0%
Applied egg-rr100.0%
Taylor expanded in Ev around inf 72.0%
Taylor expanded in EDonor around 0 65.9%
+-commutative65.9%
+-commutative65.9%
Simplified65.9%
if 8.49999999999999991e-297 < Vef < 8.8000000000000005e-194Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.2%
Taylor expanded in mu around inf 72.5%
associate-*r/44.0%
mul-1-neg44.0%
Simplified72.5%
Final simplification73.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT)))))
(t_3 (+ t_2 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -5.5e+166)
t_3
(if (<= Vef -1.25e-100)
t_1
(if (<= Vef -1.05e-204)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 1.76e-209)
t_1
(if (<= Vef 3.55e-84)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.65e+113) t_1 t_3))))))))
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -5.5e+166) {
tmp = t_3;
} else if (Vef <= -1.25e-100) {
tmp = t_1;
} else if (Vef <= -1.05e-204) {
tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 1.76e-209) {
tmp = t_1;
} else if (Vef <= 3.55e-84) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.65e+113) {
tmp = t_1;
} else {
tmp = t_3;
}
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 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))
t_3 = t_2 + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-5.5d+166)) then
tmp = t_3
else if (vef <= (-1.25d-100)) then
tmp = t_1
else if (vef <= (-1.05d-204)) then
tmp = t_2 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 1.76d-209) then
tmp = t_1
else if (vef <= 3.55d-84) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.65d+113) then
tmp = t_1
else
tmp = t_3
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -5.5e+166) {
tmp = t_3;
} else if (Vef <= -1.25e-100) {
tmp = t_1;
} else if (Vef <= -1.05e-204) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 1.76e-209) {
tmp = t_1;
} else if (Vef <= 3.55e-84) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.65e+113) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT))) t_3 = t_2 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -5.5e+166: tmp = t_3 elif Vef <= -1.25e-100: tmp = t_1 elif Vef <= -1.05e-204: tmp = t_2 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 1.76e-209: tmp = t_1 elif Vef <= 3.55e-84: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.65e+113: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) t_3 = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -5.5e+166) tmp = t_3; elseif (Vef <= -1.25e-100) tmp = t_1; elseif (Vef <= -1.05e-204) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 1.76e-209) tmp = t_1; elseif (Vef <= 3.55e-84) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.65e+113) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT))); t_3 = t_2 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -5.5e+166) tmp = t_3; elseif (Vef <= -1.25e-100) tmp = t_1; elseif (Vef <= -1.05e-204) tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 1.76e-209) tmp = t_1; elseif (Vef <= 3.55e-84) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.65e+113) tmp = t_1; else tmp = t_3; 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5.5e+166], t$95$3, If[LessEqual[Vef, -1.25e-100], t$95$1, If[LessEqual[Vef, -1.05e-204], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.76e-209], t$95$1, If[LessEqual[Vef, 3.55e-84], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.65e+113], t$95$1, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}}\\
t_3 := t_2 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -5.5 \cdot 10^{+166}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -1.25 \cdot 10^{-100}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -1.05 \cdot 10^{-204}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.76 \cdot 10^{-209}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 3.55 \cdot 10^{-84}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.65 \cdot 10^{+113}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -5.50000000000000008e166 or 1.6500000000000002e113 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.0%
Taylor expanded in EDonor around 0 97.0%
+-commutative97.0%
+-commutative97.0%
Simplified97.0%
if -5.50000000000000008e166 < Vef < -1.25e-100 or -1.05000000000000005e-204 < Vef < 1.75999999999999992e-209 or 3.5499999999999998e-84 < Vef < 1.6500000000000002e113Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 81.2%
if -1.25e-100 < Vef < -1.05000000000000005e-204Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
+-commutative100.0%
associate-+l+100.0%
Applied egg-rr100.0%
Taylor expanded in Ev around inf 81.1%
Taylor expanded in EDonor around 0 76.8%
+-commutative76.8%
+-commutative76.8%
Simplified76.8%
if 1.75999999999999992e-209 < Vef < 3.5499999999999998e-84Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 85.8%
Final simplification85.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT)))))
(t_3 (+ t_2 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -7e+167)
t_3
(if (<= Vef -9.6e-102)
t_1
(if (<= Vef -2.1e-199)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 9.5e-209)
t_1
(if (<= Vef 2.1e+109)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 4e+112)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_3))))))))
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+167) {
tmp = t_3;
} else if (Vef <= -9.6e-102) {
tmp = t_1;
} else if (Vef <= -2.1e-199) {
tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 9.5e-209) {
tmp = t_1;
} else if (Vef <= 2.1e+109) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 4e+112) {
tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_3;
}
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 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))
t_3 = t_2 + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-7d+167)) then
tmp = t_3
else if (vef <= (-9.6d-102)) then
tmp = t_1
else if (vef <= (-2.1d-199)) then
tmp = t_2 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 9.5d-209) then
tmp = t_1
else if (vef <= 2.1d+109) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 4d+112) then
tmp = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_3
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)));
double t_3 = t_2 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -7e+167) {
tmp = t_3;
} else if (Vef <= -9.6e-102) {
tmp = t_1;
} else if (Vef <= -2.1e-199) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 9.5e-209) {
tmp = t_1;
} else if (Vef <= 2.1e+109) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 4e+112) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT))) t_3 = t_2 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -7e+167: tmp = t_3 elif Vef <= -9.6e-102: tmp = t_1 elif Vef <= -2.1e-199: tmp = t_2 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 9.5e-209: tmp = t_1 elif Vef <= 2.1e+109: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 4e+112: tmp = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) t_3 = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -7e+167) tmp = t_3; elseif (Vef <= -9.6e-102) tmp = t_1; elseif (Vef <= -2.1e-199) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 9.5e-209) tmp = t_1; elseif (Vef <= 2.1e+109) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 4e+112) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT))); t_3 = t_2 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -7e+167) tmp = t_3; elseif (Vef <= -9.6e-102) tmp = t_1; elseif (Vef <= -2.1e-199) tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 9.5e-209) tmp = t_1; elseif (Vef <= 2.1e+109) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 4e+112) tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_3; 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7e+167], t$95$3, If[LessEqual[Vef, -9.6e-102], t$95$1, If[LessEqual[Vef, -2.1e-199], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9.5e-209], t$95$1, If[LessEqual[Vef, 2.1e+109], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4e+112], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}}\\
t_3 := t_2 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -7 \cdot 10^{+167}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -9.6 \cdot 10^{-102}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -2.1 \cdot 10^{-199}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 9.5 \cdot 10^{-209}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 2.1 \cdot 10^{+109}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4 \cdot 10^{+112}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -6.99999999999999975e167 or 3.9999999999999997e112 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.0%
Taylor expanded in EDonor around 0 97.0%
+-commutative97.0%
+-commutative97.0%
Simplified97.0%
if -6.99999999999999975e167 < Vef < -9.6e-102 or -2.10000000000000002e-199 < Vef < 9.50000000000000028e-209Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 82.5%
if -9.6e-102 < Vef < -2.10000000000000002e-199Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
+-commutative100.0%
associate-+l+100.0%
Applied egg-rr100.0%
Taylor expanded in Ev around inf 81.1%
Taylor expanded in EDonor around 0 76.8%
+-commutative76.8%
+-commutative76.8%
Simplified76.8%
if 9.50000000000000028e-209 < Vef < 2.1000000000000001e109Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.4%
if 2.1000000000000001e109 < Vef < 3.9999999999999997e112Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
Final simplification85.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_3
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -3.4e+173)
t_3
(if (<= Vef -1.95e+20)
t_1
(if (<= Vef -6e-257)
t_2
(if (<= Vef 2.05e-204)
t_1
(if (<= Vef 1.25e+100)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.6e+113) t_2 t_3))))))))
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double t_3 = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -3.4e+173) {
tmp = t_3;
} else if (Vef <= -1.95e+20) {
tmp = t_1;
} else if (Vef <= -6e-257) {
tmp = t_2;
} else if (Vef <= 2.05e-204) {
tmp = t_1;
} else if (Vef <= 1.25e+100) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.6e+113) {
tmp = t_2;
} else {
tmp = t_3;
}
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 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
t_3 = (ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-3.4d+173)) then
tmp = t_3
else if (vef <= (-1.95d+20)) then
tmp = t_1
else if (vef <= (-6d-257)) then
tmp = t_2
else if (vef <= 2.05d-204) then
tmp = t_1
else if (vef <= 1.25d+100) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.6d+113) then
tmp = t_2
else
tmp = t_3
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_3 = (NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -3.4e+173) {
tmp = t_3;
} else if (Vef <= -1.95e+20) {
tmp = t_1;
} else if (Vef <= -6e-257) {
tmp = t_2;
} else if (Vef <= 2.05e-204) {
tmp = t_1;
} else if (Vef <= 1.25e+100) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.6e+113) {
tmp = t_2;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_3 = (NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -3.4e+173: tmp = t_3 elif Vef <= -1.95e+20: tmp = t_1 elif Vef <= -6e-257: tmp = t_2 elif Vef <= 2.05e-204: tmp = t_1 elif Vef <= 1.25e+100: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.6e+113: tmp = t_2 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_3 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -3.4e+173) tmp = t_3; elseif (Vef <= -1.95e+20) tmp = t_1; elseif (Vef <= -6e-257) tmp = t_2; elseif (Vef <= 2.05e-204) tmp = t_1; elseif (Vef <= 1.25e+100) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.6e+113) tmp = t_2; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); t_3 = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -3.4e+173) tmp = t_3; elseif (Vef <= -1.95e+20) tmp = t_1; elseif (Vef <= -6e-257) tmp = t_2; elseif (Vef <= 2.05e-204) tmp = t_1; elseif (Vef <= 1.25e+100) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.6e+113) tmp = t_2; else tmp = t_3; 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.4e+173], t$95$3, If[LessEqual[Vef, -1.95e+20], t$95$1, If[LessEqual[Vef, -6e-257], t$95$2, If[LessEqual[Vef, 2.05e-204], t$95$1, If[LessEqual[Vef, 1.25e+100], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.6e+113], t$95$2, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.4 \cdot 10^{+173}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -1.95 \cdot 10^{+20}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -6 \cdot 10^{-257}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 2.05 \cdot 10^{-204}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 1.25 \cdot 10^{+100}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.6 \cdot 10^{+113}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -3.40000000000000021e173 or 1.5999999999999999e113 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.0%
Taylor expanded in EDonor around 0 97.0%
+-commutative97.0%
+-commutative97.0%
Simplified97.0%
if -3.40000000000000021e173 < Vef < -1.95e20 or -5.9999999999999999e-257 < Vef < 2.05e-204Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 83.0%
if -1.95e20 < Vef < -5.9999999999999999e-257 or 1.25e100 < Vef < 1.5999999999999999e113Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.8%
if 2.05e-204 < Vef < 1.25e100Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.8%
Final simplification83.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT)))))
(t_3 (/ NaChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -4.5e+170)
(+ (/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT)))) t_3)
(if (<= Vef -8e+19)
t_1
(if (<= Vef -5.5e-257)
(+ t_2 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 2.75e-204)
t_1
(if (<= Vef 2.6e+106)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+ t_2 t_3))))))))
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)));
double t_3 = NaChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -4.5e+170) {
tmp = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + t_3;
} else if (Vef <= -8e+19) {
tmp = t_1;
} else if (Vef <= -5.5e-257) {
tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 2.75e-204) {
tmp = t_1;
} else if (Vef <= 2.6e+106) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_2 + t_3;
}
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 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))
t_3 = nachar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-4.5d+170)) then
tmp = (ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))) + t_3
else if (vef <= (-8d+19)) then
tmp = t_1
else if (vef <= (-5.5d-257)) then
tmp = t_2 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 2.75d-204) then
tmp = t_1
else if (vef <= 2.6d+106) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_2 + t_3
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(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)));
double t_3 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -4.5e+170) {
tmp = (NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)))) + t_3;
} else if (Vef <= -8e+19) {
tmp = t_1;
} else if (Vef <= -5.5e-257) {
tmp = t_2 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 2.75e-204) {
tmp = t_1;
} else if (Vef <= 2.6e+106) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_2 + t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT))) t_3 = NaChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -4.5e+170: tmp = (NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT)))) + t_3 elif Vef <= -8e+19: tmp = t_1 elif Vef <= -5.5e-257: tmp = t_2 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 2.75e-204: tmp = t_1 elif Vef <= 2.6e+106: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_2 + t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -4.5e+170) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) + t_3); elseif (Vef <= -8e+19) tmp = t_1; elseif (Vef <= -5.5e-257) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 2.75e-204) tmp = t_1; elseif (Vef <= 2.6e+106) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_2 + t_3); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT))); t_3 = NaChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -4.5e+170) tmp = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + t_3; elseif (Vef <= -8e+19) tmp = t_1; elseif (Vef <= -5.5e-257) tmp = t_2 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 2.75e-204) tmp = t_1; elseif (Vef <= 2.6e+106) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_2 + t_3; 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[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.5e+170], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[Vef, -8e+19], t$95$1, If[LessEqual[Vef, -5.5e-257], N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 2.75e-204], t$95$1, If[LessEqual[Vef, 2.6e+106], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 + t$95$3), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -4.5 \cdot 10^{+170}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}} + t_3\\
\mathbf{elif}\;Vef \leq -8 \cdot 10^{+19}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq -5.5 \cdot 10^{-257}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 2.75 \cdot 10^{-204}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 2.6 \cdot 10^{+106}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_2 + t_3\\
\end{array}
\end{array}
if Vef < -4.50000000000000022e170Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 95.9%
Taylor expanded in EDonor around 0 95.9%
+-commutative95.9%
+-commutative95.9%
Simplified95.9%
if -4.50000000000000022e170 < Vef < -8e19 or -5.50000000000000025e-257 < Vef < 2.75e-204Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 83.0%
if -8e19 < Vef < -5.50000000000000025e-257Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.3%
if 2.75e-204 < Vef < 2.6000000000000002e106Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 81.4%
if 2.6000000000000002e106 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 95.6%
Final simplification83.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_3 (/ NaChar t_0))
(t_4 (+ t_3 (* NdChar (/ 1.0 t_0)))))
(if (<= Vef -3.3e+166)
t_4
(if (<= Vef -4.8e+98)
t_2
(if (<= Vef -3.1e+78)
(+ t_3 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef -3.2e+20)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef -1.08e-260)
t_2
(if (<= Vef 4e+21)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
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 = 1.0 + exp((Vef / KbT));
double t_1 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
double t_3 = NaChar / t_0;
double t_4 = t_3 + (NdChar * (1.0 / t_0));
double tmp;
if (Vef <= -3.3e+166) {
tmp = t_4;
} else if (Vef <= -4.8e+98) {
tmp = t_2;
} else if (Vef <= -3.1e+78) {
tmp = t_3 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= -3.2e+20) {
tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= -1.08e-260) {
tmp = t_2;
} else if (Vef <= 4e+21) {
tmp = t_1 + (NaChar / (1.0 + exp((-mu / KbT))));
} 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 = 1.0d0 + exp((vef / kbt))
t_1 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
t_3 = nachar / t_0
t_4 = t_3 + (ndchar * (1.0d0 / t_0))
if (vef <= (-3.3d+166)) then
tmp = t_4
else if (vef <= (-4.8d+98)) then
tmp = t_2
else if (vef <= (-3.1d+78)) then
tmp = t_3 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= (-3.2d+20)) then
tmp = t_1 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= (-1.08d-260)) then
tmp = t_2
else if (vef <= 4d+21) then
tmp = t_1 + (nachar / (1.0d0 + exp((-mu / kbt))))
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 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_3 = NaChar / t_0;
double t_4 = t_3 + (NdChar * (1.0 / t_0));
double tmp;
if (Vef <= -3.3e+166) {
tmp = t_4;
} else if (Vef <= -4.8e+98) {
tmp = t_2;
} else if (Vef <= -3.1e+78) {
tmp = t_3 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= -3.2e+20) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= -1.08e-260) {
tmp = t_2;
} else if (Vef <= 4e+21) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_3 = NaChar / t_0 t_4 = t_3 + (NdChar * (1.0 / t_0)) tmp = 0 if Vef <= -3.3e+166: tmp = t_4 elif Vef <= -4.8e+98: tmp = t_2 elif Vef <= -3.1e+78: tmp = t_3 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= -3.2e+20: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= -1.08e-260: tmp = t_2 elif Vef <= 4e+21: tmp = t_1 + (NaChar / (1.0 + math.exp((-mu / KbT)))) else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_3 = Float64(NaChar / t_0) t_4 = Float64(t_3 + Float64(NdChar * Float64(1.0 / t_0))) tmp = 0.0 if (Vef <= -3.3e+166) tmp = t_4; elseif (Vef <= -4.8e+98) tmp = t_2; elseif (Vef <= -3.1e+78) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= -3.2e+20) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= -1.08e-260) tmp = t_2; elseif (Vef <= 4e+21) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NdChar / (1.0 + exp((EDonor / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); t_3 = NaChar / t_0; t_4 = t_3 + (NdChar * (1.0 / t_0)); tmp = 0.0; if (Vef <= -3.3e+166) tmp = t_4; elseif (Vef <= -4.8e+98) tmp = t_2; elseif (Vef <= -3.1e+78) tmp = t_3 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= -3.2e+20) tmp = t_1 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= -1.08e-260) tmp = t_2; elseif (Vef <= 4e+21) tmp = t_1 + (NaChar / (1.0 + exp((-mu / KbT)))); else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 + N[(NdChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.3e+166], t$95$4, If[LessEqual[Vef, -4.8e+98], t$95$2, If[LessEqual[Vef, -3.1e+78], N[(t$95$3 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -3.2e+20], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.08e-260], t$95$2, If[LessEqual[Vef, 4e+21], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$4]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_3 := \frac{NaChar}{t_0}\\
t_4 := t_3 + NdChar \cdot \frac{1}{t_0}\\
\mathbf{if}\;Vef \leq -3.3 \cdot 10^{+166}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -4.8 \cdot 10^{+98}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -3.1 \cdot 10^{+78}:\\
\;\;\;\;t_3 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq -3.2 \cdot 10^{+20}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq -1.08 \cdot 10^{-260}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 4 \cdot 10^{+21}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if Vef < -3.3000000000000002e166 or 4e21 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 93.7%
div-inv93.7%
associate-+r+93.7%
+-commutative93.7%
+-commutative93.7%
Applied egg-rr93.7%
Taylor expanded in Vef around inf 85.6%
if -3.3000000000000002e166 < Vef < -4.7999999999999997e98 or -3.2e20 < Vef < -1.08e-260Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 77.3%
Taylor expanded in Ev around inf 59.1%
if -4.7999999999999997e98 < Vef < -3.1e78Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.6%
Taylor expanded in mu around inf 70.6%
if -3.1e78 < Vef < -3.2e20Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.1%
Taylor expanded in EAccept around inf 62.0%
if -1.08e-260 < Vef < 4e21Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.4%
Taylor expanded in mu around inf 61.5%
associate-*r/43.3%
mul-1-neg43.3%
Simplified61.5%
Final simplification68.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -1.3e+168)
t_2
(if (<= Vef -9e-102)
t_0
(if (<= Vef -3.4e-207)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Vef 7.4e+112) t_0 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_1 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -1.3e+168) {
tmp = t_2;
} else if (Vef <= -9e-102) {
tmp = t_0;
} else if (Vef <= -3.4e-207) {
tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Vef <= 7.4e+112) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_1 = ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-1.3d+168)) then
tmp = t_2
else if (vef <= (-9d-102)) then
tmp = t_0
else if (vef <= (-3.4d-207)) then
tmp = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (vef <= 7.4d+112) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_1 = NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -1.3e+168) {
tmp = t_2;
} else if (Vef <= -9e-102) {
tmp = t_0;
} else if (Vef <= -3.4e-207) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Vef <= 7.4e+112) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_1 = NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -1.3e+168: tmp = t_2 elif Vef <= -9e-102: tmp = t_0 elif Vef <= -3.4e-207: tmp = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Vef <= 7.4e+112: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -1.3e+168) tmp = t_2; elseif (Vef <= -9e-102) tmp = t_0; elseif (Vef <= -3.4e-207) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Vef <= 7.4e+112) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); t_1 = NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -1.3e+168) tmp = t_2; elseif (Vef <= -9e-102) tmp = t_0; elseif (Vef <= -3.4e-207) tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Vef <= 7.4e+112) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.3e+168], t$95$2, If[LessEqual[Vef, -9e-102], t$95$0, If[LessEqual[Vef, -3.4e-207], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 7.4e+112], t$95$0, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.3 \cdot 10^{+168}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -9 \cdot 10^{-102}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;Vef \leq -3.4 \cdot 10^{-207}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Vef \leq 7.4 \cdot 10^{+112}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if Vef < -1.3e168 or 7.40000000000000008e112 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 97.0%
Taylor expanded in EDonor around 0 97.0%
+-commutative97.0%
+-commutative97.0%
Simplified97.0%
if -1.3e168 < Vef < -8.99999999999999999e-102 or -3.39999999999999999e-207 < Vef < 7.40000000000000008e112Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.8%
if -8.99999999999999999e-102 < Vef < -3.39999999999999999e-207Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
+-commutative100.0%
associate-+l+100.0%
Applied egg-rr100.0%
Taylor expanded in Ev around inf 81.1%
Taylor expanded in EDonor around 0 76.8%
+-commutative76.8%
+-commutative76.8%
Simplified76.8%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ Vef mu) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(t_2 (+ (/ NaChar t_0) (* NdChar (/ 1.0 t_0)))))
(if (<= Vef -7.2e+230)
t_2
(if (<= Vef 7.5e-297)
t_1
(if (<= Vef 1.05e-193)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Vef 4.5e+111) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
double t_2 = (NaChar / t_0) + (NdChar * (1.0 / t_0));
double tmp;
if (Vef <= -7.2e+230) {
tmp = t_2;
} else if (Vef <= 7.5e-297) {
tmp = t_1;
} else if (Vef <= 1.05e-193) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Vef <= 4.5e+111) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (ndchar / (1.0d0 + exp((((vef + mu) - ec) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
t_2 = (nachar / t_0) + (ndchar * (1.0d0 / t_0))
if (vef <= (-7.2d+230)) then
tmp = t_2
else if (vef <= 7.5d-297) then
tmp = t_1
else if (vef <= 1.05d-193) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (vef <= 4.5d+111) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double t_2 = (NaChar / t_0) + (NdChar * (1.0 / t_0));
double tmp;
if (Vef <= -7.2e+230) {
tmp = t_2;
} else if (Vef <= 7.5e-297) {
tmp = t_1;
} else if (Vef <= 1.05e-193) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Vef <= 4.5e+111) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NdChar / (1.0 + math.exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) t_2 = (NaChar / t_0) + (NdChar * (1.0 / t_0)) tmp = 0 if Vef <= -7.2e+230: tmp = t_2 elif Vef <= 7.5e-297: tmp = t_1 elif Vef <= 1.05e-193: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Vef <= 4.5e+111: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) t_2 = Float64(Float64(NaChar / t_0) + Float64(NdChar * Float64(1.0 / t_0))) tmp = 0.0 if (Vef <= -7.2e+230) tmp = t_2; elseif (Vef <= 7.5e-297) tmp = t_1; elseif (Vef <= 1.05e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Vef <= 4.5e+111) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NdChar / (1.0 + exp((((Vef + mu) - Ec) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); t_2 = (NaChar / t_0) + (NdChar * (1.0 / t_0)); tmp = 0.0; if (Vef <= -7.2e+230) tmp = t_2; elseif (Vef <= 7.5e-297) tmp = t_1; elseif (Vef <= 1.05e-193) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Vef <= 4.5e+111) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -7.2e+230], t$95$2, If[LessEqual[Vef, 7.5e-297], t$95$1, If[LessEqual[Vef, 1.05e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.5e+111], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{\left(Vef + mu\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := \frac{NaChar}{t_0} + NdChar \cdot \frac{1}{t_0}\\
\mathbf{if}\;Vef \leq -7.2 \cdot 10^{+230}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 7.5 \cdot 10^{-297}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Vef \leq 1.05 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.5 \cdot 10^{+111}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if Vef < -7.20000000000000037e230 or 4.50000000000000001e111 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 98.3%
div-inv98.3%
associate-+r+98.3%
+-commutative98.3%
+-commutative98.3%
Applied egg-rr98.3%
Taylor expanded in Vef around inf 91.8%
if -7.20000000000000037e230 < Vef < 7.4999999999999994e-297 or 1.05e-193 < Vef < 4.50000000000000001e111Initial program 99.9%
Simplified99.9%
*-un-lft-identity99.9%
exp-prod99.9%
+-commutative99.9%
+-commutative99.9%
associate-+l+99.9%
Applied egg-rr99.9%
Taylor expanded in Ev around inf 70.5%
Taylor expanded in EDonor around 0 63.0%
+-commutative63.0%
+-commutative63.0%
Simplified63.0%
if 7.4999999999999994e-297 < Vef < 1.05e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 86.2%
Taylor expanded in mu around inf 72.5%
associate-*r/44.0%
mul-1-neg44.0%
Simplified72.5%
Final simplification70.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + 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 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + 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 (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= NdChar -5.8e+54)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NdChar -2.1e-21)
(+ t_0 (/ NdChar (+ (/ EDonor KbT) 2.0)))
(if (or (<= NdChar -3.5e-113) (not (<= NdChar 4.8e-17)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(+
t_0
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -5.8e+54) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NdChar <= -2.1e-21) {
tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0));
} else if ((NdChar <= -3.5e-113) || !(NdChar <= 4.8e-17)) {
tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (ndchar <= (-5.8d+54)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (ndchar <= (-2.1d-21)) then
tmp = t_0 + (ndchar / ((edonor / kbt) + 2.0d0))
else if ((ndchar <= (-3.5d-113)) .or. (.not. (ndchar <= 4.8d-17))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -5.8e+54) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NdChar <= -2.1e-21) {
tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0));
} else if ((NdChar <= -3.5e-113) || !(NdChar <= 4.8e-17)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if NdChar <= -5.8e+54: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NdChar <= -2.1e-21: tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0)) elif (NdChar <= -3.5e-113) or not (NdChar <= 4.8e-17): tmp = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) else: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NdChar <= -5.8e+54) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NdChar <= -2.1e-21) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); elseif ((NdChar <= -3.5e-113) || !(NdChar <= 4.8e-17)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (NdChar <= -5.8e+54) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NdChar <= -2.1e-21) tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0)); elseif ((NdChar <= -3.5e-113) || ~((NdChar <= 4.8e-17))) tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); else tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.8e+54], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -2.1e-21], N[(t$95$0 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -3.5e-113], N[Not[LessEqual[NdChar, 4.8e-17]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -5.8 \cdot 10^{+54}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq -2.1 \cdot 10^{-21}:\\
\;\;\;\;t_0 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -3.5 \cdot 10^{-113} \lor \neg \left(NdChar \leq 4.8 \cdot 10^{-17}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -5.7999999999999997e54Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 71.2%
Taylor expanded in mu around inf 61.8%
associate-*r/38.5%
mul-1-neg38.5%
Simplified61.8%
if -5.7999999999999997e54 < NdChar < -2.10000000000000013e-21Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.9%
Taylor expanded in EDonor around 0 65.5%
if -2.10000000000000013e-21 < NdChar < -3.50000000000000029e-113 or 4.79999999999999973e-17 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.8%
Taylor expanded in EAccept around 0 62.0%
if -3.50000000000000029e-113 < NdChar < 4.79999999999999973e-17Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.0%
Final simplification66.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= NdChar -4e+27)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= NdChar -1.32e-21)
(+ t_0 (/ NdChar 2.0))
(if (or (<= NdChar -2.9e-114) (not (<= NdChar 9.5e-16)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(+
t_0
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -4e+27) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (NdChar <= -1.32e-21) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -2.9e-114) || !(NdChar <= 9.5e-16)) {
tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (ndchar <= (-4d+27)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ndchar <= (-1.32d-21)) then
tmp = t_0 + (ndchar / 2.0d0)
else if ((ndchar <= (-2.9d-114)) .or. (.not. (ndchar <= 9.5d-16))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -4e+27) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (NdChar <= -1.32e-21) {
tmp = t_0 + (NdChar / 2.0);
} else if ((NdChar <= -2.9e-114) || !(NdChar <= 9.5e-16)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if NdChar <= -4e+27: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif NdChar <= -1.32e-21: tmp = t_0 + (NdChar / 2.0) elif (NdChar <= -2.9e-114) or not (NdChar <= 9.5e-16): tmp = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) else: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NdChar <= -4e+27) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (NdChar <= -1.32e-21) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif ((NdChar <= -2.9e-114) || !(NdChar <= 9.5e-16)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (NdChar <= -4e+27) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (NdChar <= -1.32e-21) tmp = t_0 + (NdChar / 2.0); elseif ((NdChar <= -2.9e-114) || ~((NdChar <= 9.5e-16))) tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); else tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4e+27], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -1.32e-21], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -2.9e-114], N[Not[LessEqual[NdChar, 9.5e-16]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -4 \cdot 10^{+27}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;NdChar \leq -1.32 \cdot 10^{-21}:\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq -2.9 \cdot 10^{-114} \lor \neg \left(NdChar \leq 9.5 \cdot 10^{-16}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -4.0000000000000001e27Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.8%
Taylor expanded in Ev around inf 50.5%
if -4.0000000000000001e27 < NdChar < -1.32e-21Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.8%
if -1.32e-21 < NdChar < -2.89999999999999997e-114 or 9.5000000000000005e-16 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.8%
Taylor expanded in EAccept around 0 62.0%
if -2.89999999999999997e-114 < NdChar < 9.5000000000000005e-16Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.0%
Final simplification63.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))))
(if (<= NdChar -8.2e+52)
t_1
(if (<= NdChar -1.3e-21)
(+ t_0 (/ NdChar (+ (/ EDonor KbT) 2.0)))
(if (or (<= NdChar -3.5e-113) (not (<= NdChar 9.2e-15)))
t_1
(+
t_0
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
double tmp;
if (NdChar <= -8.2e+52) {
tmp = t_1;
} else if (NdChar <= -1.3e-21) {
tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0));
} else if ((NdChar <= -3.5e-113) || !(NdChar <= 9.2e-15)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
if (ndchar <= (-8.2d+52)) then
tmp = t_1
else if (ndchar <= (-1.3d-21)) then
tmp = t_0 + (ndchar / ((edonor / kbt) + 2.0d0))
else if ((ndchar <= (-3.5d-113)) .or. (.not. (ndchar <= 9.2d-15))) then
tmp = t_1
else
tmp = t_0 + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
double tmp;
if (NdChar <= -8.2e+52) {
tmp = t_1;
} else if (NdChar <= -1.3e-21) {
tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0));
} else if ((NdChar <= -3.5e-113) || !(NdChar <= 9.2e-15)) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) tmp = 0 if NdChar <= -8.2e+52: tmp = t_1 elif NdChar <= -1.3e-21: tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0)) elif (NdChar <= -3.5e-113) or not (NdChar <= 9.2e-15): tmp = t_1 else: tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))) tmp = 0.0 if (NdChar <= -8.2e+52) tmp = t_1; elseif (NdChar <= -1.3e-21) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); elseif ((NdChar <= -3.5e-113) || !(NdChar <= 9.2e-15)) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); tmp = 0.0; if (NdChar <= -8.2e+52) tmp = t_1; elseif (NdChar <= -1.3e-21) tmp = t_0 + (NdChar / ((EDonor / KbT) + 2.0)); elseif ((NdChar <= -3.5e-113) || ~((NdChar <= 9.2e-15))) tmp = t_1; else tmp = t_0 + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -8.2e+52], t$95$1, If[LessEqual[NdChar, -1.3e-21], N[(t$95$0 + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NdChar, -3.5e-113], N[Not[LessEqual[NdChar, 9.2e-15]], $MachinePrecision]], t$95$1, N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{if}\;NdChar \leq -8.2 \cdot 10^{+52}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -1.3 \cdot 10^{-21}:\\
\;\;\;\;t_0 + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq -3.5 \cdot 10^{-113} \lor \neg \left(NdChar \leq 9.2 \cdot 10^{-15}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -8.1999999999999999e52 or -1.30000000000000009e-21 < NdChar < -3.50000000000000029e-113 or 9.19999999999999961e-15 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.7%
Taylor expanded in EAccept around 0 60.2%
if -8.1999999999999999e52 < NdChar < -1.30000000000000009e-21Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.9%
Taylor expanded in EDonor around 0 65.5%
if -3.50000000000000029e-113 < NdChar < 9.19999999999999961e-15Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.0%
Final simplification65.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.85e+53)
(and (not (<= NdChar -1.55e-21))
(or (<= NdChar -2.9e-113) (not (<= NdChar 9.5e-16)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ (- Vef Ec) mu)) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.85e+53) || (!(NdChar <= -1.55e-21) && ((NdChar <= -2.9e-113) || !(NdChar <= 9.5e-16)))) {
tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.85d+53)) .or. (.not. (ndchar <= (-1.55d-21))) .and. (ndchar <= (-2.9d-113)) .or. (.not. (ndchar <= 9.5d-16))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + ((vef - ec) + mu)) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.85e+53) || (!(NdChar <= -1.55e-21) && ((NdChar <= -2.9e-113) || !(NdChar <= 9.5e-16)))) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.85e+53) or (not (NdChar <= -1.55e-21) and ((NdChar <= -2.9e-113) or not (NdChar <= 9.5e-16))): tmp = (NdChar / (1.0 + math.exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.85e+53) || (!(NdChar <= -1.55e-21) && ((NdChar <= -2.9e-113) || !(NdChar <= 9.5e-16)))) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(Float64(Vef - Ec) + mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.85e+53) || (~((NdChar <= -1.55e-21)) && ((NdChar <= -2.9e-113) || ~((NdChar <= 9.5e-16))))) tmp = (NdChar / (1.0 + exp(((EDonor + ((Vef - Ec) + mu)) / KbT)))) + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.85e+53], And[N[Not[LessEqual[NdChar, -1.55e-21]], $MachinePrecision], Or[LessEqual[NdChar, -2.9e-113], N[Not[LessEqual[NdChar, 9.5e-16]], $MachinePrecision]]]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(N[(Vef - Ec), $MachinePrecision] + mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.85 \cdot 10^{+53} \lor \neg \left(NdChar \leq -1.55 \cdot 10^{-21}\right) \land \left(NdChar \leq -2.9 \cdot 10^{-113} \lor \neg \left(NdChar \leq 9.5 \cdot 10^{-16}\right)\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(\left(Vef - Ec\right) + mu\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -1.85e53 or -1.5499999999999999e-21 < NdChar < -2.90000000000000004e-113 or 9.5000000000000005e-16 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.7%
Taylor expanded in EAccept around 0 60.2%
if -1.85e53 < NdChar < -1.5499999999999999e-21 or -2.90000000000000004e-113 < NdChar < 9.5000000000000005e-16Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.3%
Taylor expanded in EDonor around 0 70.6%
Final simplification64.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar 2.0))))
(if (<= NdChar -2.65e+51)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= NdChar 1.05e-278)
t_1
(if (<= NdChar 1e-164)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NdChar 2.2e-12)
t_1
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -2.65e+51) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 1.05e-278) {
tmp = t_1;
} else if (NdChar <= 1e-164) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 2.2e-12) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / 2.0d0)
if (ndchar <= (-2.65d+51)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (ndchar <= 1.05d-278) then
tmp = t_1
else if (ndchar <= 1d-164) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (ndchar <= 2.2d-12) then
tmp = t_1
else
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= -2.65e+51) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 1.05e-278) {
tmp = t_1;
} else if (NdChar <= 1e-164) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 2.2e-12) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / 2.0) tmp = 0 if NdChar <= -2.65e+51: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif NdChar <= 1.05e-278: tmp = t_1 elif NdChar <= 1e-164: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif NdChar <= 2.2e-12: tmp = t_1 else: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (NdChar <= -2.65e+51) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (NdChar <= 1.05e-278) tmp = t_1; elseif (NdChar <= 1e-164) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NdChar <= 2.2e-12) tmp = t_1; else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (NdChar <= -2.65e+51) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (NdChar <= 1.05e-278) tmp = t_1; elseif (NdChar <= 1e-164) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (NdChar <= 2.2e-12) tmp = t_1; else tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.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[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.65e+51], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e-278], t$95$1, If[LessEqual[NdChar, 1e-164], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.2e-12], t$95$1, N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;NdChar \leq -2.65 \cdot 10^{+51}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{-278}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 10^{-164}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 2.2 \cdot 10^{-12}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -2.6499999999999998e51Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 71.7%
Taylor expanded in KbT around inf 43.0%
if -2.6499999999999998e51 < NdChar < 1.05000000000000007e-278 or 9.99999999999999962e-165 < NdChar < 2.19999999999999992e-12Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 56.5%
Taylor expanded in Vef around inf 43.5%
if 1.05000000000000007e-278 < NdChar < 9.99999999999999962e-165Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 58.1%
Taylor expanded in mu around inf 44.0%
Taylor expanded in Vef around 0 53.1%
if 2.19999999999999992e-12 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.3%
Taylor expanded in mu around inf 52.5%
Taylor expanded in EAccept around 0 44.2%
Final simplification44.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))))
(if (<= NdChar -5.1e+51)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= NdChar 1.05e-278)
t_1
(if (<= NdChar 1.75e-165)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NdChar 1.18e+60)
t_1
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (NdChar <= -5.1e+51) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 1.05e-278) {
tmp = t_1;
} else if (NdChar <= 1.75e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 1.18e+60) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
if (ndchar <= (-5.1d+51)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (ndchar <= 1.05d-278) then
tmp = t_1
else if (ndchar <= 1.75d-165) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (ndchar <= 1.18d+60) then
tmp = t_1
else
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (NdChar <= -5.1e+51) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 1.05e-278) {
tmp = t_1;
} else if (NdChar <= 1.75e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 1.18e+60) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) tmp = 0 if NdChar <= -5.1e+51: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif NdChar <= 1.05e-278: tmp = t_1 elif NdChar <= 1.75e-165: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif NdChar <= 1.18e+60: tmp = t_1 else: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -5.1e+51) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (NdChar <= 1.05e-278) tmp = t_1; elseif (NdChar <= 1.75e-165) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NdChar <= 1.18e+60) tmp = t_1; else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -5.1e+51) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (NdChar <= 1.05e-278) tmp = t_1; elseif (NdChar <= 1.75e-165) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (NdChar <= 1.18e+60) tmp = t_1; else tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.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[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.1e+51], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e-278], t$95$1, If[LessEqual[NdChar, 1.75e-165], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.18e+60], t$95$1, N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -5.1 \cdot 10^{+51}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{-278}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.75 \cdot 10^{-165}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.18 \cdot 10^{+60}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -5.1000000000000001e51Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 71.7%
Taylor expanded in KbT around inf 43.0%
if -5.1000000000000001e51 < NdChar < 1.05000000000000007e-278 or 1.7500000000000001e-165 < NdChar < 1.18000000000000008e60Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 65.0%
Taylor expanded in mu around inf 50.5%
Taylor expanded in mu around 0 45.1%
if 1.05000000000000007e-278 < NdChar < 1.7500000000000001e-165Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 58.1%
Taylor expanded in mu around inf 44.0%
Taylor expanded in Vef around 0 53.1%
if 1.18000000000000008e60 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.5%
Taylor expanded in mu around inf 51.1%
Taylor expanded in EAccept around 0 46.8%
Final simplification45.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar 2.0))))
(if (<= NdChar 6.2e-233)
t_1
(if (<= NdChar 1.55e-165)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NdChar 1.05e+39)
t_1
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= 6.2e-233) {
tmp = t_1;
} else if (NdChar <= 1.55e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 1.05e+39) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / 2.0d0)
if (ndchar <= 6.2d-233) then
tmp = t_1
else if (ndchar <= 1.55d-165) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (ndchar <= 1.05d+39) then
tmp = t_1
else
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0);
double tmp;
if (NdChar <= 6.2e-233) {
tmp = t_1;
} else if (NdChar <= 1.55e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (NdChar <= 1.05e+39) {
tmp = t_1;
} else {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0) tmp = 0 if NdChar <= 6.2e-233: tmp = t_1 elif NdChar <= 1.55e-165: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif NdChar <= 1.05e+39: tmp = t_1 else: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (NdChar <= 6.2e-233) tmp = t_1; elseif (NdChar <= 1.55e-165) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NdChar <= 1.05e+39) tmp = t_1; else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (NdChar <= 6.2e-233) tmp = t_1; elseif (NdChar <= 1.55e-165) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (NdChar <= 1.05e+39) tmp = t_1; else tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.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[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, 6.2e-233], t$95$1, If[LessEqual[NdChar, 1.55e-165], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e+39], t$95$1, N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;NdChar \leq 6.2 \cdot 10^{-233}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.55 \cdot 10^{-165}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+39}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < 6.2000000000000003e-233 or 1.54999999999999998e-165 < NdChar < 1.0499999999999999e39Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.9%
if 6.2000000000000003e-233 < NdChar < 1.54999999999999998e-165Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.6%
Taylor expanded in mu around inf 58.2%
Taylor expanded in Vef around 0 70.7%
if 1.0499999999999999e39 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.2%
Taylor expanded in mu around inf 50.9%
Taylor expanded in EAccept around 0 43.7%
Final simplification50.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar 3.9e+119)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ EDonor KbT) 2.0)))
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (+ (/ Vef KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= 3.9e+119) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= 3.9d+119) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((edonor / kbt) + 2.0d0))
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= 3.9e+119) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= 3.9e+119: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= 3.9e+119) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(EDonor / KbT) + 2.0))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= 3.9e+119) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((EDonor / KbT) + 2.0)); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, 3.9e+119], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq 3.9 \cdot 10^{+119}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < 3.8999999999999998e119Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 73.4%
Taylor expanded in EDonor around 0 57.8%
if 3.8999999999999998e119 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.4%
Taylor expanded in mu around inf 53.9%
Taylor expanded in Vef around 0 48.6%
Final simplification56.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NdChar -2.8e+47)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= NdChar 6.4e-15)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.8e+47) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 6.4e-15) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-2.8d+47)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (ndchar <= 6.4d-15) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.8e+47) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (NdChar <= 6.4e-15) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.8e+47: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif NdChar <= 6.4e-15: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.8e+47) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (NdChar <= 6.4e-15) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -2.8e+47) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (NdChar <= 6.4e-15) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.8e+47], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 6.4e-15], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.8 \cdot 10^{+47}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NdChar \leq 6.4 \cdot 10^{-15}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -2.79999999999999988e47Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.5%
Taylor expanded in KbT around inf 42.4%
if -2.79999999999999988e47 < NdChar < 6.3999999999999999e-15Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.4%
Taylor expanded in Vef around inf 41.4%
if 6.3999999999999999e-15 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.7%
Taylor expanded in mu around inf 51.8%
Taylor expanded in EAccept around 0 43.6%
Final simplification42.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -3.5e+49) (not (<= NdChar 9.8e-15))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -3.5e+49) || !(NdChar <= 9.8e-15)) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-3.5d+49)) .or. (.not. (ndchar <= 9.8d-15))) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -3.5e+49) || !(NdChar <= 9.8e-15)) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -3.5e+49) or not (NdChar <= 9.8e-15): tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -3.5e+49) || !(NdChar <= 9.8e-15)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -3.5e+49) || ~((NdChar <= 9.8e-15))) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -3.5e+49], N[Not[LessEqual[NdChar, 9.8e-15]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -3.5 \cdot 10^{+49} \lor \neg \left(NdChar \leq 9.8 \cdot 10^{-15}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -3.49999999999999975e49 or 9.7999999999999999e-15 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 70.1%
Taylor expanded in KbT around inf 41.3%
if -3.49999999999999975e49 < NdChar < 9.7999999999999999e-15Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.4%
Taylor expanded in Vef around inf 41.4%
Final simplification41.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -3.4e-224) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.4e-224) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-3.4d-224)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.4e-224) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -3.4e-224: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -3.4e-224) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -3.4e-224) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -3.4e-224], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.4 \cdot 10^{-224}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -3.39999999999999992e-224Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 46.0%
Taylor expanded in EAccept around inf 34.0%
if -3.39999999999999992e-224 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.6%
Taylor expanded in Ev around inf 31.9%
Final simplification32.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -7.5e+121) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -7.5e+121) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-7.5d+121)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -7.5e+121) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -7.5e+121: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -7.5e+121) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -7.5e+121) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -7.5e+121], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -7.5 \cdot 10^{+121}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -7.49999999999999965e121Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 50.2%
Taylor expanded in Ev around inf 41.8%
if -7.49999999999999965e121 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.7%
Taylor expanded in Vef around inf 36.4%
Final simplification37.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.4%
Taylor expanded in EAccept around inf 34.8%
Final simplification34.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= mu 1.06e+67) (* 0.5 (+ NdChar NaChar)) (/ NaChar (- 2.0 (/ 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 (mu <= 1.06e+67) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 - (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 (mu <= 1.06d+67) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (2.0d0 - (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 (mu <= 1.06e+67) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (2.0 - (mu / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= 1.06e+67: tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (2.0 - (mu / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= 1.06e+67) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(2.0 - Float64(mu / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= 1.06e+67) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (2.0 - (mu / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, 1.06e+67], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq 1.06 \cdot 10^{+67}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if mu < 1.0599999999999999e67Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 48.1%
Taylor expanded in mu around inf 33.7%
associate-*r/33.7%
mul-1-neg33.7%
Simplified33.7%
Taylor expanded in mu around 0 28.8%
mul-1-neg28.8%
unsub-neg28.8%
Simplified28.8%
Taylor expanded in mu around 0 29.7%
distribute-lft-out29.7%
Simplified29.7%
if 1.0599999999999999e67 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.0%
Taylor expanded in mu around inf 32.9%
associate-*r/32.9%
mul-1-neg32.9%
Simplified32.9%
Taylor expanded in mu around 0 12.8%
mul-1-neg12.8%
unsub-neg12.8%
Simplified12.8%
Taylor expanded in NdChar around 0 22.8%
Final simplification28.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.4%
Taylor expanded in mu around inf 33.5%
associate-*r/33.5%
mul-1-neg33.5%
Simplified33.5%
Taylor expanded in mu around 0 25.3%
mul-1-neg25.3%
unsub-neg25.3%
Simplified25.3%
Taylor expanded in mu around 0 26.5%
distribute-lft-out26.5%
Simplified26.5%
Final simplification26.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = ndchar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.4%
Taylor expanded in mu around inf 33.5%
associate-*r/33.5%
mul-1-neg33.5%
Simplified33.5%
Taylor expanded in mu around 0 25.3%
mul-1-neg25.3%
unsub-neg25.3%
Simplified25.3%
Taylor expanded in NdChar around inf 18.6%
Final simplification18.6%
herbie shell --seed 2023318
(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))))))