
(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 25 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 (+ (expm1 (log1p (exp (/ (- EDonor (- (- Ec mu) Vef)) KbT)))) 1.0)) (/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (expm1(log1p(exp(((EDonor - ((Ec - mu) - Vef)) / KbT)))) + 1.0)) + (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (Math.expm1(Math.log1p(Math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)))) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.expm1(math.log1p(math.exp(((EDonor - ((Ec - mu) - Vef)) / KbT)))) + 1.0)) + (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(expm1(log1p(exp(Float64(Float64(EDonor - Float64(Float64(Ec - mu) - Vef)) / KbT)))) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[(Exp[N[Log[1 + N[Exp[N[(N[(EDonor - N[(N[(Ec - mu), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{\mathsf{expm1}\left(\mathsf{log1p}\left(e^{\frac{EDonor - \left(\left(Ec - mu\right) - Vef\right)}{KbT}}\right)\right) + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1}
\end{array}
Initial program 99.8%
Simplified99.8%
expm1-log1p-u99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Final simplification99.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)))
(t_1 (+ NaChar t_0))
(t_2
(+
(/ NdChar (+ (exp (/ mu KbT)) 1.0))
(/ NaChar (+ (exp (/ mu (- KbT))) 1.0))))
(t_3
(+
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(/ NdChar (+ (exp (/ (- (+ Vef mu) Ec) KbT)) 1.0)))))
(if (<= Vef -5e+29)
t_3
(if (<= Vef -1.1e-138)
(+
t_0
(/
NaChar
(+
(- (+ (+ (/ EAccept KbT) 1.0) (+ (/ Ev KbT) (/ Vef KbT))) (/ mu KbT))
1.0)))
(if (<= Vef -4.9e-283)
(+
(/ NdChar (+ (exp (/ Ec (- KbT))) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))
(if (<= Vef 1.9e-216)
t_1
(if (<= Vef 1.85e-109)
t_2
(if (<= Vef 1.7e-46)
(+ t_0 (/ NaChar (+ (/ Ev KbT) 1.0)))
(if (<= Vef 3.8e+48) t_2 (if (<= Vef 8.2e+185) t_1 t_3))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_1 = NaChar + t_0;
double t_2 = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar / (exp((mu / -KbT)) + 1.0));
double t_3 = (NaChar / (exp((Vef / KbT)) + 1.0)) + (NdChar / (exp((((Vef + mu) - Ec) / KbT)) + 1.0));
double tmp;
if (Vef <= -5e+29) {
tmp = t_3;
} else if (Vef <= -1.1e-138) {
tmp = t_0 + (NaChar / (((((EAccept / KbT) + 1.0) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) + 1.0));
} else if (Vef <= -4.9e-283) {
tmp = (NdChar / (exp((Ec / -KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
} else if (Vef <= 1.9e-216) {
tmp = t_1;
} else if (Vef <= 1.85e-109) {
tmp = t_2;
} else if (Vef <= 1.7e-46) {
tmp = t_0 + (NaChar / ((Ev / KbT) + 1.0));
} else if (Vef <= 3.8e+48) {
tmp = t_2;
} else if (Vef <= 8.2e+185) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
t_1 = nachar + t_0
t_2 = (ndchar / (exp((mu / kbt)) + 1.0d0)) + (nachar / (exp((mu / -kbt)) + 1.0d0))
t_3 = (nachar / (exp((vef / kbt)) + 1.0d0)) + (ndchar / (exp((((vef + mu) - ec) / kbt)) + 1.0d0))
if (vef <= (-5d+29)) then
tmp = t_3
else if (vef <= (-1.1d-138)) then
tmp = t_0 + (nachar / (((((eaccept / kbt) + 1.0d0) + ((ev / kbt) + (vef / kbt))) - (mu / kbt)) + 1.0d0))
else if (vef <= (-4.9d-283)) then
tmp = (ndchar / (exp((ec / -kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
else if (vef <= 1.9d-216) then
tmp = t_1
else if (vef <= 1.85d-109) then
tmp = t_2
else if (vef <= 1.7d-46) then
tmp = t_0 + (nachar / ((ev / kbt) + 1.0d0))
else if (vef <= 3.8d+48) then
tmp = t_2
else if (vef <= 8.2d+185) then
tmp = t_1
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_1 = NaChar + t_0;
double t_2 = (NdChar / (Math.exp((mu / KbT)) + 1.0)) + (NaChar / (Math.exp((mu / -KbT)) + 1.0));
double t_3 = (NaChar / (Math.exp((Vef / KbT)) + 1.0)) + (NdChar / (Math.exp((((Vef + mu) - Ec) / KbT)) + 1.0));
double tmp;
if (Vef <= -5e+29) {
tmp = t_3;
} else if (Vef <= -1.1e-138) {
tmp = t_0 + (NaChar / (((((EAccept / KbT) + 1.0) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) + 1.0));
} else if (Vef <= -4.9e-283) {
tmp = (NdChar / (Math.exp((Ec / -KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
} else if (Vef <= 1.9e-216) {
tmp = t_1;
} else if (Vef <= 1.85e-109) {
tmp = t_2;
} else if (Vef <= 1.7e-46) {
tmp = t_0 + (NaChar / ((Ev / KbT) + 1.0));
} else if (Vef <= 3.8e+48) {
tmp = t_2;
} else if (Vef <= 8.2e+185) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) t_1 = NaChar + t_0 t_2 = (NdChar / (math.exp((mu / KbT)) + 1.0)) + (NaChar / (math.exp((mu / -KbT)) + 1.0)) t_3 = (NaChar / (math.exp((Vef / KbT)) + 1.0)) + (NdChar / (math.exp((((Vef + mu) - Ec) / KbT)) + 1.0)) tmp = 0 if Vef <= -5e+29: tmp = t_3 elif Vef <= -1.1e-138: tmp = t_0 + (NaChar / (((((EAccept / KbT) + 1.0) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) + 1.0)) elif Vef <= -4.9e-283: tmp = (NdChar / (math.exp((Ec / -KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) elif Vef <= 1.9e-216: tmp = t_1 elif Vef <= 1.85e-109: tmp = t_2 elif Vef <= 1.7e-46: tmp = t_0 + (NaChar / ((Ev / KbT) + 1.0)) elif Vef <= 3.8e+48: tmp = t_2 elif Vef <= 8.2e+185: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) t_1 = Float64(NaChar + t_0) t_2 = Float64(Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(mu / Float64(-KbT))) + 1.0))) t_3 = Float64(Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)) + 1.0))) tmp = 0.0 if (Vef <= -5e+29) tmp = t_3; elseif (Vef <= -1.1e-138) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + 1.0) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT)) + 1.0))); elseif (Vef <= -4.9e-283) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Ec / Float64(-KbT))) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); elseif (Vef <= 1.9e-216) tmp = t_1; elseif (Vef <= 1.85e-109) tmp = t_2; elseif (Vef <= 1.7e-46) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 1.0))); elseif (Vef <= 3.8e+48) tmp = t_2; elseif (Vef <= 8.2e+185) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); t_1 = NaChar + t_0; t_2 = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar / (exp((mu / -KbT)) + 1.0)); t_3 = (NaChar / (exp((Vef / KbT)) + 1.0)) + (NdChar / (exp((((Vef + mu) - Ec) / KbT)) + 1.0)); tmp = 0.0; if (Vef <= -5e+29) tmp = t_3; elseif (Vef <= -1.1e-138) tmp = t_0 + (NaChar / (((((EAccept / KbT) + 1.0) + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) + 1.0)); elseif (Vef <= -4.9e-283) tmp = (NdChar / (exp((Ec / -KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); elseif (Vef <= 1.9e-216) tmp = t_1; elseif (Vef <= 1.85e-109) tmp = t_2; elseif (Vef <= 1.7e-46) tmp = t_0 + (NaChar / ((Ev / KbT) + 1.0)); elseif (Vef <= 3.8e+48) tmp = t_2; elseif (Vef <= 8.2e+185) tmp = t_1; else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar + t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5e+29], t$95$3, If[LessEqual[Vef, -1.1e-138], N[(t$95$0 + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 1.0), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -4.9e-283], N[(N[(NdChar / N[(N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.9e-216], t$95$1, If[LessEqual[Vef, 1.85e-109], t$95$2, If[LessEqual[Vef, 1.7e-46], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.8e+48], t$95$2, If[LessEqual[Vef, 8.2e+185], t$95$1, t$95$3]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
t_1 := NaChar + t\_0\\
t_2 := \frac{NdChar}{e^{\frac{mu}{KbT}} + 1} + \frac{NaChar}{e^{\frac{mu}{-KbT}} + 1}\\
t_3 := \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NdChar}{e^{\frac{\left(Vef + mu\right) - Ec}{KbT}} + 1}\\
\mathbf{if}\;Vef \leq -5 \cdot 10^{+29}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;Vef \leq -1.1 \cdot 10^{-138}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + 1\right) + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}\right) + 1}\\
\mathbf{elif}\;Vef \leq -4.9 \cdot 10^{-283}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Ec}{-KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\mathbf{elif}\;Vef \leq 1.9 \cdot 10^{-216}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 1.85 \cdot 10^{-109}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 1.7 \cdot 10^{-46}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 1}\\
\mathbf{elif}\;Vef \leq 3.8 \cdot 10^{+48}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 8.2 \cdot 10^{+185}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if Vef < -5.0000000000000001e29 or 8.2e185 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 86.8%
Taylor expanded in EDonor around 0 84.3%
if -5.0000000000000001e29 < Vef < -1.0999999999999999e-138Initial program 99.3%
Simplified99.3%
Taylor expanded in KbT around inf 75.0%
associate-+r+75.0%
+-commutative75.0%
Simplified75.0%
if -1.0999999999999999e-138 < Vef < -4.9e-283Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 78.8%
Taylor expanded in Ec around inf 69.8%
associate-*r/69.8%
mul-1-neg69.8%
Simplified69.8%
if -4.9e-283 < Vef < 1.9e-216 or 3.8e48 < Vef < 8.2e185Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.1%
associate-+r+42.1%
+-commutative42.1%
Simplified42.1%
Taylor expanded in mu around inf 50.5%
mul-1-neg50.5%
distribute-frac-neg50.5%
Simplified50.5%
Taylor expanded in mu around 0 78.1%
if 1.9e-216 < Vef < 1.8499999999999999e-109 or 1.69999999999999998e-46 < Vef < 3.8e48Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 77.8%
Taylor expanded in mu around inf 71.4%
mul-1-neg36.5%
Simplified71.4%
if 1.8499999999999999e-109 < Vef < 1.69999999999999998e-46Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.3%
associate-+r+37.3%
+-commutative37.3%
Simplified37.3%
Taylor expanded in Ev around inf 62.5%
Final simplification76.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)))
(t_1 (+ t_0 (/ NaChar (+ (exp (/ Ev KbT)) 1.0))))
(t_2
(+
(/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))
(/ NdChar (+ (exp (/ mu KbT)) 1.0)))))
(if (<= mu -4.5e-24)
t_2
(if (<= mu -5.5e-256)
t_1
(if (<= mu 2.6e-119)
(+ t_0 (/ NaChar (+ (exp (/ Vef KbT)) 1.0)))
(if (<= mu 0.16) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_1 = t_0 + (NaChar / (exp((Ev / KbT)) + 1.0));
double t_2 = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0));
double tmp;
if (mu <= -4.5e-24) {
tmp = t_2;
} else if (mu <= -5.5e-256) {
tmp = t_1;
} else if (mu <= 2.6e-119) {
tmp = t_0 + (NaChar / (exp((Vef / KbT)) + 1.0));
} else if (mu <= 0.16) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
t_1 = t_0 + (nachar / (exp((ev / kbt)) + 1.0d0))
t_2 = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
if (mu <= (-4.5d-24)) then
tmp = t_2
else if (mu <= (-5.5d-256)) then
tmp = t_1
else if (mu <= 2.6d-119) then
tmp = t_0 + (nachar / (exp((vef / kbt)) + 1.0d0))
else if (mu <= 0.16d0) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_1 = t_0 + (NaChar / (Math.exp((Ev / KbT)) + 1.0));
double t_2 = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
double tmp;
if (mu <= -4.5e-24) {
tmp = t_2;
} else if (mu <= -5.5e-256) {
tmp = t_1;
} else if (mu <= 2.6e-119) {
tmp = t_0 + (NaChar / (Math.exp((Vef / KbT)) + 1.0));
} else if (mu <= 0.16) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) t_1 = t_0 + (NaChar / (math.exp((Ev / KbT)) + 1.0)) t_2 = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) tmp = 0 if mu <= -4.5e-24: tmp = t_2 elif mu <= -5.5e-256: tmp = t_1 elif mu <= 2.6e-119: tmp = t_0 + (NaChar / (math.exp((Vef / KbT)) + 1.0)) elif mu <= 0.16: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) t_1 = Float64(t_0 + Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0))) t_2 = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))) tmp = 0.0 if (mu <= -4.5e-24) tmp = t_2; elseif (mu <= -5.5e-256) tmp = t_1; elseif (mu <= 2.6e-119) tmp = Float64(t_0 + Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif (mu <= 0.16) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); t_1 = t_0 + (NaChar / (exp((Ev / KbT)) + 1.0)); t_2 = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); tmp = 0.0; if (mu <= -4.5e-24) tmp = t_2; elseif (mu <= -5.5e-256) tmp = t_1; elseif (mu <= 2.6e-119) tmp = t_0 + (NaChar / (exp((Vef / KbT)) + 1.0)); elseif (mu <= 0.16) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -4.5e-24], t$95$2, If[LessEqual[mu, -5.5e-256], t$95$1, If[LessEqual[mu, 2.6e-119], N[(t$95$0 + N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 0.16], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
t_1 := t\_0 + \frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
t_2 := \frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{if}\;mu \leq -4.5 \cdot 10^{-24}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -5.5 \cdot 10^{-256}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 2.6 \cdot 10^{-119}:\\
\;\;\;\;t\_0 + \frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;mu \leq 0.16:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -4.4999999999999997e-24 or 0.160000000000000003 < mu Initial program 99.7%
Simplified99.7%
Taylor expanded in mu around inf 87.5%
if -4.4999999999999997e-24 < mu < -5.4999999999999998e-256 or 2.60000000000000012e-119 < mu < 0.160000000000000003Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 73.5%
if -5.4999999999999998e-256 < mu < 2.60000000000000012e-119Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.1%
Final simplification83.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= EDonor -5.5e-27) (not (<= EDonor 3.3e-15)))
(-
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(+
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(/ NdChar (+ (exp (/ (- (+ Vef mu) Ec) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -5.5e-27) || !(EDonor <= 3.3e-15)) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = (NaChar / (exp((Vef / KbT)) + 1.0)) + (NdChar / (exp((((Vef + mu) - Ec) / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((edonor <= (-5.5d-27)) .or. (.not. (edonor <= 3.3d-15))) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else
tmp = (nachar / (exp((vef / kbt)) + 1.0d0)) + (ndchar / (exp((((vef + mu) - ec) / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -5.5e-27) || !(EDonor <= 3.3e-15)) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = (NaChar / (Math.exp((Vef / KbT)) + 1.0)) + (NdChar / (Math.exp((((Vef + mu) - Ec) / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (EDonor <= -5.5e-27) or not (EDonor <= 3.3e-15): tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) else: tmp = (NaChar / (math.exp((Vef / KbT)) + 1.0)) + (NdChar / (math.exp((((Vef + mu) - Ec) / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((EDonor <= -5.5e-27) || !(EDonor <= 3.3e-15)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(Float64(Vef + mu) - Ec) / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((EDonor <= -5.5e-27) || ~((EDonor <= 3.3e-15))) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); else tmp = (NaChar / (exp((Vef / KbT)) + 1.0)) + (NdChar / (exp((((Vef + mu) - Ec) / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[EDonor, -5.5e-27], N[Not[LessEqual[EDonor, 3.3e-15]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(N[(Vef + mu), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -5.5 \cdot 10^{-27} \lor \neg \left(EDonor \leq 3.3 \cdot 10^{-15}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NdChar}{e^{\frac{\left(Vef + mu\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if EDonor < -5.5000000000000002e-27 or 3.3e-15 < EDonor Initial program 99.8%
Simplified99.8%
Taylor expanded in EDonor around inf 83.0%
if -5.5000000000000002e-27 < EDonor < 3.3e-15Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 66.1%
Taylor expanded in EDonor around 0 66.1%
Final simplification75.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(if (or (<= mu -1.4e-71) (not (<= mu 0.09)))
(+ (/ NaChar (+ t_0 1.0)) (/ NdChar (+ (exp (/ mu KbT)) 1.0)))
(- (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar (- -1.0 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double tmp;
if ((mu <= -1.4e-71) || !(mu <= 0.09)) {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0));
} else {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - 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 = exp(((vef + (ev - (mu - eaccept))) / kbt))
if ((mu <= (-1.4d-71)) .or. (.not. (mu <= 0.09d0))) then
tmp = (nachar / (t_0 + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
else
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) - (nachar / ((-1.0d0) - 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 = Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double tmp;
if ((mu <= -1.4e-71) || !(mu <= 0.09)) {
tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
} else {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) tmp = 0 if (mu <= -1.4e-71) or not (mu <= 0.09): tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) else: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) tmp = 0.0 if ((mu <= -1.4e-71) || !(mu <= 0.09)) tmp = Float64(Float64(NaChar / Float64(t_0 + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) - Float64(NaChar / Float64(-1.0 - t_0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev - (mu - EAccept))) / KbT)); tmp = 0.0; if ((mu <= -1.4e-71) || ~((mu <= 0.09))) tmp = (NaChar / (t_0 + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); else tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) - (NaChar / (-1.0 - t_0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, If[Or[LessEqual[mu, -1.4e-71], N[Not[LessEqual[mu, 0.09]], $MachinePrecision]], N[(N[(NaChar / N[(t$95$0 + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}\\
\mathbf{if}\;mu \leq -1.4 \cdot 10^{-71} \lor \neg \left(mu \leq 0.09\right):\\
\;\;\;\;\frac{NaChar}{t\_0 + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} - \frac{NaChar}{-1 - t\_0}\\
\end{array}
\end{array}
if mu < -1.4e-71 or 0.089999999999999997 < mu Initial program 99.7%
Simplified99.7%
Taylor expanded in mu around inf 87.6%
if -1.4e-71 < mu < 0.089999999999999997Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.9%
Final simplification83.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= mu -9.5e-27) (not (<= mu 0.034)))
(+
(/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))
(/ NdChar (+ (exp (/ mu KbT)) 1.0)))
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar (+ (exp (/ Ev KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -9.5e-27) || !(mu <= 0.034)) {
tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0));
} else {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((Ev / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((mu <= (-9.5d-27)) .or. (.not. (mu <= 0.034d0))) then
tmp = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
else
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (exp((ev / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((mu <= -9.5e-27) || !(mu <= 0.034)) {
tmp = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
} else {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (Math.exp((Ev / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (mu <= -9.5e-27) or not (mu <= 0.034): tmp = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) else: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (math.exp((Ev / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((mu <= -9.5e-27) || !(mu <= 0.034)) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((mu <= -9.5e-27) || ~((mu <= 0.034))) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); else tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (exp((Ev / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[mu, -9.5e-27], N[Not[LessEqual[mu, 0.034]], $MachinePrecision]], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -9.5 \cdot 10^{-27} \lor \neg \left(mu \leq 0.034\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\end{array}
\end{array}
if mu < -9.50000000000000037e-27 or 0.034000000000000002 < mu Initial program 99.7%
Simplified99.7%
Taylor expanded in mu around inf 87.5%
if -9.50000000000000037e-27 < mu < 0.034000000000000002Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.4%
Final simplification79.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0)) (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}
\end{array}
Initial program 99.8%
Simplified99.8%
Final simplification99.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(-
(/ NdChar (+ (/ mu KbT) 2.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(t_1 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NdChar -3.3e+47)
(+ t_1 (/ NaChar (+ (/ Vef KbT) 1.0)))
(if (<= NdChar 3.3e-143)
t_0
(if (<= NdChar 85000000000.0)
(+ t_1 (/ NaChar (- 1.0 (/ mu KbT))))
(if (<= NdChar 1.9e+43) t_0 (+ NaChar 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 / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
double t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -3.3e+47) {
tmp = t_1 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 3.3e-143) {
tmp = t_0;
} else if (NdChar <= 85000000000.0) {
tmp = t_1 + (NaChar / (1.0 - (mu / KbT)));
} else if (NdChar <= 1.9e+43) {
tmp = t_0;
} else {
tmp = NaChar + 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 / ((mu / kbt) + 2.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
t_1 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (ndchar <= (-3.3d+47)) then
tmp = t_1 + (nachar / ((vef / kbt) + 1.0d0))
else if (ndchar <= 3.3d-143) then
tmp = t_0
else if (ndchar <= 85000000000.0d0) then
tmp = t_1 + (nachar / (1.0d0 - (mu / kbt)))
else if (ndchar <= 1.9d+43) then
tmp = t_0
else
tmp = nachar + 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 / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
double t_1 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -3.3e+47) {
tmp = t_1 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 3.3e-143) {
tmp = t_0;
} else if (NdChar <= 85000000000.0) {
tmp = t_1 + (NaChar / (1.0 - (mu / KbT)));
} else if (NdChar <= 1.9e+43) {
tmp = t_0;
} else {
tmp = NaChar + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) t_1 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NdChar <= -3.3e+47: tmp = t_1 + (NaChar / ((Vef / KbT) + 1.0)) elif NdChar <= 3.3e-143: tmp = t_0 elif NdChar <= 85000000000.0: tmp = t_1 + (NaChar / (1.0 - (mu / KbT))) elif NdChar <= 1.9e+43: tmp = t_0 else: tmp = NaChar + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(Float64(mu / KbT) + 2.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) t_1 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NdChar <= -3.3e+47) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Vef / KbT) + 1.0))); elseif (NdChar <= 3.3e-143) tmp = t_0; elseif (NdChar <= 85000000000.0) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); elseif (NdChar <= 1.9e+43) tmp = t_0; else tmp = Float64(NaChar + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NdChar <= -3.3e+47) tmp = t_1 + (NaChar / ((Vef / KbT) + 1.0)); elseif (NdChar <= 3.3e-143) tmp = t_0; elseif (NdChar <= 85000000000.0) tmp = t_1 + (NaChar / (1.0 - (mu / KbT))); elseif (NdChar <= 1.9e+43) tmp = t_0; else tmp = NaChar + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -3.3e+47], N[(t$95$1 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.3e-143], t$95$0, If[LessEqual[NdChar, 85000000000.0], N[(t$95$1 + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.9e+43], t$95$0, N[(NaChar + t$95$1), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{\frac{mu}{KbT} + 2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NdChar \leq -3.3 \cdot 10^{+47}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Vef}{KbT} + 1}\\
\mathbf{elif}\;NdChar \leq 3.3 \cdot 10^{-143}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 85000000000:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.9 \cdot 10^{+43}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;NaChar + t\_1\\
\end{array}
\end{array}
if NdChar < -3.2999999999999999e47Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 56.6%
associate-+r+56.6%
+-commutative56.6%
Simplified56.6%
Taylor expanded in Vef around inf 71.6%
if -3.2999999999999999e47 < NdChar < 3.3000000000000001e-143 or 8.5e10 < NdChar < 1.90000000000000004e43Initial program 99.8%
Simplified99.8%
Taylor expanded in mu around inf 81.2%
Taylor expanded in mu around 0 66.0%
if 3.3000000000000001e-143 < NdChar < 8.5e10Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.2%
associate-+r+47.2%
+-commutative47.2%
Simplified47.2%
Taylor expanded in mu around inf 65.4%
mul-1-neg65.4%
distribute-frac-neg65.4%
Simplified65.4%
if 1.90000000000000004e43 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.4%
associate-+r+55.4%
+-commutative55.4%
Simplified55.4%
Taylor expanded in mu around inf 64.9%
mul-1-neg64.9%
distribute-frac-neg64.9%
Simplified64.9%
Taylor expanded in mu around 0 68.4%
Final simplification67.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NdChar -2e+47)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 1.0)))
(if (<= NdChar 2.65e-101)
(+
(/ NaChar (+ (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)) 1.0))
(/ NdChar (+ (+ (/ (- EDonor (- (- Ec mu) Vef)) KbT) 1.0) 1.0)))
(+ NaChar t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -2e+47) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 2.65e-101) {
tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / ((((EDonor - ((Ec - mu) - Vef)) / KbT) + 1.0) + 1.0));
} else {
tmp = NaChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (ndchar <= (-2d+47)) then
tmp = t_0 + (nachar / ((vef / kbt) + 1.0d0))
else if (ndchar <= 2.65d-101) then
tmp = (nachar / (exp(((vef + (ev - (mu - eaccept))) / kbt)) + 1.0d0)) + (ndchar / ((((edonor - ((ec - mu) - vef)) / kbt) + 1.0d0) + 1.0d0))
else
tmp = nachar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -2e+47) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 2.65e-101) {
tmp = (NaChar / (Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / ((((EDonor - ((Ec - mu) - Vef)) / KbT) + 1.0) + 1.0));
} else {
tmp = NaChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NdChar <= -2e+47: tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)) elif NdChar <= 2.65e-101: tmp = (NaChar / (math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / ((((EDonor - ((Ec - mu) - Vef)) / KbT) + 1.0) + 1.0)) else: tmp = NaChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NdChar <= -2e+47) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 1.0))); elseif (NdChar <= 2.65e-101) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) + 1.0)) + Float64(NdChar / Float64(Float64(Float64(Float64(EDonor - Float64(Float64(Ec - mu) - Vef)) / KbT) + 1.0) + 1.0))); else tmp = Float64(NaChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NdChar <= -2e+47) tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)); elseif (NdChar <= 2.65e-101) tmp = (NaChar / (exp(((Vef + (Ev - (mu - EAccept))) / KbT)) + 1.0)) + (NdChar / ((((EDonor - ((Ec - mu) - Vef)) / KbT) + 1.0) + 1.0)); else tmp = NaChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2e+47], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.65e-101], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(EDonor - N[(N[(Ec - mu), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar + t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NdChar \leq -2 \cdot 10^{+47}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 1}\\
\mathbf{elif}\;NdChar \leq 2.65 \cdot 10^{-101}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}} + 1} + \frac{NdChar}{\left(\frac{EDonor - \left(\left(Ec - mu\right) - Vef\right)}{KbT} + 1\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;NaChar + t\_0\\
\end{array}
\end{array}
if NdChar < -2.0000000000000001e47Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 56.6%
associate-+r+56.6%
+-commutative56.6%
Simplified56.6%
Taylor expanded in Vef around inf 71.6%
if -2.0000000000000001e47 < NdChar < 2.6500000000000001e-101Initial program 99.8%
Simplified99.8%
add-cube-cbrt99.8%
pow399.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Taylor expanded in KbT around inf 68.6%
distribute-rgt-out68.6%
metadata-eval68.6%
*-rgt-identity68.6%
associate--l+68.6%
sub-neg68.6%
associate-+r+68.6%
mul-1-neg68.6%
+-commutative68.6%
mul-1-neg68.6%
sub-neg68.6%
Simplified68.6%
if 2.6500000000000001e-101 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 54.2%
associate-+r+54.2%
+-commutative54.2%
Simplified54.2%
Taylor expanded in mu around inf 60.3%
mul-1-neg60.3%
distribute-frac-neg60.3%
Simplified60.3%
Taylor expanded in mu around 0 66.3%
Final simplification68.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NaChar -1.9e+17)
(-
(/ NdChar 2.0)
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(if (or (<= NaChar -7.5e-308) (not (<= NaChar 2.65e-61)))
(+ NaChar t_0)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 1.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -7.5e-308) || !(NaChar <= 2.65e-61)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (nachar <= (-1.9d+17)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else if ((nachar <= (-7.5d-308)) .or. (.not. (nachar <= 2.65d-61))) then
tmp = nachar + t_0
else
tmp = t_0 + (nachar / ((vef / kbt) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -7.5e-308) || !(NaChar <= 2.65e-61)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NaChar <= -1.9e+17: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) elif (NaChar <= -7.5e-308) or not (NaChar <= 2.65e-61): tmp = NaChar + t_0 else: tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -1.9e+17) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); elseif ((NaChar <= -7.5e-308) || !(NaChar <= 2.65e-61)) tmp = Float64(NaChar + t_0); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -1.9e+17) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); elseif ((NaChar <= -7.5e-308) || ~((NaChar <= 2.65e-61))) tmp = NaChar + t_0; else tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.9e+17], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, -7.5e-308], N[Not[LessEqual[NaChar, 2.65e-61]], $MachinePrecision]], N[(NaChar + t$95$0), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{+17}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -7.5 \cdot 10^{-308} \lor \neg \left(NaChar \leq 2.65 \cdot 10^{-61}\right):\\
\;\;\;\;NaChar + t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 1}\\
\end{array}
\end{array}
if NaChar < -1.9e17Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
if -1.9e17 < NaChar < -7.4999999999999998e-308 or 2.65e-61 < NaChar Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 44.3%
associate-+r+44.3%
+-commutative44.3%
Simplified44.3%
Taylor expanded in mu around inf 49.3%
mul-1-neg49.3%
distribute-frac-neg49.3%
Simplified49.3%
Taylor expanded in mu around 0 64.8%
if -7.4999999999999998e-308 < NaChar < 2.65e-61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.2%
associate-+r+73.2%
+-commutative73.2%
Simplified73.2%
Taylor expanded in Vef around inf 74.7%
Final simplification65.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NaChar -1.9e+16)
(-
(/ NdChar 2.0)
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(if (or (<= NaChar -1.8e-271) (not (<= NaChar 7.5e-233)))
(+ NaChar t_0)
(+ t_0 (/ (* KbT NaChar) EAccept))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+16) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -1.8e-271) || !(NaChar <= 7.5e-233)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + ((KbT * NaChar) / EAccept);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (nachar <= (-1.9d+16)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else if ((nachar <= (-1.8d-271)) .or. (.not. (nachar <= 7.5d-233))) then
tmp = nachar + t_0
else
tmp = t_0 + ((kbt * nachar) / eaccept)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+16) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -1.8e-271) || !(NaChar <= 7.5e-233)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + ((KbT * NaChar) / EAccept);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NaChar <= -1.9e+16: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) elif (NaChar <= -1.8e-271) or not (NaChar <= 7.5e-233): tmp = NaChar + t_0 else: tmp = t_0 + ((KbT * NaChar) / EAccept) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -1.9e+16) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); elseif ((NaChar <= -1.8e-271) || !(NaChar <= 7.5e-233)) tmp = Float64(NaChar + t_0); else tmp = Float64(t_0 + Float64(Float64(KbT * NaChar) / EAccept)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -1.9e+16) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); elseif ((NaChar <= -1.8e-271) || ~((NaChar <= 7.5e-233))) tmp = NaChar + t_0; else tmp = t_0 + ((KbT * NaChar) / EAccept); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.9e+16], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, -1.8e-271], N[Not[LessEqual[NaChar, 7.5e-233]], $MachinePrecision]], N[(NaChar + t$95$0), $MachinePrecision], N[(t$95$0 + N[(N[(KbT * NaChar), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{+16}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -1.8 \cdot 10^{-271} \lor \neg \left(NaChar \leq 7.5 \cdot 10^{-233}\right):\\
\;\;\;\;NaChar + t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{KbT \cdot NaChar}{EAccept}\\
\end{array}
\end{array}
if NaChar < -1.9e16Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
if -1.9e16 < NaChar < -1.7999999999999999e-271 or 7.49999999999999974e-233 < NaChar Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 48.3%
associate-+r+48.3%
+-commutative48.3%
Simplified48.3%
Taylor expanded in mu around inf 50.9%
mul-1-neg50.9%
distribute-frac-neg50.9%
Simplified50.9%
Taylor expanded in mu around 0 63.3%
if -1.7999999999999999e-271 < NaChar < 7.49999999999999974e-233Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 76.9%
associate-+r+76.9%
+-commutative76.9%
Simplified76.9%
Taylor expanded in EAccept around inf 77.3%
Final simplification63.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NaChar -1.9e+17)
(-
(/ NdChar 2.0)
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(if (or (<= NaChar -8.5e-308) (not (<= NaChar 3.35e-251)))
(+ NaChar t_0)
(+ t_0 (/ (* KbT NaChar) Vef))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -8.5e-308) || !(NaChar <= 3.35e-251)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + ((KbT * NaChar) / Vef);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (nachar <= (-1.9d+17)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else if ((nachar <= (-8.5d-308)) .or. (.not. (nachar <= 3.35d-251))) then
tmp = nachar + t_0
else
tmp = t_0 + ((kbt * nachar) / vef)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if ((NaChar <= -8.5e-308) || !(NaChar <= 3.35e-251)) {
tmp = NaChar + t_0;
} else {
tmp = t_0 + ((KbT * NaChar) / Vef);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NaChar <= -1.9e+17: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) elif (NaChar <= -8.5e-308) or not (NaChar <= 3.35e-251): tmp = NaChar + t_0 else: tmp = t_0 + ((KbT * NaChar) / Vef) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -1.9e+17) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); elseif ((NaChar <= -8.5e-308) || !(NaChar <= 3.35e-251)) tmp = Float64(NaChar + t_0); else tmp = Float64(t_0 + Float64(Float64(KbT * NaChar) / Vef)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -1.9e+17) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); elseif ((NaChar <= -8.5e-308) || ~((NaChar <= 3.35e-251))) tmp = NaChar + t_0; else tmp = t_0 + ((KbT * NaChar) / Vef); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.9e+17], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, -8.5e-308], N[Not[LessEqual[NaChar, 3.35e-251]], $MachinePrecision]], N[(NaChar + t$95$0), $MachinePrecision], N[(t$95$0 + N[(N[(KbT * NaChar), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{+17}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -8.5 \cdot 10^{-308} \lor \neg \left(NaChar \leq 3.35 \cdot 10^{-251}\right):\\
\;\;\;\;NaChar + t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{KbT \cdot NaChar}{Vef}\\
\end{array}
\end{array}
if NaChar < -1.9e17Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
if -1.9e17 < NaChar < -8.49999999999999972e-308 or 3.34999999999999989e-251 < NaChar Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 49.3%
associate-+r+49.3%
+-commutative49.3%
Simplified49.3%
Taylor expanded in mu around inf 52.1%
mul-1-neg52.1%
distribute-frac-neg52.1%
Simplified52.1%
Taylor expanded in mu around 0 64.0%
if -8.49999999999999972e-308 < NaChar < 3.34999999999999989e-251Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 89.8%
associate-+r+89.8%
+-commutative89.8%
Simplified89.8%
Taylor expanded in Vef around inf 99.8%
Final simplification64.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NdChar -9.5e+47)
(+ t_0 (/ NaChar (+ (/ Vef KbT) 1.0)))
(if (<= NdChar 2.8e-100)
(-
(/ NdChar (+ (/ mu KbT) 2.0))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(+ NaChar t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -9.5e+47) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 2.8e-100) {
tmp = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = NaChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (ndchar <= (-9.5d+47)) then
tmp = t_0 + (nachar / ((vef / kbt) + 1.0d0))
else if (ndchar <= 2.8d-100) then
tmp = (ndchar / ((mu / kbt) + 2.0d0)) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else
tmp = nachar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NdChar <= -9.5e+47) {
tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0));
} else if (NdChar <= 2.8e-100) {
tmp = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = NaChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NdChar <= -9.5e+47: tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)) elif NdChar <= 2.8e-100: tmp = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) else: tmp = NaChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NdChar <= -9.5e+47) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 1.0))); elseif (NdChar <= 2.8e-100) tmp = Float64(Float64(NdChar / Float64(Float64(mu / KbT) + 2.0)) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); else tmp = Float64(NaChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NdChar <= -9.5e+47) tmp = t_0 + (NaChar / ((Vef / KbT) + 1.0)); elseif (NdChar <= 2.8e-100) tmp = (NdChar / ((mu / KbT) + 2.0)) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); else tmp = NaChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9.5e+47], N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.8e-100], N[(N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar + t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NdChar \leq -9.5 \cdot 10^{+47}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 1}\\
\mathbf{elif}\;NdChar \leq 2.8 \cdot 10^{-100}:\\
\;\;\;\;\frac{NdChar}{\frac{mu}{KbT} + 2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NaChar + t\_0\\
\end{array}
\end{array}
if NdChar < -9.50000000000000001e47Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 56.6%
associate-+r+56.6%
+-commutative56.6%
Simplified56.6%
Taylor expanded in Vef around inf 71.6%
if -9.50000000000000001e47 < NdChar < 2.79999999999999995e-100Initial program 99.8%
Simplified99.8%
Taylor expanded in mu around inf 80.0%
Taylor expanded in mu around 0 62.7%
if 2.79999999999999995e-100 < NdChar Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 54.2%
associate-+r+54.2%
+-commutative54.2%
Simplified54.2%
Taylor expanded in mu around inf 60.3%
mul-1-neg60.3%
distribute-frac-neg60.3%
Simplified60.3%
Taylor expanded in mu around 0 66.3%
Final simplification66.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -5.1e-92)
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5))
(if (<= KbT 1.95e-261)
(+ (/ NdChar (+ (exp (/ mu KbT)) 1.0)) (* KbT (/ NaChar Ev)))
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.1e-92) {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
} else if (KbT <= 1.95e-261) {
tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (KbT * (NaChar / Ev));
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-5.1d-92)) then
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar * 0.5d0)
else if (kbt <= 1.95d-261) then
tmp = (ndchar / (exp((mu / kbt)) + 1.0d0)) + (kbt * (nachar / ev))
else
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -5.1e-92) {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
} else if (KbT <= 1.95e-261) {
tmp = (NdChar / (Math.exp((mu / KbT)) + 1.0)) + (KbT * (NaChar / Ev));
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -5.1e-92: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5) elif KbT <= 1.95e-261: tmp = (NdChar / (math.exp((mu / KbT)) + 1.0)) + (KbT * (NaChar / Ev)) else: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -5.1e-92) tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5)); elseif (KbT <= 1.95e-261) tmp = Float64(Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)) + Float64(KbT * Float64(NaChar / Ev))); else tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -5.1e-92) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5); elseif (KbT <= 1.95e-261) tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (KbT * (NaChar / Ev)); else tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -5.1e-92], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.95e-261], N[(N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NaChar / Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -5.1 \cdot 10^{-92}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.95 \cdot 10^{-261}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1} + KbT \cdot \frac{NaChar}{Ev}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if KbT < -5.09999999999999972e-92Initial program 99.8%
Simplified99.8%
Taylor expanded in EAccept around inf 69.0%
Taylor expanded in KbT around inf 42.8%
*-commutative28.9%
Simplified42.8%
if -5.09999999999999972e-92 < KbT < 1.95000000000000009e-261Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.0%
associate-+r+42.0%
+-commutative42.0%
Simplified42.0%
Taylor expanded in Ev around inf 49.4%
associate-/l*44.3%
Simplified44.3%
Taylor expanded in mu around inf 30.7%
if 1.95000000000000009e-261 < KbT Initial program 99.8%
Simplified99.8%
Taylor expanded in Ev around inf 65.1%
Taylor expanded in KbT around inf 35.0%
Final simplification36.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.9e+17)
(-
(/ NdChar 2.0)
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(+ NaChar (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = NaChar + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-1.9d+17)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else
tmp = nachar + (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -1.9e+17) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = NaChar + (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.9e+17: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) else: tmp = NaChar + (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.9e+17) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); else tmp = Float64(NaChar + Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.9e+17) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); else tmp = NaChar + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.9e+17], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar + N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.9 \cdot 10^{+17}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NaChar + \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -1.9e17Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.0%
if -1.9e17 < NaChar Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 51.4%
associate-+r+51.4%
+-commutative51.4%
Simplified51.4%
Taylor expanded in mu around inf 53.7%
mul-1-neg53.7%
distribute-frac-neg53.7%
Simplified53.7%
Taylor expanded in mu around 0 63.5%
Final simplification62.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 1.55e-202)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 4.1e+121)
(+ (/ NdChar (+ (exp (/ mu KbT)) 1.0)) (* NaChar 0.5))
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.55e-202) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else if (EAccept <= 4.1e+121) {
tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar * 0.5);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.55d-202) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else if (eaccept <= 4.1d+121) then
tmp = (ndchar / (exp((mu / kbt)) + 1.0d0)) + (nachar * 0.5d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.55e-202) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else if (EAccept <= 4.1e+121) {
tmp = (NdChar / (Math.exp((mu / KbT)) + 1.0)) + (NaChar * 0.5);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.55e-202: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) elif EAccept <= 4.1e+121: tmp = (NdChar / (math.exp((mu / KbT)) + 1.0)) + (NaChar * 0.5) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.55e-202) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); elseif (EAccept <= 4.1e+121) tmp = Float64(Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.55e-202) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); elseif (EAccept <= 4.1e+121) tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar * 0.5); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.55e-202], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4.1e+121], N[(N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.55 \cdot 10^{-202}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 4.1 \cdot 10^{+121}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 1.55e-202Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 65.8%
Taylor expanded in KbT around inf 31.7%
if 1.55e-202 < EAccept < 4.1e121Initial program 99.7%
Simplified99.7%
Taylor expanded in mu around inf 73.0%
Taylor expanded in KbT around inf 39.7%
if 4.1e121 < EAccept Initial program 99.8%
Simplified99.8%
Taylor expanded in EAccept around inf 85.6%
Taylor expanded in KbT around inf 41.2%
*-commutative22.4%
Simplified41.2%
Final simplification35.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NaChar -6.8e+192) (- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ mu (- KbT)))))) (+ NaChar (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -6.8e+192) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((mu / -KbT))));
} else {
tmp = NaChar + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= (-6.8d+192)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((mu / -kbt))))
else
tmp = nachar + (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= -6.8e+192) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((mu / -KbT))));
} else {
tmp = NaChar + (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -6.8e+192: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((mu / -KbT)))) else: tmp = NaChar + (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -6.8e+192) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(mu / Float64(-KbT)))))); else tmp = Float64(NaChar + Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -6.8e+192) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((mu / -KbT)))); else tmp = NaChar + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -6.8e+192], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar + N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -6.8 \cdot 10^{+192}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{mu}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;NaChar + \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\end{array}
\end{array}
if NaChar < -6.79999999999999992e192Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 79.3%
Taylor expanded in mu around inf 63.6%
mul-1-neg63.6%
Simplified63.6%
if -6.79999999999999992e192 < NaChar Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 49.7%
associate-+r+49.7%
+-commutative49.7%
Simplified49.7%
Taylor expanded in mu around inf 52.7%
mul-1-neg52.7%
distribute-frac-neg52.7%
Simplified52.7%
Taylor expanded in mu around 0 61.1%
Final simplification61.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 8e+106) (- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT))))) (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 8e+106) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 8d+106) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 8e+106) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 8e+106: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 8e+106) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 8e+106) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 8e+106], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 8 \cdot 10^{+106}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 8.00000000000000073e106Initial program 99.8%
Simplified99.8%
Taylor expanded in Ev around inf 68.8%
Taylor expanded in KbT around inf 33.3%
if 8.00000000000000073e106 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 87.2%
Taylor expanded in KbT around inf 44.1%
*-commutative25.2%
Simplified44.1%
Final simplification35.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + NdChar \cdot 0.5
\end{array}
Initial program 99.8%
Simplified99.8%
Taylor expanded in EAccept around inf 68.7%
Taylor expanded in KbT around inf 35.1%
*-commutative24.7%
Simplified35.1%
Final simplification35.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ mu KbT) (/ Vef KbT))))
(if (or (<= EAccept -1.5e-306) (not (<= EAccept 4.4e+164)))
(+
(/ NaChar (- 1.0 (/ mu KbT)))
(/ NdChar (+ (- (+ (+ (/ EDonor KbT) t_0) 1.0) (/ Ec KbT)) 1.0)))
(-
(/ NdChar (- (+ t_0 (+ (/ EDonor KbT) 2.0)) (/ Ec KbT)))
(/
NaChar
(+
-1.0
(+
(/ mu KbT)
(- (- -1.0 (/ EAccept KbT)) (+ (/ Ev KbT) (/ Vef KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (mu / KbT) + (Vef / KbT);
double tmp;
if ((EAccept <= -1.5e-306) || !(EAccept <= 4.4e+164)) {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + t_0) + 1.0) - (Ec / KbT)) + 1.0));
} else {
tmp = (NdChar / ((t_0 + ((EDonor / KbT) + 2.0)) - (Ec / KbT))) - (NaChar / (-1.0 + ((mu / KbT) + ((-1.0 - (EAccept / KbT)) - ((Ev / KbT) + (Vef / KbT))))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (mu / kbt) + (vef / kbt)
if ((eaccept <= (-1.5d-306)) .or. (.not. (eaccept <= 4.4d+164))) then
tmp = (nachar / (1.0d0 - (mu / kbt))) + (ndchar / (((((edonor / kbt) + t_0) + 1.0d0) - (ec / kbt)) + 1.0d0))
else
tmp = (ndchar / ((t_0 + ((edonor / kbt) + 2.0d0)) - (ec / kbt))) - (nachar / ((-1.0d0) + ((mu / kbt) + (((-1.0d0) - (eaccept / kbt)) - ((ev / kbt) + (vef / kbt))))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (mu / KbT) + (Vef / KbT);
double tmp;
if ((EAccept <= -1.5e-306) || !(EAccept <= 4.4e+164)) {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + t_0) + 1.0) - (Ec / KbT)) + 1.0));
} else {
tmp = (NdChar / ((t_0 + ((EDonor / KbT) + 2.0)) - (Ec / KbT))) - (NaChar / (-1.0 + ((mu / KbT) + ((-1.0 - (EAccept / KbT)) - ((Ev / KbT) + (Vef / KbT))))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (mu / KbT) + (Vef / KbT) tmp = 0 if (EAccept <= -1.5e-306) or not (EAccept <= 4.4e+164): tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + t_0) + 1.0) - (Ec / KbT)) + 1.0)) else: tmp = (NdChar / ((t_0 + ((EDonor / KbT) + 2.0)) - (Ec / KbT))) - (NaChar / (-1.0 + ((mu / KbT) + ((-1.0 - (EAccept / KbT)) - ((Ev / KbT) + (Vef / KbT)))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(mu / KbT) + Float64(Vef / KbT)) tmp = 0.0 if ((EAccept <= -1.5e-306) || !(EAccept <= 4.4e+164)) tmp = Float64(Float64(NaChar / Float64(1.0 - Float64(mu / KbT))) + Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + t_0) + 1.0) - Float64(Ec / KbT)) + 1.0))); else tmp = Float64(Float64(NdChar / Float64(Float64(t_0 + Float64(Float64(EDonor / KbT) + 2.0)) - Float64(Ec / KbT))) - Float64(NaChar / Float64(-1.0 + Float64(Float64(mu / KbT) + Float64(Float64(-1.0 - Float64(EAccept / KbT)) - Float64(Float64(Ev / KbT) + Float64(Vef / KbT))))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (mu / KbT) + (Vef / KbT); tmp = 0.0; if ((EAccept <= -1.5e-306) || ~((EAccept <= 4.4e+164))) tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + t_0) + 1.0) - (Ec / KbT)) + 1.0)); else tmp = (NdChar / ((t_0 + ((EDonor / KbT) + 2.0)) - (Ec / KbT))) - (NaChar / (-1.0 + ((mu / KbT) + ((-1.0 - (EAccept / KbT)) - ((Ev / KbT) + (Vef / KbT)))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[EAccept, -1.5e-306], N[Not[LessEqual[EAccept, 4.4e+164]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + t$95$0), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[(t$95$0 + N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(N[(-1.0 - N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] - N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{mu}{KbT} + \frac{Vef}{KbT}\\
\mathbf{if}\;EAccept \leq -1.5 \cdot 10^{-306} \lor \neg \left(EAccept \leq 4.4 \cdot 10^{+164}\right):\\
\;\;\;\;\frac{NaChar}{1 - \frac{mu}{KbT}} + \frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + t\_0\right) + 1\right) - \frac{Ec}{KbT}\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(t\_0 + \left(\frac{EDonor}{KbT} + 2\right)\right) - \frac{Ec}{KbT}} - \frac{NaChar}{-1 + \left(\frac{mu}{KbT} + \left(\left(-1 - \frac{EAccept}{KbT}\right) - \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right)}\\
\end{array}
\end{array}
if EAccept < -1.50000000000000012e-306 or 4.40000000000000011e164 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.0%
associate-+r+47.0%
+-commutative47.0%
Simplified47.0%
Taylor expanded in mu around inf 49.6%
mul-1-neg49.6%
distribute-frac-neg49.6%
Simplified49.6%
Taylor expanded in KbT around inf 24.5%
if -1.50000000000000012e-306 < EAccept < 4.40000000000000011e164Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 56.3%
associate-+r+56.3%
+-commutative56.3%
Simplified56.3%
Taylor expanded in KbT around inf 28.4%
associate-+r+28.4%
Simplified28.4%
Final simplification25.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= EAccept -2.3e-229) (not (<= EAccept 4e+228)))
(+
(/ NaChar (- 1.0 (/ mu KbT)))
(/
NdChar
(+
(- (+ (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT))) 1.0) (/ Ec KbT))
1.0)))
(* 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 ((EAccept <= -2.3e-229) || !(EAccept <= 4e+228)) {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} 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 ((eaccept <= (-2.3d-229)) .or. (.not. (eaccept <= 4d+228))) then
tmp = (nachar / (1.0d0 - (mu / kbt))) + (ndchar / (((((edonor / kbt) + ((mu / kbt) + (vef / kbt))) + 1.0d0) - (ec / kbt)) + 1.0d0))
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 ((EAccept <= -2.3e-229) || !(EAccept <= 4e+228)) {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0));
} else {
tmp = 0.5 * (NdChar + NaChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (EAccept <= -2.3e-229) or not (EAccept <= 4e+228): tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)) else: tmp = 0.5 * (NdChar + NaChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((EAccept <= -2.3e-229) || !(EAccept <= 4e+228)) tmp = Float64(Float64(NaChar / Float64(1.0 - Float64(mu / KbT))) + Float64(NdChar / Float64(Float64(Float64(Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(Ec / KbT)) + 1.0))); 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 ((EAccept <= -2.3e-229) || ~((EAccept <= 4e+228))) tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar / (((((EDonor / KbT) + ((mu / KbT) + (Vef / KbT))) + 1.0) - (Ec / KbT)) + 1.0)); else tmp = 0.5 * (NdChar + NaChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[EAccept, -2.3e-229], N[Not[LessEqual[EAccept, 4e+228]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq -2.3 \cdot 10^{-229} \lor \neg \left(EAccept \leq 4 \cdot 10^{+228}\right):\\
\;\;\;\;\frac{NaChar}{1 - \frac{mu}{KbT}} + \frac{NdChar}{\left(\left(\left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{Ec}{KbT}\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\end{array}
\end{array}
if EAccept < -2.29999999999999996e-229 or 3.9999999999999997e228 < EAccept Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 48.1%
associate-+r+48.1%
+-commutative48.1%
Simplified48.1%
Taylor expanded in mu around inf 51.9%
mul-1-neg51.9%
distribute-frac-neg51.9%
Simplified51.9%
Taylor expanded in KbT around inf 25.4%
if -2.29999999999999996e-229 < EAccept < 3.9999999999999997e228Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 45.1%
Taylor expanded in mu around inf 36.4%
mul-1-neg36.4%
Simplified36.4%
Taylor expanded in mu around 0 25.1%
Taylor expanded in mu around 0 29.6%
distribute-lft-out29.6%
Simplified29.6%
Final simplification27.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -3.5e+51) (+ (* NdChar 0.5) (* NaChar (+ 0.5 (* (/ mu KbT) 0.25)))) (+ (/ NaChar (- 1.0 (/ mu KbT))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.5e+51) {
tmp = (NdChar * 0.5) + (NaChar * (0.5 + ((mu / KbT) * 0.25)));
} else {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-3.5d+51)) then
tmp = (ndchar * 0.5d0) + (nachar * (0.5d0 + ((mu / kbt) * 0.25d0)))
else
tmp = (nachar / (1.0d0 - (mu / kbt))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -3.5e+51) {
tmp = (NdChar * 0.5) + (NaChar * (0.5 + ((mu / KbT) * 0.25)));
} else {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -3.5e+51: tmp = (NdChar * 0.5) + (NaChar * (0.5 + ((mu / KbT) * 0.25))) else: tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -3.5e+51) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar * Float64(0.5 + Float64(Float64(mu / KbT) * 0.25)))); else tmp = Float64(Float64(NaChar / Float64(1.0 - Float64(mu / KbT))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -3.5e+51) tmp = (NdChar * 0.5) + (NaChar * (0.5 + ((mu / KbT) * 0.25))); else tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -3.5e+51], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * N[(0.5 + N[(N[(mu / KbT), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.5 \cdot 10^{+51}:\\
\;\;\;\;NdChar \cdot 0.5 + NaChar \cdot \left(0.5 + \frac{mu}{KbT} \cdot 0.25\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 - \frac{mu}{KbT}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -3.5e51Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 69.8%
Taylor expanded in mu around inf 58.1%
mul-1-neg58.1%
Simplified58.1%
Taylor expanded in mu around 0 48.7%
Taylor expanded in NaChar around 0 52.7%
if -3.5e51 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 46.6%
associate-+r+46.6%
+-commutative46.6%
Simplified46.6%
Taylor expanded in mu around inf 53.2%
mul-1-neg53.2%
distribute-frac-neg53.2%
Simplified53.2%
Taylor expanded in KbT around inf 22.5%
*-commutative22.5%
Simplified22.5%
Final simplification28.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -7e+56) (* 0.5 (+ NdChar NaChar)) (+ (/ NaChar (- 1.0 (/ mu KbT))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7e+56) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-7d+56)) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = (nachar / (1.0d0 - (mu / kbt))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -7e+56) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -7e+56: tmp = 0.5 * (NdChar + NaChar) else: tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -7e+56) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(Float64(NaChar / Float64(1.0 - Float64(mu / KbT))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -7e+56) tmp = 0.5 * (NdChar + NaChar); else tmp = (NaChar / (1.0 - (mu / KbT))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -7e+56], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -7 \cdot 10^{+56}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 - \frac{mu}{KbT}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -6.99999999999999999e56Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 69.8%
Taylor expanded in mu around inf 58.1%
mul-1-neg58.1%
Simplified58.1%
Taylor expanded in mu around 0 48.7%
Taylor expanded in mu around 0 51.4%
distribute-lft-out51.4%
Simplified51.4%
if -6.99999999999999999e56 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 46.6%
associate-+r+46.6%
+-commutative46.6%
Simplified46.6%
Taylor expanded in mu around inf 53.2%
mul-1-neg53.2%
distribute-frac-neg53.2%
Simplified53.2%
Taylor expanded in KbT around inf 22.5%
*-commutative22.5%
Simplified22.5%
Final simplification28.0%
(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 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 45.4%
Taylor expanded in mu around inf 32.3%
mul-1-neg32.3%
Simplified32.3%
Taylor expanded in mu around 0 20.9%
Taylor expanded in mu around 0 25.3%
distribute-lft-out25.3%
Simplified25.3%
Final simplification25.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = ndchar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 45.4%
Taylor expanded in mu around inf 32.3%
mul-1-neg32.3%
Simplified32.3%
Taylor expanded in mu around 0 20.9%
Taylor expanded in NdChar around inf 16.6%
Final simplification16.6%
herbie shell --seed 2024053
(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))))))