
(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 41 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (pow E (/ (+ mu (- EDonor (- Ec Vef))) 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), ((mu + (EDonor - (Ec - Vef))) / 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, ((mu + (EDonor - (Ec - Vef))) / 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, ((mu + (EDonor - (Ec - Vef))) / 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(mu + Float64(EDonor - Float64(Ec - Vef))) / 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 ^ ((mu + (EDonor - (Ec - Vef))) / 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[(mu + N[(EDonor - N[(Ec - Vef), $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{mu + \left(EDonor - \left(Ec - Vef\right)\right)}{KbT}\right)}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
+-commutative100.0%
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 (/ mu KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_3 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_4
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
(if (<= Ev -1.35e+174)
(+ t_3 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Ev -1.25e+133)
t_4
(if (<= Ev -7e+108)
(+ t_3 t_0)
(if (<= Ev -1.5e-27)
t_1
(if (<= Ev -8.2e-125)
(+
t_2
(/ NdChar (+ 1.0 (* Ec (+ (/ (/ Vef Ec) KbT) (/ -1.0 KbT))))))
(if (<= Ev -9.5e-166)
t_4
(if (<= Ev -2.7e-182)
(+
t_2
(/
NdChar
(+
1.0
(*
mu
(+
(/
(- (+ 1.0 (+ (/ Vef KbT) (/ EDonor KbT))) (/ Ec KbT))
mu)
(/ 1.0 KbT))))))
(if (<= Ev -1.15e-281)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= Ev -5.8e-298)
(+ t_2 (/ NdChar (+ 1.0 (/ EDonor 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 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
double t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_3 = NaChar / (1.0 + exp((Ev / KbT)));
double t_4 = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (Ev <= -1.35e+174) {
tmp = t_3 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Ev <= -1.25e+133) {
tmp = t_4;
} else if (Ev <= -7e+108) {
tmp = t_3 + t_0;
} else if (Ev <= -1.5e-27) {
tmp = t_1;
} else if (Ev <= -8.2e-125) {
tmp = t_2 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT)))));
} else if (Ev <= -9.5e-166) {
tmp = t_4;
} else if (Ev <= -2.7e-182) {
tmp = t_2 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT)))));
} else if (Ev <= -1.15e-281) {
tmp = t_0 + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (Ev <= -5.8e-298) {
tmp = t_2 + (NdChar / (1.0 + (EDonor / 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) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
t_2 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_3 = nachar / (1.0d0 + exp((ev / kbt)))
t_4 = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
if (ev <= (-1.35d+174)) then
tmp = t_3 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (ev <= (-1.25d+133)) then
tmp = t_4
else if (ev <= (-7d+108)) then
tmp = t_3 + t_0
else if (ev <= (-1.5d-27)) then
tmp = t_1
else if (ev <= (-8.2d-125)) then
tmp = t_2 + (ndchar / (1.0d0 + (ec * (((vef / ec) / kbt) + ((-1.0d0) / kbt)))))
else if (ev <= (-9.5d-166)) then
tmp = t_4
else if (ev <= (-2.7d-182)) then
tmp = t_2 + (ndchar / (1.0d0 + (mu * ((((1.0d0 + ((vef / kbt) + (edonor / kbt))) - (ec / kbt)) / mu) + (1.0d0 / kbt)))))
else if (ev <= (-1.15d-281)) then
tmp = t_0 + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (ev <= (-5.8d-298)) then
tmp = t_2 + (ndchar / (1.0d0 + (edonor / 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 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_3 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_4 = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (Ev <= -1.35e+174) {
tmp = t_3 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Ev <= -1.25e+133) {
tmp = t_4;
} else if (Ev <= -7e+108) {
tmp = t_3 + t_0;
} else if (Ev <= -1.5e-27) {
tmp = t_1;
} else if (Ev <= -8.2e-125) {
tmp = t_2 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT)))));
} else if (Ev <= -9.5e-166) {
tmp = t_4;
} else if (Ev <= -2.7e-182) {
tmp = t_2 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT)))));
} else if (Ev <= -1.15e-281) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (Ev <= -5.8e-298) {
tmp = t_2 + (NdChar / (1.0 + (EDonor / KbT)));
} 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))) t_1 = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) t_2 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_3 = NaChar / (1.0 + math.exp((Ev / KbT))) t_4 = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) tmp = 0 if Ev <= -1.35e+174: tmp = t_3 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Ev <= -1.25e+133: tmp = t_4 elif Ev <= -7e+108: tmp = t_3 + t_0 elif Ev <= -1.5e-27: tmp = t_1 elif Ev <= -8.2e-125: tmp = t_2 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT))))) elif Ev <= -9.5e-166: tmp = t_4 elif Ev <= -2.7e-182: tmp = t_2 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT))))) elif Ev <= -1.15e-281: tmp = t_0 + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif Ev <= -5.8e-298: tmp = t_2 + (NdChar / (1.0 + (EDonor / KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_4 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) tmp = 0.0 if (Ev <= -1.35e+174) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Ev <= -1.25e+133) tmp = t_4; elseif (Ev <= -7e+108) tmp = Float64(t_3 + t_0); elseif (Ev <= -1.5e-27) tmp = t_1; elseif (Ev <= -8.2e-125) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(Vef / Ec) / KbT) + Float64(-1.0 / KbT)))))); elseif (Ev <= -9.5e-166) tmp = t_4; elseif (Ev <= -2.7e-182) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + Float64(mu * Float64(Float64(Float64(Float64(1.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT))) - Float64(Ec / KbT)) / mu) + Float64(1.0 / KbT)))))); elseif (Ev <= -1.15e-281) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (Ev <= -5.8e-298) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); 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))); t_1 = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_3 = NaChar / (1.0 + exp((Ev / KbT))); t_4 = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); tmp = 0.0; if (Ev <= -1.35e+174) tmp = t_3 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Ev <= -1.25e+133) tmp = t_4; elseif (Ev <= -7e+108) tmp = t_3 + t_0; elseif (Ev <= -1.5e-27) tmp = t_1; elseif (Ev <= -8.2e-125) tmp = t_2 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT))))); elseif (Ev <= -9.5e-166) tmp = t_4; elseif (Ev <= -2.7e-182) tmp = t_2 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT))))); elseif (Ev <= -1.15e-281) tmp = t_0 + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (Ev <= -5.8e-298) tmp = t_2 + (NdChar / (1.0 + (EDonor / 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[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = 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$3 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1.35e+174], N[(t$95$3 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.25e+133], t$95$4, If[LessEqual[Ev, -7e+108], N[(t$95$3 + t$95$0), $MachinePrecision], If[LessEqual[Ev, -1.5e-27], t$95$1, If[LessEqual[Ev, -8.2e-125], N[(t$95$2 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(Vef / Ec), $MachinePrecision] / KbT), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -9.5e-166], t$95$4, If[LessEqual[Ev, -2.7e-182], N[(t$95$2 + N[(NdChar / N[(1.0 + N[(mu * N[(N[(N[(N[(1.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.15e-281], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -5.8e-298], N[(t$95$2 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_4 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{if}\;Ev \leq -1.35 \cdot 10^{+174}:\\
\;\;\;\;t\_3 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.25 \cdot 10^{+133}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;Ev \leq -7 \cdot 10^{+108}:\\
\;\;\;\;t\_3 + t\_0\\
\mathbf{elif}\;Ev \leq -1.5 \cdot 10^{-27}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Ev \leq -8.2 \cdot 10^{-125}:\\
\;\;\;\;t\_2 + \frac{NdChar}{1 + Ec \cdot \left(\frac{\frac{Vef}{Ec}}{KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;Ev \leq -9.5 \cdot 10^{-166}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;Ev \leq -2.7 \cdot 10^{-182}:\\
\;\;\;\;t\_2 + \frac{NdChar}{1 + mu \cdot \left(\frac{\left(1 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right) - \frac{Ec}{KbT}}{mu} + \frac{1}{KbT}\right)}\\
\mathbf{elif}\;Ev \leq -1.15 \cdot 10^{-281}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;Ev \leq -5.8 \cdot 10^{-298}:\\
\;\;\;\;t\_2 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Ev < -1.35e174Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 90.9%
Taylor expanded in EDonor around inf 74.4%
if -1.35e174 < Ev < -1.2499999999999999e133 or -8.1999999999999995e-125 < Ev < -9.50000000000000046e-166Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.0%
Taylor expanded in Vef around 0 77.3%
+-commutative67.8%
Simplified77.3%
if -1.2499999999999999e133 < Ev < -7.0000000000000005e108Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
Taylor expanded in Ev around inf 100.0%
if -7.0000000000000005e108 < Ev < -1.5000000000000001e-27 or -5.8000000000000003e-298 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.1%
Taylor expanded in EDonor around 0 69.3%
+-commutative67.5%
Simplified69.3%
if -1.5000000000000001e-27 < Ev < -8.1999999999999995e-125Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.3%
Taylor expanded in Ec around -inf 58.2%
mul-1-neg58.2%
*-commutative58.2%
distribute-rgt-neg-in58.2%
+-commutative58.2%
mul-1-neg58.2%
unsub-neg58.2%
Simplified58.2%
Taylor expanded in Vef around inf 65.6%
associate-/r*72.2%
Simplified72.2%
if -9.50000000000000046e-166 < Ev < -2.69999999999999999e-182Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in mu around -inf 100.0%
if -2.69999999999999999e-182 < Ev < -1.14999999999999994e-281Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 69.1%
Taylor expanded in mu around inf 65.1%
associate-*r/65.1%
mul-1-neg65.1%
Simplified65.1%
if -1.14999999999999994e-281 < Ev < -5.8000000000000003e-298Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.0%
Taylor expanded in Ec around -inf 78.2%
mul-1-neg78.2%
*-commutative78.2%
distribute-rgt-neg-in78.2%
+-commutative78.2%
mul-1-neg78.2%
unsub-neg78.2%
Simplified78.2%
Taylor expanded in EDonor around inf 69.6%
Final simplification70.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)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) Ec)
(/ -1.0 KbT)))))))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EAccept -9.2e-156)
t_3
(if (<= EAccept -9e-209)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(if (<= EAccept 2.7e-253)
t_3
(if (<= EAccept 8.9e-147)
t_2
(if (<= EAccept 6.5e-146)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= EAccept 6e-91)
(+ t_1 (/ NdChar (+ 1.0 (/ Vef KbT))))
(if (<= EAccept 75000000000.0)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= EAccept 8e+61)
(+ t_1 (/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= EAccept 4.6e+69)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
(if (<= EAccept 3.3e+137)
(+
t_1
(/
NdChar
(+
1.0
(* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
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)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
double t_3 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EAccept <= -9.2e-156) {
tmp = t_3;
} else if (EAccept <= -9e-209) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 2.7e-253) {
tmp = t_3;
} else if (EAccept <= 8.9e-147) {
tmp = t_2;
} else if (EAccept <= 6.5e-146) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (EAccept <= 6e-91) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 75000000000.0) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 8e+61) {
tmp = t_1 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 4.6e+69) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((Ec / -KbT))));
} else if (EAccept <= 3.3e+137) {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) / ec) + ((-1.0d0) / kbt)))))
t_3 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (eaccept <= (-9.2d-156)) then
tmp = t_3
else if (eaccept <= (-9d-209)) then
tmp = t_0 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else if (eaccept <= 2.7d-253) then
tmp = t_3
else if (eaccept <= 8.9d-147) then
tmp = t_2
else if (eaccept <= 6.5d-146) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (eaccept <= 6d-91) then
tmp = t_1 + (ndchar / (1.0d0 + (vef / kbt)))
else if (eaccept <= 75000000000.0d0) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (eaccept <= 8d+61) then
tmp = t_1 + (ndchar / (1.0d0 + (mu / kbt)))
else if (eaccept <= 4.6d+69) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((ec / -kbt))))
else if (eaccept <= 3.3d+137) then
tmp = t_1 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
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)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
double t_3 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EAccept <= -9.2e-156) {
tmp = t_3;
} else if (EAccept <= -9e-209) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 2.7e-253) {
tmp = t_3;
} else if (EAccept <= 8.9e-147) {
tmp = t_2;
} else if (EAccept <= 6.5e-146) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (EAccept <= 6e-91) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 75000000000.0) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 8e+61) {
tmp = t_1 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 4.6e+69) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
} else if (EAccept <= 3.3e+137) {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} 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))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) t_3 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EAccept <= -9.2e-156: tmp = t_3 elif EAccept <= -9e-209: tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) elif EAccept <= 2.7e-253: tmp = t_3 elif EAccept <= 8.9e-147: tmp = t_2 elif EAccept <= 6.5e-146: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif EAccept <= 6e-91: tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))) elif EAccept <= 75000000000.0: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif EAccept <= 8e+61: tmp = t_1 + (NdChar / (1.0 + (mu / KbT))) elif EAccept <= 4.6e+69: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((Ec / -KbT)))) elif EAccept <= 3.3e+137: tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) else: tmp = t_2 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)))) 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 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / KbT)))))) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EAccept <= -9.2e-156) tmp = t_3; elseif (EAccept <= -9e-209) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (EAccept <= 2.7e-253) tmp = t_3; elseif (EAccept <= 8.9e-147) tmp = t_2; elseif (EAccept <= 6.5e-146) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (EAccept <= 6e-91) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); elseif (EAccept <= 75000000000.0) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (EAccept <= 8e+61) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (EAccept <= 4.6e+69) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))); elseif (EAccept <= 3.3e+137) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); 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))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))); t_3 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EAccept <= -9.2e-156) tmp = t_3; elseif (EAccept <= -9e-209) tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); elseif (EAccept <= 2.7e-253) tmp = t_3; elseif (EAccept <= 8.9e-147) tmp = t_2; elseif (EAccept <= 6.5e-146) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (EAccept <= 6e-91) tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))); elseif (EAccept <= 75000000000.0) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (EAccept <= 8e+61) tmp = t_1 + (NdChar / (1.0 + (mu / KbT))); elseif (EAccept <= 4.6e+69) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((Ec / -KbT)))); elseif (EAccept <= 3.3e+137) tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 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 / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = 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]}, If[LessEqual[EAccept, -9.2e-156], t$95$3, If[LessEqual[EAccept, -9e-209], N[(t$95$0 + 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[EAccept, 2.7e-253], t$95$3, If[LessEqual[EAccept, 8.9e-147], t$95$2, If[LessEqual[EAccept, 6.5e-146], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6e-91], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 75000000000.0], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 8e+61], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4.6e+69], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.3e+137], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 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}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EAccept \leq -9.2 \cdot 10^{-156}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq -9 \cdot 10^{-209}:\\
\;\;\;\;t\_0 + \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}\;EAccept \leq 2.7 \cdot 10^{-253}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 8.9 \cdot 10^{-147}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 6.5 \cdot 10^{-146}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 6 \cdot 10^{-91}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;EAccept \leq 75000000000:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 8 \cdot 10^{+61}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;EAccept \leq 4.6 \cdot 10^{+69}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{elif}\;EAccept \leq 3.3 \cdot 10^{+137}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EAccept < -9.1999999999999998e-156 or -8.9999999999999996e-209 < EAccept < 2.69999999999999999e-253Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in EDonor around inf 55.4%
if -9.1999999999999998e-156 < EAccept < -8.9999999999999996e-209Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.3%
+-commutative56.3%
Simplified56.3%
if 2.69999999999999999e-253 < EAccept < 8.9000000000000005e-147 or 3.30000000000000003e137 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.4%
Taylor expanded in Ec around -inf 61.6%
mul-1-neg61.6%
*-commutative61.6%
distribute-rgt-neg-in61.6%
+-commutative61.6%
mul-1-neg61.6%
unsub-neg61.6%
Simplified61.6%
if 8.9000000000000005e-147 < EAccept < 6.4999999999999999e-146Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.8%
Taylor expanded in KbT around inf 33.6%
associate-+r+33.6%
+-commutative33.6%
Simplified33.6%
Taylor expanded in mu around inf 20.1%
associate-*r/20.1%
associate-*r*20.1%
neg-mul-120.1%
Simplified20.1%
Taylor expanded in NdChar around inf 28.8%
if 6.4999999999999999e-146 < EAccept < 6.0000000000000004e-91Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.7%
Taylor expanded in Ec around -inf 56.7%
mul-1-neg56.7%
*-commutative56.7%
distribute-rgt-neg-in56.7%
+-commutative56.7%
mul-1-neg56.7%
unsub-neg56.7%
Simplified56.7%
Taylor expanded in Vef around inf 78.2%
if 6.0000000000000004e-91 < EAccept < 7.5e10Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.8%
Taylor expanded in Vef around 0 59.8%
+-commutative55.3%
Simplified59.8%
if 7.5e10 < EAccept < 7.9999999999999996e61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.3%
Taylor expanded in Ec around -inf 67.6%
mul-1-neg67.6%
*-commutative67.6%
distribute-rgt-neg-in67.6%
+-commutative67.6%
mul-1-neg67.6%
unsub-neg67.6%
Simplified67.6%
Taylor expanded in mu around inf 91.9%
if 7.9999999999999996e61 < EAccept < 4.60000000000000033e69Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 79.7%
Taylor expanded in Ec around inf 75.9%
associate-*r/75.9%
mul-1-neg75.9%
Simplified75.9%
if 4.60000000000000033e69 < EAccept < 3.30000000000000003e137Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.5%
Taylor expanded in Ec around -inf 73.7%
mul-1-neg73.7%
*-commutative73.7%
distribute-rgt-neg-in73.7%
+-commutative73.7%
mul-1-neg73.7%
unsub-neg73.7%
Simplified73.7%
Taylor expanded in EDonor around inf 82.1%
Final simplification60.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))))
(if (<= Ev -1.95e+33)
(+ t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev -7.8e-165)
t_2
(if (<= Ev -9.5e-183)
(+
t_0
(/
NdChar
(+
1.0
(*
mu
(+
(/ (- (+ 1.0 (+ (/ Vef KbT) (/ EDonor KbT))) (/ Ec KbT)) mu)
(/ 1.0 KbT))))))
(if (<= Ev -7.8e-193)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= Ev -2.1e-262)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Ev 1.16e-178)
t_2
(+ t_1 (/ 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((Vef / KbT))));
double tmp;
if (Ev <= -1.95e+33) {
tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= -7.8e-165) {
tmp = t_2;
} else if (Ev <= -9.5e-183) {
tmp = t_0 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT)))));
} else if (Ev <= -7.8e-193) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (Ev <= -2.1e-262) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Ev <= 1.16e-178) {
tmp = t_2;
} else {
tmp = t_1 + (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) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((vef / kbt))))
if (ev <= (-1.95d+33)) then
tmp = t_1 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= (-7.8d-165)) then
tmp = t_2
else if (ev <= (-9.5d-183)) then
tmp = t_0 + (ndchar / (1.0d0 + (mu * ((((1.0d0 + ((vef / kbt) + (edonor / kbt))) - (ec / kbt)) / mu) + (1.0d0 / kbt)))))
else if (ev <= (-7.8d-193)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (ev <= (-2.1d-262)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (ev <= 1.16d-178) then
tmp = t_2
else
tmp = t_1 + (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 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
double tmp;
if (Ev <= -1.95e+33) {
tmp = t_1 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= -7.8e-165) {
tmp = t_2;
} else if (Ev <= -9.5e-183) {
tmp = t_0 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT)))));
} else if (Ev <= -7.8e-193) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (Ev <= -2.1e-262) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Ev <= 1.16e-178) {
tmp = t_2;
} else {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((Vef / KbT)))) tmp = 0 if Ev <= -1.95e+33: tmp = t_1 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= -7.8e-165: tmp = t_2 elif Ev <= -9.5e-183: tmp = t_0 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT))))) elif Ev <= -7.8e-193: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif Ev <= -2.1e-262: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Ev <= 1.16e-178: tmp = t_2 else: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))) tmp = 0.0 if (Ev <= -1.95e+33) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= -7.8e-165) tmp = t_2; elseif (Ev <= -9.5e-183) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(mu * Float64(Float64(Float64(Float64(1.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT))) - Float64(Ec / KbT)) / mu) + Float64(1.0 / KbT)))))); elseif (Ev <= -7.8e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (Ev <= -2.1e-262) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Ev <= 1.16e-178) tmp = t_2; else tmp = Float64(t_1 + 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((Vef / KbT)))); tmp = 0.0; if (Ev <= -1.95e+33) tmp = t_1 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= -7.8e-165) tmp = t_2; elseif (Ev <= -9.5e-183) tmp = t_0 + (NdChar / (1.0 + (mu * ((((1.0 + ((Vef / KbT) + (EDonor / KbT))) - (Ec / KbT)) / mu) + (1.0 / KbT))))); elseif (Ev <= -7.8e-193) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (Ev <= -2.1e-262) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Ev <= 1.16e-178) tmp = t_2; else tmp = t_1 + (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[(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[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1.95e+33], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -7.8e-165], t$95$2, If[LessEqual[Ev, -9.5e-183], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(mu * N[(N[(N[(N[(1.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -7.8e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -2.1e-262], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.16e-178], t$95$2, N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Ev \leq -1.95 \cdot 10^{+33}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -7.8 \cdot 10^{-165}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Ev \leq -9.5 \cdot 10^{-183}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + mu \cdot \left(\frac{\left(1 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right) - \frac{Ec}{KbT}}{mu} + \frac{1}{KbT}\right)}\\
\mathbf{elif}\;Ev \leq -7.8 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;Ev \leq -2.1 \cdot 10^{-262}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Ev \leq 1.16 \cdot 10^{-178}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -1.9500000000000001e33Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.8%
if -1.9500000000000001e33 < Ev < -7.7999999999999997e-165 or -2.1e-262 < Ev < 1.16e-178Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.6%
if -7.7999999999999997e-165 < Ev < -9.5000000000000008e-183Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in mu around -inf 100.0%
if -9.5000000000000008e-183 < Ev < -7.7999999999999997e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.2%
Taylor expanded in EDonor around 0 76.2%
+-commutative76.2%
Simplified76.2%
Taylor expanded in Vef around 0 76.2%
+-commutative76.2%
Simplified76.2%
if -7.7999999999999997e-193 < Ev < -2.1e-262Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.7%
if 1.16e-178 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 72.2%
Final simplification76.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_3 (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))))
(if (<= mu -2.35e+115)
t_2
(if (<= mu -7e-56)
t_1
(if (<= mu -1.22e-119)
(+ t_3 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu -1.05e-294)
t_1
(if (<= mu 5.5e-193)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_3)
(if (<= mu 1920000000000.0) t_1 t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double t_3 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
double tmp;
if (mu <= -2.35e+115) {
tmp = t_2;
} else if (mu <= -7e-56) {
tmp = t_1;
} else if (mu <= -1.22e-119) {
tmp = t_3 + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= -1.05e-294) {
tmp = t_1;
} else if (mu <= 5.5e-193) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_3;
} else if (mu <= 1920000000000.0) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
t_3 = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
if (mu <= (-2.35d+115)) then
tmp = t_2
else if (mu <= (-7d-56)) then
tmp = t_1
else if (mu <= (-1.22d-119)) then
tmp = t_3 + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= (-1.05d-294)) then
tmp = t_1
else if (mu <= 5.5d-193) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + t_3
else if (mu <= 1920000000000.0d0) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_3 = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
double tmp;
if (mu <= -2.35e+115) {
tmp = t_2;
} else if (mu <= -7e-56) {
tmp = t_1;
} else if (mu <= -1.22e-119) {
tmp = t_3 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= -1.05e-294) {
tmp = t_1;
} else if (mu <= 5.5e-193) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_3;
} else if (mu <= 1920000000000.0) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) t_3 = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) tmp = 0 if mu <= -2.35e+115: tmp = t_2 elif mu <= -7e-56: tmp = t_1 elif mu <= -1.22e-119: tmp = t_3 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= -1.05e-294: tmp = t_1 elif mu <= 5.5e-193: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_3 elif mu <= 1920000000000.0: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) tmp = 0.0 if (mu <= -2.35e+115) tmp = t_2; elseif (mu <= -7e-56) tmp = t_1; elseif (mu <= -1.22e-119) tmp = Float64(t_3 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= -1.05e-294) tmp = t_1; elseif (mu <= 5.5e-193) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_3); elseif (mu <= 1920000000000.0) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); t_3 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); tmp = 0.0; if (mu <= -2.35e+115) tmp = t_2; elseif (mu <= -7e-56) tmp = t_1; elseif (mu <= -1.22e-119) tmp = t_3 + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= -1.05e-294) tmp = t_1; elseif (mu <= 5.5e-193) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_3; elseif (mu <= 1920000000000.0) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.35e+115], t$95$2, If[LessEqual[mu, -7e-56], t$95$1, If[LessEqual[mu, -1.22e-119], N[(t$95$3 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -1.05e-294], t$95$1, If[LessEqual[mu, 5.5e-193], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[mu, 1920000000000.0], t$95$1, t$95$2]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;mu \leq -2.35 \cdot 10^{+115}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -7 \cdot 10^{-56}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -1.22 \cdot 10^{-119}:\\
\;\;\;\;t\_3 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq -1.05 \cdot 10^{-294}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 5.5 \cdot 10^{-193}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t\_3\\
\mathbf{elif}\;mu \leq 1920000000000:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.3499999999999998e115 or 1.92e12 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 83.7%
if -2.3499999999999998e115 < mu < -6.9999999999999996e-56 or -1.22e-119 < mu < -1.04999999999999992e-294 or 5.50000000000000014e-193 < mu < 1.92e12Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 81.2%
if -6.9999999999999996e-56 < mu < -1.22e-119Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
Taylor expanded in EDonor around 0 100.0%
+-commutative62.7%
Simplified100.0%
if -1.04999999999999992e-294 < mu < 5.50000000000000014e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.1%
Taylor expanded in EDonor around 0 67.7%
+-commutative67.8%
Simplified67.7%
Final simplification81.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -7.5e+114)
t_1
(if (<= mu -4.1e-53)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= mu -1.3e-119)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= mu -4.2e-121)
(+
t_0
(/ NdChar (+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
(if (<= mu 1.35e-12)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -7.5e+114) {
tmp = t_1;
} else if (mu <= -4.1e-53) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (mu <= -1.3e-119) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (mu <= -4.2e-121) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (mu <= 1.35e-12) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-7.5d+114)) then
tmp = t_1
else if (mu <= (-4.1d-53)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (mu <= (-1.3d-119)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (mu <= (-4.2d-121)) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
else if (mu <= 1.35d-12) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -7.5e+114) {
tmp = t_1;
} else if (mu <= -4.1e-53) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (mu <= -1.3e-119) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (mu <= -4.2e-121) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (mu <= 1.35e-12) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -7.5e+114: tmp = t_1 elif mu <= -4.1e-53: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif mu <= -1.3e-119: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif mu <= -4.2e-121: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) elif mu <= 1.35e-12: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -7.5e+114) tmp = t_1; elseif (mu <= -4.1e-53) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (mu <= -1.3e-119) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (mu <= -4.2e-121) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); elseif (mu <= 1.35e-12) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -7.5e+114) tmp = t_1; elseif (mu <= -4.1e-53) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (mu <= -1.3e-119) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (mu <= -4.2e-121) tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); elseif (mu <= 1.35e-12) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -7.5e+114], t$95$1, If[LessEqual[mu, -4.1e-53], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -1.3e-119], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -4.2e-121], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.35e-12], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -7.5 \cdot 10^{+114}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -4.1 \cdot 10^{-53}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;mu \leq -1.3 \cdot 10^{-119}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;mu \leq -4.2 \cdot 10^{-121}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 1.35 \cdot 10^{-12}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if mu < -7.5000000000000001e114 or 1.3499999999999999e-12 < mu Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 83.5%
if -7.5000000000000001e114 < mu < -4.1000000000000001e-53Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.7%
if -4.1000000000000001e-53 < mu < -1.30000000000000006e-119Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
Taylor expanded in EDonor around 0 100.0%
+-commutative62.7%
Simplified100.0%
if -1.30000000000000006e-119 < mu < -4.1999999999999997e-121Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.6%
Taylor expanded in Ec around -inf 100.0%
mul-1-neg100.0%
*-commutative100.0%
distribute-rgt-neg-in100.0%
+-commutative100.0%
mul-1-neg100.0%
unsub-neg100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 100.0%
if -4.1999999999999997e-121 < mu < 1.3499999999999999e-12Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.8%
Final simplification80.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 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))))
(if (<= NdChar -9e+80)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_2)
(if (<= NdChar -11000.0)
t_1
(if (<= NdChar -5.8e-15)
(+
t_0
(/ NdChar (+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
(if (<= NdChar 2.4e+52)
t_1
(+ t_2 (/ 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
double tmp;
if (NdChar <= -9e+80) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_2;
} else if (NdChar <= -11000.0) {
tmp = t_1;
} else if (NdChar <= -5.8e-15) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (NdChar <= 2.4e+52) {
tmp = t_1;
} else {
tmp = t_2 + (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) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
if (ndchar <= (-9d+80)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + t_2
else if (ndchar <= (-11000.0d0)) then
tmp = t_1
else if (ndchar <= (-5.8d-15)) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
else if (ndchar <= 2.4d+52) then
tmp = t_1
else
tmp = t_2 + (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 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
double tmp;
if (NdChar <= -9e+80) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_2;
} else if (NdChar <= -11000.0) {
tmp = t_1;
} else if (NdChar <= -5.8e-15) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (NdChar <= 2.4e+52) {
tmp = t_1;
} else {
tmp = t_2 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) tmp = 0 if NdChar <= -9e+80: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_2 elif NdChar <= -11000.0: tmp = t_1 elif NdChar <= -5.8e-15: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) elif NdChar <= 2.4e+52: tmp = t_1 else: tmp = t_2 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) tmp = 0.0 if (NdChar <= -9e+80) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_2); elseif (NdChar <= -11000.0) tmp = t_1; elseif (NdChar <= -5.8e-15) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); elseif (NdChar <= 2.4e+52) tmp = t_1; else tmp = Float64(t_2 + 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); tmp = 0.0; if (NdChar <= -9e+80) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_2; elseif (NdChar <= -11000.0) tmp = t_1; elseif (NdChar <= -5.8e-15) tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); elseif (NdChar <= 2.4e+52) tmp = t_1; else tmp = t_2 + (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[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9e+80], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision], If[LessEqual[NdChar, -11000.0], t$95$1, If[LessEqual[NdChar, -5.8e-15], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.4e+52], t$95$1, N[(t$95$2 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;NdChar \leq -9 \cdot 10^{+80}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t\_2\\
\mathbf{elif}\;NdChar \leq -11000:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NdChar \leq -5.8 \cdot 10^{-15}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 2.4 \cdot 10^{+52}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -9.00000000000000013e80Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 76.0%
Taylor expanded in EDonor around 0 67.4%
+-commutative67.4%
Simplified67.4%
if -9.00000000000000013e80 < NdChar < -11000 or -5.80000000000000037e-15 < NdChar < 2.4e52Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.2%
if -11000 < NdChar < -5.80000000000000037e-15Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.7%
Taylor expanded in Ec around -inf 50.8%
mul-1-neg50.8%
*-commutative50.8%
distribute-rgt-neg-in50.8%
+-commutative50.8%
mul-1-neg50.8%
unsub-neg50.8%
Simplified50.8%
Taylor expanded in EDonor around inf 100.0%
if 2.4e52 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.3%
Taylor expanded in EDonor around 0 71.7%
+-commutative65.6%
Simplified71.7%
Final simplification76.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 (/ (- (+ mu Vef) Ec) KbT)))))
(t_2 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_1)))
(if (<= EAccept 1e-166)
t_2
(if (<= EAccept 7e-92)
(+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))
(if (<= EAccept 6e+42)
t_2
(if (<= EAccept 4.4e+141)
(+
t_0
(/ NdChar (+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
(+ t_1 (/ 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)));
double t_2 = (NaChar / (1.0 + exp((Ev / KbT)))) + t_1;
double tmp;
if (EAccept <= 1e-166) {
tmp = t_2;
} else if (EAccept <= 7e-92) {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 6e+42) {
tmp = t_2;
} else if (EAccept <= 4.4e+141) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else {
tmp = t_1 + (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) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))
t_2 = (nachar / (1.0d0 + exp((ev / kbt)))) + t_1
if (eaccept <= 1d-166) then
tmp = t_2
else if (eaccept <= 7d-92) then
tmp = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
else if (eaccept <= 6d+42) then
tmp = t_2
else if (eaccept <= 4.4d+141) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
else
tmp = t_1 + (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 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)));
double t_2 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_1;
double tmp;
if (EAccept <= 1e-166) {
tmp = t_2;
} else if (EAccept <= 7e-92) {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 6e+42) {
tmp = t_2;
} else if (EAccept <= 4.4e+141) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else {
tmp = t_1 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT))) t_2 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_1 tmp = 0 if EAccept <= 1e-166: tmp = t_2 elif EAccept <= 7e-92: tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))) elif EAccept <= 6e+42: tmp = t_2 elif EAccept <= 4.4e+141: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) else: tmp = t_1 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_1) tmp = 0.0 if (EAccept <= 1e-166) tmp = t_2; elseif (EAccept <= 7e-92) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); elseif (EAccept <= 6e+42) tmp = t_2; elseif (EAccept <= 4.4e+141) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); else tmp = Float64(t_1 + 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 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))); t_2 = (NaChar / (1.0 + exp((Ev / KbT)))) + t_1; tmp = 0.0; if (EAccept <= 1e-166) tmp = t_2; elseif (EAccept <= 7e-92) tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))); elseif (EAccept <= 6e+42) tmp = t_2; elseif (EAccept <= 4.4e+141) tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); else tmp = t_1 + (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[(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[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[EAccept, 1e-166], t$95$2, If[LessEqual[EAccept, 7e-92], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6e+42], t$95$2, If[LessEqual[EAccept, 4.4e+141], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t\_1\\
\mathbf{if}\;EAccept \leq 10^{-166}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 7 \cdot 10^{-92}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;EAccept \leq 6 \cdot 10^{+42}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 4.4 \cdot 10^{+141}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.00000000000000004e-166 or 7e-92 < EAccept < 6.00000000000000058e42Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 71.2%
Taylor expanded in EDonor around 0 64.8%
+-commutative63.6%
Simplified64.8%
if 1.00000000000000004e-166 < EAccept < 7e-92Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.1%
Taylor expanded in Ec around -inf 65.1%
mul-1-neg65.1%
*-commutative65.1%
distribute-rgt-neg-in65.1%
+-commutative65.1%
mul-1-neg65.1%
unsub-neg65.1%
Simplified65.1%
Taylor expanded in Vef around inf 73.5%
if 6.00000000000000058e42 < EAccept < 4.4e141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.3%
Taylor expanded in Ec around -inf 66.2%
mul-1-neg66.2%
*-commutative66.2%
distribute-rgt-neg-in66.2%
+-commutative66.2%
mul-1-neg66.2%
unsub-neg66.2%
Simplified66.2%
Taylor expanded in EDonor around inf 70.4%
if 4.4e141 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.7%
Taylor expanded in EDonor around 0 76.9%
+-commutative46.7%
Simplified76.9%
Final simplification67.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))))
(if (<= EAccept -6.7e-280)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0)
(if (<= EAccept 5.4e+42)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(if (<= EAccept 4.8e+141)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 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((((mu + Vef) - Ec) / KbT)));
double tmp;
if (EAccept <= -6.7e-280) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0;
} else if (EAccept <= 5.4e+42) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else if (EAccept <= 4.8e+141) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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((((mu + vef) - ec) / kbt)))
if (eaccept <= (-6.7d-280)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + t_0
else if (eaccept <= 5.4d+42) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + t_0
else if (eaccept <= 4.8d+141) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / 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((((mu + Vef) - Ec) / KbT)));
double tmp;
if (EAccept <= -6.7e-280) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_0;
} else if (EAccept <= 5.4e+42) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else if (EAccept <= 4.8e+141) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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((((mu + Vef) - Ec) / KbT))) tmp = 0 if EAccept <= -6.7e-280: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_0 elif EAccept <= 5.4e+42: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_0 elif EAccept <= 4.8e+141: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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(Float64(mu + Vef) - Ec) / KbT)))) tmp = 0.0 if (EAccept <= -6.7e-280) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_0); elseif (EAccept <= 5.4e+42) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); elseif (EAccept <= 4.8e+141) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / 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((((mu + Vef) - Ec) / KbT))); tmp = 0.0; if (EAccept <= -6.7e-280) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0; elseif (EAccept <= 5.4e+42) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0; elseif (EAccept <= 4.8e+141) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -6.7e-280], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EAccept, 5.4e+42], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EAccept, 4.8e+141], 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 * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $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{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;EAccept \leq -6.7 \cdot 10^{-280}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t\_0\\
\mathbf{elif}\;EAccept \leq 5.4 \cdot 10^{+42}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{elif}\;EAccept \leq 4.8 \cdot 10^{+141}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -6.70000000000000015e-280Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.2%
Taylor expanded in EDonor around 0 63.8%
+-commutative62.9%
Simplified63.8%
if -6.70000000000000015e-280 < EAccept < 5.4000000000000001e42Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.5%
Taylor expanded in EDonor around 0 66.4%
+-commutative66.4%
Simplified66.4%
if 5.4000000000000001e42 < EAccept < 4.79999999999999995e141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.3%
Taylor expanded in Ec around -inf 66.2%
mul-1-neg66.2%
*-commutative66.2%
distribute-rgt-neg-in66.2%
+-commutative66.2%
mul-1-neg66.2%
unsub-neg66.2%
Simplified66.2%
Taylor expanded in EDonor around inf 70.4%
if 4.79999999999999995e141 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 85.7%
Taylor expanded in EDonor around 0 76.9%
+-commutative46.7%
Simplified76.9%
Final simplification66.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)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2
(+
t_1
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) Ec)
(/ -1.0 KbT)))))))
(t_3
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EAccept -7.5e-148)
t_3
(if (<= EAccept -3e-209)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(if (<= EAccept 2.8e-254)
t_3
(if (<= EAccept 4e-146)
t_2
(if (<= EAccept 4.1e-146)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= EAccept 2.6e-92)
(+ t_1 (/ NdChar (+ 1.0 (/ Vef KbT))))
(if (<= EAccept 400000000.0)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= EAccept 7.8e+61)
(+ t_1 (/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= EAccept 1.15e+83)
(+ t_0 (/ NaChar 2.0))
(if (<= EAccept 4e+131)
(+
t_1
(/
NdChar
(+
1.0
(* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
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)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
double t_3 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EAccept <= -7.5e-148) {
tmp = t_3;
} else if (EAccept <= -3e-209) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 2.8e-254) {
tmp = t_3;
} else if (EAccept <= 4e-146) {
tmp = t_2;
} else if (EAccept <= 4.1e-146) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (EAccept <= 2.6e-92) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 400000000.0) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 7.8e+61) {
tmp = t_1 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 1.15e+83) {
tmp = t_0 + (NaChar / 2.0);
} else if (EAccept <= 4e+131) {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = t_1 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) / ec) + ((-1.0d0) / kbt)))))
t_3 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (eaccept <= (-7.5d-148)) then
tmp = t_3
else if (eaccept <= (-3d-209)) then
tmp = t_0 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else if (eaccept <= 2.8d-254) then
tmp = t_3
else if (eaccept <= 4d-146) then
tmp = t_2
else if (eaccept <= 4.1d-146) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (eaccept <= 2.6d-92) then
tmp = t_1 + (ndchar / (1.0d0 + (vef / kbt)))
else if (eaccept <= 400000000.0d0) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (eaccept <= 7.8d+61) then
tmp = t_1 + (ndchar / (1.0d0 + (mu / kbt)))
else if (eaccept <= 1.15d+83) then
tmp = t_0 + (nachar / 2.0d0)
else if (eaccept <= 4d+131) then
tmp = t_1 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
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)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
double t_3 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EAccept <= -7.5e-148) {
tmp = t_3;
} else if (EAccept <= -3e-209) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 2.8e-254) {
tmp = t_3;
} else if (EAccept <= 4e-146) {
tmp = t_2;
} else if (EAccept <= 4.1e-146) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (EAccept <= 2.6e-92) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (EAccept <= 400000000.0) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 7.8e+61) {
tmp = t_1 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 1.15e+83) {
tmp = t_0 + (NaChar / 2.0);
} else if (EAccept <= 4e+131) {
tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} 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))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) t_3 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EAccept <= -7.5e-148: tmp = t_3 elif EAccept <= -3e-209: tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) elif EAccept <= 2.8e-254: tmp = t_3 elif EAccept <= 4e-146: tmp = t_2 elif EAccept <= 4.1e-146: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif EAccept <= 2.6e-92: tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))) elif EAccept <= 400000000.0: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif EAccept <= 7.8e+61: tmp = t_1 + (NdChar / (1.0 + (mu / KbT))) elif EAccept <= 1.15e+83: tmp = t_0 + (NaChar / 2.0) elif EAccept <= 4e+131: tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) else: tmp = t_2 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)))) 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 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / KbT)))))) t_3 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EAccept <= -7.5e-148) tmp = t_3; elseif (EAccept <= -3e-209) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (EAccept <= 2.8e-254) tmp = t_3; elseif (EAccept <= 4e-146) tmp = t_2; elseif (EAccept <= 4.1e-146) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (EAccept <= 2.6e-92) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); elseif (EAccept <= 400000000.0) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (EAccept <= 7.8e+61) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (EAccept <= 1.15e+83) tmp = Float64(t_0 + Float64(NaChar / 2.0)); elseif (EAccept <= 4e+131) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); 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))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = t_1 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))); t_3 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EAccept <= -7.5e-148) tmp = t_3; elseif (EAccept <= -3e-209) tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); elseif (EAccept <= 2.8e-254) tmp = t_3; elseif (EAccept <= 4e-146) tmp = t_2; elseif (EAccept <= 4.1e-146) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (EAccept <= 2.6e-92) tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))); elseif (EAccept <= 400000000.0) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (EAccept <= 7.8e+61) tmp = t_1 + (NdChar / (1.0 + (mu / KbT))); elseif (EAccept <= 1.15e+83) tmp = t_0 + (NaChar / 2.0); elseif (EAccept <= 4e+131) tmp = t_1 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 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 / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = 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]}, If[LessEqual[EAccept, -7.5e-148], t$95$3, If[LessEqual[EAccept, -3e-209], N[(t$95$0 + 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[EAccept, 2.8e-254], t$95$3, If[LessEqual[EAccept, 4e-146], t$95$2, If[LessEqual[EAccept, 4.1e-146], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 2.6e-92], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 400000000.0], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 7.8e+61], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.15e+83], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4e+131], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 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}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EAccept \leq -7.5 \cdot 10^{-148}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq -3 \cdot 10^{-209}:\\
\;\;\;\;t\_0 + \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}\;EAccept \leq 2.8 \cdot 10^{-254}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;EAccept \leq 4 \cdot 10^{-146}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 4.1 \cdot 10^{-146}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 2.6 \cdot 10^{-92}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;EAccept \leq 400000000:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 7.8 \cdot 10^{+61}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;EAccept \leq 1.15 \cdot 10^{+83}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\mathbf{elif}\;EAccept \leq 4 \cdot 10^{+131}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EAccept < -7.5000000000000005e-148 or -2.9999999999999999e-209 < EAccept < 2.79999999999999983e-254Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in EDonor around inf 55.4%
if -7.5000000000000005e-148 < EAccept < -2.9999999999999999e-209Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.3%
+-commutative56.3%
Simplified56.3%
if 2.79999999999999983e-254 < EAccept < 4.0000000000000001e-146 or 3.9999999999999996e131 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.4%
Taylor expanded in Ec around -inf 61.6%
mul-1-neg61.6%
*-commutative61.6%
distribute-rgt-neg-in61.6%
+-commutative61.6%
mul-1-neg61.6%
unsub-neg61.6%
Simplified61.6%
if 4.0000000000000001e-146 < EAccept < 4.0999999999999997e-146Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.8%
Taylor expanded in KbT around inf 33.6%
associate-+r+33.6%
+-commutative33.6%
Simplified33.6%
Taylor expanded in mu around inf 20.1%
associate-*r/20.1%
associate-*r*20.1%
neg-mul-120.1%
Simplified20.1%
Taylor expanded in NdChar around inf 28.8%
if 4.0999999999999997e-146 < EAccept < 2.6e-92Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.7%
Taylor expanded in Ec around -inf 56.7%
mul-1-neg56.7%
*-commutative56.7%
distribute-rgt-neg-in56.7%
+-commutative56.7%
mul-1-neg56.7%
unsub-neg56.7%
Simplified56.7%
Taylor expanded in Vef around inf 78.2%
if 2.6e-92 < EAccept < 4e8Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 62.8%
Taylor expanded in Vef around 0 59.8%
+-commutative55.3%
Simplified59.8%
if 4e8 < EAccept < 7.79999999999999975e61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.3%
Taylor expanded in Ec around -inf 67.6%
mul-1-neg67.6%
*-commutative67.6%
distribute-rgt-neg-in67.6%
+-commutative67.6%
mul-1-neg67.6%
unsub-neg67.6%
Simplified67.6%
Taylor expanded in mu around inf 91.9%
if 7.79999999999999975e61 < EAccept < 1.14999999999999997e83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.2%
if 1.14999999999999997e83 < EAccept < 3.9999999999999996e131Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.7%
Taylor expanded in Ec around -inf 76.7%
mul-1-neg76.7%
*-commutative76.7%
distribute-rgt-neg-in76.7%
+-commutative76.7%
mul-1-neg76.7%
unsub-neg76.7%
Simplified76.7%
Taylor expanded in EDonor around inf 74.5%
Final simplification59.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT)))))
(t_3 (/ NaChar (+ (/ Vef KbT) 2.0)))
(t_4 (+ t_1 t_3)))
(if (<= EAccept -0.00018)
(+ t_1 (/ NaChar (+ 2.0 (/ EAccept KbT))))
(if (<= EAccept -2.5e-49)
t_2
(if (<= EAccept -5.5e-254)
t_4
(if (<= EAccept -6.1e-281)
(+
t_0
(/
NdChar
(+
1.0
(-
(+
1.0
(+ (/ EDonor KbT) (* mu (+ (/ 1.0 KbT) (/ Vef (* mu KbT))))))
(/ Ec KbT)))))
(if (<= EAccept 1.7e-138)
(+
t_1
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(if (<= EAccept 1.95e-59)
t_2
(if (<= EAccept 10000000.0)
t_4
(if (<= EAccept 2.2e+50)
(+ t_0 (/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= EAccept 3.1e+102)
(+
t_0
(/
NdChar
(+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
(if (<= EAccept 3.4e+117)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
t_3)
(if (<= EAccept 2.5e+127)
t_2
(+
t_0
(/
NdChar
(+
1.0
(*
Ec
(+
(/
(+
1.0
(+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
Ec)
(/ -1.0 KbT)))))))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
double t_3 = NaChar / ((Vef / KbT) + 2.0);
double t_4 = t_1 + t_3;
double tmp;
if (EAccept <= -0.00018) {
tmp = t_1 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (EAccept <= -2.5e-49) {
tmp = t_2;
} else if (EAccept <= -5.5e-254) {
tmp = t_4;
} else if (EAccept <= -6.1e-281) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT))));
} else if (EAccept <= 1.7e-138) {
tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 1.95e-59) {
tmp = t_2;
} else if (EAccept <= 10000000.0) {
tmp = t_4;
} else if (EAccept <= 2.2e+50) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 3.1e+102) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (EAccept <= 3.4e+117) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + t_3;
} else if (EAccept <= 2.5e+127) {
tmp = t_2;
} else {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / 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) :: t_3
real(8) :: t_4
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)))
t_2 = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
t_3 = nachar / ((vef / kbt) + 2.0d0)
t_4 = t_1 + t_3
if (eaccept <= (-0.00018d0)) then
tmp = t_1 + (nachar / (2.0d0 + (eaccept / kbt)))
else if (eaccept <= (-2.5d-49)) then
tmp = t_2
else if (eaccept <= (-5.5d-254)) then
tmp = t_4
else if (eaccept <= (-6.1d-281)) then
tmp = t_0 + (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + (mu * ((1.0d0 / kbt) + (vef / (mu * kbt)))))) - (ec / kbt))))
else if (eaccept <= 1.7d-138) then
tmp = t_1 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else if (eaccept <= 1.95d-59) then
tmp = t_2
else if (eaccept <= 10000000.0d0) then
tmp = t_4
else if (eaccept <= 2.2d+50) then
tmp = t_0 + (ndchar / (1.0d0 + (mu / kbt)))
else if (eaccept <= 3.1d+102) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
else if (eaccept <= 3.4d+117) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + t_3
else if (eaccept <= 2.5d+127) then
tmp = t_2
else
tmp = t_0 + (ndchar / (1.0d0 + (ec * (((1.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) / ec) + ((-1.0d0) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
double t_3 = NaChar / ((Vef / KbT) + 2.0);
double t_4 = t_1 + t_3;
double tmp;
if (EAccept <= -0.00018) {
tmp = t_1 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (EAccept <= -2.5e-49) {
tmp = t_2;
} else if (EAccept <= -5.5e-254) {
tmp = t_4;
} else if (EAccept <= -6.1e-281) {
tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT))));
} else if (EAccept <= 1.7e-138) {
tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (EAccept <= 1.95e-59) {
tmp = t_2;
} else if (EAccept <= 10000000.0) {
tmp = t_4;
} else if (EAccept <= 2.2e+50) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (EAccept <= 3.1e+102) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (EAccept <= 3.4e+117) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + t_3;
} else if (EAccept <= 2.5e+127) {
tmp = t_2;
} else {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = t_0 + (NdChar / (1.0 + (EDonor / KbT))) t_3 = NaChar / ((Vef / KbT) + 2.0) t_4 = t_1 + t_3 tmp = 0 if EAccept <= -0.00018: tmp = t_1 + (NaChar / (2.0 + (EAccept / KbT))) elif EAccept <= -2.5e-49: tmp = t_2 elif EAccept <= -5.5e-254: tmp = t_4 elif EAccept <= -6.1e-281: tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT)))) elif EAccept <= 1.7e-138: tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) elif EAccept <= 1.95e-59: tmp = t_2 elif EAccept <= 10000000.0: tmp = t_4 elif EAccept <= 2.2e+50: tmp = t_0 + (NdChar / (1.0 + (mu / KbT))) elif EAccept <= 3.1e+102: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) elif EAccept <= 3.4e+117: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + t_3 elif EAccept <= 2.5e+127: tmp = t_2 else: tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))) t_3 = Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0)) t_4 = Float64(t_1 + t_3) tmp = 0.0 if (EAccept <= -0.00018) tmp = Float64(t_1 + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); elseif (EAccept <= -2.5e-49) tmp = t_2; elseif (EAccept <= -5.5e-254) tmp = t_4; elseif (EAccept <= -6.1e-281) 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(Vef / Float64(mu * KbT)))))) - Float64(Ec / KbT))))); elseif (EAccept <= 1.7e-138) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (EAccept <= 1.95e-59) tmp = t_2; elseif (EAccept <= 10000000.0) tmp = t_4; elseif (EAccept <= 2.2e+50) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (EAccept <= 3.1e+102) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); elseif (EAccept <= 3.4e+117) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + t_3); elseif (EAccept <= 2.5e+127) tmp = t_2; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = t_0 + (NdChar / (1.0 + (EDonor / KbT))); t_3 = NaChar / ((Vef / KbT) + 2.0); t_4 = t_1 + t_3; tmp = 0.0; if (EAccept <= -0.00018) tmp = t_1 + (NaChar / (2.0 + (EAccept / KbT))); elseif (EAccept <= -2.5e-49) tmp = t_2; elseif (EAccept <= -5.5e-254) tmp = t_4; elseif (EAccept <= -6.1e-281) tmp = t_0 + (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + (mu * ((1.0 / KbT) + (Vef / (mu * KbT)))))) - (Ec / KbT)))); elseif (EAccept <= 1.7e-138) tmp = t_1 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); elseif (EAccept <= 1.95e-59) tmp = t_2; elseif (EAccept <= 10000000.0) tmp = t_4; elseif (EAccept <= 2.2e+50) tmp = t_0 + (NdChar / (1.0 + (mu / KbT))); elseif (EAccept <= 3.1e+102) tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); elseif (EAccept <= 3.4e+117) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + t_3; elseif (EAccept <= 2.5e+127) tmp = t_2; else tmp = t_0 + (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$1 + t$95$3), $MachinePrecision]}, If[LessEqual[EAccept, -0.00018], N[(t$95$1 + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, -2.5e-49], t$95$2, If[LessEqual[EAccept, -5.5e-254], t$95$4, If[LessEqual[EAccept, -6.1e-281], 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[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.7e-138], N[(t$95$1 + 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[EAccept, 1.95e-59], t$95$2, If[LessEqual[EAccept, 10000000.0], t$95$4, If[LessEqual[EAccept, 2.2e+50], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.1e+102], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.4e+117], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$3), $MachinePrecision], If[LessEqual[EAccept, 2.5e+127], t$95$2, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t\_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
t_3 := \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_4 := t\_1 + t\_3\\
\mathbf{if}\;EAccept \leq -0.00018:\\
\;\;\;\;t\_1 + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{elif}\;EAccept \leq -2.5 \cdot 10^{-49}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq -5.5 \cdot 10^{-254}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;EAccept \leq -6.1 \cdot 10^{-281}:\\
\;\;\;\;t\_0 + \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}\;EAccept \leq 1.7 \cdot 10^{-138}:\\
\;\;\;\;t\_1 + \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}\;EAccept \leq 1.95 \cdot 10^{-59}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 10000000:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;EAccept \leq 2.2 \cdot 10^{+50}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;EAccept \leq 3.1 \cdot 10^{+102}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;EAccept \leq 3.4 \cdot 10^{+117}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + t\_3\\
\mathbf{elif}\;EAccept \leq 2.5 \cdot 10^{+127}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if EAccept < -1.80000000000000011e-4Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 83.8%
Taylor expanded in EAccept around 0 58.2%
+-commutative58.2%
Simplified58.2%
if -1.80000000000000011e-4 < EAccept < -2.4999999999999999e-49 or 1.7000000000000001e-138 < EAccept < 1.95000000000000009e-59 or 3.4000000000000001e117 < EAccept < 2.5000000000000002e127Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.8%
Taylor expanded in Ec around -inf 53.6%
mul-1-neg53.6%
*-commutative53.6%
distribute-rgt-neg-in53.6%
+-commutative53.6%
mul-1-neg53.6%
unsub-neg53.6%
Simplified53.6%
Taylor expanded in EDonor around inf 67.4%
if -2.4999999999999999e-49 < EAccept < -5.4999999999999999e-254 or 1.95000000000000009e-59 < EAccept < 1e7Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 68.5%
Taylor expanded in Vef around 0 63.2%
+-commutative57.8%
Simplified63.2%
if -5.4999999999999999e-254 < EAccept < -6.1000000000000006e-281Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.4%
Taylor expanded in mu around inf 61.4%
if -6.1000000000000006e-281 < EAccept < 1.7000000000000001e-138Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.9%
+-commutative62.9%
Simplified62.9%
if 1e7 < EAccept < 2.20000000000000017e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.6%
Taylor expanded in Ec around -inf 64.7%
mul-1-neg64.7%
*-commutative64.7%
distribute-rgt-neg-in64.7%
+-commutative64.7%
mul-1-neg64.7%
unsub-neg64.7%
Simplified64.7%
Taylor expanded in mu around inf 91.2%
if 2.20000000000000017e50 < EAccept < 3.09999999999999987e102Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.5%
Taylor expanded in Ec around -inf 62.1%
mul-1-neg62.1%
*-commutative62.1%
distribute-rgt-neg-in62.1%
+-commutative62.1%
mul-1-neg62.1%
unsub-neg62.1%
Simplified62.1%
Taylor expanded in EDonor around inf 68.9%
if 3.09999999999999987e102 < EAccept < 3.4000000000000001e117Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in EDonor around 0 100.0%
+-commutative100.0%
Simplified100.0%
Taylor expanded in Vef around 0 100.0%
+-commutative100.0%
Simplified100.0%
if 2.5000000000000002e127 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.3%
Taylor expanded in Ec around -inf 55.7%
mul-1-neg55.7%
*-commutative55.7%
distribute-rgt-neg-in55.7%
+-commutative55.7%
mul-1-neg55.7%
unsub-neg55.7%
Simplified55.7%
Final simplification62.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))
(t_2
(+
t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT))))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_4 (+ t_3 (/ NdChar (+ 1.0 (/ Vef KbT))))))
(if (<= NaChar -2.9e+59)
t_4
(if (<= NaChar -1.02e-101)
(+ t_0 (/ NaChar (+ 2.0 (/ EAccept KbT))))
(if (<= NaChar -1e-101)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* KbT (/ NdChar Vef)))
(if (<= NaChar -2.75e-170)
t_2
(if (<= NaChar -2.3e-231)
t_1
(if (<= NaChar 1.3e-207)
t_2
(if (<= NaChar 1.45e-93)
t_1
(if (<= NaChar 3.85e-31)
t_4
(if (<= NaChar 5.6e+100)
(+
t_3
(/
NdChar
(+
1.0
(/
(*
Ec
(+ -1.0 (+ (/ EDonor Ec) (+ (/ Vef Ec) (/ mu Ec)))))
KbT))))
(if (<= NaChar 1.6e+289)
(+ t_3 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(if (<= NaChar 2.15e+294)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/
NdChar
(-
(+
2.0
(+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT))))
(+
t_3
(/
NdChar
(+
1.0
(*
Ec
(+
(/ EDonor (* Ec KbT))
(/ -1.0 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -2.9e+59) {
tmp = t_4;
} else if (NaChar <= -1.02e-101) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= -1e-101) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= -2.75e-170) {
tmp = t_2;
} else if (NaChar <= -2.3e-231) {
tmp = t_1;
} else if (NaChar <= 1.3e-207) {
tmp = t_2;
} else if (NaChar <= 1.45e-93) {
tmp = t_1;
} else if (NaChar <= 3.85e-31) {
tmp = t_4;
} else if (NaChar <= 5.6e+100) {
tmp = t_3 + (NdChar / (1.0 + ((Ec * (-1.0 + ((EDonor / Ec) + ((Vef / Ec) + (mu / Ec))))) / KbT)));
} else if (NaChar <= 1.6e+289) {
tmp = t_3 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NaChar <= 2.15e+294) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else {
tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
t_2 = t_0 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
t_3 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_4 = t_3 + (ndchar / (1.0d0 + (vef / kbt)))
if (nachar <= (-2.9d+59)) then
tmp = t_4
else if (nachar <= (-1.02d-101)) then
tmp = t_0 + (nachar / (2.0d0 + (eaccept / kbt)))
else if (nachar <= (-1d-101)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (kbt * (ndchar / vef))
else if (nachar <= (-2.75d-170)) then
tmp = t_2
else if (nachar <= (-2.3d-231)) then
tmp = t_1
else if (nachar <= 1.3d-207) then
tmp = t_2
else if (nachar <= 1.45d-93) then
tmp = t_1
else if (nachar <= 3.85d-31) then
tmp = t_4
else if (nachar <= 5.6d+100) then
tmp = t_3 + (ndchar / (1.0d0 + ((ec * ((-1.0d0) + ((edonor / ec) + ((vef / ec) + (mu / ec))))) / kbt)))
else if (nachar <= 1.6d+289) then
tmp = t_3 + (ndchar / (1.0d0 + (edonor / kbt)))
else if (nachar <= 2.15d+294) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))
else
tmp = t_3 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_3 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -2.9e+59) {
tmp = t_4;
} else if (NaChar <= -1.02e-101) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= -1e-101) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= -2.75e-170) {
tmp = t_2;
} else if (NaChar <= -2.3e-231) {
tmp = t_1;
} else if (NaChar <= 1.3e-207) {
tmp = t_2;
} else if (NaChar <= 1.45e-93) {
tmp = t_1;
} else if (NaChar <= 3.85e-31) {
tmp = t_4;
} else if (NaChar <= 5.6e+100) {
tmp = t_3 + (NdChar / (1.0 + ((Ec * (-1.0 + ((EDonor / Ec) + ((Vef / Ec) + (mu / Ec))))) / KbT)));
} else if (NaChar <= 1.6e+289) {
tmp = t_3 + (NdChar / (1.0 + (EDonor / KbT)));
} else if (NaChar <= 2.15e+294) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)));
} else {
tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) t_3 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT))) tmp = 0 if NaChar <= -2.9e+59: tmp = t_4 elif NaChar <= -1.02e-101: tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))) elif NaChar <= -1e-101: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)) elif NaChar <= -2.75e-170: tmp = t_2 elif NaChar <= -2.3e-231: tmp = t_1 elif NaChar <= 1.3e-207: tmp = t_2 elif NaChar <= 1.45e-93: tmp = t_1 elif NaChar <= 3.85e-31: tmp = t_4 elif NaChar <= 5.6e+100: tmp = t_3 + (NdChar / (1.0 + ((Ec * (-1.0 + ((EDonor / Ec) + ((Vef / Ec) + (mu / Ec))))) / KbT))) elif NaChar <= 1.6e+289: tmp = t_3 + (NdChar / (1.0 + (EDonor / KbT))) elif NaChar <= 2.15e+294: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) else: tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) t_2 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_4 = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NaChar <= -2.9e+59) tmp = t_4; elseif (NaChar <= -1.02e-101) tmp = Float64(t_0 + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); elseif (NaChar <= -1e-101) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= -2.75e-170) tmp = t_2; elseif (NaChar <= -2.3e-231) tmp = t_1; elseif (NaChar <= 1.3e-207) tmp = t_2; elseif (NaChar <= 1.45e-93) tmp = t_1; elseif (NaChar <= 3.85e-31) tmp = t_4; elseif (NaChar <= 5.6e+100) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Float64(Ec * Float64(-1.0 + Float64(Float64(EDonor / Ec) + Float64(Float64(Vef / Ec) + Float64(mu / Ec))))) / KbT)))); elseif (NaChar <= 1.6e+289) tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); elseif (NaChar <= 2.15e+294) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))); else tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / 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 - ((Ec - Vef) - mu)) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT))); tmp = 0.0; if (NaChar <= -2.9e+59) tmp = t_4; elseif (NaChar <= -1.02e-101) tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))); elseif (NaChar <= -1e-101) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)); elseif (NaChar <= -2.75e-170) tmp = t_2; elseif (NaChar <= -2.3e-231) tmp = t_1; elseif (NaChar <= 1.3e-207) tmp = t_2; elseif (NaChar <= 1.45e-93) tmp = t_1; elseif (NaChar <= 3.85e-31) tmp = t_4; elseif (NaChar <= 5.6e+100) tmp = t_3 + (NdChar / (1.0 + ((Ec * (-1.0 + ((EDonor / Ec) + ((Vef / Ec) + (mu / Ec))))) / KbT))); elseif (NaChar <= 1.6e+289) tmp = t_3 + (NdChar / (1.0 + (EDonor / KbT))); elseif (NaChar <= 2.15e+294) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))); else tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + 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$3 = 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$4 = N[(t$95$3 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.9e+59], t$95$4, If[LessEqual[NaChar, -1.02e-101], N[(t$95$0 + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1e-101], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -2.75e-170], t$95$2, If[LessEqual[NaChar, -2.3e-231], t$95$1, If[LessEqual[NaChar, 1.3e-207], t$95$2, If[LessEqual[NaChar, 1.45e-93], t$95$1, If[LessEqual[NaChar, 3.85e-31], t$95$4, If[LessEqual[NaChar, 5.6e+100], N[(t$95$3 + N[(NdChar / N[(1.0 + N[(N[(Ec * N[(-1.0 + N[(N[(EDonor / Ec), $MachinePrecision] + N[(N[(Vef / Ec), $MachinePrecision] + N[(mu / Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.6e+289], N[(t$95$3 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.15e+294], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$3 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_2 := t\_0 + \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_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_4 := t\_3 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NaChar \leq -2.9 \cdot 10^{+59}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;NaChar \leq -1.02 \cdot 10^{-101}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1 \cdot 10^{-101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq -2.75 \cdot 10^{-170}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -2.3 \cdot 10^{-231}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{-207}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 1.45 \cdot 10^{-93}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 3.85 \cdot 10^{-31}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;NaChar \leq 5.6 \cdot 10^{+100}:\\
\;\;\;\;t\_3 + \frac{NdChar}{1 + \frac{Ec \cdot \left(-1 + \left(\frac{EDonor}{Ec} + \left(\frac{Vef}{Ec} + \frac{mu}{Ec}\right)\right)\right)}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.6 \cdot 10^{+289}:\\
\;\;\;\;t\_3 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NaChar \leq 2.15 \cdot 10^{+294}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_3 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -2.89999999999999991e59 or 1.4499999999999999e-93 < NaChar < 3.85000000000000006e-31Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
Taylor expanded in Ec around -inf 64.7%
mul-1-neg64.7%
*-commutative64.7%
distribute-rgt-neg-in64.7%
+-commutative64.7%
mul-1-neg64.7%
unsub-neg64.7%
Simplified64.7%
Taylor expanded in Vef around inf 72.8%
if -2.89999999999999991e59 < NaChar < -1.02e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in EAccept around 0 72.5%
+-commutative72.5%
Simplified72.5%
if -1.02e-101 < NaChar < -1.00000000000000005e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in Vef around inf 100.0%
associate-/l*100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
if -1.00000000000000005e-101 < NaChar < -2.75000000000000009e-170 or -2.3e-231 < NaChar < 1.3e-207Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.3%
+-commutative74.3%
Simplified74.3%
if -2.75000000000000009e-170 < NaChar < -2.3e-231 or 1.3e-207 < NaChar < 1.4499999999999999e-93Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.2%
Taylor expanded in Vef around 0 67.8%
+-commutative62.4%
Simplified67.8%
if 3.85000000000000006e-31 < NaChar < 5.5999999999999996e100Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.4%
Taylor expanded in Ec around -inf 74.4%
mul-1-neg74.4%
*-commutative74.4%
distribute-rgt-neg-in74.4%
+-commutative74.4%
mul-1-neg74.4%
unsub-neg74.4%
Simplified74.4%
Taylor expanded in KbT around 0 68.0%
associate-*r/68.0%
mul-1-neg68.0%
Simplified68.0%
if 5.5999999999999996e100 < NaChar < 1.6e289Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.2%
Taylor expanded in Ec around -inf 70.3%
mul-1-neg70.3%
*-commutative70.3%
distribute-rgt-neg-in70.3%
+-commutative70.3%
mul-1-neg70.3%
unsub-neg70.3%
Simplified70.3%
Taylor expanded in EDonor around inf 79.5%
if 1.6e289 < NaChar < 2.1500000000000001e294Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 52.6%
Taylor expanded in KbT around inf 52.6%
if 2.1500000000000001e294 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 5.1%
Taylor expanded in Ec around -inf 100.0%
mul-1-neg100.0%
*-commutative100.0%
distribute-rgt-neg-in100.0%
+-commutative100.0%
mul-1-neg100.0%
unsub-neg100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 100.0%
Final simplification72.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))
(t_2
(+
t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT))))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_4 (+ t_3 (/ NdChar (+ 1.0 (/ Vef KbT))))))
(if (<= NaChar -4.4e+55)
t_4
(if (<= NaChar -1.02e-101)
(+ t_0 (/ NaChar (+ 2.0 (/ EAccept KbT))))
(if (<= NaChar -1e-101)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* KbT (/ NdChar Vef)))
(if (<= NaChar -1.62e-170)
t_2
(if (<= NaChar -2.25e-231)
t_1
(if (<= NaChar 1.4e-207)
t_2
(if (<= NaChar 1.9e-93)
t_1
(if (<= NaChar 6.8e-25)
t_4
(+
t_3
(/
NdChar
(+
1.0
(*
Ec
(+ (/ EDonor (* Ec KbT)) (/ -1.0 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.4e+55) {
tmp = t_4;
} else if (NaChar <= -1.02e-101) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= -1e-101) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= -1.62e-170) {
tmp = t_2;
} else if (NaChar <= -2.25e-231) {
tmp = t_1;
} else if (NaChar <= 1.4e-207) {
tmp = t_2;
} else if (NaChar <= 1.9e-93) {
tmp = t_1;
} else if (NaChar <= 6.8e-25) {
tmp = t_4;
} else {
tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
t_2 = t_0 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
t_3 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_4 = t_3 + (ndchar / (1.0d0 + (vef / kbt)))
if (nachar <= (-4.4d+55)) then
tmp = t_4
else if (nachar <= (-1.02d-101)) then
tmp = t_0 + (nachar / (2.0d0 + (eaccept / kbt)))
else if (nachar <= (-1d-101)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (kbt * (ndchar / vef))
else if (nachar <= (-1.62d-170)) then
tmp = t_2
else if (nachar <= (-2.25d-231)) then
tmp = t_1
else if (nachar <= 1.4d-207) then
tmp = t_2
else if (nachar <= 1.9d-93) then
tmp = t_1
else if (nachar <= 6.8d-25) then
tmp = t_4
else
tmp = t_3 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
double t_3 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.4e+55) {
tmp = t_4;
} else if (NaChar <= -1.02e-101) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= -1e-101) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else if (NaChar <= -1.62e-170) {
tmp = t_2;
} else if (NaChar <= -2.25e-231) {
tmp = t_1;
} else if (NaChar <= 1.4e-207) {
tmp = t_2;
} else if (NaChar <= 1.9e-93) {
tmp = t_1;
} else if (NaChar <= 6.8e-25) {
tmp = t_4;
} else {
tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) t_3 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT))) tmp = 0 if NaChar <= -4.4e+55: tmp = t_4 elif NaChar <= -1.02e-101: tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))) elif NaChar <= -1e-101: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)) elif NaChar <= -1.62e-170: tmp = t_2 elif NaChar <= -2.25e-231: tmp = t_1 elif NaChar <= 1.4e-207: tmp = t_2 elif NaChar <= 1.9e-93: tmp = t_1 elif NaChar <= 6.8e-25: tmp = t_4 else: tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) t_2 = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_4 = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NaChar <= -4.4e+55) tmp = t_4; elseif (NaChar <= -1.02e-101) tmp = Float64(t_0 + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); elseif (NaChar <= -1e-101) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); elseif (NaChar <= -1.62e-170) tmp = t_2; elseif (NaChar <= -2.25e-231) tmp = t_1; elseif (NaChar <= 1.4e-207) tmp = t_2; elseif (NaChar <= 1.9e-93) tmp = t_1; elseif (NaChar <= 6.8e-25) tmp = t_4; else tmp = Float64(t_3 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / 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 - ((Ec - Vef) - mu)) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); t_2 = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_4 = t_3 + (NdChar / (1.0 + (Vef / KbT))); tmp = 0.0; if (NaChar <= -4.4e+55) tmp = t_4; elseif (NaChar <= -1.02e-101) tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))); elseif (NaChar <= -1e-101) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)); elseif (NaChar <= -1.62e-170) tmp = t_2; elseif (NaChar <= -2.25e-231) tmp = t_1; elseif (NaChar <= 1.4e-207) tmp = t_2; elseif (NaChar <= 1.9e-93) tmp = t_1; elseif (NaChar <= 6.8e-25) tmp = t_4; else tmp = t_3 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / 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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + 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$3 = 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$4 = N[(t$95$3 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.4e+55], t$95$4, If[LessEqual[NaChar, -1.02e-101], N[(t$95$0 + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1e-101], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.62e-170], t$95$2, If[LessEqual[NaChar, -2.25e-231], t$95$1, If[LessEqual[NaChar, 1.4e-207], t$95$2, If[LessEqual[NaChar, 1.9e-93], t$95$1, If[LessEqual[NaChar, 6.8e-25], t$95$4, N[(t$95$3 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_2 := t\_0 + \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_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_4 := t\_3 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NaChar \leq -4.4 \cdot 10^{+55}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;NaChar \leq -1.02 \cdot 10^{-101}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1 \cdot 10^{-101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NaChar \leq -1.62 \cdot 10^{-170}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -2.25 \cdot 10^{-231}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.4 \cdot 10^{-207}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{-93}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 6.8 \cdot 10^{-25}:\\
\;\;\;\;t\_4\\
\mathbf{else}:\\
\;\;\;\;t\_3 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -4.40000000000000021e55 or 1.8999999999999999e-93 < NaChar < 6.80000000000000003e-25Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
Taylor expanded in Ec around -inf 64.7%
mul-1-neg64.7%
*-commutative64.7%
distribute-rgt-neg-in64.7%
+-commutative64.7%
mul-1-neg64.7%
unsub-neg64.7%
Simplified64.7%
Taylor expanded in Vef around inf 72.8%
if -4.40000000000000021e55 < NaChar < -1.02e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in EAccept around 0 72.5%
+-commutative72.5%
Simplified72.5%
if -1.02e-101 < NaChar < -1.00000000000000005e-101Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in Vef around inf 100.0%
associate-/l*100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
if -1.00000000000000005e-101 < NaChar < -1.62e-170 or -2.2499999999999999e-231 < NaChar < 1.39999999999999996e-207Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.3%
+-commutative74.3%
Simplified74.3%
if -1.62e-170 < NaChar < -2.2499999999999999e-231 or 1.39999999999999996e-207 < NaChar < 1.8999999999999999e-93Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.2%
Taylor expanded in Vef around 0 67.8%
+-commutative62.4%
Simplified67.8%
if 6.80000000000000003e-25 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.9%
Taylor expanded in Ec around -inf 74.6%
mul-1-neg74.6%
*-commutative74.6%
distribute-rgt-neg-in74.6%
+-commutative74.6%
mul-1-neg74.6%
unsub-neg74.6%
Simplified74.6%
Taylor expanded in EDonor around inf 70.2%
Final simplification71.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))))
(if (<= NaChar -9.5e+133)
t_1
(if (<= NaChar 9.6e-99)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NaChar 4.6e-23)
t_1
(if (<= NaChar 4.8e-23)
(+ (/ NaChar 2.0) (* NdChar 0.5))
(if (<= NaChar 2e+74)
(+
t_0
(/ NdChar (+ 1.0 (* Ec (+ (/ (/ Vef Ec) KbT) (/ -1.0 KbT))))))
(if (<= NaChar 1.4e+123)
(+
t_0
(/
NdChar
(+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT))))))
(if (<= NaChar 1.45e+189)
t_1
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT)))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -9.5e+133) {
tmp = t_1;
} else if (NaChar <= 9.6e-99) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 4.6e-23) {
tmp = t_1;
} else if (NaChar <= 4.8e-23) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else if (NaChar <= 2e+74) {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT)))));
} else if (NaChar <= 1.4e+123) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (NaChar <= 1.45e+189) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
if (nachar <= (-9.5d+133)) then
tmp = t_1
else if (nachar <= 9.6d-99) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (nachar <= 4.6d-23) then
tmp = t_1
else if (nachar <= 4.8d-23) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else if (nachar <= 2d+74) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * (((vef / ec) / kbt) + ((-1.0d0) / kbt)))))
else if (nachar <= 1.4d+123) then
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
else if (nachar <= 1.45d+189) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -9.5e+133) {
tmp = t_1;
} else if (NaChar <= 9.6e-99) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 4.6e-23) {
tmp = t_1;
} else if (NaChar <= 4.8e-23) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else if (NaChar <= 2e+74) {
tmp = t_0 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT)))));
} else if (NaChar <= 1.4e+123) {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
} else if (NaChar <= 1.45e+189) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))) tmp = 0 if NaChar <= -9.5e+133: tmp = t_1 elif NaChar <= 9.6e-99: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif NaChar <= 4.6e-23: tmp = t_1 elif NaChar <= 4.8e-23: tmp = (NaChar / 2.0) + (NdChar * 0.5) elif NaChar <= 2e+74: tmp = t_0 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT))))) elif NaChar <= 1.4e+123: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) elif NaChar <= 1.45e+189: tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NaChar <= -9.5e+133) tmp = t_1; elseif (NaChar <= 9.6e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NaChar <= 4.6e-23) tmp = t_1; elseif (NaChar <= 4.8e-23) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); elseif (NaChar <= 2e+74) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(Vef / Ec) / KbT) + Float64(-1.0 / KbT)))))); elseif (NaChar <= 1.4e+123) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); elseif (NaChar <= 1.45e+189) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))); tmp = 0.0; if (NaChar <= -9.5e+133) tmp = t_1; elseif (NaChar <= 9.6e-99) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (NaChar <= 4.6e-23) tmp = t_1; elseif (NaChar <= 4.8e-23) tmp = (NaChar / 2.0) + (NdChar * 0.5); elseif (NaChar <= 2e+74) tmp = t_0 + (NdChar / (1.0 + (Ec * (((Vef / Ec) / KbT) + (-1.0 / KbT))))); elseif (NaChar <= 1.4e+123) tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); elseif (NaChar <= 1.45e+189) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -9.5e+133], t$95$1, If[LessEqual[NaChar, 9.6e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.6e-23], t$95$1, If[LessEqual[NaChar, 4.8e-23], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2e+74], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(Vef / Ec), $MachinePrecision] / KbT), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.4e+123], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.45e+189], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NaChar \leq -9.5 \cdot 10^{+133}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 9.6 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 4.6 \cdot 10^{-23}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 4.8 \cdot 10^{-23}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 2 \cdot 10^{+74}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{\frac{Vef}{Ec}}{KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.4 \cdot 10^{+123}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 1.45 \cdot 10^{+189}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if NaChar < -9.49999999999999996e133 or 9.6000000000000002e-99 < NaChar < 4.6000000000000002e-23 or 1.40000000000000006e123 < NaChar < 1.4500000000000001e189Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in Ec around -inf 68.9%
mul-1-neg68.9%
*-commutative68.9%
distribute-rgt-neg-in68.9%
+-commutative68.9%
mul-1-neg68.9%
unsub-neg68.9%
Simplified68.9%
Taylor expanded in Vef around inf 76.8%
if -9.49999999999999996e133 < NaChar < 9.6000000000000002e-99Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.1%
Taylor expanded in Vef around 0 67.1%
+-commutative61.6%
Simplified67.1%
if 4.6000000000000002e-23 < NaChar < 4.79999999999999993e-23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around inf 100.0%
if 4.79999999999999993e-23 < NaChar < 1.9999999999999999e74Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.8%
Taylor expanded in Ec around -inf 76.3%
mul-1-neg76.3%
*-commutative76.3%
distribute-rgt-neg-in76.3%
+-commutative76.3%
mul-1-neg76.3%
unsub-neg76.3%
Simplified76.3%
Taylor expanded in Vef around inf 72.5%
associate-/r*76.9%
Simplified76.9%
if 1.9999999999999999e74 < NaChar < 1.40000000000000006e123Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.2%
Taylor expanded in Ec around -inf 59.3%
mul-1-neg59.3%
*-commutative59.3%
distribute-rgt-neg-in59.3%
+-commutative59.3%
mul-1-neg59.3%
unsub-neg59.3%
Simplified59.3%
Taylor expanded in EDonor around inf 72.7%
if 1.4500000000000001e189 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.0%
Taylor expanded in Ec around -inf 76.7%
mul-1-neg76.7%
*-commutative76.7%
distribute-rgt-neg-in76.7%
+-commutative76.7%
mul-1-neg76.7%
unsub-neg76.7%
Simplified76.7%
Taylor expanded in EDonor around inf 75.6%
Final simplification71.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))))
(if (<= NaChar -4.3e+133)
t_1
(if (<= NaChar 7e-99)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NaChar 9e-25)
t_1
(+
t_0
(/
NdChar
(+ 1.0 (* Ec (+ (/ EDonor (* Ec KbT)) (/ -1.0 KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_1;
} else if (NaChar <= 7e-99) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 9e-25) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
if (nachar <= (-4.3d+133)) then
tmp = t_1
else if (nachar <= 7d-99) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (nachar <= 9d-25) then
tmp = t_1
else
tmp = t_0 + (ndchar / (1.0d0 + (ec * ((edonor / (ec * kbt)) + ((-1.0d0) / kbt)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_1;
} else if (NaChar <= 7e-99) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 9e-25) {
tmp = t_1;
} else {
tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))) tmp = 0 if NaChar <= -4.3e+133: tmp = t_1 elif NaChar <= 7e-99: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif NaChar <= 9e-25: tmp = t_1 else: tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NaChar <= -4.3e+133) tmp = t_1; elseif (NaChar <= 7e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NaChar <= 9e-25) tmp = t_1; else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(EDonor / Float64(Ec * KbT)) + Float64(-1.0 / KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))); tmp = 0.0; if (NaChar <= -4.3e+133) tmp = t_1; elseif (NaChar <= 7e-99) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (NaChar <= 9e-25) tmp = t_1; else tmp = t_0 + (NdChar / (1.0 + (Ec * ((EDonor / (Ec * KbT)) + (-1.0 / KbT))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.3e+133], t$95$1, If[LessEqual[NaChar, 7e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 9e-25], t$95$1, N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Ec * N[(N[(EDonor / N[(Ec * KbT), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NaChar \leq -4.3 \cdot 10^{+133}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 7 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-25}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + Ec \cdot \left(\frac{EDonor}{Ec \cdot KbT} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -4.29999999999999994e133 or 6.9999999999999997e-99 < NaChar < 9.0000000000000002e-25Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in Ec around -inf 68.0%
mul-1-neg68.0%
*-commutative68.0%
distribute-rgt-neg-in68.0%
+-commutative68.0%
mul-1-neg68.0%
unsub-neg68.0%
Simplified68.0%
Taylor expanded in Vef around inf 75.8%
if -4.29999999999999994e133 < NaChar < 6.9999999999999997e-99Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.1%
Taylor expanded in Vef around 0 67.1%
+-commutative61.6%
Simplified67.1%
if 9.0000000000000002e-25 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.9%
Taylor expanded in Ec around -inf 74.6%
mul-1-neg74.6%
*-commutative74.6%
distribute-rgt-neg-in74.6%
+-commutative74.6%
mul-1-neg74.6%
unsub-neg74.6%
Simplified74.6%
Taylor expanded in EDonor around inf 70.2%
Final simplification69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -4.6e+133)
t_1
(if (<= NaChar -2e+93)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NaChar 5.1e-42)
(+ (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))) t_0)
(if (or (<= NaChar 9.8e+201) (not (<= NaChar 5e+206)))
t_1
(+ (/ NdChar (+ 1.0 (exp (/ EDonor 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 / ((Ev / KbT) + 2.0);
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.6e+133) {
tmp = t_1;
} else if (NaChar <= -2e+93) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 5.1e-42) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + t_0;
} else if ((NaChar <= 9.8e+201) || !(NaChar <= 5e+206)) {
tmp = t_1;
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + 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 = nachar / ((ev / kbt) + 2.0d0)
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-4.6d+133)) then
tmp = t_1
else if (nachar <= (-2d+93)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (nachar <= 5.1d-42) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + t_0
else if ((nachar <= 9.8d+201) .or. (.not. (nachar <= 5d+206))) then
tmp = t_1
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + 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 / ((Ev / KbT) + 2.0);
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.6e+133) {
tmp = t_1;
} else if (NaChar <= -2e+93) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 5.1e-42) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + t_0;
} else if ((NaChar <= 9.8e+201) || !(NaChar <= 5e+206)) {
tmp = t_1;
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / ((Ev / KbT) + 2.0) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -4.6e+133: tmp = t_1 elif NaChar <= -2e+93: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif NaChar <= 5.1e-42: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + t_0 elif (NaChar <= 9.8e+201) or not (NaChar <= 5e+206): tmp = t_1 else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0)) 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 <= -4.6e+133) tmp = t_1; elseif (NaChar <= -2e+93) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NaChar <= 5.1e-42) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + t_0); elseif ((NaChar <= 9.8e+201) || !(NaChar <= 5e+206)) tmp = t_1; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / ((Ev / KbT) + 2.0); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -4.6e+133) tmp = t_1; elseif (NaChar <= -2e+93) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (NaChar <= 5.1e-42) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + t_0; elseif ((NaChar <= 9.8e+201) || ~((NaChar <= 5e+206))) tmp = t_1; else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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, -4.6e+133], t$95$1, If[LessEqual[NaChar, -2e+93], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.1e-42], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[Or[LessEqual[NaChar, 9.8e+201], N[Not[LessEqual[NaChar, 5e+206]], $MachinePrecision]], t$95$1, N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -4.6 \cdot 10^{+133}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -2 \cdot 10^{+93}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 5.1 \cdot 10^{-42}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + t\_0\\
\mathbf{elif}\;NaChar \leq 9.8 \cdot 10^{+201} \lor \neg \left(NaChar \leq 5 \cdot 10^{+206}\right):\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + t\_0\\
\end{array}
\end{array}
if NaChar < -4.5999999999999998e133 or 5.1e-42 < NaChar < 9.79999999999999991e201 or 5.0000000000000002e206 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.9%
Taylor expanded in KbT around inf 63.8%
if -4.5999999999999998e133 < NaChar < -2.00000000000000009e93Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 75.4%
Taylor expanded in EDonor around 0 75.4%
+-commutative75.4%
Simplified75.4%
Taylor expanded in Vef around 0 75.7%
+-commutative75.7%
Simplified75.7%
if -2.00000000000000009e93 < NaChar < 5.1e-42Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.1%
Taylor expanded in Ev around 0 61.7%
if 9.79999999999999991e201 < NaChar < 5.0000000000000002e206Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 100.0%
Taylor expanded in EDonor around inf 100.0%
Taylor expanded in Ev around 0 53.1%
Final simplification63.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.02e+139)
(not
(or (<= NaChar 8.8e+51)
(and (not (<= NaChar 5.4e+103)) (<= NaChar 1.25e+144)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e+139) || !((NaChar <= 8.8e+51) || (!(NaChar <= 5.4e+103) && (NaChar <= 1.25e+144)))) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.02d+139)) .or. (.not. (nachar <= 8.8d+51) .or. (.not. (nachar <= 5.4d+103)) .and. (nachar <= 1.25d+144))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.02e+139) || !((NaChar <= 8.8e+51) || (!(NaChar <= 5.4e+103) && (NaChar <= 1.25e+144)))) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.02e+139) or not ((NaChar <= 8.8e+51) or (not (NaChar <= 5.4e+103) and (NaChar <= 1.25e+144))): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.02e+139) || !((NaChar <= 8.8e+51) || (!(NaChar <= 5.4e+103) && (NaChar <= 1.25e+144)))) 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(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.02e+139) || ~(((NaChar <= 8.8e+51) || (~((NaChar <= 5.4e+103)) && (NaChar <= 1.25e+144))))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.02e+139], N[Not[Or[LessEqual[NaChar, 8.8e+51], And[N[Not[LessEqual[NaChar, 5.4e+103]], $MachinePrecision], LessEqual[NaChar, 1.25e+144]]]], $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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.02 \cdot 10^{+139} \lor \neg \left(NaChar \leq 8.8 \cdot 10^{+51} \lor \neg \left(NaChar \leq 5.4 \cdot 10^{+103}\right) \land NaChar \leq 1.25 \cdot 10^{+144}\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(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -1.02e139 or 8.79999999999999967e51 < NaChar < 5.39999999999999985e103 or 1.25e144 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.2%
Taylor expanded in KbT around inf 66.8%
if -1.02e139 < NaChar < 8.79999999999999967e51 or 5.39999999999999985e103 < NaChar < 1.25e144Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.1%
Taylor expanded in Vef around 0 65.3%
+-commutative60.4%
Simplified65.3%
Final simplification65.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))))
(if (<= NaChar -4.4e+133)
t_1
(if (<= NaChar 9.6e-99)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NaChar 4.6e-23)
t_1
(if (<= NaChar 4.8e-23)
(+ (/ NaChar 2.0) (* NdChar 0.5))
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.4e+133) {
tmp = t_1;
} else if (NaChar <= 9.6e-99) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 4.6e-23) {
tmp = t_1;
} else if (NaChar <= 4.8e-23) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
if (nachar <= (-4.4d+133)) then
tmp = t_1
else if (nachar <= 9.6d-99) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (nachar <= 4.6d-23) then
tmp = t_1
else if (nachar <= 4.8d-23) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT)));
double tmp;
if (NaChar <= -4.4e+133) {
tmp = t_1;
} else if (NaChar <= 9.6e-99) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 4.6e-23) {
tmp = t_1;
} else if (NaChar <= 4.8e-23) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))) tmp = 0 if NaChar <= -4.4e+133: tmp = t_1 elif NaChar <= 9.6e-99: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif NaChar <= 4.6e-23: tmp = t_1 elif NaChar <= 4.8e-23: tmp = (NaChar / 2.0) + (NdChar * 0.5) else: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))) tmp = 0.0 if (NaChar <= -4.4e+133) tmp = t_1; elseif (NaChar <= 9.6e-99) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NaChar <= 4.6e-23) tmp = t_1; elseif (NaChar <= 4.8e-23) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + (Vef / KbT))); tmp = 0.0; if (NaChar <= -4.4e+133) tmp = t_1; elseif (NaChar <= 9.6e-99) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (NaChar <= 4.6e-23) tmp = t_1; elseif (NaChar <= 4.8e-23) tmp = (NaChar / 2.0) + (NdChar * 0.5); else tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.4e+133], t$95$1, If[LessEqual[NaChar, 9.6e-99], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.6e-23], t$95$1, If[LessEqual[NaChar, 4.8e-23], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{if}\;NaChar \leq -4.4 \cdot 10^{+133}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 9.6 \cdot 10^{-99}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 4.6 \cdot 10^{-23}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 4.8 \cdot 10^{-23}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if NaChar < -4.4e133 or 9.6000000000000002e-99 < NaChar < 4.6000000000000002e-23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in Ec around -inf 68.0%
mul-1-neg68.0%
*-commutative68.0%
distribute-rgt-neg-in68.0%
+-commutative68.0%
mul-1-neg68.0%
unsub-neg68.0%
Simplified68.0%
Taylor expanded in Vef around inf 75.8%
if -4.4e133 < NaChar < 9.6000000000000002e-99Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.1%
Taylor expanded in Vef around 0 67.1%
+-commutative61.6%
Simplified67.1%
if 4.6000000000000002e-23 < NaChar < 4.79999999999999993e-23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around inf 100.0%
Taylor expanded in KbT around inf 100.0%
if 4.79999999999999993e-23 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.4%
Taylor expanded in Ec around -inf 74.2%
mul-1-neg74.2%
*-commutative74.2%
distribute-rgt-neg-in74.2%
+-commutative74.2%
mul-1-neg74.2%
unsub-neg74.2%
Simplified74.2%
Taylor expanded in EDonor around inf 69.1%
Final simplification69.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (/ EDonor KbT))))))
(if (<= NaChar -4.3e+133)
t_2
(if (<= NaChar -1.32e+53)
t_1
(if (<= NaChar -7.2e-51)
(+ t_0 (/ NaChar (+ 2.0 (/ EAccept KbT))))
(if (<= NaChar 3.4e-99) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_2;
} else if (NaChar <= -1.32e+53) {
tmp = t_1;
} else if (NaChar <= -7.2e-51) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= 3.4e-99) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
t_2 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + (edonor / kbt)))
if (nachar <= (-4.3d+133)) then
tmp = t_2
else if (nachar <= (-1.32d+53)) then
tmp = t_1
else if (nachar <= (-7.2d-51)) then
tmp = t_0 + (nachar / (2.0d0 + (eaccept / kbt)))
else if (nachar <= 3.4d-99) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT)));
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_2;
} else if (NaChar <= -1.32e+53) {
tmp = t_1;
} else if (NaChar <= -7.2e-51) {
tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT)));
} else if (NaChar <= 3.4e-99) {
tmp = t_1;
} 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 - ((Ec - Vef) - mu)) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) t_2 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))) tmp = 0 if NaChar <= -4.3e+133: tmp = t_2 elif NaChar <= -1.32e+53: tmp = t_1 elif NaChar <= -7.2e-51: tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))) elif NaChar <= 3.4e-99: tmp = t_1 else: tmp = t_2 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(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))) tmp = 0.0 if (NaChar <= -4.3e+133) tmp = t_2; elseif (NaChar <= -1.32e+53) tmp = t_1; elseif (NaChar <= -7.2e-51) tmp = Float64(t_0 + Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT)))); elseif (NaChar <= 3.4e-99) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + (EDonor / KbT))); tmp = 0.0; if (NaChar <= -4.3e+133) tmp = t_2; elseif (NaChar <= -1.32e+53) tmp = t_1; elseif (NaChar <= -7.2e-51) tmp = t_0 + (NaChar / (2.0 + (EAccept / KbT))); elseif (NaChar <= 3.4e-99) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = 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[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.3e+133], t$95$2, If[LessEqual[NaChar, -1.32e+53], t$95$1, If[LessEqual[NaChar, -7.2e-51], N[(t$95$0 + N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.4e-99], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{if}\;NaChar \leq -4.3 \cdot 10^{+133}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -1.32 \cdot 10^{+53}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -7.2 \cdot 10^{-51}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{elif}\;NaChar \leq 3.4 \cdot 10^{-99}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -4.29999999999999994e133 or 3.40000000000000007e-99 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.9%
Taylor expanded in Ec around -inf 71.5%
mul-1-neg71.5%
*-commutative71.5%
distribute-rgt-neg-in71.5%
+-commutative71.5%
mul-1-neg71.5%
unsub-neg71.5%
Simplified71.5%
Taylor expanded in EDonor around inf 70.7%
if -4.29999999999999994e133 < NaChar < -1.32e53 or -7.2000000000000001e-51 < NaChar < 3.40000000000000007e-99Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 75.4%
Taylor expanded in Vef around 0 68.0%
+-commutative61.5%
Simplified68.0%
if -1.32e53 < NaChar < -7.2000000000000001e-51Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 63.2%
Taylor expanded in EAccept around 0 68.8%
+-commutative68.8%
Simplified68.8%
Final simplification69.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -6.7e+133)
t_1
(if (<= NaChar -1.66e+93)
t_0
(if (<= NaChar -3.3e+72)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NaChar 1.7e+50) 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 + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.7e+133) {
tmp = t_1;
} else if (NaChar <= -1.66e+93) {
tmp = t_0;
} else if (NaChar <= -3.3e+72) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 1.7e+50) {
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 + vef) - ec) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
t_1 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-6.7d+133)) then
tmp = t_1
else if (nachar <= (-1.66d+93)) then
tmp = t_0
else if (nachar <= (-3.3d+72)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (nachar <= 1.7d+50) 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 + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -6.7e+133) {
tmp = t_1;
} else if (NaChar <= -1.66e+93) {
tmp = t_0;
} else if (NaChar <= -3.3e+72) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NaChar <= 1.7e+50) {
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 + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) t_1 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -6.7e+133: tmp = t_1 elif NaChar <= -1.66e+93: tmp = t_0 elif NaChar <= -3.3e+72: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NaChar <= 1.7e+50: 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(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) 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 <= -6.7e+133) tmp = t_1; elseif (NaChar <= -1.66e+93) tmp = t_0; elseif (NaChar <= -3.3e+72) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NaChar <= 1.7e+50) 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 + Vef) - Ec) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); t_1 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -6.7e+133) tmp = t_1; elseif (NaChar <= -1.66e+93) tmp = t_0; elseif (NaChar <= -3.3e+72) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NaChar <= 1.7e+50) 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[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $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, -6.7e+133], t$95$1, If[LessEqual[NaChar, -1.66e+93], t$95$0, If[LessEqual[NaChar, -3.3e+72], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.7e+50], t$95$0, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -6.7 \cdot 10^{+133}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -1.66 \cdot 10^{+93}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -3.3 \cdot 10^{+72}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 1.7 \cdot 10^{+50}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -6.7000000000000003e133 or 1.6999999999999999e50 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.6%
Taylor expanded in KbT around inf 66.4%
if -6.7000000000000003e133 < NaChar < -1.65999999999999999e93 or -3.3e72 < NaChar < 1.6999999999999999e50Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 75.5%
Taylor expanded in EDonor around 0 69.6%
+-commutative69.6%
Simplified69.6%
Taylor expanded in Vef around 0 61.8%
+-commutative61.8%
Simplified61.8%
if -1.65999999999999999e93 < NaChar < -3.3e72Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 100.0%
Taylor expanded in EDonor around 0 83.4%
+-commutative37.4%
Simplified83.4%
Taylor expanded in KbT around inf 72.9%
Final simplification63.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))
(if (<= NdChar -3.7e+124)
(/ NdChar (+ 1.0 (pow E (/ mu KbT))))
(if (<= NdChar -7.6e+21)
t_0
(if (<= NdChar -1.12e-13)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* KbT (/ NdChar Vef)))
(if (<= NdChar 5600000000000.0)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= NdChar 4.1e+139)
(/ NdChar (+ 1.0 (exp (/ mu 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 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.7e+124) {
tmp = NdChar / (1.0 + pow(((double) M_E), (mu / KbT)));
} else if (NdChar <= -7.6e+21) {
tmp = t_0;
} else if (NdChar <= -1.12e-13) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (KbT * (NdChar / Vef));
} else if (NdChar <= 5600000000000.0) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 4.1e+139) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
double tmp;
if (NdChar <= -3.7e+124) {
tmp = NdChar / (1.0 + Math.pow(Math.E, (mu / KbT)));
} else if (NdChar <= -7.6e+21) {
tmp = t_0;
} else if (NdChar <= -1.12e-13) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (KbT * (NdChar / Vef));
} else if (NdChar <= 5600000000000.0) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (NdChar <= 4.1e+139) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) tmp = 0 if NdChar <= -3.7e+124: tmp = NdChar / (1.0 + math.pow(math.e, (mu / KbT))) elif NdChar <= -7.6e+21: tmp = t_0 elif NdChar <= -1.12e-13: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (KbT * (NdChar / Vef)) elif NdChar <= 5600000000000.0: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif NdChar <= 4.1e+139: tmp = NdChar / (1.0 + math.exp((mu / KbT))) 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(EDonor / KbT)))) + Float64(NaChar / 2.0)) tmp = 0.0 if (NdChar <= -3.7e+124) tmp = Float64(NdChar / Float64(1.0 + (exp(1) ^ Float64(mu / KbT)))); elseif (NdChar <= -7.6e+21) tmp = t_0; elseif (NdChar <= -1.12e-13) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); elseif (NdChar <= 5600000000000.0) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (NdChar <= 4.1e+139) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); 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((EDonor / KbT)))) + (NaChar / 2.0); tmp = 0.0; if (NdChar <= -3.7e+124) tmp = NdChar / (1.0 + (2.71828182845904523536 ^ (mu / KbT))); elseif (NdChar <= -7.6e+21) tmp = t_0; elseif (NdChar <= -1.12e-13) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (KbT * (NdChar / Vef)); elseif (NdChar <= 5600000000000.0) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (NdChar <= 4.1e+139) tmp = NdChar / (1.0 + exp((mu / 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[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.7e+124], N[(NdChar / N[(1.0 + N[Power[E, N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -7.6e+21], t$95$0, If[LessEqual[NdChar, -1.12e-13], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5600000000000.0], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.1e+139], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{if}\;NdChar \leq -3.7 \cdot 10^{+124}:\\
\;\;\;\;\frac{NdChar}{1 + {e}^{\left(\frac{mu}{KbT}\right)}}\\
\mathbf{elif}\;NdChar \leq -7.6 \cdot 10^{+21}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -1.12 \cdot 10^{-13}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;NdChar \leq 5600000000000:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;NdChar \leq 4.1 \cdot 10^{+139}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -3.70000000000000008e124Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 60.9%
Taylor expanded in KbT around inf 38.2%
associate-+r+38.2%
+-commutative38.2%
Simplified38.2%
Taylor expanded in mu around inf 24.3%
associate-*r/24.3%
associate-*r*24.3%
neg-mul-124.3%
Simplified24.3%
Taylor expanded in NdChar around inf 41.2%
*-un-lft-identity41.2%
exp-prod41.3%
Applied egg-rr41.3%
exp-1-e41.3%
Simplified41.3%
if -3.70000000000000008e124 < NdChar < -7.6e21 or 4.1000000000000002e139 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.0%
Taylor expanded in KbT around inf 39.1%
if -7.6e21 < NdChar < -1.12e-13Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 38.6%
Taylor expanded in Vef around inf 35.1%
associate-/l*35.1%
Simplified35.1%
Taylor expanded in Ev around inf 5.1%
if -1.12e-13 < NdChar < 5.6e12Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 67.2%
Taylor expanded in EDonor around 0 64.0%
+-commutative61.1%
Simplified64.0%
Taylor expanded in KbT around inf 45.0%
if 5.6e12 < NdChar < 4.1000000000000002e139Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 63.0%
Taylor expanded in KbT around inf 39.2%
associate-+r+39.2%
+-commutative39.2%
Simplified39.2%
Taylor expanded in mu around inf 34.1%
associate-*r/34.1%
associate-*r*34.1%
neg-mul-134.1%
Simplified34.1%
Taylor expanded in NdChar around inf 38.9%
Final simplification41.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* KbT (/ NdChar Vef)))))
(if (<= NaChar -8.2e+232)
t_0
(if (<= NaChar -2.5e+150)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (/ EDonor KbT))))
(if (<= NaChar -1.6e+114)
(/ NaChar (+ 2.0 (/ EAccept KbT)))
(if (<= NaChar 1.45e+48)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (KbT * (NdChar / Vef));
double tmp;
if (NaChar <= -8.2e+232) {
tmp = t_0;
} else if (NaChar <= -2.5e+150) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (NaChar <= -1.6e+114) {
tmp = NaChar / (2.0 + (EAccept / KbT));
} else if (NaChar <= 1.45e+48) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((ev / kbt)))) + (kbt * (ndchar / vef))
if (nachar <= (-8.2d+232)) then
tmp = t_0
else if (nachar <= (-2.5d+150)) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - (edonor / kbt)))
else if (nachar <= (-1.6d+114)) then
tmp = nachar / (2.0d0 + (eaccept / kbt))
else if (nachar <= 1.45d+48) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (KbT * (NdChar / Vef));
double tmp;
if (NaChar <= -8.2e+232) {
tmp = t_0;
} else if (NaChar <= -2.5e+150) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (NaChar <= -1.6e+114) {
tmp = NaChar / (2.0 + (EAccept / KbT));
} else if (NaChar <= 1.45e+48) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} 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)))) + (KbT * (NdChar / Vef)) tmp = 0 if NaChar <= -8.2e+232: tmp = t_0 elif NaChar <= -2.5e+150: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))) elif NaChar <= -1.6e+114: tmp = NaChar / (2.0 + (EAccept / KbT)) elif NaChar <= 1.45e+48: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) 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(KbT * Float64(NdChar / Vef))) tmp = 0.0 if (NaChar <= -8.2e+232) tmp = t_0; elseif (NaChar <= -2.5e+150) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - Float64(EDonor / KbT)))); elseif (NaChar <= -1.6e+114) tmp = Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT))); elseif (NaChar <= 1.45e+48) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); 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)))) + (KbT * (NdChar / Vef)); tmp = 0.0; if (NaChar <= -8.2e+232) tmp = t_0; elseif (NaChar <= -2.5e+150) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))); elseif (NaChar <= -1.6e+114) tmp = NaChar / (2.0 + (EAccept / KbT)); elseif (NaChar <= 1.45e+48) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8.2e+232], t$95$0, If[LessEqual[NaChar, -2.5e+150], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.6e+114], N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.45e+48], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{if}\;NaChar \leq -8.2 \cdot 10^{+232}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -2.5 \cdot 10^{+150}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - \frac{EDonor}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1.6 \cdot 10^{+114}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.45 \cdot 10^{+48}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -8.20000000000000005e232 or 1.4499999999999999e48 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.9%
Taylor expanded in Vef around inf 53.9%
associate-/l*53.3%
Simplified53.3%
Taylor expanded in Ev around inf 33.9%
if -8.20000000000000005e232 < NaChar < -2.50000000000000004e150Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.0%
Taylor expanded in KbT around inf 38.1%
Taylor expanded in mu around inf 38.1%
Taylor expanded in EDonor around inf 48.9%
if -2.50000000000000004e150 < NaChar < -1.6e114Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.8%
Taylor expanded in Vef around inf 68.3%
associate-/l*60.9%
Simplified60.9%
Taylor expanded in EAccept around inf 45.9%
clear-num45.9%
un-div-inv45.9%
Applied egg-rr45.9%
associate-/r/45.9%
Simplified45.9%
Taylor expanded in EAccept around 0 29.8%
+-commutative52.8%
Simplified29.8%
Taylor expanded in Vef around inf 52.8%
if -1.6e114 < NaChar < 1.4499999999999999e48Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 63.1%
Taylor expanded in KbT around inf 40.3%
Final simplification39.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))))
(* NdChar 0.5))))
(if (<= NaChar -4.3e+133)
t_0
(if (<= NaChar -1.26e-51)
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= NaChar 8.5e-108)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar 2.0))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_0;
} else if (NaChar <= -1.26e-51) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (NaChar <= 8.5e-108) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-4.3d+133)) then
tmp = t_0
else if (nachar <= (-1.26d-51)) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
else if (nachar <= 8.5d-108) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / 2.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4.3e+133) {
tmp = t_0;
} else if (NaChar <= -1.26e-51) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (NaChar <= 8.5e-108) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -4.3e+133: tmp = t_0 elif NaChar <= -1.26e-51: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) elif NaChar <= 8.5e-108: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0) 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(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -4.3e+133) tmp = t_0; elseif (NaChar <= -1.26e-51) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (NaChar <= 8.5e-108) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / 2.0)); 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(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -4.3e+133) tmp = t_0; elseif (NaChar <= -1.26e-51) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (NaChar <= 8.5e-108) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(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, -4.3e+133], t$95$0, If[LessEqual[NaChar, -1.26e-51], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8.5e-108], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -4.3 \cdot 10^{+133}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.26 \cdot 10^{-51}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 8.5 \cdot 10^{-108}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -4.29999999999999994e133 or 8.49999999999999986e-108 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
Taylor expanded in KbT around inf 62.5%
if -4.29999999999999994e133 < NaChar < -1.2600000000000001e-51Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.5%
Taylor expanded in Ev around 0 56.1%
Taylor expanded in EDonor around 0 52.8%
+-commutative66.2%
Simplified52.8%
if -1.2600000000000001e-51 < NaChar < 8.49999999999999986e-108Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.6%
Final simplification60.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -8e+145) (not (<= NaChar 8.5e-108)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) 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 <= -8e+145) || !(NaChar <= 8.5e-108)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / 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 <= (-8d+145)) .or. (.not. (nachar <= 8.5d-108))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / 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 <= -8e+145) || !(NaChar <= 8.5e-108)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -8e+145) or not (NaChar <= 8.5e-108): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -8e+145) || !(NaChar <= 8.5e-108)) 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(Float64(Ec - Vef) - mu)) / 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 <= -8e+145) || ~((NaChar <= 8.5e-108))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -8e+145], N[Not[LessEqual[NaChar, 8.5e-108]], $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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -8 \cdot 10^{+145} \lor \neg \left(NaChar \leq 8.5 \cdot 10^{-108}\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(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -7.9999999999999999e145 or 8.49999999999999986e-108 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.0%
Taylor expanded in KbT around inf 61.8%
if -7.9999999999999999e145 < NaChar < 8.49999999999999986e-108Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.3%
Final simplification58.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -8.5e+82) (not (<= NaChar 2.25e-142)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ (- (+ 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 <= -8.5e+82) || !(NaChar <= 2.25e-142)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((((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 <= (-8.5d+82)) .or. (.not. (nachar <= 2.25d-142))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((((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 <= -8.5e+82) || !(NaChar <= 2.25e-142)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -8.5e+82) or not (NaChar <= 2.25e-142): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((((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 <= -8.5e+82) || !(NaChar <= 2.25e-142)) 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(Float64(mu + 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 <= -8.5e+82) || ~((NaChar <= 2.25e-142))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((((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, -8.5e+82], N[Not[LessEqual[NaChar, 2.25e-142]], $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[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -8.5 \cdot 10^{+82} \lor \neg \left(NaChar \leq 2.25 \cdot 10^{-142}\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{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -8.4999999999999995e82 or 2.25000000000000009e-142 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.8%
Taylor expanded in KbT around inf 59.5%
if -8.4999999999999995e82 < NaChar < 2.25000000000000009e-142Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.6%
Taylor expanded in EDonor around 0 52.4%
+-commutative68.0%
Simplified52.4%
Final simplification56.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(if (<= KbT 7.2e-291)
(+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= KbT 2.1e-246)
(+ t_0 (* KbT (/ NdChar Vef)))
(if (<= KbT 7e-195)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(+ t_0 (/ NdChar 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((Ev / KbT)));
double tmp;
if (KbT <= 7.2e-291) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= 2.1e-246) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (KbT <= 7e-195) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else {
tmp = t_0 + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((ev / kbt)))
if (kbt <= 7.2d-291) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
else if (kbt <= 2.1d-246) then
tmp = t_0 + (kbt * (ndchar / vef))
else if (kbt <= 7d-195) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else
tmp = t_0 + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double tmp;
if (KbT <= 7.2e-291) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= 2.1e-246) {
tmp = t_0 + (KbT * (NdChar / Vef));
} else if (KbT <= 7e-195) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = t_0 + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((Ev / KbT))) tmp = 0 if KbT <= 7.2e-291: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) elif KbT <= 2.1e-246: tmp = t_0 + (KbT * (NdChar / Vef)) elif KbT <= 7e-195: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = t_0 + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) tmp = 0.0 if (KbT <= 7.2e-291) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (KbT <= 2.1e-246) tmp = Float64(t_0 + Float64(KbT * Float64(NdChar / Vef))); elseif (KbT <= 7e-195) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); else tmp = Float64(t_0 + Float64(NdChar / 2.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))); tmp = 0.0; if (KbT <= 7.2e-291) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (KbT <= 2.1e-246) tmp = t_0 + (KbT * (NdChar / Vef)); elseif (KbT <= 7e-195) tmp = NdChar / (1.0 + exp((mu / KbT))); else tmp = t_0 + (NdChar / 2.0); 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[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, 7.2e-291], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.1e-246], N[(t$95$0 + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 7e-195], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;KbT \leq 7.2 \cdot 10^{-291}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{-246}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{elif}\;KbT \leq 7 \cdot 10^{-195}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < 7.1999999999999993e-291Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.6%
Taylor expanded in Ev around 0 49.9%
Taylor expanded in Ec around inf 38.0%
associate-*r/50.5%
mul-1-neg50.5%
Simplified38.0%
if 7.1999999999999993e-291 < KbT < 2.09999999999999995e-246Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 33.3%
Taylor expanded in Vef around inf 100.0%
associate-/l*100.0%
Simplified100.0%
Taylor expanded in Ev around inf 67.5%
if 2.09999999999999995e-246 < KbT < 7.00000000000000028e-195Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.5%
Taylor expanded in KbT around inf 46.8%
associate-+r+46.8%
+-commutative46.8%
Simplified46.8%
Taylor expanded in mu around inf 49.1%
associate-*r/49.1%
associate-*r*49.1%
neg-mul-149.1%
Simplified49.1%
Taylor expanded in NdChar around inf 64.5%
if 7.00000000000000028e-195 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.9%
Taylor expanded in EDonor around inf 50.2%
Taylor expanded in EDonor around 0 36.8%
Final simplification39.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT))))))
(if (<= KbT 1.95e-286)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= KbT 2.1e-184)
(+ t_0 (/ (* NdChar KbT) EDonor))
(if (<= KbT 4e-160)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(+ t_0 (/ NdChar 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((Ev / KbT)));
double tmp;
if (KbT <= 1.95e-286) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= 2.1e-184) {
tmp = t_0 + ((NdChar * KbT) / EDonor);
} else if (KbT <= 4e-160) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else {
tmp = t_0 + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((ev / kbt)))
if (kbt <= 1.95d-286) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
else if (kbt <= 2.1d-184) then
tmp = t_0 + ((ndchar * kbt) / edonor)
else if (kbt <= 4d-160) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else
tmp = t_0 + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double tmp;
if (KbT <= 1.95e-286) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= 2.1e-184) {
tmp = t_0 + ((NdChar * KbT) / EDonor);
} else if (KbT <= 4e-160) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = t_0 + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((Ev / KbT))) tmp = 0 if KbT <= 1.95e-286: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) elif KbT <= 2.1e-184: tmp = t_0 + ((NdChar * KbT) / EDonor) elif KbT <= 4e-160: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = t_0 + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) tmp = 0.0 if (KbT <= 1.95e-286) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (KbT <= 2.1e-184) tmp = Float64(t_0 + Float64(Float64(NdChar * KbT) / EDonor)); elseif (KbT <= 4e-160) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); else tmp = Float64(t_0 + Float64(NdChar / 2.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))); tmp = 0.0; if (KbT <= 1.95e-286) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (KbT <= 2.1e-184) tmp = t_0 + ((NdChar * KbT) / EDonor); elseif (KbT <= 4e-160) tmp = NdChar / (1.0 + exp((mu / KbT))); else tmp = t_0 + (NdChar / 2.0); 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[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, 1.95e-286], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.1e-184], N[(t$95$0 + N[(N[(NdChar * KbT), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4e-160], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;KbT \leq 1.95 \cdot 10^{-286}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;KbT \leq 2.1 \cdot 10^{-184}:\\
\;\;\;\;t\_0 + \frac{NdChar \cdot KbT}{EDonor}\\
\mathbf{elif}\;KbT \leq 4 \cdot 10^{-160}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < 1.94999999999999998e-286Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.3%
Taylor expanded in EDonor around inf 55.3%
Taylor expanded in Ev around 0 37.7%
if 1.94999999999999998e-286 < KbT < 2.0999999999999999e-184Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.6%
Taylor expanded in EDonor around inf 51.8%
Taylor expanded in Ev around inf 37.9%
if 2.0999999999999999e-184 < KbT < 4e-160Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.4%
Taylor expanded in KbT around inf 33.3%
associate-+r+33.3%
+-commutative33.3%
Simplified33.3%
Taylor expanded in mu around inf 67.4%
associate-*r/67.4%
associate-*r*67.4%
neg-mul-167.4%
Simplified67.4%
Taylor expanded in NdChar around inf 67.4%
if 4e-160 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.3%
Taylor expanded in EDonor around inf 49.6%
Taylor expanded in EDonor around 0 37.3%
Final simplification37.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -3e+33)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= Ev -4.5e-164)
(+ (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))) (/ NaChar 2.0))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -3e+33) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Ev <= -4.5e-164) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-3d+33)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (ev <= (-4.5d-164)) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -3e+33) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Ev <= -4.5e-164) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -3e+33: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif Ev <= -4.5e-164: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -3e+33) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (Ev <= -4.5e-164) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -3e+33) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (Ev <= -4.5e-164) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -3e+33], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -4.5e-164], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -3 \cdot 10^{+33}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;Ev \leq -4.5 \cdot 10^{-164}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -2.99999999999999984e33Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.8%
Taylor expanded in EDonor around inf 68.1%
Taylor expanded in EDonor around 0 40.2%
if -2.99999999999999984e33 < Ev < -4.4999999999999997e-164Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in Ec around inf 37.4%
associate-*r/62.5%
mul-1-neg62.5%
Simplified37.4%
if -4.4999999999999997e-164 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.5%
Taylor expanded in EDonor around 0 69.5%
+-commutative65.0%
Simplified69.5%
Taylor expanded in KbT around inf 39.0%
Final simplification39.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ec -1.65e+282)
(/ NaChar (+ 2.0 (/ EAccept KbT)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 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 (Ec <= -1.65e+282) {
tmp = NaChar / (2.0 + (EAccept / KbT));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 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 (ec <= (-1.65d+282)) then
tmp = nachar / (2.0d0 + (eaccept / kbt))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 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 (Ec <= -1.65e+282) {
tmp = NaChar / (2.0 + (EAccept / KbT));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ec <= -1.65e+282: tmp = NaChar / (2.0 + (EAccept / KbT)) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ec <= -1.65e+282) tmp = Float64(NaChar / Float64(2.0 + Float64(EAccept / KbT))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ec <= -1.65e+282) tmp = NaChar / (2.0 + (EAccept / KbT)); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ec, -1.65e+282], N[(NaChar / N[(2.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq -1.65 \cdot 10^{+282}:\\
\;\;\;\;\frac{NaChar}{2 + \frac{EAccept}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if Ec < -1.65e282Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 34.5%
Taylor expanded in Vef around inf 17.2%
associate-/l*25.2%
Simplified25.2%
Taylor expanded in EAccept around inf 16.6%
clear-num16.6%
un-div-inv16.6%
Applied egg-rr16.6%
associate-/r/24.1%
Simplified24.1%
Taylor expanded in EAccept around 0 3.1%
+-commutative43.7%
Simplified3.1%
Taylor expanded in Vef around inf 27.3%
if -1.65e282 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.8%
Taylor expanded in KbT around inf 48.5%
Final simplification47.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -4.2e+110)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0))
(if (<= Ev -2.7e-205)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -4.2e+110) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Ev <= -2.7e-205) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-4.2d+110)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
else if (ev <= (-2.7d-205)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -4.2e+110) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
} else if (Ev <= -2.7e-205) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -4.2e+110: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) elif Ev <= -2.7e-205: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -4.2e+110) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); elseif (Ev <= -2.7e-205) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -4.2e+110) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); elseif (Ev <= -2.7e-205) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -4.2e+110], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -2.7e-205], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -4.2 \cdot 10^{+110}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;Ev \leq -2.7 \cdot 10^{-205}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -4.2000000000000003e110Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 84.3%
Taylor expanded in EDonor around inf 70.1%
Taylor expanded in EDonor around 0 39.8%
if -4.2000000000000003e110 < Ev < -2.7000000000000001e-205Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.8%
Taylor expanded in KbT around inf 39.0%
if -2.7000000000000001e-205 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.0%
Taylor expanded in EDonor around 0 70.2%
+-commutative65.4%
Simplified70.2%
Taylor expanded in KbT around inf 40.2%
Final simplification39.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -9.8e+128)
(- (/ NaChar 2.0) (/ NdChar (+ -1.0 (/ Ec KbT))))
(if (<= NaChar 1.2e-192)
(/ NdChar (+ 1.0 (pow E (/ mu KbT))))
(if (<= NaChar 4.05e-35)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (/ EDonor KbT))))
(+
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) Ec)
(/ -1.0 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 <= -9.8e+128) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT)));
} else if (NaChar <= 1.2e-192) {
tmp = NdChar / (1.0 + pow(((double) M_E), (mu / KbT)));
} else if (NaChar <= 4.05e-35) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
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 <= -9.8e+128) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT)));
} else if (NaChar <= 1.2e-192) {
tmp = NdChar / (1.0 + Math.pow(Math.E, (mu / KbT)));
} else if (NaChar <= 4.05e-35) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -9.8e+128: tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT))) elif NaChar <= 1.2e-192: tmp = NdChar / (1.0 + math.pow(math.e, (mu / KbT))) elif NaChar <= 4.05e-35: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))) else: tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -9.8e+128) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 + Float64(Ec / KbT)))); elseif (NaChar <= 1.2e-192) tmp = Float64(NdChar / Float64(1.0 + (exp(1) ^ Float64(mu / KbT)))); elseif (NaChar <= 4.05e-35) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - Float64(EDonor / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / 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 <= -9.8e+128) tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT))); elseif (NaChar <= 1.2e-192) tmp = NdChar / (1.0 + (2.71828182845904523536 ^ (mu / KbT))); elseif (NaChar <= 4.05e-35) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))); else tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -9.8e+128], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 + N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.2e-192], N[(NdChar / N[(1.0 + N[Power[E, N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.05e-35], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -9.8 \cdot 10^{+128}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 + \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.2 \cdot 10^{-192}:\\
\;\;\;\;\frac{NdChar}{1 + {e}^{\left(\frac{mu}{KbT}\right)}}\\
\mathbf{elif}\;NaChar \leq 4.05 \cdot 10^{-35}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -9.80000000000000035e128Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.4%
Taylor expanded in KbT around inf 27.0%
Taylor expanded in mu around inf 27.4%
Taylor expanded in Ec around inf 31.1%
neg-mul-131.1%
distribute-neg-frac231.1%
Simplified31.1%
if -9.80000000000000035e128 < NaChar < 1.2e-192Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 59.9%
Taylor expanded in KbT around inf 37.0%
associate-+r+37.0%
+-commutative37.0%
Simplified37.0%
Taylor expanded in mu around inf 28.4%
associate-*r/28.4%
associate-*r*28.4%
neg-mul-128.4%
Simplified28.4%
Taylor expanded in NdChar around inf 37.0%
*-un-lft-identity37.0%
exp-prod37.0%
Applied egg-rr37.0%
exp-1-e37.0%
Simplified37.0%
if 1.2e-192 < NaChar < 4.05000000000000015e-35Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.4%
Taylor expanded in KbT around inf 23.5%
Taylor expanded in mu around inf 23.5%
Taylor expanded in EDonor around inf 36.3%
if 4.05000000000000015e-35 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.4%
Taylor expanded in KbT around inf 29.4%
Taylor expanded in Ec around -inf 30.0%
mul-1-neg74.9%
*-commutative74.9%
distribute-rgt-neg-in74.9%
+-commutative74.9%
mul-1-neg74.9%
unsub-neg74.9%
Simplified30.0%
Final simplification34.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NaChar -6.8e+227) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* KbT (/ NdChar Vef))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor 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 <= -6.8e+227) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else {
tmp = (NdChar / (1.0 + exp((EDonor / 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 <= (-6.8d+227)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (kbt * (ndchar / vef))
else
tmp = (ndchar / (1.0d0 + exp((edonor / 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 <= -6.8e+227) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef));
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -6.8e+227: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -6.8e+227) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(KbT * Float64(NdChar / Vef))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / 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 <= -6.8e+227) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT * (NdChar / Vef)); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -6.8e+227], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{+227}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + KbT \cdot \frac{NdChar}{Vef}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -6.79999999999999979e227Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.9%
Taylor expanded in Vef around inf 68.0%
associate-/l*66.4%
Simplified66.4%
Taylor expanded in EAccept around inf 24.5%
if -6.79999999999999979e227 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 68.8%
Taylor expanded in KbT around inf 37.6%
Final simplification36.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -2e+129)
(- (/ NaChar 2.0) (/ NdChar (+ -1.0 (/ Ec KbT))))
(if (<= NaChar 1.25e-192)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= NaChar 2.35e-35)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (/ EDonor KbT))))
(+
(/
NdChar
(+
1.0
(*
Ec
(+
(/ (+ 1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) Ec)
(/ -1.0 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 <= -2e+129) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT)));
} else if (NaChar <= 1.25e-192) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (NaChar <= 2.35e-35) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / 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 <= (-2d+129)) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) + (ec / kbt)))
else if (nachar <= 1.25d-192) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (nachar <= 2.35d-35) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - (edonor / kbt)))
else
tmp = (ndchar / (1.0d0 + (ec * (((1.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) / ec) + ((-1.0d0) / 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 <= -2e+129) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT)));
} else if (NaChar <= 1.25e-192) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (NaChar <= 2.35e-35) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -2e+129: tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT))) elif NaChar <= 1.25e-192: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif NaChar <= 2.35e-35: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))) else: tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -2e+129) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 + Float64(Ec / KbT)))); elseif (NaChar <= 1.25e-192) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (NaChar <= 2.35e-35) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - Float64(EDonor / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / 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 <= -2e+129) tmp = (NaChar / 2.0) - (NdChar / (-1.0 + (Ec / KbT))); elseif (NaChar <= 1.25e-192) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (NaChar <= 2.35e-35) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))); else tmp = (NdChar / (1.0 + (Ec * (((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -2e+129], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 + N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.25e-192], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.35e-35], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2 \cdot 10^{+129}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 + \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.25 \cdot 10^{-192}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 2.35 \cdot 10^{-35}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + Ec \cdot \left(\frac{1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -2e129Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.4%
Taylor expanded in KbT around inf 27.0%
Taylor expanded in mu around inf 27.4%
Taylor expanded in Ec around inf 31.1%
neg-mul-131.1%
distribute-neg-frac231.1%
Simplified31.1%
if -2e129 < NaChar < 1.25e-192Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 59.9%
Taylor expanded in KbT around inf 37.0%
associate-+r+37.0%
+-commutative37.0%
Simplified37.0%
Taylor expanded in mu around inf 28.4%
associate-*r/28.4%
associate-*r*28.4%
neg-mul-128.4%
Simplified28.4%
Taylor expanded in NdChar around inf 37.0%
if 1.25e-192 < NaChar < 2.35e-35Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.4%
Taylor expanded in KbT around inf 23.5%
Taylor expanded in mu around inf 23.5%
Taylor expanded in EDonor around inf 36.3%
if 2.35e-35 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.4%
Taylor expanded in KbT around inf 29.4%
Taylor expanded in Ec around -inf 30.0%
mul-1-neg74.9%
*-commutative74.9%
distribute-rgt-neg-in74.9%
+-commutative74.9%
mul-1-neg74.9%
unsub-neg74.9%
Simplified30.0%
Final simplification34.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.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 / KbT)))) + (NaChar / 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 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 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 (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 69.9%
Taylor expanded in KbT around inf 35.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))))
(if (<= KbT -2.8e+105)
(+ (/ NdChar (- (+ 2.0 t_0) (/ Ec KbT))) (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= KbT -3.9e-159)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (/ EDonor KbT))))
(if (<= KbT 4.5e-117)
(/ NdChar (/ Vef KbT))
(+
(/ NdChar (+ 1.0 (* Ec (+ (/ (+ 1.0 t_0) Ec) (/ -1.0 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 t_0 = (EDonor / KbT) + ((Vef / KbT) + (mu / KbT));
double tmp;
if (KbT <= -2.8e+105) {
tmp = (NdChar / ((2.0 + t_0) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= -3.9e-159) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (KbT <= 4.5e-117) {
tmp = NdChar / (Vef / KbT);
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + t_0) / Ec) + (-1.0 / 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) :: t_0
real(8) :: tmp
t_0 = (edonor / kbt) + ((vef / kbt) + (mu / kbt))
if (kbt <= (-2.8d+105)) then
tmp = (ndchar / ((2.0d0 + t_0) - (ec / kbt))) + (nachar / ((ev / kbt) + 2.0d0))
else if (kbt <= (-3.9d-159)) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - (edonor / kbt)))
else if (kbt <= 4.5d-117) then
tmp = ndchar / (vef / kbt)
else
tmp = (ndchar / (1.0d0 + (ec * (((1.0d0 + t_0) / ec) + ((-1.0d0) / 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 t_0 = (EDonor / KbT) + ((Vef / KbT) + (mu / KbT));
double tmp;
if (KbT <= -2.8e+105) {
tmp = (NdChar / ((2.0 + t_0) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= -3.9e-159) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (KbT <= 4.5e-117) {
tmp = NdChar / (Vef / KbT);
} else {
tmp = (NdChar / (1.0 + (Ec * (((1.0 + t_0) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (EDonor / KbT) + ((Vef / KbT) + (mu / KbT)) tmp = 0 if KbT <= -2.8e+105: tmp = (NdChar / ((2.0 + t_0) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0)) elif KbT <= -3.9e-159: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))) elif KbT <= 4.5e-117: tmp = NdChar / (Vef / KbT) else: tmp = (NdChar / (1.0 + (Ec * (((1.0 + t_0) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) tmp = 0.0 if (KbT <= -2.8e+105) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + t_0) - Float64(Ec / KbT))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (KbT <= -3.9e-159) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - Float64(EDonor / KbT)))); elseif (KbT <= 4.5e-117) tmp = Float64(NdChar / Float64(Vef / KbT)); else tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Ec * Float64(Float64(Float64(1.0 + t_0) / Ec) + Float64(-1.0 / KbT))))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (EDonor / KbT) + ((Vef / KbT) + (mu / KbT)); tmp = 0.0; if (KbT <= -2.8e+105) tmp = (NdChar / ((2.0 + t_0) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (KbT <= -3.9e-159) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))); elseif (KbT <= 4.5e-117) tmp = NdChar / (Vef / KbT); else tmp = (NdChar / (1.0 + (Ec * (((1.0 + t_0) / Ec) + (-1.0 / KbT))))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.8e+105], N[(N[(NdChar / N[(N[(2.0 + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.9e-159], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 4.5e-117], N[(NdChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[(Ec * N[(N[(N[(1.0 + t$95$0), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\\
\mathbf{if}\;KbT \leq -2.8 \cdot 10^{+105}:\\
\;\;\;\;\frac{NdChar}{\left(2 + t\_0\right) - \frac{Ec}{KbT}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;KbT \leq -3.9 \cdot 10^{-159}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - \frac{EDonor}{KbT}}\\
\mathbf{elif}\;KbT \leq 4.5 \cdot 10^{-117}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + Ec \cdot \left(\frac{1 + t\_0}{Ec} + \frac{-1}{KbT}\right)} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -2.8000000000000001e105Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 81.6%
Taylor expanded in Ev around 0 72.3%
Taylor expanded in KbT around inf 56.8%
if -2.8000000000000001e105 < KbT < -3.89999999999999977e-159Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in KbT around inf 12.9%
Taylor expanded in mu around inf 12.6%
Taylor expanded in EDonor around inf 22.6%
if -3.89999999999999977e-159 < KbT < 4.49999999999999969e-117Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 36.5%
Taylor expanded in Vef around inf 39.1%
associate-/l*34.4%
Simplified34.4%
Taylor expanded in EAccept around inf 22.3%
Taylor expanded in EAccept around 0 9.3%
+-commutative58.9%
Simplified9.3%
Taylor expanded in KbT around inf 15.4%
associate-*l/19.3%
associate-/r/13.8%
Simplified13.8%
associate-/r/19.3%
Applied egg-rr19.3%
*-commutative19.3%
clear-num19.3%
un-div-inv19.3%
Applied egg-rr19.3%
if 4.49999999999999969e-117 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.3%
Taylor expanded in KbT around inf 29.9%
Taylor expanded in Ec around -inf 30.4%
mul-1-neg64.6%
*-commutative64.6%
distribute-rgt-neg-in64.6%
+-commutative64.6%
mul-1-neg64.6%
unsub-neg64.6%
Simplified30.4%
Final simplification30.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4.1e+105)
(+
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT)))
(/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= KbT -3.7e-157)
(- (/ NaChar 2.0) (/ NdChar (- -1.0 (/ EDonor KbT))))
(if (<= KbT 3.1e-119)
(/ NdChar (/ Vef KbT))
(+ (/ NaChar 2.0) (* NdChar 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 (KbT <= -4.1e+105) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= -3.7e-157) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (KbT <= 3.1e-119) {
tmp = NdChar / (Vef / KbT);
} else {
tmp = (NaChar / 2.0) + (NdChar * 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 (kbt <= (-4.1d+105)) then
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) + (nachar / ((ev / kbt) + 2.0d0))
else if (kbt <= (-3.7d-157)) then
tmp = (nachar / 2.0d0) - (ndchar / ((-1.0d0) - (edonor / kbt)))
else if (kbt <= 3.1d-119) then
tmp = ndchar / (vef / kbt)
else
tmp = (nachar / 2.0d0) + (ndchar * 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 (KbT <= -4.1e+105) {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0));
} else if (KbT <= -3.7e-157) {
tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT)));
} else if (KbT <= 3.1e-119) {
tmp = NdChar / (Vef / KbT);
} else {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4.1e+105: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0)) elif KbT <= -3.7e-157: tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))) elif KbT <= 3.1e-119: tmp = NdChar / (Vef / KbT) else: tmp = (NaChar / 2.0) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4.1e+105) tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (KbT <= -3.7e-157) tmp = Float64(Float64(NaChar / 2.0) - Float64(NdChar / Float64(-1.0 - Float64(EDonor / KbT)))); elseif (KbT <= 3.1e-119) tmp = Float64(NdChar / Float64(Vef / KbT)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4.1e+105) tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) + (NaChar / ((Ev / KbT) + 2.0)); elseif (KbT <= -3.7e-157) tmp = (NaChar / 2.0) - (NdChar / (-1.0 - (EDonor / KbT))); elseif (KbT <= 3.1e-119) tmp = NdChar / (Vef / KbT); else tmp = (NaChar / 2.0) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4.1e+105], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -3.7e-157], N[(N[(NaChar / 2.0), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.1e-119], N[(NdChar / N[(Vef / KbT), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.1 \cdot 10^{+105}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;KbT \leq -3.7 \cdot 10^{-157}:\\
\;\;\;\;\frac{NaChar}{2} - \frac{NdChar}{-1 - \frac{EDonor}{KbT}}\\
\mathbf{elif}\;KbT \leq 3.1 \cdot 10^{-119}:\\
\;\;\;\;\frac{NdChar}{\frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -4.1000000000000002e105Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 81.6%
Taylor expanded in Ev around 0 72.3%
Taylor expanded in KbT around inf 56.8%
if -4.1000000000000002e105 < KbT < -3.6999999999999998e-157Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in KbT around inf 12.9%
Taylor expanded in mu around inf 12.6%
Taylor expanded in EDonor around inf 22.6%
if -3.6999999999999998e-157 < KbT < 3.09999999999999978e-119Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 36.5%
Taylor expanded in Vef around inf 39.1%
associate-/l*34.4%
Simplified34.4%
Taylor expanded in EAccept around inf 22.3%
Taylor expanded in EAccept around 0 9.3%
+-commutative58.9%
Simplified9.3%
Taylor expanded in KbT around inf 15.4%
associate-*l/19.3%
associate-/r/13.8%
Simplified13.8%
associate-/r/19.3%
Applied egg-rr19.3%
*-commutative19.3%
clear-num19.3%
un-div-inv19.3%
Applied egg-rr19.3%
if 3.09999999999999978e-119 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.3%
Taylor expanded in KbT around inf 29.9%
Taylor expanded in KbT around inf 30.3%
Final simplification30.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -2.7e-254) (not (<= NaChar 6.1e-280))) (+ (/ NaChar 2.0) (* NdChar 0.5)) (/ (* NaChar (* EDonor 0.5)) EDonor)))
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.7e-254) || !(NaChar <= 6.1e-280)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = (NaChar * (EDonor * 0.5)) / EDonor;
}
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.7d-254)) .or. (.not. (nachar <= 6.1d-280))) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else
tmp = (nachar * (edonor * 0.5d0)) / edonor
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.7e-254) || !(NaChar <= 6.1e-280)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = (NaChar * (EDonor * 0.5)) / EDonor;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.7e-254) or not (NaChar <= 6.1e-280): tmp = (NaChar / 2.0) + (NdChar * 0.5) else: tmp = (NaChar * (EDonor * 0.5)) / EDonor return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.7e-254) || !(NaChar <= 6.1e-280)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NaChar * Float64(EDonor * 0.5)) / EDonor); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.7e-254) || ~((NaChar <= 6.1e-280))) tmp = (NaChar / 2.0) + (NdChar * 0.5); else tmp = (NaChar * (EDonor * 0.5)) / EDonor; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.7e-254], N[Not[LessEqual[NaChar, 6.1e-280]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar * N[(EDonor * 0.5), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.7 \cdot 10^{-254} \lor \neg \left(NaChar \leq 6.1 \cdot 10^{-280}\right):\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar \cdot \left(EDonor \cdot 0.5\right)}{EDonor}\\
\end{array}
\end{array}
if NaChar < -2.70000000000000007e-254 or 6.10000000000000008e-280 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.8%
Taylor expanded in KbT around inf 25.8%
Taylor expanded in KbT around inf 27.6%
if -2.70000000000000007e-254 < NaChar < 6.10000000000000008e-280Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 27.1%
Taylor expanded in KbT around inf 7.4%
Taylor expanded in EDonor around inf 4.5%
associate-/l*4.6%
Simplified4.6%
Taylor expanded in EDonor around 0 4.5%
Taylor expanded in EDonor around inf 36.4%
*-commutative36.4%
*-commutative36.4%
associate-*r*36.4%
Simplified36.4%
Final simplification28.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 5e+152) (* NaChar 0.5) (* KbT (/ NdChar Vef))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 5e+152) {
tmp = NaChar * 0.5;
} else {
tmp = KbT * (NdChar / 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 (vef <= 5d+152) then
tmp = nachar * 0.5d0
else
tmp = kbt * (ndchar / 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 (Vef <= 5e+152) {
tmp = NaChar * 0.5;
} else {
tmp = KbT * (NdChar / Vef);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 5e+152: tmp = NaChar * 0.5 else: tmp = KbT * (NdChar / Vef) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 5e+152) tmp = Float64(NaChar * 0.5); else tmp = Float64(KbT * Float64(NdChar / Vef)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 5e+152) tmp = NaChar * 0.5; else tmp = KbT * (NdChar / Vef); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 5e+152], N[(NaChar * 0.5), $MachinePrecision], N[(KbT * N[(NdChar / Vef), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 5 \cdot 10^{+152}:\\
\;\;\;\;NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{Vef}\\
\end{array}
\end{array}
if Vef < 5e152Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.2%
Taylor expanded in KbT around inf 26.4%
Taylor expanded in EDonor around inf 11.8%
associate-/l*11.7%
Simplified11.7%
Taylor expanded in KbT around 0 22.2%
if 5e152 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 28.5%
Taylor expanded in Vef around inf 26.1%
associate-/l*38.8%
Simplified38.8%
Taylor expanded in EAccept around inf 17.9%
Taylor expanded in EAccept around 0 14.6%
+-commutative47.6%
Simplified14.6%
Taylor expanded in KbT around inf 13.3%
associate-*l/16.5%
associate-/r/22.9%
Simplified22.9%
clear-num22.9%
associate-/r/22.9%
clear-num22.9%
Applied egg-rr22.9%
Final simplification22.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar 2.0) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / 2.0d0) + (ndchar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / 2.0) + (NdChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / 2.0) + (NdChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{2} + NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.9%
Taylor expanded in KbT around inf 24.6%
Taylor expanded in KbT around inf 26.2%
Final simplification26.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.9%
Taylor expanded in KbT around inf 24.6%
Taylor expanded in EDonor around inf 11.1%
associate-/l*11.0%
Simplified11.0%
Taylor expanded in KbT around 0 20.7%
Final simplification20.7%
herbie shell --seed 2024107
(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))))))