
(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 27 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev 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(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - 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(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\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 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= EAccept -1e-195)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 1.9e-165)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= EAccept 6.8e-102)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= EAccept 6.1e-61)
(+
t_0
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= EAccept 3.7e+113)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(+
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT))))
(/ 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 + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= -1e-195) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 1.9e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 6.8e-102) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (EAccept <= 6.1e-61) {
tmp = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (EAccept <= 3.7e+113) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (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 + (edonor + (vef - ec))) / kbt)))
if (eaccept <= (-1d-195)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 1.9d-165) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if (eaccept <= 6.8d-102) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (eaccept <= 6.1d-61) then
tmp = t_0 + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (eaccept <= 3.7d+113) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt)))) + (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 + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= -1e-195) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 1.9e-165) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 6.8e-102) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (EAccept <= 6.1e-61) {
tmp = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (EAccept <= 3.7e+113) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT)))) + (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 + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if EAccept <= -1e-195: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 1.9e-165: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif EAccept <= 6.8e-102: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif EAccept <= 6.1e-61: tmp = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif EAccept <= 3.7e+113: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) else: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (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(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (EAccept <= -1e-195) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 1.9e-165) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (EAccept <= 6.8e-102) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (EAccept <= 6.1e-61) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (EAccept <= 3.7e+113) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)))) + 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 + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (EAccept <= -1e-195) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 1.9e-165) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif (EAccept <= 6.8e-102) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (EAccept <= 6.1e-61) tmp = t_0 + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (EAccept <= 3.7e+113) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); else tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))) + (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[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -1e-195], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.9e-165], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6.8e-102], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6.1e-61], N[(t$95$0 + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.7e+113], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $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 / 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{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq -1 \cdot 10^{-195}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.9 \cdot 10^{-165}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 6.8 \cdot 10^{-102}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 6.1 \cdot 10^{-61}:\\
\;\;\;\;t_0 + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;EAccept \leq 3.7 \cdot 10^{+113}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.0000000000000001e-195Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.3%
Taylor expanded in EDonor around inf 55.4%
if -1.0000000000000001e-195 < EAccept < 1.90000000000000009e-165Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.2%
Taylor expanded in Vef around 0 64.3%
if 1.90000000000000009e-165 < EAccept < 6.80000000000000026e-102Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 75.1%
Taylor expanded in mu around inf 55.8%
associate-*r/38.7%
mul-1-neg38.7%
Simplified55.8%
if 6.80000000000000026e-102 < EAccept < 6.1000000000000001e-61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 80.6%
if 6.1000000000000001e-61 < EAccept < 3.6999999999999998e113Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 75.5%
Taylor expanded in mu around 0 65.9%
if 3.6999999999999998e113 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 91.3%
Taylor expanded in EDonor around 0 82.3%
Final simplification64.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -70000000000000.0)
t_1
(if (<= EDonor -2.2e-170)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(if (<= EDonor 2.1e+45)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -70000000000000.0) {
tmp = t_1;
} else if (EDonor <= -2.2e-170) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else if (EDonor <= 2.1e+45) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / 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 + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-70000000000000.0d0)) then
tmp = t_1
else if (edonor <= (-2.2d-170)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else if (edonor <= 2.1d+45) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -70000000000000.0) {
tmp = t_1;
} else if (EDonor <= -2.2e-170) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else if (EDonor <= 2.1e+45) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / 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 + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -70000000000000.0: tmp = t_1 elif EDonor <= -2.2e-170: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) elif EDonor <= 2.1e+45: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / 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(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -70000000000000.0) tmp = t_1; elseif (EDonor <= -2.2e-170) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); elseif (EDonor <= 2.1e+45) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / 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 + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -70000000000000.0) tmp = t_1; elseif (EDonor <= -2.2e-170) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); elseif (EDonor <= 2.1e+45) tmp = t_0 + (NdChar / (1.0 + exp((mu / 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[(EAccept + N[(Ev - 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]}, If[LessEqual[EDonor, -70000000000000.0], t$95$1, If[LessEqual[EDonor, -2.2e-170], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 2.1e+45], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -70000000000000:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EDonor \leq -2.2 \cdot 10^{-170}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 2.1 \cdot 10^{+45}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if EDonor < -7e13 or 2.09999999999999995e45 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.1%
if -7e13 < EDonor < -2.20000000000000015e-170Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.1%
Taylor expanded in EDonor around 0 84.1%
if -2.20000000000000015e-170 < EDonor < 2.09999999999999995e45Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.7%
Final simplification82.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= EDonor -37000.0)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EDonor -7.5e-171)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(if (<= EDonor 2.1e+44)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (EDonor <= -37000.0) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EDonor <= -7.5e-171) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else if (EDonor <= 2.1e+44) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (edonor <= (-37000.0d0)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (edonor <= (-7.5d-171)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else if (edonor <= 2.1d+44) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (EDonor <= -37000.0) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EDonor <= -7.5e-171) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else if (EDonor <= 2.1e+44) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if EDonor <= -37000.0: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EDonor <= -7.5e-171: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) elif EDonor <= 2.1e+44: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((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(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -37000.0) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EDonor <= -7.5e-171) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); elseif (EDonor <= 2.1e+44) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (EDonor <= -37000.0) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EDonor <= -7.5e-171) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); elseif (EDonor <= 2.1e+44) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -37000.0], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -7.5e-171], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 2.1e+44], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -37000:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EDonor \leq -7.5 \cdot 10^{-171}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 2.1 \cdot 10^{+44}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -37000Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.8%
if -37000 < EDonor < -7.50000000000000033e-171Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.5%
Taylor expanded in EDonor around 0 86.5%
if -7.50000000000000033e-171 < EDonor < 2.09999999999999987e44Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.7%
if 2.09999999999999987e44 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.4%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -2.55e+92)
t_1
(if (<= EDonor -1.25e-169)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= EDonor 2.3e+44)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.55e+92) {
tmp = t_1;
} else if (EDonor <= -1.25e-169) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (EDonor <= 2.3e+44) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / 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 + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-2.55d+92)) then
tmp = t_1
else if (edonor <= (-1.25d-169)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
else if (edonor <= 2.3d+44) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / 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 + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.55e+92) {
tmp = t_1;
} else if (EDonor <= -1.25e-169) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (EDonor <= 2.3e+44) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / 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 + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -2.55e+92: tmp = t_1 elif EDonor <= -1.25e-169: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif EDonor <= 2.3e+44: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / 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(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -2.55e+92) tmp = t_1; elseif (EDonor <= -1.25e-169) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (EDonor <= 2.3e+44) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / 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 + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -2.55e+92) tmp = t_1; elseif (EDonor <= -1.25e-169) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (EDonor <= 2.3e+44) tmp = t_0 + (NdChar / (1.0 + exp((mu / 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[(EAccept + N[(Ev - 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]}, If[LessEqual[EDonor, -2.55e+92], t$95$1, If[LessEqual[EDonor, -1.25e-169], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 2.3e+44], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -2.55 \cdot 10^{+92}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EDonor \leq -1.25 \cdot 10^{-169}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 2.3 \cdot 10^{+44}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if EDonor < -2.5500000000000001e92 or 2.30000000000000004e44 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.7%
if -2.5500000000000001e92 < EDonor < -1.2500000000000001e-169Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.4%
if -1.2500000000000001e-169 < EDonor < 2.30000000000000004e44Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.7%
Final simplification82.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -2.2e+57) (not (<= Vef 2e+78)))
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -2.2e+57) || !(Vef <= 2e+78)) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-2.2d+57)) .or. (.not. (vef <= 2d+78))) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -2.2e+57) || !(Vef <= 2e+78)) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -2.2e+57) or not (Vef <= 2e+78): tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -2.2e+57) || !(Vef <= 2e+78)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -2.2e+57) || ~((Vef <= 2e+78))) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -2.2e+57], N[Not[LessEqual[Vef, 2e+78]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -2.2 \cdot 10^{+57} \lor \neg \left(Vef \leq 2 \cdot 10^{+78}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.2000000000000001e57 or 2.00000000000000002e78 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.1%
Taylor expanded in EDonor around 0 83.1%
if -2.2000000000000001e57 < Vef < 2.00000000000000002e78Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.2%
Final simplification78.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))))
(if (<= NaChar -6.8e-183)
t_0
(if (<= NaChar 4.4e-51)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
1.0
(/
(+ (+ (/ Vef KbT) (- 2.0 (/ mu KbT))) (+ (/ Ev KbT) (/ EAccept KbT)))
NaChar)))
(if (<= NaChar 5.5e+69)
t_0
(if (<= NaChar 2e+204)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(/ 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-183) {
tmp = t_0;
} else if (NaChar <= 4.4e-51) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 5.5e+69) {
tmp = t_0;
} else if (NaChar <= 2e+204) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = 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 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
if (nachar <= (-6.8d-183)) then
tmp = t_0
else if (nachar <= 4.4d-51) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (1.0d0 / ((((vef / kbt) + (2.0d0 - (mu / kbt))) + ((ev / kbt) + (eaccept / kbt))) / nachar))
else if (nachar <= 5.5d+69) then
tmp = t_0
else if (nachar <= 2d+204) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double tmp;
if (NaChar <= -6.8e-183) {
tmp = t_0;
} else if (NaChar <= 4.4e-51) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 5.5e+69) {
tmp = t_0;
} else if (NaChar <= 2e+204) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) tmp = 0 if NaChar <= -6.8e-183: tmp = t_0 elif NaChar <= 4.4e-51: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)) elif NaChar <= 5.5e+69: tmp = t_0 elif NaChar <= 2e+204: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) 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(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))) tmp = 0.0 if (NaChar <= -6.8e-183) tmp = t_0; elseif (NaChar <= 4.4e-51) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(Float64(Vef / KbT) + Float64(2.0 - Float64(mu / KbT))) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT))) / NaChar))); elseif (NaChar <= 5.5e+69) tmp = t_0; elseif (NaChar <= 2e+204) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); tmp = 0.0; if (NaChar <= -6.8e-183) tmp = t_0; elseif (NaChar <= 4.4e-51) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)); elseif (NaChar <= 5.5e+69) tmp = t_0; elseif (NaChar <= 2e+204) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = 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[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.8e-183], t$95$0, If[LessEqual[NaChar, 4.4e-51], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.5e+69], t$95$0, If[LessEqual[NaChar, 2e+204], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{-183}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 4.4 \cdot 10^{-51}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{1}{\frac{\left(\frac{Vef}{KbT} + \left(2 - \frac{mu}{KbT}\right)\right) + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)}{NaChar}}\\
\mathbf{elif}\;NaChar \leq 5.5 \cdot 10^{+69}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 2 \cdot 10^{+204}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -6.80000000000000029e-183 or 4.4e-51 < NaChar < 5.50000000000000002e69Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.5%
Taylor expanded in mu around 0 59.1%
if -6.80000000000000029e-183 < NaChar < 4.4e-51Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.4%
clear-num77.0%
inv-pow77.0%
associate--l+77.0%
associate-+r+77.0%
Applied egg-rr77.0%
unpow-177.0%
sub-neg77.0%
+-commutative77.0%
associate-+r+77.0%
+-commutative77.0%
associate-+r+77.0%
unsub-neg77.0%
+-commutative77.0%
Simplified77.0%
if 5.50000000000000002e69 < NaChar < 1.99999999999999998e204Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.7%
Taylor expanded in EDonor around inf 65.9%
if 1.99999999999999998e204 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.8%
Taylor expanded in EAccept around inf 49.8%
Taylor expanded in NdChar around 0 45.9%
Final simplification65.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -8.5e-183)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NaChar 5.9e+40)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
1.0
(/
(+ (+ (/ Vef KbT) (- 2.0 (/ mu KbT))) (+ (/ Ev KbT) (/ EAccept KbT)))
NaChar)))
(if (<= NaChar 4.9e+76)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/
NdChar
(- (+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(if (<= NaChar 1.35e+203)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(/ 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 tmp;
if (NaChar <= -8.5e-183) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 5.9e+40) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 4.9e+76) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (NaChar <= 1.35e+203) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = 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) :: tmp
if (nachar <= (-8.5d-183)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (nachar <= 5.9d+40) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (1.0d0 / ((((vef / kbt) + (2.0d0 - (mu / kbt))) + ((ev / kbt) + (eaccept / kbt))) / nachar))
else if (nachar <= 4.9d+76) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else if (nachar <= 1.35d+203) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = 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 tmp;
if (NaChar <= -8.5e-183) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 5.9e+40) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 4.9e+76) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (NaChar <= 1.35e+203) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -8.5e-183: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif NaChar <= 5.9e+40: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)) elif NaChar <= 4.9e+76: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) elif NaChar <= 1.35e+203: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -8.5e-183) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NaChar <= 5.9e+40) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(Float64(Vef / KbT) + Float64(2.0 - Float64(mu / KbT))) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT))) / NaChar))); elseif (NaChar <= 4.9e+76) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); elseif (NaChar <= 1.35e+203) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = 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) tmp = 0.0; if (NaChar <= -8.5e-183) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (NaChar <= 5.9e+40) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)); elseif (NaChar <= 4.9e+76) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); elseif (NaChar <= 1.35e+203) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -8.5e-183], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 5.9e+40], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.9e+76], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.35e+203], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -8.5 \cdot 10^{-183}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 5.9 \cdot 10^{+40}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{1}{\frac{\left(\frac{Vef}{KbT} + \left(2 - \frac{mu}{KbT}\right)\right) + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)}{NaChar}}\\
\mathbf{elif}\;NaChar \leq 4.9 \cdot 10^{+76}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.35 \cdot 10^{+203}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -8.49999999999999973e-183Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.0%
Taylor expanded in mu around 0 57.3%
if -8.49999999999999973e-183 < NaChar < 5.8999999999999999e40Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.9%
clear-num74.4%
inv-pow74.4%
associate--l+74.4%
associate-+r+74.4%
Applied egg-rr74.4%
unpow-174.4%
sub-neg74.4%
+-commutative74.4%
associate-+r+74.4%
+-commutative74.4%
associate-+r+74.4%
unsub-neg74.4%
+-commutative74.4%
Simplified74.4%
if 5.8999999999999999e40 < NaChar < 4.90000000000000026e76Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.4%
Taylor expanded in KbT around inf 61.5%
associate-+r+22.0%
Simplified61.5%
if 4.90000000000000026e76 < NaChar < 1.35e203Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.4%
Taylor expanded in EDonor around inf 70.0%
if 1.35e203 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.8%
Taylor expanded in EAccept around inf 49.8%
Taylor expanded in NdChar around 0 45.9%
Final simplification65.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= NaChar -8.5e-183)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NaChar 1.35e-68)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/
1.0
(/
(+ (+ (/ Vef KbT) (- 2.0 (/ mu KbT))) (+ (/ Ev KbT) (/ EAccept KbT)))
NaChar)))
(if (<= NaChar 4.3e+46)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) t_0)
(if (<= NaChar 4.1e+203)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if (NaChar <= -8.5e-183) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 1.35e-68) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 4.3e+46) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_0;
} else if (NaChar <= 4.1e+203) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((eaccept / kbt)))
if (nachar <= (-8.5d-183)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (nachar <= 1.35d-68) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (1.0d0 / ((((vef / kbt) + (2.0d0 - (mu / kbt))) + ((ev / kbt) + (eaccept / kbt))) / nachar))
else if (nachar <= 4.3d+46) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + t_0
else if (nachar <= 4.1d+203) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if (NaChar <= -8.5e-183) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 1.35e-68) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 4.3e+46) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + t_0;
} else if (NaChar <= 4.1e+203) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if NaChar <= -8.5e-183: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif NaChar <= 1.35e-68: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)) elif NaChar <= 4.3e+46: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + t_0 elif NaChar <= 4.1e+203: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (NaChar <= -8.5e-183) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NaChar <= 1.35e-68) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(Float64(Vef / KbT) + Float64(2.0 - Float64(mu / KbT))) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT))) / NaChar))); elseif (NaChar <= 4.3e+46) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + t_0); elseif (NaChar <= 4.1e+203) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if (NaChar <= -8.5e-183) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (NaChar <= 1.35e-68) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (1.0 / ((((Vef / KbT) + (2.0 - (mu / KbT))) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)); elseif (NaChar <= 4.3e+46) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + t_0; elseif (NaChar <= 4.1e+203) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / 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[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8.5e-183], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.35e-68], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.3e+46], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[NaChar, 4.1e+203], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;NaChar \leq -8.5 \cdot 10^{-183}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 1.35 \cdot 10^{-68}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{1}{\frac{\left(\frac{Vef}{KbT} + \left(2 - \frac{mu}{KbT}\right)\right) + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)}{NaChar}}\\
\mathbf{elif}\;NaChar \leq 4.3 \cdot 10^{+46}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + t_0\\
\mathbf{elif}\;NaChar \leq 4.1 \cdot 10^{+203}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -8.49999999999999973e-183Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.0%
Taylor expanded in mu around 0 57.3%
if -8.49999999999999973e-183 < NaChar < 1.3500000000000001e-68Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.3%
clear-num77.0%
inv-pow77.0%
associate--l+77.0%
associate-+r+77.0%
Applied egg-rr77.0%
unpow-177.0%
sub-neg77.0%
+-commutative77.0%
associate-+r+77.0%
+-commutative77.0%
associate-+r+77.0%
unsub-neg77.0%
+-commutative77.0%
Simplified77.0%
if 1.3500000000000001e-68 < NaChar < 4.30000000000000005e46Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 87.9%
Taylor expanded in EAccept around inf 72.5%
if 4.30000000000000005e46 < NaChar < 4.10000000000000016e203Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.7%
Taylor expanded in EDonor around inf 58.7%
if 4.10000000000000016e203 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.8%
Taylor expanded in EAccept around inf 49.8%
Taylor expanded in NdChar around 0 45.9%
Final simplification65.0%
(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 -1.05e-196)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 8e+86)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(+ 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 <= -1.05e-196) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 8e+86) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0;
} 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 <= (-1.05d-196)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 8d+86) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + t_0
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 <= -1.05e-196) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 8e+86) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} 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 <= -1.05e-196: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 8e+86: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_0 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 <= -1.05e-196) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 8e+86) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); 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 <= -1.05e-196) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 8e+86) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0; 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, -1.05e-196], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 8e+86], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $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 -1.05 \cdot 10^{-196}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 8 \cdot 10^{+86}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t_0\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.04999999999999994e-196Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.3%
Taylor expanded in EDonor around inf 55.4%
if -1.04999999999999994e-196 < EAccept < 8.0000000000000001e86Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.9%
Taylor expanded in EDonor around 0 74.0%
if 8.0000000000000001e86 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 89.4%
Taylor expanded in EDonor around 0 80.9%
Final simplification68.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -7.5e-144)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NaChar 4.1e-145)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= NaChar 1.82e+204)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(/ 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 tmp;
if (NaChar <= -7.5e-144) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 4.1e-145) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 1.82e+204) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
} else {
tmp = 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) :: tmp
if (nachar <= (-7.5d-144)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (nachar <= 4.1d-145) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (nachar <= 1.82d+204) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
else
tmp = 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 tmp;
if (NaChar <= -7.5e-144) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 4.1e-145) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (NaChar <= 1.82e+204) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -7.5e-144: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif NaChar <= 4.1e-145: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif NaChar <= 1.82e+204: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -7.5e-144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NaChar <= 4.1e-145) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (NaChar <= 1.82e+204) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); else tmp = 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) tmp = 0.0; if (NaChar <= -7.5e-144) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (NaChar <= 4.1e-145) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (NaChar <= 1.82e+204) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -7.5e-144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.1e-145], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.82e+204], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7.5 \cdot 10^{-144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 4.1 \cdot 10^{-145}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 1.82 \cdot 10^{+204}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -7.49999999999999963e-144Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.7%
Taylor expanded in mu around 0 57.8%
if -7.49999999999999963e-144 < NaChar < 4.0999999999999997e-145Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.8%
Taylor expanded in Vef around 0 77.7%
if 4.0999999999999997e-145 < NaChar < 1.82000000000000002e204Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.7%
Taylor expanded in Ec around inf 61.7%
associate-*r/44.7%
mul-1-neg44.7%
Simplified61.7%
if 1.82000000000000002e204 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 65.8%
Taylor expanded in EAccept around inf 49.8%
Taylor expanded in NdChar around 0 45.9%
Final simplification64.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (- 2.0 (/ mu KbT)))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= NaChar -8e-183)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NaChar 2.85e+38)
(+
t_1
(/
1.0
(/ (+ (+ (/ Vef KbT) t_0) (+ (/ Ev KbT) (/ EAccept KbT))) NaChar)))
(if (<= NaChar 2.95e+75)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/
NdChar
(-
(+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT)))
(/ Ec KbT))))
(if (<= NaChar 1.9e+168)
(+ t_1 (/ NaChar 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 = 2.0 - (mu / KbT);
double t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NaChar <= -8e-183) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 2.85e+38) {
tmp = t_1 + (1.0 / ((((Vef / KbT) + t_0) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 2.95e+75) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (NaChar <= 1.9e+168) {
tmp = t_1 + (NaChar / t_0);
} else {
tmp = 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) :: tmp
t_0 = 2.0d0 - (mu / kbt)
t_1 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
if (nachar <= (-8d-183)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
else if (nachar <= 2.85d+38) then
tmp = t_1 + (1.0d0 / ((((vef / kbt) + t_0) + ((ev / kbt) + (eaccept / kbt))) / nachar))
else if (nachar <= 2.95d+75) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else if (nachar <= 1.9d+168) then
tmp = t_1 + (nachar / t_0)
else
tmp = 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 = 2.0 - (mu / KbT);
double t_1 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NaChar <= -8e-183) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
} else if (NaChar <= 2.85e+38) {
tmp = t_1 + (1.0 / ((((Vef / KbT) + t_0) + ((Ev / KbT) + (EAccept / KbT))) / NaChar));
} else if (NaChar <= 2.95e+75) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (NaChar <= 1.9e+168) {
tmp = t_1 + (NaChar / t_0);
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 2.0 - (mu / KbT) t_1 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if NaChar <= -8e-183: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) elif NaChar <= 2.85e+38: tmp = t_1 + (1.0 / ((((Vef / KbT) + t_0) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)) elif NaChar <= 2.95e+75: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) elif NaChar <= 1.9e+168: tmp = t_1 + (NaChar / t_0) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(2.0 - Float64(mu / KbT)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NaChar <= -8e-183) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NaChar <= 2.85e+38) tmp = Float64(t_1 + Float64(1.0 / Float64(Float64(Float64(Float64(Vef / KbT) + t_0) + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT))) / NaChar))); elseif (NaChar <= 2.95e+75) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); elseif (NaChar <= 1.9e+168) tmp = Float64(t_1 + Float64(NaChar / t_0)); else tmp = 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 = 2.0 - (mu / KbT); t_1 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (NaChar <= -8e-183) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); elseif (NaChar <= 2.85e+38) tmp = t_1 + (1.0 / ((((Vef / KbT) + t_0) + ((Ev / KbT) + (EAccept / KbT))) / NaChar)); elseif (NaChar <= 2.95e+75) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); elseif (NaChar <= 1.9e+168) tmp = t_1 + (NaChar / t_0); else tmp = 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[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -8e-183], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.85e+38], N[(t$95$1 + N[(1.0 / N[(N[(N[(N[(Vef / KbT), $MachinePrecision] + t$95$0), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.95e+75], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.9e+168], N[(t$95$1 + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 2 - \frac{mu}{KbT}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -8 \cdot 10^{-183}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 2.85 \cdot 10^{+38}:\\
\;\;\;\;t_1 + \frac{1}{\frac{\left(\frac{Vef}{KbT} + t_0\right) + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)}{NaChar}}\\
\mathbf{elif}\;NaChar \leq 2.95 \cdot 10^{+75}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{+168}:\\
\;\;\;\;t_1 + \frac{NaChar}{t_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -8.00000000000000004e-183Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.0%
Taylor expanded in mu around 0 57.3%
if -8.00000000000000004e-183 < NaChar < 2.8499999999999999e38Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.9%
clear-num74.4%
inv-pow74.4%
associate--l+74.4%
associate-+r+74.4%
Applied egg-rr74.4%
unpow-174.4%
sub-neg74.4%
+-commutative74.4%
associate-+r+74.4%
+-commutative74.4%
associate-+r+74.4%
unsub-neg74.4%
+-commutative74.4%
Simplified74.4%
if 2.8499999999999999e38 < NaChar < 2.94999999999999991e75Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.4%
Taylor expanded in KbT around inf 61.5%
associate-+r+22.0%
Simplified61.5%
if 2.94999999999999991e75 < NaChar < 1.9000000000000001e168Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.5%
associate-*r/46.7%
mul-1-neg46.7%
Simplified68.5%
Taylor expanded in mu around 0 68.6%
mul-1-neg40.3%
unsub-neg40.3%
Simplified68.6%
if 1.9000000000000001e168 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.0%
Taylor expanded in EAccept around inf 54.7%
Taylor expanded in NdChar around 0 51.7%
Final simplification65.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -2.4e-153)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(if (or (<= NaChar 3.5e-14)
(and (not (<= NaChar 3.8e+80)) (<= NaChar 6.8e+168)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.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 tmp;
if (NaChar <= -2.4e-153) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if ((NaChar <= 3.5e-14) || (!(NaChar <= 3.8e+80) && (NaChar <= 6.8e+168))) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = 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) :: tmp
if (nachar <= (-2.4d-153)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else if ((nachar <= 3.5d-14) .or. (.not. (nachar <= 3.8d+80)) .and. (nachar <= 6.8d+168)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else
tmp = 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 tmp;
if (NaChar <= -2.4e-153) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if ((NaChar <= 3.5e-14) || (!(NaChar <= 3.8e+80) && (NaChar <= 6.8e+168))) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -2.4e-153: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) elif (NaChar <= 3.5e-14) or (not (NaChar <= 3.8e+80) and (NaChar <= 6.8e+168)): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -2.4e-153) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); elseif ((NaChar <= 3.5e-14) || (!(NaChar <= 3.8e+80) && (NaChar <= 6.8e+168))) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = 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) tmp = 0.0; if (NaChar <= -2.4e-153) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); elseif ((NaChar <= 3.5e-14) || (~((NaChar <= 3.8e+80)) && (NaChar <= 6.8e+168))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -2.4e-153], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 3.5e-14], And[N[Not[LessEqual[NaChar, 3.8e+80]], $MachinePrecision], LessEqual[NaChar, 6.8e+168]]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.4 \cdot 10^{-153}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 3.5 \cdot 10^{-14} \lor \neg \left(NaChar \leq 3.8 \cdot 10^{+80}\right) \land NaChar \leq 6.8 \cdot 10^{+168}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -2.4000000000000002e-153Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.6%
*-commutative56.6%
Simplified56.6%
if -2.4000000000000002e-153 < NaChar < 3.5000000000000002e-14 or 3.79999999999999997e80 < NaChar < 6.80000000000000005e168Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.4%
Taylor expanded in Vef around 0 73.1%
if 3.5000000000000002e-14 < NaChar < 3.79999999999999997e80 or 6.80000000000000005e168 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.3%
Taylor expanded in EAccept around inf 52.9%
Taylor expanded in NdChar around 0 55.3%
Final simplification64.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= NaChar -1.65e-152)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(if (<= NaChar 1.4e-14)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0)))
(if (or (<= NaChar 1.7e+72) (not (<= NaChar 6.8e+167)))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(+ t_0 (/ NaChar (- 2.0 (/ mu KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NaChar <= -1.65e-152) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.4e-14) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if ((NaChar <= 1.7e+72) || !(NaChar <= 6.8e+167)) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = t_0 + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
if (nachar <= (-1.65d-152)) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else if (nachar <= 1.4d-14) then
tmp = t_0 + (nachar / ((vef / kbt) + 2.0d0))
else if ((nachar <= 1.7d+72) .or. (.not. (nachar <= 6.8d+167))) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = t_0 + (nachar / (2.0d0 - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (NaChar <= -1.65e-152) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.4e-14) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0));
} else if ((NaChar <= 1.7e+72) || !(NaChar <= 6.8e+167)) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = t_0 + (NaChar / (2.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if NaChar <= -1.65e-152: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) elif NaChar <= 1.4e-14: tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)) elif (NaChar <= 1.7e+72) or not (NaChar <= 6.8e+167): tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = t_0 + (NaChar / (2.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NaChar <= -1.65e-152) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); elseif (NaChar <= 1.4e-14) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif ((NaChar <= 1.7e+72) || !(NaChar <= 6.8e+167)) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(t_0 + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (NaChar <= -1.65e-152) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); elseif (NaChar <= 1.4e-14) tmp = t_0 + (NaChar / ((Vef / KbT) + 2.0)); elseif ((NaChar <= 1.7e+72) || ~((NaChar <= 6.8e+167))) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = t_0 + (NaChar / (2.0 - (mu / 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[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.65e-152], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.4e-14], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, 1.7e+72], N[Not[LessEqual[NaChar, 6.8e+167]], $MachinePrecision]], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.65 \cdot 10^{-152}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 1.4 \cdot 10^{-14}:\\
\;\;\;\;t_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;NaChar \leq 1.7 \cdot 10^{+72} \lor \neg \left(NaChar \leq 6.8 \cdot 10^{+167}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NaChar < -1.64999999999999999e-152Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.6%
*-commutative56.6%
Simplified56.6%
if -1.64999999999999999e-152 < NaChar < 1.4e-14Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.4%
Taylor expanded in Vef around 0 74.5%
if 1.4e-14 < NaChar < 1.6999999999999999e72 or 6.8000000000000001e167 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.3%
Taylor expanded in EAccept around inf 52.9%
Taylor expanded in NdChar around 0 55.3%
if 1.6999999999999999e72 < NaChar < 6.8000000000000001e167Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.5%
associate-*r/46.7%
mul-1-neg46.7%
Simplified68.5%
Taylor expanded in mu around 0 68.6%
mul-1-neg40.3%
unsub-neg40.3%
Simplified68.6%
Final simplification64.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0))))
(t_1 (/ NaChar (+ (/ Vef KbT) 2.0))))
(if (<= NaChar -7.5e-144)
t_0
(if (<= NaChar 1.45e-57)
(+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) t_1)
(if (<= NaChar 2.4e+162)
t_0
(if (<= NaChar 1.3e+170)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(/ 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double t_1 = NaChar / ((Vef / KbT) + 2.0);
double tmp;
if (NaChar <= -7.5e-144) {
tmp = t_0;
} else if (NaChar <= 1.45e-57) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_1;
} else if (NaChar <= 2.4e+162) {
tmp = t_0;
} else if (NaChar <= 1.3e+170) {
tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT))));
} else {
tmp = 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) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
t_1 = nachar / ((vef / kbt) + 2.0d0)
if (nachar <= (-7.5d-144)) then
tmp = t_0
else if (nachar <= 1.45d-57) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + t_1
else if (nachar <= 2.4d+162) then
tmp = t_0
else if (nachar <= 1.3d+170) then
tmp = t_1 + (ndchar / (1.0d0 + exp((-ec / kbt))))
else
tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double t_1 = NaChar / ((Vef / KbT) + 2.0);
double tmp;
if (NaChar <= -7.5e-144) {
tmp = t_0;
} else if (NaChar <= 1.45e-57) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_1;
} else if (NaChar <= 2.4e+162) {
tmp = t_0;
} else if (NaChar <= 1.3e+170) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else {
tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) t_1 = NaChar / ((Vef / KbT) + 2.0) tmp = 0 if NaChar <= -7.5e-144: tmp = t_0 elif NaChar <= 1.45e-57: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_1 elif NaChar <= 2.4e+162: tmp = t_0 elif NaChar <= 1.3e+170: tmp = t_1 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) 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(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))) t_1 = Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0)) tmp = 0.0 if (NaChar <= -7.5e-144) tmp = t_0; elseif (NaChar <= 1.45e-57) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + t_1); elseif (NaChar <= 2.4e+162) tmp = t_0; elseif (NaChar <= 1.3e+170) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); else tmp = 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 + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); t_1 = NaChar / ((Vef / KbT) + 2.0); tmp = 0.0; if (NaChar <= -7.5e-144) tmp = t_0; elseif (NaChar <= 1.45e-57) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + t_1; elseif (NaChar <= 2.4e+162) tmp = t_0; elseif (NaChar <= 1.3e+170) tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT)))); else tmp = 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[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -7.5e-144], t$95$0, If[LessEqual[NaChar, 1.45e-57], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[NaChar, 2.4e+162], t$95$0, If[LessEqual[NaChar, 1.3e+170], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
t_1 := \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{if}\;NaChar \leq -7.5 \cdot 10^{-144}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.45 \cdot 10^{-57}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + t_1\\
\mathbf{elif}\;NaChar \leq 2.4 \cdot 10^{+162}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{+170}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -7.49999999999999963e-144 or 1.45000000000000013e-57 < NaChar < 2.40000000000000009e162Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.4%
Taylor expanded in mu around 0 58.9%
if -7.49999999999999963e-144 < NaChar < 1.45000000000000013e-57Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 81.9%
Taylor expanded in Vef around 0 75.5%
if 2.40000000000000009e162 < NaChar < 1.2999999999999999e170Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in Vef around 0 100.0%
Taylor expanded in Ec around inf 100.0%
associate-*r/100.0%
mul-1-neg100.0%
Simplified100.0%
if 1.2999999999999999e170 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.0%
Taylor expanded in EAccept around inf 54.7%
Taylor expanded in NdChar around 0 51.7%
Final simplification65.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))))
(if (<= NaChar -4e-162)
t_1
(if (<= NaChar 6.2e-275)
(+ t_0 (/ (* KbT NaChar) EAccept))
(if (<= NaChar 1.35e-57) (+ t_0 (/ NaChar 2.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 + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4e-162) {
tmp = t_1;
} else if (NaChar <= 6.2e-275) {
tmp = t_0 + ((KbT * NaChar) / EAccept);
} else if (NaChar <= 1.35e-57) {
tmp = t_0 + (NaChar / 2.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 + (edonor + (vef - ec))) / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
if (nachar <= (-4d-162)) then
tmp = t_1
else if (nachar <= 6.2d-275) then
tmp = t_0 + ((kbt * nachar) / eaccept)
else if (nachar <= 1.35d-57) then
tmp = t_0 + (nachar / 2.0d0)
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
double tmp;
if (NaChar <= -4e-162) {
tmp = t_1;
} else if (NaChar <= 6.2e-275) {
tmp = t_0 + ((KbT * NaChar) / EAccept);
} else if (NaChar <= 1.35e-57) {
tmp = t_0 + (NaChar / 2.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 + (EDonor + (Vef - Ec))) / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) tmp = 0 if NaChar <= -4e-162: tmp = t_1 elif NaChar <= 6.2e-275: tmp = t_0 + ((KbT * NaChar) / EAccept) elif NaChar <= 1.35e-57: tmp = t_0 + (NaChar / 2.0) 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(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -4e-162) tmp = t_1; elseif (NaChar <= 6.2e-275) tmp = Float64(t_0 + Float64(Float64(KbT * NaChar) / EAccept)); elseif (NaChar <= 1.35e-57) tmp = Float64(t_0 + Float64(NaChar / 2.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 + (EDonor + (Vef - Ec))) / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -4e-162) tmp = t_1; elseif (NaChar <= 6.2e-275) tmp = t_0 + ((KbT * NaChar) / EAccept); elseif (NaChar <= 1.35e-57) tmp = t_0 + (NaChar / 2.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[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4e-162], t$95$1, If[LessEqual[NaChar, 6.2e-275], N[(t$95$0 + N[(N[(KbT * NaChar), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.35e-57], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -4 \cdot 10^{-162}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 6.2 \cdot 10^{-275}:\\
\;\;\;\;t_0 + \frac{KbT \cdot NaChar}{EAccept}\\
\mathbf{elif}\;NaChar \leq 1.35 \cdot 10^{-57}:\\
\;\;\;\;t_0 + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NaChar < -3.99999999999999982e-162 or 1.3500000000000001e-57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.3%
*-commutative55.3%
Simplified55.3%
if -3.99999999999999982e-162 < NaChar < 6.200000000000001e-275Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.7%
Taylor expanded in EAccept around inf 69.6%
if 6.200000000000001e-275 < NaChar < 1.3500000000000001e-57Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
Final simplification60.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= EAccept -1.65e-75)
t_0
(if (<= EAccept 2.3e-193)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= EAccept 4e+47)
(+ (/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) 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((EAccept / KbT)));
double tmp;
if (EAccept <= -1.65e-75) {
tmp = t_0;
} else if (EAccept <= 2.3e-193) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 4e+47) {
tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / 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((eaccept / kbt)))
if (eaccept <= (-1.65d-75)) then
tmp = t_0
else if (eaccept <= 2.3d-193) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (eaccept <= 4d+47) then
tmp = (ndchar / (1.0d0 + exp((((mu + vef) - ec) / 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((EAccept / KbT)));
double tmp;
if (EAccept <= -1.65e-75) {
tmp = t_0;
} else if (EAccept <= 2.3e-193) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 4e+47) {
tmp = (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / 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((EAccept / KbT))) tmp = 0 if EAccept <= -1.65e-75: tmp = t_0 elif EAccept <= 2.3e-193: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif EAccept <= 4e+47: tmp = (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) + (NaChar / 2.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (EAccept <= -1.65e-75) tmp = t_0; elseif (EAccept <= 2.3e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (EAccept <= 4e+47) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / 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((EAccept / KbT))); tmp = 0.0; if (EAccept <= -1.65e-75) tmp = t_0; elseif (EAccept <= 2.3e-193) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (EAccept <= 4e+47) tmp = (NdChar / (1.0 + exp((((mu + Vef) - Ec) / 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[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -1.65e-75], t$95$0, If[LessEqual[EAccept, 2.3e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4e+47], 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], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;EAccept \leq -1.65 \cdot 10^{-75}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 2.3 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 4 \cdot 10^{+47}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if EAccept < -1.65e-75 or 4.0000000000000002e47 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 70.9%
Taylor expanded in EAccept around inf 61.3%
Taylor expanded in NdChar around 0 53.8%
if -1.65e-75 < EAccept < 2.30000000000000009e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.5%
Taylor expanded in Vef around 0 58.4%
Taylor expanded in EDonor around inf 45.7%
if 2.30000000000000009e-193 < EAccept < 4.0000000000000002e47Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.4%
Taylor expanded in EDonor around 0 55.8%
Final simplification51.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -5e-153) (not (<= NaChar 1.6e-57)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev 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 <= -5e-153) || !(NaChar <= 1.6e-57)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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 <= (-5d-153)) .or. (.not. (nachar <= 1.6d-57))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - 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 <= -5e-153) || !(NaChar <= 1.6e-57)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - 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 <= -5e-153) or not (NaChar <= 1.6e-57): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - 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 <= -5e-153) || !(NaChar <= 1.6e-57)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - 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 <= -5e-153) || ~((NaChar <= 1.6e-57))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - 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, -5e-153], N[Not[LessEqual[NaChar, 1.6e-57]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - 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 -5 \cdot 10^{-153} \lor \neg \left(NaChar \leq 1.6 \cdot 10^{-57}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - 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 < -5.00000000000000033e-153 or 1.6e-57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.7%
*-commutative55.7%
Simplified55.7%
if -5.00000000000000033e-153 < NaChar < 1.6e-57Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.3%
Taylor expanded in EDonor around 0 56.3%
Final simplification55.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1e-152) (not (<= NaChar 1.45e-57)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- 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 <= -1e-152) || !(NaChar <= 1.45e-57)) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (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 <= (-1d-152)) .or. (.not. (nachar <= 1.45d-57))) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (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 <= -1e-152) || !(NaChar <= 1.45e-57)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1e-152) or not (NaChar <= 1.45e-57): tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1e-152) || !(NaChar <= 1.45e-57)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1e-152) || ~((NaChar <= 1.45e-57))) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (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, -1e-152], N[Not[LessEqual[NaChar, 1.45e-57]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - 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[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1 \cdot 10^{-152} \lor \neg \left(NaChar \leq 1.45 \cdot 10^{-57}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.00000000000000007e-152 or 1.45000000000000013e-57 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.7%
*-commutative55.7%
Simplified55.7%
if -1.00000000000000007e-152 < NaChar < 1.45000000000000013e-57Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.3%
Final simplification58.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= EAccept -3.45e-236)
t_0
(if (<= EAccept 1.06e-193)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))
(if (<= EAccept 1.28e-170)
t_0
(if (<= EAccept 1.95e+46)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) (* NdChar 0.5))
(/ 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 / KbT)));
double tmp;
if (EAccept <= -3.45e-236) {
tmp = t_0;
} else if (EAccept <= 1.06e-193) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if (EAccept <= 1.28e-170) {
tmp = t_0;
} else if (EAccept <= 1.95e+46) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = 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 / kbt)))
if (eaccept <= (-3.45d-236)) then
tmp = t_0
else if (eaccept <= 1.06d-193) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else if (eaccept <= 1.28d-170) then
tmp = t_0
else if (eaccept <= 1.95d+46) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar * 0.5d0)
else
tmp = 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 / KbT)));
double tmp;
if (EAccept <= -3.45e-236) {
tmp = t_0;
} else if (EAccept <= 1.06e-193) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else if (EAccept <= 1.28e-170) {
tmp = t_0;
} else if (EAccept <= 1.95e+46) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = 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 / KbT))) tmp = 0 if EAccept <= -3.45e-236: tmp = t_0 elif EAccept <= 1.06e-193: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) elif EAccept <= 1.28e-170: tmp = t_0 elif EAccept <= 1.95e+46: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar * 0.5) else: tmp = 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(mu / KbT)))) tmp = 0.0 if (EAccept <= -3.45e-236) tmp = t_0; elseif (EAccept <= 1.06e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); elseif (EAccept <= 1.28e-170) tmp = t_0; elseif (EAccept <= 1.95e+46) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = 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 / KbT))); tmp = 0.0; if (EAccept <= -3.45e-236) tmp = t_0; elseif (EAccept <= 1.06e-193) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); elseif (EAccept <= 1.28e-170) tmp = t_0; elseif (EAccept <= 1.95e+46) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5); else tmp = 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[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -3.45e-236], t$95$0, If[LessEqual[EAccept, 1.06e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.28e-170], t$95$0, If[LessEqual[EAccept, 1.95e+46], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;EAccept \leq -3.45 \cdot 10^{-236}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 1.06 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;EAccept \leq 1.28 \cdot 10^{-170}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 1.95 \cdot 10^{+46}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -3.44999999999999987e-236 or 1.06e-193 < EAccept < 1.2800000000000001e-170Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.6%
Taylor expanded in EAccept around inf 52.2%
Taylor expanded in NdChar around inf 38.0%
if -3.44999999999999987e-236 < EAccept < 1.06e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in EDonor around inf 46.8%
if 1.2800000000000001e-170 < EAccept < 1.94999999999999997e46Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.8%
*-commutative51.8%
Simplified51.8%
Taylor expanded in mu around inf 45.2%
associate-*r/45.2%
mul-1-neg45.2%
Simplified45.2%
if 1.94999999999999997e46 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.4%
Taylor expanded in EAccept around inf 65.1%
Taylor expanded in NdChar around 0 62.6%
Final simplification45.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= EAccept -3.6e-75)
t_0
(if (<= EAccept 3.2e-193)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(if (<= EAccept 6e+46)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) (* NdChar 0.5))
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((EAccept / KbT)));
double tmp;
if (EAccept <= -3.6e-75) {
tmp = t_0;
} else if (EAccept <= 3.2e-193) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 6e+46) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5);
} 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((eaccept / kbt)))
if (eaccept <= (-3.6d-75)) then
tmp = t_0
else if (eaccept <= 3.2d-193) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else if (eaccept <= 6d+46) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar * 0.5d0)
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((EAccept / KbT)));
double tmp;
if (EAccept <= -3.6e-75) {
tmp = t_0;
} else if (EAccept <= 3.2e-193) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else if (EAccept <= 6e+46) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if EAccept <= -3.6e-75: tmp = t_0 elif EAccept <= 3.2e-193: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) elif EAccept <= 6e+46: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (EAccept <= -3.6e-75) tmp = t_0; elseif (EAccept <= 3.2e-193) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); elseif (EAccept <= 6e+46) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar * 0.5)); 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((EAccept / KbT))); tmp = 0.0; if (EAccept <= -3.6e-75) tmp = t_0; elseif (EAccept <= 3.2e-193) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); elseif (EAccept <= 6e+46) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5); else tmp = t_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[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -3.6e-75], t$95$0, If[LessEqual[EAccept, 3.2e-193], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6e+46], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;EAccept \leq -3.6 \cdot 10^{-75}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 3.2 \cdot 10^{-193}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{elif}\;EAccept \leq 6 \cdot 10^{+46}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if EAccept < -3.6e-75 or 6.00000000000000047e46 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 71.7%
Taylor expanded in EAccept around inf 62.2%
Taylor expanded in NdChar around 0 54.7%
if -3.6e-75 < EAccept < 3.20000000000000006e-193Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.8%
Taylor expanded in Vef around 0 58.2%
Taylor expanded in EDonor around inf 44.9%
if 3.20000000000000006e-193 < EAccept < 6.00000000000000047e46Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.8%
*-commutative48.8%
Simplified48.8%
Taylor expanded in mu around inf 42.7%
associate-*r/42.7%
mul-1-neg42.7%
Simplified42.7%
Final simplification48.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.75e+17)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (or (<= NaChar -1.9e-189) (not (<= NaChar 2.3e-50)))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.75e+17) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if ((NaChar <= -1.9e-189) || !(NaChar <= 2.3e-50)) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = NdChar / (1.0 + exp((mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-1.75d+17)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if ((nachar <= (-1.9d-189)) .or. (.not. (nachar <= 2.3d-50))) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.75e+17) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if ((NaChar <= -1.9e-189) || !(NaChar <= 2.3e-50)) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.75e+17: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif (NaChar <= -1.9e-189) or not (NaChar <= 2.3e-50): tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = NdChar / (1.0 + math.exp((mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.75e+17) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif ((NaChar <= -1.9e-189) || !(NaChar <= 2.3e-50)) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.75e+17) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif ((NaChar <= -1.9e-189) || ~((NaChar <= 2.3e-50))) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = NdChar / (1.0 + exp((mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.75e+17], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, -1.9e-189], N[Not[LessEqual[NaChar, 2.3e-50]], $MachinePrecision]], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.75 \cdot 10^{+17}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq -1.9 \cdot 10^{-189} \lor \neg \left(NaChar \leq 2.3 \cdot 10^{-50}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -1.75e17Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 60.7%
Taylor expanded in KbT around inf 35.3%
*-commutative59.7%
Simplified35.3%
if -1.75e17 < NaChar < -1.90000000000000011e-189 or 2.3000000000000002e-50 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 70.7%
Taylor expanded in EAccept around inf 51.3%
Taylor expanded in NdChar around 0 50.7%
if -1.90000000000000011e-189 < NaChar < 2.3000000000000002e-50Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 63.2%
Taylor expanded in EAccept around inf 50.6%
Taylor expanded in NdChar around inf 52.0%
Final simplification47.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -5.4e-191) (not (<= NaChar 2.2e-50))) (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.4e-191) || !(NaChar <= 2.2e-50)) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = NdChar / (1.0 + exp((mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-5.4d-191)) .or. (.not. (nachar <= 2.2d-50))) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -5.4e-191) || !(NaChar <= 2.2e-50)) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -5.4e-191) or not (NaChar <= 2.2e-50): tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = NdChar / (1.0 + math.exp((mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -5.4e-191) || !(NaChar <= 2.2e-50)) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -5.4e-191) || ~((NaChar <= 2.2e-50))) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = NdChar / (1.0 + exp((mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -5.4e-191], N[Not[LessEqual[NaChar, 2.2e-50]], $MachinePrecision]], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -5.4 \cdot 10^{-191} \lor \neg \left(NaChar \leq 2.2 \cdot 10^{-50}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -5.39999999999999998e-191 or 2.1999999999999999e-50 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.5%
Taylor expanded in EAccept around inf 48.8%
Taylor expanded in NdChar around 0 45.4%
if -5.39999999999999998e-191 < NaChar < 2.1999999999999999e-50Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 63.2%
Taylor expanded in EAccept around inf 50.6%
Taylor expanded in NdChar around inf 52.0%
Final simplification47.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -9e+152)
(+ (/ NaChar (- 2.0 (/ mu KbT))) (* NdChar 0.5))
(if (<= KbT 1.8e+101)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(* 0.5 (+ NdChar NaChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -9e+152) {
tmp = (NaChar / (2.0 - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 1.8e+101) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-9d+152)) then
tmp = (nachar / (2.0d0 - (mu / kbt))) + (ndchar * 0.5d0)
else if (kbt <= 1.8d+101) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -9e+152) {
tmp = (NaChar / (2.0 - (mu / KbT))) + (NdChar * 0.5);
} else if (KbT <= 1.8e+101) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -9e+152: tmp = (NaChar / (2.0 - (mu / KbT))) + (NdChar * 0.5) elif KbT <= 1.8e+101: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -9e+152) tmp = Float64(Float64(NaChar / Float64(2.0 - Float64(mu / KbT))) + Float64(NdChar * 0.5)); elseif (KbT <= 1.8e+101) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -9e+152) tmp = (NaChar / (2.0 - (mu / KbT))) + (NdChar * 0.5); elseif (KbT <= 1.8e+101) tmp = NaChar / (1.0 + exp((EAccept / KbT))); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -9e+152], N[(N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.8e+101], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -9 \cdot 10^{+152}:\\
\;\;\;\;\frac{NaChar}{2 - \frac{mu}{KbT}} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.8 \cdot 10^{+101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < -9.0000000000000002e152Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 82.7%
*-commutative82.7%
Simplified82.7%
Taylor expanded in mu around inf 76.9%
associate-*r/76.9%
mul-1-neg76.9%
Simplified76.9%
Taylor expanded in mu around 0 74.6%
mul-1-neg74.6%
unsub-neg74.6%
Simplified74.6%
if -9.0000000000000002e152 < KbT < 1.80000000000000015e101Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 64.1%
Taylor expanded in EAccept around inf 39.3%
Taylor expanded in NdChar around 0 37.0%
if 1.80000000000000015e101 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 80.0%
Taylor expanded in EAccept around inf 67.5%
Taylor expanded in KbT around inf 58.5%
distribute-lft-out58.5%
Simplified58.5%
Final simplification45.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT 6.8e-304)
(+
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT)))
(/
NdChar
(- (+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(* 0.5 (+ NdChar NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 6.8e-304) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= 6.8d-304) then
tmp = (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt))) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 6.8e-304) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 6.8e-304: tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 6.8e-304) tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 6.8e-304) tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 6.8e-304], N[(N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 6.8 \cdot 10^{-304}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < 6.7999999999999997e-304Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.3%
Taylor expanded in KbT around inf 31.3%
associate-+r+31.0%
Simplified31.3%
if 6.7999999999999997e-304 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 71.0%
Taylor expanded in EAccept around inf 47.4%
Taylor expanded in KbT around inf 30.1%
distribute-lft-out30.1%
Simplified30.1%
Final simplification30.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT 4.8e-304)
(+
(/ NaChar (+ (/ Vef KbT) 2.0))
(/
NdChar
(- (+ (+ (/ EDonor KbT) 2.0) (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))))
(* 0.5 (+ NdChar NaChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 4.8e-304) {
tmp = (NaChar / ((Vef / KbT) + 2.0)) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= 4.8d-304) then
tmp = (nachar / ((vef / kbt) + 2.0d0)) + (ndchar / ((((edonor / kbt) + 2.0d0) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else
tmp = 0.5d0 * (ndchar + nachar)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= 4.8e-304) {
tmp = (NaChar / ((Vef / KbT) + 2.0)) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 4.8e-304: tmp = (NaChar / ((Vef / KbT) + 2.0)) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 4.8e-304) tmp = Float64(Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0)) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); else tmp = Float64(0.5 * Float64(NdChar + NaChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= 4.8e-304) tmp = (NaChar / ((Vef / KbT) + 2.0)) + (NdChar / ((((EDonor / KbT) + 2.0) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 4.8e-304], N[(N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 4.8 \cdot 10^{-304}:\\
\;\;\;\;\frac{NaChar}{\frac{Vef}{KbT} + 2} + \frac{NdChar}{\left(\left(\frac{EDonor}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if KbT < 4.8000000000000002e-304Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.1%
Taylor expanded in Vef around 0 57.9%
Taylor expanded in KbT around inf 31.0%
associate-+r+31.0%
Simplified31.0%
if 4.8000000000000002e-304 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 71.0%
Taylor expanded in EAccept around inf 47.4%
Taylor expanded in KbT around inf 30.1%
distribute-lft-out30.1%
Simplified30.1%
Final simplification30.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 69.7%
Taylor expanded in EAccept around inf 49.5%
Taylor expanded in KbT around inf 28.9%
distribute-lft-out28.9%
Simplified28.9%
Final simplification28.9%
herbie shell --seed 2023319
(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))))))