
(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 30 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (cbrt (pow (exp (/ (- Vef (- (- mu Ev) EAccept)) KbT)) 3.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + cbrt(pow(exp(((Vef - ((mu - Ev) - EAccept)) / KbT)), 3.0))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.cbrt(Math.pow(Math.exp(((Vef - ((mu - Ev) - EAccept)) / KbT)), 3.0))));
}
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + cbrt((exp(Float64(Float64(Vef - Float64(Float64(mu - Ev) - EAccept)) / KbT)) ^ 3.0))))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Power[N[Power[N[Exp[N[(N[(Vef - N[(N[(mu - Ev), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \sqrt[3]{{\left(e^{\frac{Vef - \left(\left(mu - Ev\right) - EAccept\right)}{KbT}}\right)}^{3}}}
\end{array}
Initial program 99.9%
Simplified99.9%
add-cbrt-cube100.0%
pow3100.0%
div-inv100.0%
associate-*r/100.0%
*-commutative100.0%
*-un-lft-identity100.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 (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -1.04e+130)
t_2
(if (<= Vef 7.6e-218)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 6.4e-143)
t_0
(if (<= Vef 7e-103)
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ mu KbT) (+ (/ Vef KbT) (/ EDonor KbT)))) Ec)
(/ -1.0 KbT))))))
(if (<= Vef 1000000.0) t_0 t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -1.04e+130) {
tmp = t_2;
} else if (Vef <= 7.6e-218) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 6.4e-143) {
tmp = t_0;
} else if (Vef <= 7e-103) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (Vef <= 1000000.0) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-1.04d+130)) then
tmp = t_2
else if (vef <= 7.6d-218) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 6.4d-143) then
tmp = t_0
else if (vef <= 7d-103) then
tmp = t_1 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((mu / kbt) + ((vef / kbt) + (edonor / kbt)))) / ec) + ((-1.0d0) / kbt)))))
else if (vef <= 1000000.0d0) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -1.04e+130) {
tmp = t_2;
} else if (Vef <= 7.6e-218) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 6.4e-143) {
tmp = t_0;
} else if (Vef <= 7e-103) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (Vef <= 1000000.0) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -1.04e+130: tmp = t_2 elif Vef <= 7.6e-218: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 6.4e-143: tmp = t_0 elif Vef <= 7e-103: tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))) elif Vef <= 1000000.0: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -1.04e+130) tmp = t_2; elseif (Vef <= 7.6e-218) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 6.4e-143) tmp = t_0; elseif (Vef <= 7e-103) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(mu / KbT) + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); elseif (Vef <= 1000000.0) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -1.04e+130) tmp = t_2; elseif (Vef <= 7.6e-218) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 6.4e-143) tmp = t_0; elseif (Vef <= 7e-103) tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))); elseif (Vef <= 1000000.0) 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[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.04e+130], t$95$2, If[LessEqual[Vef, 7.6e-218], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.4e-143], t$95$0, If[LessEqual[Vef, 7e-103], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1000000.0], t$95$0, t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.04 \cdot 10^{+130}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 7.6 \cdot 10^{-218}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 6.4 \cdot 10^{-143}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 7 \cdot 10^{-103}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{mu}{KbT} + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;Vef \leq 1000000:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if Vef < -1.04000000000000005e130 or 1e6 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 85.6%
if -1.04000000000000005e130 < Vef < 7.5999999999999997e-218Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 78.3%
if 7.5999999999999997e-218 < Vef < 6.3999999999999997e-143 or 7.00000000000000032e-103 < Vef < 1e6Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 88.0%
if 6.3999999999999997e-143 < Vef < 7.00000000000000032e-103Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 80.0%
Taylor expanded in Ec around -inf 100.0%
associate-*r*100.0%
mul-1-neg100.0%
+-commutative100.0%
mul-1-neg100.0%
unsub-neg100.0%
associate-+r+100.0%
+-commutative100.0%
+-commutative100.0%
Simplified100.0%
Final simplification83.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2 (+ t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Vef -3.4e+126)
t_2
(if (<= Vef 7.2e-239)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.25e-142)
t_0
(if (<= Vef 2.65e-104)
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ mu KbT) (+ (/ Vef KbT) (/ EDonor KbT)))) Ec)
(/ -1.0 KbT))))))
(if (<= Vef 1.2e+73) t_0 t_2)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Vef <= -3.4e+126) {
tmp = t_2;
} else if (Vef <= 7.2e-239) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.25e-142) {
tmp = t_0;
} else if (Vef <= 2.65e-104) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (Vef <= 1.2e+73) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + exp((vef / kbt))))
if (vef <= (-3.4d+126)) then
tmp = t_2
else if (vef <= 7.2d-239) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.25d-142) then
tmp = t_0
else if (vef <= 2.65d-104) then
tmp = t_1 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((mu / kbt) + ((vef / kbt) + (edonor / kbt)))) / ec) + ((-1.0d0) / kbt)))))
else if (vef <= 1.2d+73) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Vef <= -3.4e+126) {
tmp = t_2;
} else if (Vef <= 7.2e-239) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.25e-142) {
tmp = t_0;
} else if (Vef <= 2.65e-104) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (Vef <= 1.2e+73) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Vef <= -3.4e+126: tmp = t_2 elif Vef <= 7.2e-239: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.25e-142: tmp = t_0 elif Vef <= 2.65e-104: tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))) elif Vef <= 1.2e+73: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Vef <= -3.4e+126) tmp = t_2; elseif (Vef <= 7.2e-239) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.25e-142) tmp = t_0; elseif (Vef <= 2.65e-104) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(mu / KbT) + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); elseif (Vef <= 1.2e+73) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Vef <= -3.4e+126) tmp = t_2; elseif (Vef <= 7.2e-239) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.25e-142) tmp = t_0; elseif (Vef <= 2.65e-104) tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))); elseif (Vef <= 1.2e+73) 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[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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$2 = N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.4e+126], t$95$2, If[LessEqual[Vef, 7.2e-239], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.25e-142], t$95$0, If[LessEqual[Vef, 2.65e-104], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.2e+73], t$95$0, t$95$2]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.4 \cdot 10^{+126}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 7.2 \cdot 10^{-239}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.25 \cdot 10^{-142}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 2.65 \cdot 10^{-104}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{mu}{KbT} + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;Vef \leq 1.2 \cdot 10^{+73}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if Vef < -3.39999999999999989e126 or 1.20000000000000001e73 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.6%
if -3.39999999999999989e126 < Vef < 7.2000000000000002e-239Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 77.5%
if 7.2000000000000002e-239 < Vef < 1.2500000000000001e-142 or 2.65000000000000009e-104 < Vef < 1.20000000000000001e73Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 79.8%
if 1.2500000000000001e-142 < Vef < 2.65000000000000009e-104Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 80.0%
Taylor expanded in Ec around -inf 100.0%
associate-*r*100.0%
mul-1-neg100.0%
+-commutative100.0%
mul-1-neg100.0%
unsub-neg100.0%
associate-+r+100.0%
+-commutative100.0%
+-commutative100.0%
Simplified100.0%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (- (/ mu KbT)))))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= mu -3.2e+198)
t_0
(if (<= mu 4.4e-291)
t_1
(if (<= mu 2.15e-246)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(if (<= mu 2.3e+127) t_1 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp(-(mu / KbT))));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (mu <= -3.2e+198) {
tmp = t_0;
} else if (mu <= 4.4e-291) {
tmp = t_1;
} else if (mu <= 2.15e-246) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (mu <= 2.3e+127) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp(-(mu / kbt))))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((vef / kbt))))
if (mu <= (-3.2d+198)) then
tmp = t_0
else if (mu <= 4.4d-291) then
tmp = t_1
else if (mu <= 2.15d-246) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else if (mu <= 2.3d+127) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp(-(mu / KbT))));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (mu <= -3.2e+198) {
tmp = t_0;
} else if (mu <= 4.4e-291) {
tmp = t_1;
} else if (mu <= 2.15e-246) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (mu <= 2.3e+127) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp(-(mu / KbT)))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if mu <= -3.2e+198: tmp = t_0 elif mu <= 4.4e-291: tmp = t_1 elif mu <= 2.15e-246: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) elif mu <= 2.3e+127: tmp = t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(-Float64(mu / KbT)))))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (mu <= -3.2e+198) tmp = t_0; elseif (mu <= 4.4e-291) tmp = t_1; elseif (mu <= 2.15e-246) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (mu <= 2.3e+127) tmp = t_1; else tmp = t_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)))) + (NaChar / (1.0 + exp(-(mu / KbT)))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (mu <= -3.2e+198) tmp = t_0; elseif (mu <= 4.4e-291) tmp = t_1; elseif (mu <= 2.15e-246) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); elseif (mu <= 2.3e+127) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[(-N[(mu / KbT), $MachinePrecision])], $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 / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.2e+198], t$95$0, If[LessEqual[mu, 4.4e-291], t$95$1, If[LessEqual[mu, 2.15e-246], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.3e+127], t$95$1, t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{-\frac{mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;mu \leq -3.2 \cdot 10^{+198}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 4.4 \cdot 10^{-291}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 2.15 \cdot 10^{-246}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 2.3 \cdot 10^{+127}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -3.1999999999999998e198 or 2.3000000000000002e127 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 96.7%
Taylor expanded in mu around inf 87.9%
associate-*r/87.9%
mul-1-neg87.9%
Simplified87.9%
if -3.1999999999999998e198 < mu < 4.40000000000000005e-291 or 2.14999999999999996e-246 < mu < 2.3000000000000002e127Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.1%
if 4.40000000000000005e-291 < mu < 2.14999999999999996e-246Initial program 99.6%
Simplified99.6%
Taylor expanded in KbT around inf 86.9%
Final simplification77.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= EDonor -3.2e+224)
(+ t_1 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= EDonor -3e+105)
t_0
(if (<= EDonor -5e-37)
(+
t_1
(/
NdChar
(+
1.0
(-
(+
1.0
(- (/ EDonor KbT) (* mu (- (/ -1.0 KbT) (/ Vef (* mu KbT))))))
(/ Ec KbT)))))
(if (<= EDonor 8.2e-135)
t_0
(if (<= EDonor 2.9e+110)
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ mu KbT) (+ (/ Vef KbT) (/ EDonor KbT)))) Ec)
(/ -1.0 KbT))))))
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -3.2e+224) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (EDonor <= -3e+105) {
tmp = t_0;
} else if (EDonor <= -5e-37) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT)))))) - (Ec / KbT))));
} else if (EDonor <= 8.2e-135) {
tmp = t_0;
} else if (EDonor <= 2.9e+110) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (edonor <= (-3.2d+224)) then
tmp = t_1 + (ndchar / (1.0d0 - (ec / kbt)))
else if (edonor <= (-3d+105)) then
tmp = t_0
else if (edonor <= (-5d-37)) then
tmp = t_1 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) - (mu * (((-1.0d0) / kbt) - (vef / (mu * kbt)))))) - (ec / kbt))))
else if (edonor <= 8.2d-135) then
tmp = t_0
else if (edonor <= 2.9d+110) then
tmp = t_1 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((mu / kbt) + ((vef / kbt) + (edonor / kbt)))) / ec) + ((-1.0d0) / kbt)))))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -3.2e+224) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else if (EDonor <= -3e+105) {
tmp = t_0;
} else if (EDonor <= -5e-37) {
tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT)))))) - (Ec / KbT))));
} else if (EDonor <= 8.2e-135) {
tmp = t_0;
} else if (EDonor <= 2.9e+110) {
tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if EDonor <= -3.2e+224: tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))) elif EDonor <= -3e+105: tmp = t_0 elif EDonor <= -5e-37: tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT)))))) - (Ec / KbT)))) elif EDonor <= 8.2e-135: tmp = t_0 elif EDonor <= 2.9e+110: tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -3.2e+224) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (EDonor <= -3e+105) tmp = t_0; elseif (EDonor <= -5e-37) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) - Float64(mu * Float64(Float64(-1.0 / KbT) - Float64(Vef / Float64(mu * KbT)))))) - Float64(Ec / KbT))))); elseif (EDonor <= 8.2e-135) tmp = t_0; elseif (EDonor <= 2.9e+110) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(mu / KbT) + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (EDonor <= -3.2e+224) tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))); elseif (EDonor <= -3e+105) tmp = t_0; elseif (EDonor <= -5e-37) tmp = t_1 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT)))))) - (Ec / KbT)))); elseif (EDonor <= 8.2e-135) tmp = t_0; elseif (EDonor <= 2.9e+110) tmp = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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[EDonor, -3.2e+224], N[(t$95$1 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3e+105], t$95$0, If[LessEqual[EDonor, -5e-37], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] - N[(mu * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 8.2e-135], t$95$0, If[LessEqual[EDonor, 2.9e+110], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -3.2 \cdot 10^{+224}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;EDonor \leq -3 \cdot 10^{+105}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq -5 \cdot 10^{-37}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} - mu \cdot \left(\frac{-1}{KbT} - \frac{Vef}{mu \cdot KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;EDonor \leq 8.2 \cdot 10^{-135}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 2.9 \cdot 10^{+110}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{mu}{KbT} + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -3.20000000000000015e224Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.0%
Taylor expanded in Ec around inf 72.5%
neg-mul-172.5%
distribute-neg-frac272.5%
Simplified72.5%
if -3.20000000000000015e224 < EDonor < -3.0000000000000001e105 or -4.9999999999999997e-37 < EDonor < 8.2000000000000002e-135Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 68.5%
if -3.0000000000000001e105 < EDonor < -4.9999999999999997e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
Taylor expanded in mu around inf 73.6%
*-commutative73.6%
Simplified73.6%
if 8.2000000000000002e-135 < EDonor < 2.9e110Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.4%
Taylor expanded in Ec around -inf 74.3%
associate-*r*74.3%
mul-1-neg74.3%
+-commutative74.3%
mul-1-neg74.3%
unsub-neg74.3%
associate-+r+74.3%
+-commutative74.3%
+-commutative74.3%
Simplified74.3%
if 2.9e110 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 78.8%
Taylor expanded in EDonor around inf 74.4%
Final simplification71.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (pow E (/ (+ EDonor (+ Vef (- mu Ec))) 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), ((EDonor + (Vef + (mu - Ec))) / 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, ((EDonor + (Vef + (mu - Ec))) / 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, ((EDonor + (Vef + (mu - Ec))) / 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(EDonor + Float64(Vef + Float64(mu - Ec))) / 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 ^ ((EDonor + (Vef + (mu - Ec))) / 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[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $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{EDonor + \left(Vef + \left(mu - Ec\right)\right)}{KbT}\right)}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
*-un-lft-identity99.9%
exp-prod100.0%
*-un-lft-identity100.0%
*-un-lft-identity100.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 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) 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 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (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(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (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(((EDonor + (mu + (Vef - Ec))) / 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.exp(((EDonor + (mu + (Vef - Ec))) / 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(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / 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 + exp(((EDonor + (mu + (Vef - Ec))) / 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[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $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^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= EAccept 2.5e+151)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 2.5e+151) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (eaccept <= 2.5d+151) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 2.5e+151) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if EAccept <= 2.5e+151: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (EAccept <= 2.5e+151) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (EAccept <= 2.5e+151) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 2.5e+151], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 2.5 \cdot 10^{+151}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 2.5000000000000001e151Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 71.1%
if 2.5000000000000001e151 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 91.1%
Final simplification73.5%
(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 (<= NaChar -9.5e+141)
(+
t_0
(/
1.0
(/
(+ 2.0 (+ (+ (/ Vef KbT) (/ EDonor KbT)) (- (/ mu KbT) (/ Ec KbT))))
NdChar)))
(if (<= NaChar 3.2e+57)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(+ t_0 (/ NdChar (- 1.0 (/ 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 (NaChar <= -9.5e+141) {
tmp = t_0 + (1.0 / ((2.0 + (((Vef / KbT) + (EDonor / KbT)) + ((mu / KbT) - (Ec / KbT)))) / NdChar));
} else if (NaChar <= 3.2e+57) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 (nachar <= (-9.5d+141)) then
tmp = t_0 + (1.0d0 / ((2.0d0 + (((vef / kbt) + (edonor / kbt)) + ((mu / kbt) - (ec / kbt)))) / ndchar))
else if (nachar <= 3.2d+57) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 - (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 (NaChar <= -9.5e+141) {
tmp = t_0 + (1.0 / ((2.0 + (((Vef / KbT) + (EDonor / KbT)) + ((mu / KbT) - (Ec / KbT)))) / NdChar));
} else if (NaChar <= 3.2e+57) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 NaChar <= -9.5e+141: tmp = t_0 + (1.0 / ((2.0 + (((Vef / KbT) + (EDonor / KbT)) + ((mu / KbT) - (Ec / KbT)))) / NdChar)) elif NaChar <= 3.2e+57: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 - (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 (NaChar <= -9.5e+141) tmp = Float64(t_0 + Float64(1.0 / Float64(Float64(2.0 + Float64(Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)) + Float64(Float64(mu / KbT) - Float64(Ec / KbT)))) / NdChar))); elseif (NaChar <= 3.2e+57) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - 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 (NaChar <= -9.5e+141) tmp = t_0 + (1.0 / ((2.0 + (((Vef / KbT) + (EDonor / KbT)) + ((mu / KbT) - (Ec / KbT)))) / NdChar)); elseif (NaChar <= 3.2e+57) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 - (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[NaChar, -9.5e+141], N[(t$95$0 + N[(1.0 / N[(N[(2.0 + N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.2e+57], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 - 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}\;NaChar \leq -9.5 \cdot 10^{+141}:\\
\;\;\;\;t\_0 + \frac{1}{\frac{2 + \left(\left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right) + \left(\frac{mu}{KbT} - \frac{Ec}{KbT}\right)\right)}{NdChar}}\\
\mathbf{elif}\;NaChar \leq 3.2 \cdot 10^{+57}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -9.49999999999999974e141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.9%
clear-num77.8%
inv-pow77.8%
associate--l+77.8%
associate-+r+77.8%
Applied egg-rr77.8%
unpow-177.8%
associate-+r+77.8%
metadata-eval77.8%
associate--l+77.8%
+-commutative77.8%
Simplified77.8%
if -9.49999999999999974e141 < NaChar < 3.20000000000000029e57Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 66.6%
if 3.20000000000000029e57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.0%
Taylor expanded in Ec around inf 66.6%
neg-mul-166.6%
distribute-neg-frac266.6%
Simplified66.6%
Final simplification68.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))))))
(if (<= NaChar -4e+141)
(-
t_0
(/
NdChar
(+
-1.0
(+
(/ Ec KbT)
(- -1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))))))
(if (<= NaChar 1.1e+57)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(+ t_0 (/ NdChar (- 1.0 (/ 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 (NaChar <= -4e+141) {
tmp = t_0 - (NdChar / (-1.0 + ((Ec / KbT) + (-1.0 - ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))))));
} else if (NaChar <= 1.1e+57) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 (nachar <= (-4d+141)) then
tmp = t_0 - (ndchar / ((-1.0d0) + ((ec / kbt) + ((-1.0d0) - ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))))))
else if (nachar <= 1.1d+57) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 - (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 (NaChar <= -4e+141) {
tmp = t_0 - (NdChar / (-1.0 + ((Ec / KbT) + (-1.0 - ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))))));
} else if (NaChar <= 1.1e+57) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 NaChar <= -4e+141: tmp = t_0 - (NdChar / (-1.0 + ((Ec / KbT) + (-1.0 - ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT))))))) elif NaChar <= 1.1e+57: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 - (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 (NaChar <= -4e+141) tmp = Float64(t_0 - Float64(NdChar / Float64(-1.0 + Float64(Float64(Ec / KbT) + Float64(-1.0 - Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))))))); elseif (NaChar <= 1.1e+57) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - 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 (NaChar <= -4e+141) tmp = t_0 - (NdChar / (-1.0 + ((Ec / KbT) + (-1.0 - ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT))))))); elseif (NaChar <= 1.1e+57) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 - (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[NaChar, -4e+141], N[(t$95$0 - N[(NdChar / N[(-1.0 + N[(N[(Ec / KbT), $MachinePrecision] + N[(-1.0 - N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.1e+57], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 - 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}\;NaChar \leq -4 \cdot 10^{+141}:\\
\;\;\;\;t\_0 - \frac{NdChar}{-1 + \left(\frac{Ec}{KbT} + \left(-1 - \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right)\right)}\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{+57}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -4.00000000000000007e141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.9%
if -4.00000000000000007e141 < NaChar < 1.1e57Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 66.6%
if 1.1e57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.0%
Taylor expanded in Ec around inf 66.6%
neg-mul-166.6%
distribute-neg-frac266.6%
Simplified66.6%
Final simplification68.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))))))
(if (<= NaChar -3.7e+141)
(+
t_0
(/
NdChar
(+
1.0
(-
(+ 1.0 (- (/ EDonor KbT) (* mu (- (/ -1.0 KbT) (/ (/ Vef KbT) mu)))))
(/ Ec KbT)))))
(if (<= NaChar 5.2e+56)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(+ t_0 (/ NdChar (- 1.0 (/ 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 (NaChar <= -3.7e+141) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - ((Vef / KbT) / mu))))) - (Ec / KbT))));
} else if (NaChar <= 5.2e+56) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 (nachar <= (-3.7d+141)) then
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) - (mu * (((-1.0d0) / kbt) - ((vef / kbt) / mu))))) - (ec / kbt))))
else if (nachar <= 5.2d+56) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 - (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 (NaChar <= -3.7e+141) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - ((Vef / KbT) / mu))))) - (Ec / KbT))));
} else if (NaChar <= 5.2e+56) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 NaChar <= -3.7e+141: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - ((Vef / KbT) / mu))))) - (Ec / KbT)))) elif NaChar <= 5.2e+56: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 - (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 (NaChar <= -3.7e+141) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) - Float64(mu * Float64(Float64(-1.0 / KbT) - Float64(Float64(Vef / KbT) / mu))))) - Float64(Ec / KbT))))); elseif (NaChar <= 5.2e+56) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - 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 (NaChar <= -3.7e+141) tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) - (mu * ((-1.0 / KbT) - ((Vef / KbT) / mu))))) - (Ec / KbT)))); elseif (NaChar <= 5.2e+56) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 - (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[NaChar, -3.7e+141], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] - N[(mu * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(N[(Vef / KbT), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.2e+56], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 - 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}\;NaChar \leq -3.7 \cdot 10^{+141}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} - mu \cdot \left(\frac{-1}{KbT} - \frac{\frac{Vef}{KbT}}{mu}\right)\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 5.2 \cdot 10^{+56}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -3.7000000000000003e141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.9%
Taylor expanded in Vef around inf 75.5%
Taylor expanded in mu around inf 77.8%
associate-/r*80.0%
Simplified80.0%
if -3.7000000000000003e141 < NaChar < 5.20000000000000022e56Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 66.6%
if 5.20000000000000022e56 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.0%
Taylor expanded in Ec around inf 66.6%
neg-mul-166.6%
distribute-neg-frac266.6%
Simplified66.6%
Final simplification69.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 (<= NaChar -1e+43)
(+
t_0
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ mu KbT) (+ (/ Vef KbT) (/ EDonor KbT)))) Ec)
(/ -1.0 KbT))))))
(if (<= NaChar 1.3e+57)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(+ t_0 (/ NdChar (- 1.0 (/ 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 (NaChar <= -1e+43) {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (NaChar <= 1.3e+57) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 (nachar <= (-1d+43)) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((mu / kbt) + ((vef / kbt) + (edonor / kbt)))) / ec) + ((-1.0d0) / kbt)))))
else if (nachar <= 1.3d+57) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 - (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 (NaChar <= -1e+43) {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT)))));
} else if (NaChar <= 1.3e+57) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 - (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 NaChar <= -1e+43: tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))) elif NaChar <= 1.3e+57: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 - (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 (NaChar <= -1e+43) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(mu / KbT) + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); elseif (NaChar <= 1.3e+57) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - 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 (NaChar <= -1e+43) tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((mu / KbT) + ((Vef / KbT) + (EDonor / KbT)))) / Ec) + (-1.0 / KbT))))); elseif (NaChar <= 1.3e+57) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 - (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[NaChar, -1e+43], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.3e+57], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 - 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}\;NaChar \leq -1 \cdot 10^{+43}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{mu}{KbT} + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{+57}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NaChar < -1.00000000000000001e43Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.3%
Taylor expanded in Ec around -inf 71.3%
associate-*r*71.3%
mul-1-neg71.3%
+-commutative71.3%
mul-1-neg71.3%
unsub-neg71.3%
associate-+r+71.3%
+-commutative71.3%
+-commutative71.3%
Simplified71.3%
if -1.00000000000000001e43 < NaChar < 1.3e57Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 69.4%
if 1.3e57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.0%
Taylor expanded in Ec around inf 66.6%
neg-mul-166.6%
distribute-neg-frac266.6%
Simplified66.6%
Final simplification69.4%
(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 (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -1.5e+84)
t_1
(if (<= NdChar -4.2e-58)
(+
t_0
(/
NdChar
(- (+ 2.0 (* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT))))) (/ Ec KbT))))
(if (<= NdChar 1.02e-11) (+ t_0 (/ NdChar (- 1.0 (/ Ec KbT)))) t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -1.5e+84) {
tmp = t_1;
} else if (NdChar <= -4.2e-58) {
tmp = t_0 + (NdChar / ((2.0 + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT)));
} else if (NdChar <= 1.02e-11) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-1.5d+84)) then
tmp = t_1
else if (ndchar <= (-4.2d-58)) then
tmp = t_0 + (ndchar / ((2.0d0 + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt))))) - (ec / kbt)))
else if (ndchar <= 1.02d-11) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -1.5e+84) {
tmp = t_1;
} else if (NdChar <= -4.2e-58) {
tmp = t_0 + (NdChar / ((2.0 + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT)));
} else if (NdChar <= 1.02e-11) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -1.5e+84: tmp = t_1 elif NdChar <= -4.2e-58: tmp = t_0 + (NdChar / ((2.0 + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT))) elif NdChar <= 1.02e-11: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -1.5e+84) tmp = t_1; elseif (NdChar <= -4.2e-58) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(2.0 + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT))))) - Float64(Ec / KbT)))); elseif (NdChar <= 1.02e-11) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -1.5e+84) tmp = t_1; elseif (NdChar <= -4.2e-58) tmp = t_0 + (NdChar / ((2.0 + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT))); elseif (NdChar <= 1.02e-11) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(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[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.5e+84], t$95$1, If[LessEqual[NdChar, -4.2e-58], N[(t$95$0 + N[(NdChar / N[(N[(2.0 + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.02e-11], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\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(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -1.5 \cdot 10^{+84}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -4.2 \cdot 10^{-58}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\left(2 + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.02 \cdot 10^{-11}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NdChar < -1.49999999999999998e84 or 1.01999999999999994e-11 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 63.6%
if -1.49999999999999998e84 < NdChar < -4.19999999999999975e-58Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.1%
Taylor expanded in Vef around inf 67.0%
Taylor expanded in EDonor around 0 67.1%
if -4.19999999999999975e-58 < NdChar < 1.01999999999999994e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.7%
Taylor expanded in Ec around inf 69.3%
neg-mul-169.3%
distribute-neg-frac269.3%
Simplified69.3%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(* KbT (/ NdChar Vef))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))
(t_1
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (- 1.0 (/ mu KbT)))))
(t_2 (- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ (- Ec) KbT)))))))
(if (<= KbT -8.5e+245)
t_2
(if (<= KbT -5e-143)
t_1
(if (<= KbT 2.2e-276)
t_0
(if (<= KbT 5.4e-198)
t_1
(if (<= KbT 1.5e-113)
t_0
(if (<= KbT 3.5e+116)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.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 = (KbT * (NdChar / Vef)) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
double t_2 = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT))));
double tmp;
if (KbT <= -8.5e+245) {
tmp = t_2;
} else if (KbT <= -5e-143) {
tmp = t_1;
} else if (KbT <= 2.2e-276) {
tmp = t_0;
} else if (KbT <= 5.4e-198) {
tmp = t_1;
} else if (KbT <= 1.5e-113) {
tmp = t_0;
} else if (KbT <= 3.5e+116) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.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 = (kbt * (ndchar / vef)) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 - (mu / kbt)))
t_2 = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - exp((-ec / kbt))))
if (kbt <= (-8.5d+245)) then
tmp = t_2
else if (kbt <= (-5d-143)) then
tmp = t_1
else if (kbt <= 2.2d-276) then
tmp = t_0
else if (kbt <= 5.4d-198) then
tmp = t_1
else if (kbt <= 1.5d-113) then
tmp = t_0
else if (kbt <= 3.5d+116) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (KbT * (NdChar / Vef)) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
double t_2 = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((-Ec / KbT))));
double tmp;
if (KbT <= -8.5e+245) {
tmp = t_2;
} else if (KbT <= -5e-143) {
tmp = t_1;
} else if (KbT <= 2.2e-276) {
tmp = t_0;
} else if (KbT <= 5.4e-198) {
tmp = t_1;
} else if (KbT <= 1.5e-113) {
tmp = t_0;
} else if (KbT <= 3.5e+116) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (KbT * (NdChar / Vef)) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))) t_2 = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((-Ec / KbT)))) tmp = 0 if KbT <= -8.5e+245: tmp = t_2 elif KbT <= -5e-143: tmp = t_1 elif KbT <= 2.2e-276: tmp = t_0 elif KbT <= 5.4e-198: tmp = t_1 elif KbT <= 1.5e-113: tmp = t_0 elif KbT <= 3.5e+116: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(KbT * Float64(NdChar / Vef)) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))) t_2 = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(-Ec) / KbT))))) tmp = 0.0 if (KbT <= -8.5e+245) tmp = t_2; elseif (KbT <= -5e-143) tmp = t_1; elseif (KbT <= 2.2e-276) tmp = t_0; elseif (KbT <= 5.4e-198) tmp = t_1; elseif (KbT <= 1.5e-113) tmp = t_0; elseif (KbT <= 3.5e+116) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (KbT * (NdChar / Vef)) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))); t_2 = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT)))); tmp = 0.0; if (KbT <= -8.5e+245) tmp = t_2; elseif (KbT <= -5e-143) tmp = t_1; elseif (KbT <= 2.2e-276) tmp = t_0; elseif (KbT <= 5.4e-198) tmp = t_1; elseif (KbT <= 1.5e-113) tmp = t_0; elseif (KbT <= 3.5e+116) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.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[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8.5e+245], t$95$2, If[LessEqual[KbT, -5e-143], t$95$1, If[LessEqual[KbT, 2.2e-276], t$95$0, If[LessEqual[KbT, 5.4e-198], t$95$1, If[LessEqual[KbT, 1.5e-113], t$95$0, If[LessEqual[KbT, 3.5e+116], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := KbT \cdot \frac{NdChar}{Vef} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
t_2 := \frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{-Ec}{KbT}}}\\
\mathbf{if}\;KbT \leq -8.5 \cdot 10^{+245}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq -5 \cdot 10^{-143}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 2.2 \cdot 10^{-276}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 5.4 \cdot 10^{-198}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 1.5 \cdot 10^{-113}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;KbT \leq 3.5 \cdot 10^{+116}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if KbT < -8.49999999999999971e245 or 3.49999999999999997e116 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 88.5%
Taylor expanded in Ec around inf 72.0%
associate-*r/72.0%
mul-1-neg72.0%
Simplified72.0%
if -8.49999999999999971e245 < KbT < -5.0000000000000002e-143 or 2.19999999999999981e-276 < KbT < 5.4000000000000003e-198Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 64.8%
Taylor expanded in KbT around inf 34.1%
Taylor expanded in mu around inf 41.8%
neg-mul-141.8%
distribute-neg-frac241.8%
Simplified41.8%
if -5.0000000000000002e-143 < KbT < 2.19999999999999981e-276 or 5.4000000000000003e-198 < KbT < 1.5e-113Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in Vef around inf 57.8%
associate-/l*50.3%
Simplified50.3%
Taylor expanded in EAccept around 0 44.1%
if 1.5e-113 < KbT < 3.49999999999999997e116Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 59.4%
Taylor expanded in KbT around inf 32.4%
Final simplification47.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)))))
(t_2 (+ t_1 (* NdChar 0.5))))
(if (<= KbT -4.2e-29)
t_2
(if (<= KbT -1.95e-153)
(+ t_0 (/ NaChar (- 1.0 (/ mu KbT))))
(if (<= KbT 9e-268)
(+ t_1 (* KbT (/ NdChar EDonor)))
(if (<= KbT 1.55e-177)
(+ t_0 (/ NaChar (+ 1.0 (+ 1.0 (/ EAccept KbT)))))
(if (<= KbT 7.5e+119)
t_2
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ (- Ec) KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (KbT <= -4.2e-29) {
tmp = t_2;
} else if (KbT <= -1.95e-153) {
tmp = t_0 + (NaChar / (1.0 - (mu / KbT)));
} else if (KbT <= 9e-268) {
tmp = t_1 + (KbT * (NdChar / EDonor));
} else if (KbT <= 1.55e-177) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (KbT <= 7.5e+119) {
tmp = t_2;
} else {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-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) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar * 0.5d0)
if (kbt <= (-4.2d-29)) then
tmp = t_2
else if (kbt <= (-1.95d-153)) then
tmp = t_0 + (nachar / (1.0d0 - (mu / kbt)))
else if (kbt <= 9d-268) then
tmp = t_1 + (kbt * (ndchar / edonor))
else if (kbt <= 1.55d-177) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 + (eaccept / kbt))))
else if (kbt <= 7.5d+119) then
tmp = t_2
else
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - exp((-ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar * 0.5);
double tmp;
if (KbT <= -4.2e-29) {
tmp = t_2;
} else if (KbT <= -1.95e-153) {
tmp = t_0 + (NaChar / (1.0 - (mu / KbT)));
} else if (KbT <= 9e-268) {
tmp = t_1 + (KbT * (NdChar / EDonor));
} else if (KbT <= 1.55e-177) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (EAccept / KbT))));
} else if (KbT <= 7.5e+119) {
tmp = t_2;
} else {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((-Ec / KbT))));
}
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))) t_2 = t_1 + (NdChar * 0.5) tmp = 0 if KbT <= -4.2e-29: tmp = t_2 elif KbT <= -1.95e-153: tmp = t_0 + (NaChar / (1.0 - (mu / KbT))) elif KbT <= 9e-268: tmp = t_1 + (KbT * (NdChar / EDonor)) elif KbT <= 1.55e-177: tmp = t_0 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))) elif KbT <= 7.5e+119: tmp = t_2 else: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((-Ec / KbT)))) 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(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(t_1 + Float64(NdChar * 0.5)) tmp = 0.0 if (KbT <= -4.2e-29) tmp = t_2; elseif (KbT <= -1.95e-153) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); elseif (KbT <= 9e-268) tmp = Float64(t_1 + Float64(KbT * Float64(NdChar / EDonor))); elseif (KbT <= 1.55e-177) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(EAccept / KbT))))); elseif (KbT <= 7.5e+119) tmp = t_2; else tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(-Ec) / KbT))))); 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))); t_2 = t_1 + (NdChar * 0.5); tmp = 0.0; if (KbT <= -4.2e-29) tmp = t_2; elseif (KbT <= -1.95e-153) tmp = t_0 + (NaChar / (1.0 - (mu / KbT))); elseif (KbT <= 9e-268) tmp = t_1 + (KbT * (NdChar / EDonor)); elseif (KbT <= 1.55e-177) tmp = t_0 + (NaChar / (1.0 + (1.0 + (EAccept / KbT)))); elseif (KbT <= 7.5e+119) tmp = t_2; else tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT)))); 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[(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$2 = N[(t$95$1 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -4.2e-29], t$95$2, If[LessEqual[KbT, -1.95e-153], N[(t$95$0 + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 9e-268], N[(t$95$1 + N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.55e-177], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7.5e+119], t$95$2, N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $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}}}\\
t_2 := t\_1 + NdChar \cdot 0.5\\
\mathbf{if}\;KbT \leq -4.2 \cdot 10^{-29}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;KbT \leq -1.95 \cdot 10^{-153}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq 9 \cdot 10^{-268}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{elif}\;KbT \leq 1.55 \cdot 10^{-177}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + \left(1 + \frac{EAccept}{KbT}\right)}\\
\mathbf{elif}\;KbT \leq 7.5 \cdot 10^{+119}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{-Ec}{KbT}}}\\
\end{array}
\end{array}
if KbT < -4.19999999999999979e-29 or 1.55000000000000009e-177 < KbT < 7.500000000000001e119Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 71.3%
add-cube-cbrt70.9%
pow270.9%
Applied egg-rr70.9%
Taylor expanded in mu around 0 51.9%
*-commutative51.9%
Simplified51.9%
if -4.19999999999999979e-29 < KbT < -1.9500000000000001e-153Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 58.7%
Taylor expanded in KbT around inf 35.2%
Taylor expanded in mu around inf 50.9%
neg-mul-150.9%
distribute-neg-frac250.9%
Simplified50.9%
if -1.9500000000000001e-153 < KbT < 9.0000000000000003e-268Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in EDonor around inf 54.0%
associate-/l*47.5%
Simplified47.5%
if 9.0000000000000003e-268 < KbT < 1.55000000000000009e-177Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.4%
Taylor expanded in EAccept around inf 56.3%
Taylor expanded in EAccept around 0 41.9%
if 7.500000000000001e119 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 89.6%
Taylor expanded in Ec around inf 71.3%
associate-*r/71.3%
mul-1-neg71.3%
Simplified71.3%
Final simplification53.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (- 1.0 (/ mu KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -500000.0)
t_1
(if (<= NaChar -1.75e-121)
t_0
(if (<= NaChar -1.15e-155)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ (- Ec) KbT)))))
(if (<= NaChar 1.1e-40) t_0 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -500000.0) {
tmp = t_1;
} else if (NaChar <= -1.75e-121) {
tmp = t_0;
} else if (NaChar <= -1.15e-155) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT))));
} else if (NaChar <= 1.1e-40) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 - (mu / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-500000.0d0)) then
tmp = t_1
else if (nachar <= (-1.75d-121)) then
tmp = t_0
else if (nachar <= (-1.15d-155)) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - exp((-ec / kbt))))
else if (nachar <= 1.1d-40) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -500000.0) {
tmp = t_1;
} else if (NaChar <= -1.75e-121) {
tmp = t_0;
} else if (NaChar <= -1.15e-155) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((-Ec / KbT))));
} else if (NaChar <= 1.1e-40) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -500000.0: tmp = t_1 elif NaChar <= -1.75e-121: tmp = t_0 elif NaChar <= -1.15e-155: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((-Ec / KbT)))) elif NaChar <= 1.1e-40: tmp = t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -500000.0) tmp = t_1; elseif (NaChar <= -1.75e-121) tmp = t_0; elseif (NaChar <= -1.15e-155) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(-Ec) / KbT))))); elseif (NaChar <= 1.1e-40) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -500000.0) tmp = t_1; elseif (NaChar <= -1.75e-121) tmp = t_0; elseif (NaChar <= -1.15e-155) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT)))); elseif (NaChar <= 1.1e-40) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - 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 * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -500000.0], t$95$1, If[LessEqual[NaChar, -1.75e-121], t$95$0, If[LessEqual[NaChar, -1.15e-155], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.1e-40], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -500000:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.75 \cdot 10^{-121}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.15 \cdot 10^{-155}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{-40}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -5e5 or 1.10000000000000004e-40 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 68.8%
add-cube-cbrt68.4%
pow268.4%
Applied egg-rr68.4%
Taylor expanded in mu around 0 51.3%
*-commutative51.3%
Simplified51.3%
if -5e5 < NaChar < -1.74999999999999996e-121 or -1.15000000000000003e-155 < NaChar < 1.10000000000000004e-40Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.1%
Taylor expanded in KbT around inf 44.0%
Taylor expanded in mu around inf 49.0%
neg-mul-149.0%
distribute-neg-frac249.0%
Simplified49.0%
if -1.74999999999999996e-121 < NaChar < -1.15000000000000003e-155Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 88.4%
Taylor expanded in Ec around inf 88.4%
associate-*r/88.4%
mul-1-neg88.4%
Simplified88.4%
Final simplification51.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
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= KbT -9e-142)
t_1
(if (<= KbT 8.8e-113)
(+ t_0 (/ NdChar (- 1.0 (/ (- Ec (+ EDonor (+ mu Vef))) KbT))))
(if (<= KbT 4.3e+119) (+ t_0 (/ NdChar (- 1.0 (/ Ec KbT)))) t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -9e-142) {
tmp = t_1;
} else if (KbT <= 8.8e-113) {
tmp = t_0 + (NdChar / (1.0 - ((Ec - (EDonor + (mu + Vef))) / KbT)));
} else if (KbT <= 4.3e+119) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (kbt <= (-9d-142)) then
tmp = t_1
else if (kbt <= 8.8d-113) then
tmp = t_0 + (ndchar / (1.0d0 - ((ec - (edonor + (mu + vef))) / kbt)))
else if (kbt <= 4.3d+119) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (KbT <= -9e-142) {
tmp = t_1;
} else if (KbT <= 8.8e-113) {
tmp = t_0 + (NdChar / (1.0 - ((Ec - (EDonor + (mu + Vef))) / KbT)));
} else if (KbT <= 4.3e+119) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if KbT <= -9e-142: tmp = t_1 elif KbT <= 8.8e-113: tmp = t_0 + (NdChar / (1.0 - ((Ec - (EDonor + (mu + Vef))) / KbT))) elif KbT <= 4.3e+119: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (KbT <= -9e-142) tmp = t_1; elseif (KbT <= 8.8e-113) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Float64(Ec - Float64(EDonor + Float64(mu + Vef))) / KbT)))); elseif (KbT <= 4.3e+119) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (KbT <= -9e-142) tmp = t_1; elseif (KbT <= 8.8e-113) tmp = t_0 + (NdChar / (1.0 - ((Ec - (EDonor + (mu + Vef))) / KbT))); elseif (KbT <= 4.3e+119) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(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[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9e-142], t$95$1, If[LessEqual[KbT, 8.8e-113], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(N[(Ec - N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.3e+119], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\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(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;KbT \leq -9 \cdot 10^{-142}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;KbT \leq 8.8 \cdot 10^{-113}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT}}\\
\mathbf{elif}\;KbT \leq 4.3 \cdot 10^{+119}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if KbT < -9.00000000000000037e-142 or 4.30000000000000032e119 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 67.4%
if -9.00000000000000037e-142 < KbT < 8.80000000000000016e-113Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.6%
Taylor expanded in KbT around 0 68.2%
if 8.80000000000000016e-113 < KbT < 4.30000000000000032e119Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
Taylor expanded in Ec around inf 66.5%
neg-mul-166.5%
distribute-neg-frac266.5%
Simplified66.5%
Final simplification67.5%
(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 (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
(if (<= NdChar -2.6e+83)
t_1
(if (<= NdChar -8.5e-48)
(+ t_0 (/ NdChar (+ 1.0 (+ 1.0 (/ mu KbT)))))
(if (<= NdChar 1.3e-11) (+ t_0 (/ NdChar (- 1.0 (/ Ec KbT)))) t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.6e+83) {
tmp = t_1;
} else if (NdChar <= -8.5e-48) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.3e-11) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
if (ndchar <= (-2.6d+83)) then
tmp = t_1
else if (ndchar <= (-8.5d-48)) then
tmp = t_0 + (ndchar / (1.0d0 + (1.0d0 + (mu / kbt))))
else if (ndchar <= 1.3d-11) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -2.6e+83) {
tmp = t_1;
} else if (NdChar <= -8.5e-48) {
tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT))));
} else if (NdChar <= 1.3e-11) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -2.6e+83: tmp = t_1 elif NdChar <= -8.5e-48: tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))) elif NdChar <= 1.3e-11: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -2.6e+83) tmp = t_1; elseif (NdChar <= -8.5e-48) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(1.0 + Float64(mu / KbT))))); elseif (NdChar <= 1.3e-11) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -2.6e+83) tmp = t_1; elseif (NdChar <= -8.5e-48) tmp = t_0 + (NdChar / (1.0 + (1.0 + (mu / KbT)))); elseif (NdChar <= 1.3e-11) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(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[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.6e+83], t$95$1, If[LessEqual[NdChar, -8.5e-48], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.3e-11], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\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(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -2.6 \cdot 10^{+83}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -8.5 \cdot 10^{-48}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \left(1 + \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 1.3 \cdot 10^{-11}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NdChar < -2.6000000000000001e83 or 1.3e-11 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 63.6%
if -2.6000000000000001e83 < NdChar < -8.5000000000000004e-48Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.4%
Taylor expanded in mu around 0 60.5%
if -8.5000000000000004e-48 < NdChar < 1.3e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.4%
Taylor expanded in Ec around inf 69.2%
neg-mul-169.2%
distribute-neg-frac269.2%
Simplified69.2%
Final simplification65.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -7.2e+164) (not (<= NdChar 2.3e-11)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (- 1.0 (/ Ec KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -7.2e+164) || !(NdChar <= 2.3e-11)) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (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) :: tmp
if ((ndchar <= (-7.2d+164)) .or. (.not. (ndchar <= 2.3d-11))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 - (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 tmp;
if ((NdChar <= -7.2e+164) || !(NdChar <= 2.3e-11)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -7.2e+164) or not (NdChar <= 2.3e-11): tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -7.2e+164) || !(NdChar <= 2.3e-11)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -7.2e+164) || ~((NdChar <= 2.3e-11))) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 - (Ec / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -7.2e+164], N[Not[LessEqual[NdChar, 2.3e-11]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $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[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -7.2 \cdot 10^{+164} \lor \neg \left(NdChar \leq 2.3 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if NdChar < -7.19999999999999981e164 or 2.30000000000000014e-11 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 63.2%
if -7.19999999999999981e164 < NdChar < 2.30000000000000014e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.1%
Taylor expanded in Ec around inf 63.5%
neg-mul-163.5%
distribute-neg-frac263.5%
Simplified63.5%
Final simplification63.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))))
(if (<= NaChar -1.46e-84)
t_0
(if (<= NaChar 7.6e-193)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))
(if (<= NaChar 7.1e-41)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (exp (/ (- Ec) KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
double tmp;
if (NaChar <= -1.46e-84) {
tmp = t_0;
} else if (NaChar <= 7.6e-193) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 7.1e-41) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
if (nachar <= (-1.46d-84)) then
tmp = t_0
else if (nachar <= 7.6d-193) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else if (nachar <= 7.1d-41) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - exp((-ec / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
double tmp;
if (NaChar <= -1.46e-84) {
tmp = t_0;
} else if (NaChar <= 7.6e-193) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else if (NaChar <= 7.1e-41) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - Math.exp((-Ec / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) tmp = 0 if NaChar <= -1.46e-84: tmp = t_0 elif NaChar <= 7.6e-193: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) elif NaChar <= 7.1e-41: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - math.exp((-Ec / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)) tmp = 0.0 if (NaChar <= -1.46e-84) tmp = t_0; elseif (NaChar <= 7.6e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); elseif (NaChar <= 7.1e-41) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - exp(Float64(Float64(-Ec) / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); tmp = 0.0; if (NaChar <= -1.46e-84) tmp = t_0; elseif (NaChar <= 7.6e-193) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); elseif (NaChar <= 7.1e-41) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - exp((-Ec / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.46e-84], t$95$0, If[LessEqual[NaChar, 7.6e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 7.1e-41], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{if}\;NaChar \leq -1.46 \cdot 10^{-84}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 7.6 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 7.1 \cdot 10^{-41}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -1.46000000000000004e-84 or 7.10000000000000003e-41 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 64.9%
Taylor expanded in KbT around inf 34.3%
if -1.46000000000000004e-84 < NaChar < 7.60000000000000007e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.1%
Taylor expanded in KbT around inf 51.3%
Taylor expanded in KbT around inf 48.9%
if 7.60000000000000007e-193 < NaChar < 7.10000000000000003e-41Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.8%
Taylor expanded in Ec around inf 46.9%
associate-*r/46.9%
mul-1-neg46.9%
Simplified46.9%
Final simplification39.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -3.7e+141) (not (<= NaChar 48000.0)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -3.7e+141) || !(NaChar <= 48000.0)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-3.7d+141)) .or. (.not. (nachar <= 48000.0d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -3.7e+141) || !(NaChar <= 48000.0)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -3.7e+141) or not (NaChar <= 48000.0): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -3.7e+141) || !(NaChar <= 48000.0)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -3.7e+141) || ~((NaChar <= 48000.0))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -3.7e+141], N[Not[LessEqual[NaChar, 48000.0]], $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 * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -3.7 \cdot 10^{+141} \lor \neg \left(NaChar \leq 48000\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -3.7000000000000003e141 or 48000 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 75.9%
add-cube-cbrt75.5%
pow275.5%
Applied egg-rr75.5%
Taylor expanded in mu around 0 57.8%
*-commutative57.8%
Simplified57.8%
if -3.7000000000000003e141 < NaChar < 48000Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.4%
Final simplification58.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -2.2e-83)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= NaChar 5.4e-109)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ (/ mu 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 (NaChar <= -2.2e-83) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 5.4e-109) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / ((mu / 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 (nachar <= (-2.2d-83)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 5.4d-109) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / ((mu / 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 (NaChar <= -2.2e-83) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 5.4e-109) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -2.2e-83: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif NaChar <= 5.4e-109: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -2.2e-83) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 5.4e-109) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -2.2e-83) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 5.4e-109) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -2.2e-83], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.4e-109], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.2 \cdot 10^{-83}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 5.4 \cdot 10^{-109}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -2.20000000000000008e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 61.4%
Taylor expanded in KbT around inf 33.2%
if -2.20000000000000008e-83 < NaChar < 5.4000000000000001e-109Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 70.7%
Taylor expanded in KbT around inf 51.0%
Taylor expanded in KbT around inf 47.9%
if 5.4000000000000001e-109 < NaChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 67.3%
Taylor expanded in EAccept around inf 44.0%
Taylor expanded in mu around 0 35.8%
+-commutative35.8%
Simplified35.8%
Final simplification38.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 9.5e-142) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (- 1.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 (EAccept <= 9.5e-142) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.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 (eaccept <= 9.5d-142) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.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 (EAccept <= 9.5e-142) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 9.5e-142: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 9.5e-142) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.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 (EAccept <= 9.5e-142) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 9.5e-142], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / 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[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 9.5 \cdot 10^{-142}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if EAccept < 9.49999999999999967e-142Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 68.2%
Taylor expanded in KbT around inf 35.9%
if 9.49999999999999967e-142 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.5%
Taylor expanded in KbT around inf 41.4%
Taylor expanded in mu around inf 41.3%
neg-mul-141.3%
distribute-neg-frac241.3%
Simplified41.3%
Final simplification37.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar 1.2e-11) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= 1.2e-11) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= 1.2d-11) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= 1.2e-11) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= 1.2e-11: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= 1.2e-11) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= 1.2e-11) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, 1.2e-11], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / 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 * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq 1.2 \cdot 10^{-11}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < 1.2000000000000001e-11Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.2%
Taylor expanded in KbT around inf 35.5%
if 1.2000000000000001e-11 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 59.8%
Taylor expanded in KbT around inf 40.2%
Taylor expanded in KbT around inf 42.8%
Final simplification37.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ 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) {
return (NaChar / (1.0 + exp((Ev / 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((ev / 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((Ev / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in KbT around inf 33.3%
Final simplification33.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.15e-158)
(+ (/ NaChar 2.0) (/ NdChar 2.0))
(if (<= KbT 5e-215)
(/ (* NdChar KbT) Vef)
(+
(/
NdChar
(+
1.0
(-
(+ 1.0 (+ (/ EDonor KbT) (* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT))))))
(/ Ec KbT))))
(/
NaChar
(-
(+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 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 (KbT <= -1.15e-158) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else if (KbT <= 5e-215) {
tmp = (NdChar * KbT) / Vef;
} else {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) + (NaChar / ((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 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 (kbt <= (-1.15d-158)) then
tmp = (nachar / 2.0d0) + (ndchar / 2.0d0)
else if (kbt <= 5d-215) then
tmp = (ndchar * kbt) / vef
else
tmp = (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt)))))) - (ec / kbt)))) + (nachar / ((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 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 (KbT <= -1.15e-158) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else if (KbT <= 5e-215) {
tmp = (NdChar * KbT) / Vef;
} else {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) + (NaChar / ((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 2.0) - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.15e-158: tmp = (NaChar / 2.0) + (NdChar / 2.0) elif KbT <= 5e-215: tmp = (NdChar * KbT) / Vef else: tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) + (NaChar / ((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 2.0) - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.15e-158) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / 2.0)); elseif (KbT <= 5e-215) tmp = Float64(Float64(NdChar * KbT) / Vef); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT)))))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 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 (KbT <= -1.15e-158) tmp = (NaChar / 2.0) + (NdChar / 2.0); elseif (KbT <= 5e-215) tmp = (NdChar * KbT) / Vef; else tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT)))))) - (Ec / KbT)))) + (NaChar / ((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 2.0) - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.15e-158], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 5e-215], N[(N[(NdChar * KbT), $MachinePrecision] / Vef), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 2.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.15 \cdot 10^{-158}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 5 \cdot 10^{-215}:\\
\;\;\;\;\frac{NdChar \cdot KbT}{Vef}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 2\right) - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if KbT < -1.1499999999999999e-158Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.6%
Taylor expanded in KbT around inf 31.2%
if -1.1499999999999999e-158 < KbT < 4.99999999999999956e-215Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.5%
Taylor expanded in Vef around inf 45.5%
associate-/l*37.7%
Simplified37.7%
Taylor expanded in KbT around inf 6.4%
Taylor expanded in KbT around inf 22.9%
if 4.99999999999999956e-215 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.8%
Taylor expanded in Vef around inf 57.5%
Taylor expanded in KbT around inf 32.9%
Final simplification30.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.8e-159) (not (<= KbT 1.5e-114))) (+ (/ NaChar 2.0) (/ NdChar 2.0)) (/ (* NdChar KbT) Vef)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.8e-159) || !(KbT <= 1.5e-114)) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2.8d-159)) .or. (.not. (kbt <= 1.5d-114))) then
tmp = (nachar / 2.0d0) + (ndchar / 2.0d0)
else
tmp = (ndchar * kbt) / vef
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.8e-159) || !(KbT <= 1.5e-114)) {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.8e-159) or not (KbT <= 1.5e-114): tmp = (NaChar / 2.0) + (NdChar / 2.0) else: tmp = (NdChar * KbT) / Vef return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.8e-159) || !(KbT <= 1.5e-114)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar * KbT) / Vef); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.8e-159) || ~((KbT <= 1.5e-114))) tmp = (NaChar / 2.0) + (NdChar / 2.0); else tmp = (NdChar * KbT) / Vef; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.8e-159], N[Not[LessEqual[KbT, 1.5e-114]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * KbT), $MachinePrecision] / Vef), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.8 \cdot 10^{-159} \lor \neg \left(KbT \leq 1.5 \cdot 10^{-114}\right):\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar \cdot KbT}{Vef}\\
\end{array}
\end{array}
if KbT < -2.8000000000000002e-159 or 1.50000000000000008e-114 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 58.9%
Taylor expanded in KbT around inf 33.2%
if -2.8000000000000002e-159 < KbT < 1.50000000000000008e-114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
Taylor expanded in Vef around inf 48.0%
associate-/l*41.1%
Simplified41.1%
Taylor expanded in KbT around inf 7.0%
Taylor expanded in KbT around inf 22.5%
Final simplification29.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -4.9e-157) (not (<= KbT 1.46e-132))) (* NaChar 0.5) (/ (* NdChar KbT) Vef)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -4.9e-157) || !(KbT <= 1.46e-132)) {
tmp = NaChar * 0.5;
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-4.9d-157)) .or. (.not. (kbt <= 1.46d-132))) then
tmp = nachar * 0.5d0
else
tmp = (ndchar * kbt) / vef
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -4.9e-157) || !(KbT <= 1.46e-132)) {
tmp = NaChar * 0.5;
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -4.9e-157) or not (KbT <= 1.46e-132): tmp = NaChar * 0.5 else: tmp = (NdChar * KbT) / Vef return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -4.9e-157) || !(KbT <= 1.46e-132)) tmp = Float64(NaChar * 0.5); else tmp = Float64(Float64(NdChar * KbT) / Vef); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -4.9e-157) || ~((KbT <= 1.46e-132))) tmp = NaChar * 0.5; else tmp = (NdChar * KbT) / Vef; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -4.9e-157], N[Not[LessEqual[KbT, 1.46e-132]], $MachinePrecision]], N[(NaChar * 0.5), $MachinePrecision], N[(N[(NdChar * KbT), $MachinePrecision] / Vef), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.9 \cdot 10^{-157} \lor \neg \left(KbT \leq 1.46 \cdot 10^{-132}\right):\\
\;\;\;\;NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar \cdot KbT}{Vef}\\
\end{array}
\end{array}
if KbT < -4.8999999999999998e-157 or 1.45999999999999999e-132 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.9%
Taylor expanded in Vef around inf 20.7%
associate-/l*23.4%
Simplified23.4%
Taylor expanded in KbT around inf 9.2%
Taylor expanded in KbT around 0 20.9%
if -4.8999999999999998e-157 < KbT < 1.45999999999999999e-132Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.5%
Taylor expanded in Vef around inf 49.0%
associate-/l*42.0%
Simplified42.0%
Taylor expanded in KbT around inf 7.0%
Taylor expanded in KbT around inf 23.0%
Final simplification21.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef -2.75e+163) (* KbT (/ NdChar Vef)) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -2.75e+163) {
tmp = KbT * (NdChar / Vef);
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= (-2.75d+163)) then
tmp = kbt * (ndchar / vef)
else
tmp = nachar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= -2.75e+163) {
tmp = KbT * (NdChar / Vef);
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= -2.75e+163: tmp = KbT * (NdChar / Vef) else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= -2.75e+163) tmp = Float64(KbT * Float64(NdChar / Vef)); else tmp = Float64(NaChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= -2.75e+163) tmp = KbT * (NdChar / Vef); else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, -2.75e+163], N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.75 \cdot 10^{+163}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if Vef < -2.75000000000000007e163Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 38.8%
Taylor expanded in Vef around inf 48.8%
associate-/l*54.9%
Simplified54.9%
Taylor expanded in KbT around inf 8.0%
Taylor expanded in KbT around inf 24.4%
associate-/l*30.3%
Simplified30.3%
if -2.75000000000000007e163 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 53.3%
Taylor expanded in Vef around inf 26.8%
associate-/l*25.6%
Simplified25.6%
Taylor expanded in KbT around inf 8.6%
Taylor expanded in KbT around 0 18.1%
Final simplification19.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.5%
Taylor expanded in Vef around inf 29.5%
associate-/l*29.2%
Simplified29.2%
Taylor expanded in KbT around inf 8.5%
Taylor expanded in KbT around 0 16.9%
Final simplification16.9%
herbie shell --seed 2024095
(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))))))