
(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 19 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))))
(if (<= EAccept -3.1e-269)
t_2
(if (<= EAccept 6.6e-254)
t_1
(if (<= EAccept 1.5e-172)
t_2
(if (<= EAccept 2.06e-112)
t_0
(if (<= EAccept 4.8e-72)
t_2
(if (<= EAccept 3.2e-32)
t_1
(if (<= EAccept 1.15e+24)
t_2
(if (<= EAccept 7.5e+86)
t_0
(+
(/
NdChar
(+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (EAccept <= -3.1e-269) {
tmp = t_2;
} else if (EAccept <= 6.6e-254) {
tmp = t_1;
} else if (EAccept <= 1.5e-172) {
tmp = t_2;
} else if (EAccept <= 2.06e-112) {
tmp = t_0;
} else if (EAccept <= 4.8e-72) {
tmp = t_2;
} else if (EAccept <= 3.2e-32) {
tmp = t_1;
} else if (EAccept <= 1.15e+24) {
tmp = t_2;
} else if (EAccept <= 7.5e+86) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_2 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
if (eaccept <= (-3.1d-269)) then
tmp = t_2
else if (eaccept <= 6.6d-254) then
tmp = t_1
else if (eaccept <= 1.5d-172) then
tmp = t_2
else if (eaccept <= 2.06d-112) then
tmp = t_0
else if (eaccept <= 4.8d-72) then
tmp = t_2
else if (eaccept <= 3.2d-32) then
tmp = t_1
else if (eaccept <= 1.15d+24) then
tmp = t_2
else if (eaccept <= 7.5d+86) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
double tmp;
if (EAccept <= -3.1e-269) {
tmp = t_2;
} else if (EAccept <= 6.6e-254) {
tmp = t_1;
} else if (EAccept <= 1.5e-172) {
tmp = t_2;
} else if (EAccept <= 2.06e-112) {
tmp = t_0;
} else if (EAccept <= 4.8e-72) {
tmp = t_2;
} else if (EAccept <= 3.2e-32) {
tmp = t_1;
} else if (EAccept <= 1.15e+24) {
tmp = t_2;
} else if (EAccept <= 7.5e+86) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_2 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) tmp = 0 if EAccept <= -3.1e-269: tmp = t_2 elif EAccept <= 6.6e-254: tmp = t_1 elif EAccept <= 1.5e-172: tmp = t_2 elif EAccept <= 2.06e-112: tmp = t_0 elif EAccept <= 4.8e-72: tmp = t_2 elif EAccept <= 3.2e-32: tmp = t_1 elif EAccept <= 1.15e+24: tmp = t_2 elif EAccept <= 7.5e+86: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))) tmp = 0.0 if (EAccept <= -3.1e-269) tmp = t_2; elseif (EAccept <= 6.6e-254) tmp = t_1; elseif (EAccept <= 1.5e-172) tmp = t_2; elseif (EAccept <= 2.06e-112) tmp = t_0; elseif (EAccept <= 4.8e-72) tmp = t_2; elseif (EAccept <= 3.2e-32) tmp = t_1; elseif (EAccept <= 1.15e+24) tmp = t_2; elseif (EAccept <= 7.5e+86) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_2 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); tmp = 0.0; if (EAccept <= -3.1e-269) tmp = t_2; elseif (EAccept <= 6.6e-254) tmp = t_1; elseif (EAccept <= 1.5e-172) tmp = t_2; elseif (EAccept <= 2.06e-112) tmp = t_0; elseif (EAccept <= 4.8e-72) tmp = t_2; elseif (EAccept <= 3.2e-32) tmp = t_1; elseif (EAccept <= 1.15e+24) tmp = t_2; elseif (EAccept <= 7.5e+86) tmp = t_0; else tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -3.1e-269], t$95$2, If[LessEqual[EAccept, 6.6e-254], t$95$1, If[LessEqual[EAccept, 1.5e-172], t$95$2, If[LessEqual[EAccept, 2.06e-112], t$95$0, If[LessEqual[EAccept, 4.8e-72], t$95$2, If[LessEqual[EAccept, 3.2e-32], t$95$1, If[LessEqual[EAccept, 1.15e+24], t$95$2, If[LessEqual[EAccept, 7.5e+86], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{if}\;EAccept \leq -3.1 \cdot 10^{-269}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;EAccept \leq 6.6 \cdot 10^{-254}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EAccept \leq 1.5 \cdot 10^{-172}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;EAccept \leq 2.06 \cdot 10^{-112}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 4.8 \cdot 10^{-72}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;EAccept \leq 3.2 \cdot 10^{-32}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EAccept \leq 1.15 \cdot 10^{+24}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;EAccept \leq 7.5 \cdot 10^{+86}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -3.09999999999999967e-269 or 6.60000000000000033e-254 < EAccept < 1.49999999999999992e-172 or 2.06000000000000004e-112 < EAccept < 4.8e-72 or 3.2000000000000002e-32 < EAccept < 1.15e24Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.9%
Taylor expanded in EDonor around 0 60.6%
if -3.09999999999999967e-269 < EAccept < 6.60000000000000033e-254 or 4.8e-72 < EAccept < 3.2000000000000002e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.4%
Taylor expanded in mu around inf 35.6%
associate-/l*35.6%
Simplified35.6%
Taylor expanded in KbT around 0 68.3%
associate--l+68.3%
sub-neg68.3%
associate-+r+68.3%
mul-1-neg68.3%
mul-1-neg68.3%
associate-+r+68.3%
sub-neg68.3%
associate--l+68.3%
+-commutative68.3%
Simplified68.3%
if 1.49999999999999992e-172 < EAccept < 2.06000000000000004e-112 or 1.15e24 < EAccept < 7.4999999999999997e86Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.8%
if 7.4999999999999997e86 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 83.2%
Final simplification67.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT))))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_4 (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0)))
(if (<= NaChar -8e-20)
t_3
(if (<= NaChar -1.25e-126)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(if (<= NaChar -8.2e-141)
t_2
(if (<= NaChar 1.65e-256)
t_1
(if (<= NaChar 1.1e-207)
t_3
(if (<= NaChar 4.7e-132)
t_1
(if (<= NaChar 1.95e-90)
t_4
(if (<= NaChar 4.2e-30)
t_2
(if (<= NaChar 1.1e+216)
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/
1.0
(/
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT))
NdChar)))
(if (<= NaChar 3.1e+290) t_3 t_4))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((-Ec / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_3 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_4 = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0;
double tmp;
if (NaChar <= -8e-20) {
tmp = t_3;
} else if (NaChar <= -1.25e-126) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else if (NaChar <= -8.2e-141) {
tmp = t_2;
} else if (NaChar <= 1.65e-256) {
tmp = t_1;
} else if (NaChar <= 1.1e-207) {
tmp = t_3;
} else if (NaChar <= 4.7e-132) {
tmp = t_1;
} else if (NaChar <= 1.95e-90) {
tmp = t_4;
} else if (NaChar <= 4.2e-30) {
tmp = t_2;
} else if (NaChar <= 1.1e+216) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
} else if (NaChar <= 3.1e+290) {
tmp = t_3;
} else {
tmp = t_4;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((-ec / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_3 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_4 = (nachar / (1.0d0 + exp((ev / kbt)))) + t_0
if (nachar <= (-8d-20)) then
tmp = t_3
else if (nachar <= (-1.25d-126)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + t_0
else if (nachar <= (-8.2d-141)) then
tmp = t_2
else if (nachar <= 1.65d-256) then
tmp = t_1
else if (nachar <= 1.1d-207) then
tmp = t_3
else if (nachar <= 4.7d-132) then
tmp = t_1
else if (nachar <= 1.95d-90) then
tmp = t_4
else if (nachar <= 4.2d-30) then
tmp = t_2
else if (nachar <= 1.1d+216) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (1.0d0 / (((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)) / ndchar))
else if (nachar <= 3.1d+290) then
tmp = t_3
else
tmp = t_4
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((-Ec / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_3 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_4 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_0;
double tmp;
if (NaChar <= -8e-20) {
tmp = t_3;
} else if (NaChar <= -1.25e-126) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else if (NaChar <= -8.2e-141) {
tmp = t_2;
} else if (NaChar <= 1.65e-256) {
tmp = t_1;
} else if (NaChar <= 1.1e-207) {
tmp = t_3;
} else if (NaChar <= 4.7e-132) {
tmp = t_1;
} else if (NaChar <= 1.95e-90) {
tmp = t_4;
} else if (NaChar <= 4.2e-30) {
tmp = t_2;
} else if (NaChar <= 1.1e+216) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
} else if (NaChar <= 3.1e+290) {
tmp = t_3;
} else {
tmp = t_4;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((-Ec / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_3 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_4 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_0 tmp = 0 if NaChar <= -8e-20: tmp = t_3 elif NaChar <= -1.25e-126: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_0 elif NaChar <= -8.2e-141: tmp = t_2 elif NaChar <= 1.65e-256: tmp = t_1 elif NaChar <= 1.1e-207: tmp = t_3 elif NaChar <= 4.7e-132: tmp = t_1 elif NaChar <= 1.95e-90: tmp = t_4 elif NaChar <= 4.2e-30: tmp = t_2 elif NaChar <= 1.1e+216: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)) elif NaChar <= 3.1e+290: tmp = t_3 else: tmp = t_4 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_4 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_0) tmp = 0.0 if (NaChar <= -8e-20) tmp = t_3; elseif (NaChar <= -1.25e-126) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); elseif (NaChar <= -8.2e-141) tmp = t_2; elseif (NaChar <= 1.65e-256) tmp = t_1; elseif (NaChar <= 1.1e-207) tmp = t_3; elseif (NaChar <= 4.7e-132) tmp = t_1; elseif (NaChar <= 1.95e-90) tmp = t_4; elseif (NaChar <= 4.2e-30) tmp = t_2; elseif (NaChar <= 1.1e+216) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)) / NdChar))); elseif (NaChar <= 3.1e+290) tmp = t_3; else tmp = t_4; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((-Ec / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_3 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_4 = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0; tmp = 0.0; if (NaChar <= -8e-20) tmp = t_3; elseif (NaChar <= -1.25e-126) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0; elseif (NaChar <= -8.2e-141) tmp = t_2; elseif (NaChar <= 1.65e-256) tmp = t_1; elseif (NaChar <= 1.1e-207) tmp = t_3; elseif (NaChar <= 4.7e-132) tmp = t_1; elseif (NaChar <= 1.95e-90) tmp = t_4; elseif (NaChar <= 4.2e-30) tmp = t_2; elseif (NaChar <= 1.1e+216) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)); elseif (NaChar <= 3.1e+290) tmp = t_3; else tmp = t_4; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[NaChar, -8e-20], t$95$3, If[LessEqual[NaChar, -1.25e-126], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[NaChar, -8.2e-141], t$95$2, If[LessEqual[NaChar, 1.65e-256], t$95$1, If[LessEqual[NaChar, 1.1e-207], t$95$3, If[LessEqual[NaChar, 4.7e-132], t$95$1, If[LessEqual[NaChar, 1.95e-90], t$95$4, If[LessEqual[NaChar, 4.2e-30], t$95$2, If[LessEqual[NaChar, 1.1e+216], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 3.1e+290], t$95$3, t$95$4]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_4 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t_0\\
\mathbf{if}\;NaChar \leq -8 \cdot 10^{-20}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NaChar \leq -1.25 \cdot 10^{-126}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t_0\\
\mathbf{elif}\;NaChar \leq -8.2 \cdot 10^{-141}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 1.65 \cdot 10^{-256}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{-207}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NaChar \leq 4.7 \cdot 10^{-132}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 1.95 \cdot 10^{-90}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;NaChar \leq 4.2 \cdot 10^{-30}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{1}{\frac{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}{NdChar}}\\
\mathbf{elif}\;NaChar \leq 3.1 \cdot 10^{+290}:\\
\;\;\;\;t_3\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\end{array}
if NaChar < -7.99999999999999956e-20 or 1.65e-256 < NaChar < 1.0999999999999999e-207 or 1.1e216 < NaChar < 3.1000000000000001e290Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 62.4%
Taylor expanded in mu around inf 44.9%
associate-/l*44.1%
Simplified44.1%
Taylor expanded in KbT around 0 83.6%
associate--l+83.6%
sub-neg83.6%
associate-+r+83.6%
mul-1-neg83.6%
mul-1-neg83.6%
associate-+r+83.6%
sub-neg83.6%
associate--l+83.6%
+-commutative83.6%
Simplified83.6%
if -7.99999999999999956e-20 < NaChar < -1.25000000000000001e-126Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.9%
Taylor expanded in Ec around inf 75.5%
associate-*r/60.2%
mul-1-neg60.2%
Simplified75.5%
if -1.25000000000000001e-126 < NaChar < -8.20000000000000005e-141 or 1.95000000000000002e-90 < NaChar < 4.2000000000000004e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.1%
Taylor expanded in mu around inf 70.8%
associate-*r/70.8%
mul-1-neg70.8%
Simplified70.8%
if -8.20000000000000005e-141 < NaChar < 1.65e-256 or 1.0999999999999999e-207 < NaChar < 4.7000000000000002e-132Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 93.7%
Taylor expanded in Ev around 0 87.5%
if 4.7000000000000002e-132 < NaChar < 1.95000000000000002e-90 or 3.1000000000000001e290 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.1%
Taylor expanded in Ec around inf 61.3%
associate-*r/61.3%
mul-1-neg61.3%
Simplified61.3%
if 4.2000000000000004e-30 < NaChar < 1.1e216Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
div-inv99.8%
+-commutative99.8%
associate-+r-99.8%
associate-+l-99.8%
+-commutative99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 70.9%
Final simplification78.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= NaChar -2.2e-18)
t_1
(if (<= NaChar -2.3e-125)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(if (<= NaChar -5.6e-147)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NaChar 1.65e-256)
t_0
(if (<= NaChar 9e-206)
t_1
(if (<= NaChar 5.5e-135)
t_0
(if (or (<= NaChar 1.1e-17) (not (<= NaChar 7.5e+242)))
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/
1.0
(/
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT))
NdChar))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.2e-18) {
tmp = t_1;
} else if (NaChar <= -2.3e-125) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
} else if (NaChar <= -5.6e-147) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NaChar <= 1.65e-256) {
tmp = t_0;
} else if (NaChar <= 9e-206) {
tmp = t_1;
} else if (NaChar <= 5.5e-135) {
tmp = t_0;
} else if ((NaChar <= 1.1e-17) || !(NaChar <= 7.5e+242)) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (nachar <= (-2.2d-18)) then
tmp = t_1
else if (nachar <= (-2.3d-125)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
else if (nachar <= (-5.6d-147)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (nachar <= 1.65d-256) then
tmp = t_0
else if (nachar <= 9d-206) then
tmp = t_1
else if (nachar <= 5.5d-135) then
tmp = t_0
else if ((nachar <= 1.1d-17) .or. (.not. (nachar <= 7.5d+242))) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (1.0d0 / (((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)) / ndchar))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.2e-18) {
tmp = t_1;
} else if (NaChar <= -2.3e-125) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else if (NaChar <= -5.6e-147) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NaChar <= 1.65e-256) {
tmp = t_0;
} else if (NaChar <= 9e-206) {
tmp = t_1;
} else if (NaChar <= 5.5e-135) {
tmp = t_0;
} else if ((NaChar <= 1.1e-17) || !(NaChar <= 7.5e+242)) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if NaChar <= -2.2e-18: tmp = t_1 elif NaChar <= -2.3e-125: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) elif NaChar <= -5.6e-147: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NaChar <= 1.65e-256: tmp = t_0 elif NaChar <= 9e-206: tmp = t_1 elif NaChar <= 5.5e-135: tmp = t_0 elif (NaChar <= 1.1e-17) or not (NaChar <= 7.5e+242): tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -2.2e-18) tmp = t_1; elseif (NaChar <= -2.3e-125) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); elseif (NaChar <= -5.6e-147) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NaChar <= 1.65e-256) tmp = t_0; elseif (NaChar <= 9e-206) tmp = t_1; elseif (NaChar <= 5.5e-135) tmp = t_0; elseif ((NaChar <= 1.1e-17) || !(NaChar <= 7.5e+242)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)) / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -2.2e-18) tmp = t_1; elseif (NaChar <= -2.3e-125) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); elseif (NaChar <= -5.6e-147) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NaChar <= 1.65e-256) tmp = t_0; elseif (NaChar <= 9e-206) tmp = t_1; elseif (NaChar <= 5.5e-135) tmp = t_0; elseif ((NaChar <= 1.1e-17) || ~((NaChar <= 7.5e+242))) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.2e-18], t$95$1, If[LessEqual[NaChar, -2.3e-125], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -5.6e-147], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.65e-256], t$95$0, If[LessEqual[NaChar, 9e-206], t$95$1, If[LessEqual[NaChar, 5.5e-135], t$95$0, If[Or[LessEqual[NaChar, 1.1e-17], N[Not[LessEqual[NaChar, 7.5e+242]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.2 \cdot 10^{-18}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq -2.3 \cdot 10^{-125}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -5.6 \cdot 10^{-147}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.65 \cdot 10^{-256}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-206}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 5.5 \cdot 10^{-135}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{-17} \lor \neg \left(NaChar \leq 7.5 \cdot 10^{+242}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{1}{\frac{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}{NdChar}}\\
\end{array}
\end{array}
if NaChar < -2.1999999999999998e-18 or 1.65e-256 < NaChar < 8.9999999999999996e-206Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.7%
Taylor expanded in mu around inf 45.1%
associate-/l*44.0%
Simplified44.0%
Taylor expanded in KbT around 0 84.3%
associate--l+84.3%
sub-neg84.3%
associate-+r+84.3%
mul-1-neg84.3%
mul-1-neg84.3%
associate-+r+84.3%
sub-neg84.3%
associate--l+84.3%
+-commutative84.3%
Simplified84.3%
if -2.1999999999999998e-18 < NaChar < -2.2999999999999999e-125Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.9%
Taylor expanded in Ec around inf 75.5%
associate-*r/60.2%
mul-1-neg60.2%
Simplified75.5%
if -2.2999999999999999e-125 < NaChar < -5.6000000000000001e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
Taylor expanded in mu around inf 79.7%
associate-*r/79.7%
mul-1-neg79.7%
Simplified79.7%
if -5.6000000000000001e-147 < NaChar < 1.65e-256 or 8.9999999999999996e-206 < NaChar < 5.4999999999999999e-135Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 93.5%
Taylor expanded in Ev around 0 87.1%
if 5.4999999999999999e-135 < NaChar < 1.1e-17 or 7.49999999999999961e242 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 66.8%
Taylor expanded in EDonor around 0 63.4%
if 1.1e-17 < NaChar < 7.49999999999999961e242Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
div-inv99.8%
+-commutative99.8%
associate-+r-99.8%
associate-+l-99.8%
+-commutative99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 70.3%
Final simplification77.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= NaChar -2.4e-20)
t_1
(if (<= NaChar -1.55e-127)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(if (<= NaChar -8.8e-142)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NaChar 1.65e-256)
t_0
(if (<= NaChar 1.15e-202)
t_1
(if (<= NaChar 1.1e-134)
t_0
(if (<= NaChar 3.6e-13)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.4e-20) {
tmp = t_1;
} else if (NaChar <= -1.55e-127) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
} else if (NaChar <= -8.8e-142) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NaChar <= 1.65e-256) {
tmp = t_0;
} else if (NaChar <= 1.15e-202) {
tmp = t_1;
} else if (NaChar <= 1.1e-134) {
tmp = t_0;
} else if (NaChar <= 3.6e-13) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (nachar <= (-2.4d-20)) then
tmp = t_1
else if (nachar <= (-1.55d-127)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
else if (nachar <= (-8.8d-142)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (nachar <= 1.65d-256) then
tmp = t_0
else if (nachar <= 1.15d-202) then
tmp = t_1
else if (nachar <= 1.1d-134) then
tmp = t_0
else if (nachar <= 3.6d-13) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (NaChar <= -2.4e-20) {
tmp = t_1;
} else if (NaChar <= -1.55e-127) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else if (NaChar <= -8.8e-142) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NaChar <= 1.65e-256) {
tmp = t_0;
} else if (NaChar <= 1.15e-202) {
tmp = t_1;
} else if (NaChar <= 1.1e-134) {
tmp = t_0;
} else if (NaChar <= 3.6e-13) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if NaChar <= -2.4e-20: tmp = t_1 elif NaChar <= -1.55e-127: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) elif NaChar <= -8.8e-142: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NaChar <= 1.65e-256: tmp = t_0 elif NaChar <= 1.15e-202: tmp = t_1 elif NaChar <= 1.1e-134: tmp = t_0 elif NaChar <= 3.6e-13: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (NaChar <= -2.4e-20) tmp = t_1; elseif (NaChar <= -1.55e-127) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); elseif (NaChar <= -8.8e-142) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NaChar <= 1.65e-256) tmp = t_0; elseif (NaChar <= 1.15e-202) tmp = t_1; elseif (NaChar <= 1.1e-134) tmp = t_0; elseif (NaChar <= 3.6e-13) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (NaChar <= -2.4e-20) tmp = t_1; elseif (NaChar <= -1.55e-127) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); elseif (NaChar <= -8.8e-142) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NaChar <= 1.65e-256) tmp = t_0; elseif (NaChar <= 1.15e-202) tmp = t_1; elseif (NaChar <= 1.1e-134) tmp = t_0; elseif (NaChar <= 3.6e-13) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.4e-20], t$95$1, If[LessEqual[NaChar, -1.55e-127], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -8.8e-142], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.65e-256], t$95$0, If[LessEqual[NaChar, 1.15e-202], t$95$1, If[LessEqual[NaChar, 1.1e-134], t$95$0, If[LessEqual[NaChar, 3.6e-13], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.4 \cdot 10^{-20}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq -1.55 \cdot 10^{-127}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -8.8 \cdot 10^{-142}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.65 \cdot 10^{-256}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.15 \cdot 10^{-202}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 1.1 \cdot 10^{-134}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 3.6 \cdot 10^{-13}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -2.39999999999999993e-20 or 1.65e-256 < NaChar < 1.1499999999999999e-202Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.7%
Taylor expanded in mu around inf 45.1%
associate-/l*44.0%
Simplified44.0%
Taylor expanded in KbT around 0 84.3%
associate--l+84.3%
sub-neg84.3%
associate-+r+84.3%
mul-1-neg84.3%
mul-1-neg84.3%
associate-+r+84.3%
sub-neg84.3%
associate--l+84.3%
+-commutative84.3%
Simplified84.3%
if -2.39999999999999993e-20 < NaChar < -1.55e-127Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.9%
Taylor expanded in Ec around inf 75.5%
associate-*r/60.2%
mul-1-neg60.2%
Simplified75.5%
if -1.55e-127 < NaChar < -8.80000000000000066e-142Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
Taylor expanded in mu around inf 79.7%
associate-*r/79.7%
mul-1-neg79.7%
Simplified79.7%
if -8.80000000000000066e-142 < NaChar < 1.65e-256 or 1.1499999999999999e-202 < NaChar < 1.1e-134Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 93.5%
Taylor expanded in Ev around 0 87.1%
if 1.1e-134 < NaChar < 3.5999999999999998e-13Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in EDonor around 0 66.1%
if 3.5999999999999998e-13 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.9%
Final simplification81.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (<= NaChar -1.4e-19)
t_1
(if (<= NaChar -1e-125)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(if (<= NaChar -9.2e-148)
(+ t_2 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= NaChar 1.5e-256)
t_0
(if (<= NaChar 8.5e-207)
t_1
(if (<= NaChar 9e-135)
t_0
(if (<= NaChar 1.75e-12)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ mu Vef) Ec) KbT)))))
(+ t_2 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (NaChar <= -1.4e-19) {
tmp = t_1;
} else if (NaChar <= -1e-125) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
} else if (NaChar <= -9.2e-148) {
tmp = t_2 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (NaChar <= 1.5e-256) {
tmp = t_0;
} else if (NaChar <= 8.5e-207) {
tmp = t_1;
} else if (NaChar <= 9e-135) {
tmp = t_0;
} else if (NaChar <= 1.75e-12) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = t_2 + (NdChar / (1.0 + exp((EDonor / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_2 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if (nachar <= (-1.4d-19)) then
tmp = t_1
else if (nachar <= (-1d-125)) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
else if (nachar <= (-9.2d-148)) then
tmp = t_2 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (nachar <= 1.5d-256) then
tmp = t_0
else if (nachar <= 8.5d-207) then
tmp = t_1
else if (nachar <= 9d-135) then
tmp = t_0
else if (nachar <= 1.75d-12) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((mu + vef) - ec) / kbt))))
else
tmp = t_2 + (ndchar / (1.0d0 + exp((edonor / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if (NaChar <= -1.4e-19) {
tmp = t_1;
} else if (NaChar <= -1e-125) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else if (NaChar <= -9.2e-148) {
tmp = t_2 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (NaChar <= 1.5e-256) {
tmp = t_0;
} else if (NaChar <= 8.5e-207) {
tmp = t_1;
} else if (NaChar <= 9e-135) {
tmp = t_0;
} else if (NaChar <= 1.75e-12) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((mu + Vef) - Ec) / KbT))));
} else {
tmp = t_2 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_2 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if NaChar <= -1.4e-19: tmp = t_1 elif NaChar <= -1e-125: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) elif NaChar <= -9.2e-148: tmp = t_2 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif NaChar <= 1.5e-256: tmp = t_0 elif NaChar <= 8.5e-207: tmp = t_1 elif NaChar <= 9e-135: tmp = t_0 elif NaChar <= 1.75e-12: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((mu + Vef) - Ec) / KbT)))) else: tmp = t_2 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if (NaChar <= -1.4e-19) tmp = t_1; elseif (NaChar <= -1e-125) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); elseif (NaChar <= -9.2e-148) tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (NaChar <= 1.5e-256) tmp = t_0; elseif (NaChar <= 8.5e-207) tmp = t_1; elseif (NaChar <= 9e-135) tmp = t_0; elseif (NaChar <= 1.75e-12) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT))))); else tmp = Float64(t_2 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_2 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if (NaChar <= -1.4e-19) tmp = t_1; elseif (NaChar <= -1e-125) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); elseif (NaChar <= -9.2e-148) tmp = t_2 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (NaChar <= 1.5e-256) tmp = t_0; elseif (NaChar <= 8.5e-207) tmp = t_1; elseif (NaChar <= 9e-135) tmp = t_0; elseif (NaChar <= 1.75e-12) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((mu + Vef) - Ec) / KbT)))); else tmp = t_2 + (NdChar / (1.0 + exp((EDonor / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.4e-19], t$95$1, If[LessEqual[NaChar, -1e-125], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -9.2e-148], N[(t$95$2 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.5e-256], t$95$0, If[LessEqual[NaChar, 8.5e-207], t$95$1, If[LessEqual[NaChar, 9e-135], t$95$0, If[LessEqual[NaChar, 1.75e-12], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.4 \cdot 10^{-19}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq -1 \cdot 10^{-125}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;NaChar \leq -9.2 \cdot 10^{-148}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.5 \cdot 10^{-256}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 8.5 \cdot 10^{-207}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-135}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 1.75 \cdot 10^{-12}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(mu + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_2 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -1.40000000000000001e-19 or 1.4999999999999999e-256 < NaChar < 8.49999999999999962e-207Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.7%
Taylor expanded in mu around inf 45.1%
associate-/l*44.0%
Simplified44.0%
Taylor expanded in KbT around 0 84.3%
associate--l+84.3%
sub-neg84.3%
associate-+r+84.3%
mul-1-neg84.3%
mul-1-neg84.3%
associate-+r+84.3%
sub-neg84.3%
associate--l+84.3%
+-commutative84.3%
Simplified84.3%
if -1.40000000000000001e-19 < NaChar < -1.00000000000000001e-125Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 90.9%
Taylor expanded in Ec around inf 75.5%
associate-*r/60.2%
mul-1-neg60.2%
Simplified75.5%
if -1.00000000000000001e-125 < NaChar < -9.1999999999999999e-148Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
if -9.1999999999999999e-148 < NaChar < 1.4999999999999999e-256 or 8.49999999999999962e-207 < NaChar < 8.99999999999999975e-135Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 93.5%
Taylor expanded in Ev around 0 87.1%
if 8.99999999999999975e-135 < NaChar < 1.75e-12Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in EDonor around 0 66.1%
if 1.75e-12 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.9%
Final simplification81.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))))
(if (<= NaChar -1.75e-99)
t_1
(if (<= NaChar 1.65e-256)
t_2
(if (<= NaChar 2.5e-207)
t_1
(if (<= NaChar 4.5e-132)
t_2
(if (<= NaChar 1.3e-86)
t_0
(if (<= NaChar 3.8e-30)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= NaChar 1.26e+216)
(+
(/
NaChar
(+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/
1.0
(/
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT))
NdChar)))
(if (<= NaChar 2e+287) t_1 t_0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
double t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double tmp;
if (NaChar <= -1.75e-99) {
tmp = t_1;
} else if (NaChar <= 1.65e-256) {
tmp = t_2;
} else if (NaChar <= 2.5e-207) {
tmp = t_1;
} else if (NaChar <= 4.5e-132) {
tmp = t_2;
} else if (NaChar <= 1.3e-86) {
tmp = t_0;
} else if (NaChar <= 3.8e-30) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (NaChar <= 1.26e+216) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
} else if (NaChar <= 2e+287) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
t_1 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_2 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
if (nachar <= (-1.75d-99)) then
tmp = t_1
else if (nachar <= 1.65d-256) then
tmp = t_2
else if (nachar <= 2.5d-207) then
tmp = t_1
else if (nachar <= 4.5d-132) then
tmp = t_2
else if (nachar <= 1.3d-86) then
tmp = t_0
else if (nachar <= 3.8d-30) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (nachar <= 1.26d+216) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (1.0d0 / (((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)) / ndchar))
else if (nachar <= 2d+287) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
double t_1 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double tmp;
if (NaChar <= -1.75e-99) {
tmp = t_1;
} else if (NaChar <= 1.65e-256) {
tmp = t_2;
} else if (NaChar <= 2.5e-207) {
tmp = t_1;
} else if (NaChar <= 4.5e-132) {
tmp = t_2;
} else if (NaChar <= 1.3e-86) {
tmp = t_0;
} else if (NaChar <= 3.8e-30) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (NaChar <= 1.26e+216) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar));
} else if (NaChar <= 2e+287) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) t_1 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_2 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) tmp = 0 if NaChar <= -1.75e-99: tmp = t_1 elif NaChar <= 1.65e-256: tmp = t_2 elif NaChar <= 2.5e-207: tmp = t_1 elif NaChar <= 4.5e-132: tmp = t_2 elif NaChar <= 1.3e-86: tmp = t_0 elif NaChar <= 3.8e-30: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif NaChar <= 1.26e+216: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)) elif NaChar <= 2e+287: tmp = t_1 else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))) tmp = 0.0 if (NaChar <= -1.75e-99) tmp = t_1; elseif (NaChar <= 1.65e-256) tmp = t_2; elseif (NaChar <= 2.5e-207) tmp = t_1; elseif (NaChar <= 4.5e-132) tmp = t_2; elseif (NaChar <= 1.3e-86) tmp = t_0; elseif (NaChar <= 3.8e-30) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (NaChar <= 1.26e+216) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)) / NdChar))); elseif (NaChar <= 2e+287) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); t_1 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); tmp = 0.0; if (NaChar <= -1.75e-99) tmp = t_1; elseif (NaChar <= 1.65e-256) tmp = t_2; elseif (NaChar <= 2.5e-207) tmp = t_1; elseif (NaChar <= 4.5e-132) tmp = t_2; elseif (NaChar <= 1.3e-86) tmp = t_0; elseif (NaChar <= 3.8e-30) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (NaChar <= 1.26e+216) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (1.0 / (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)) / NdChar)); elseif (NaChar <= 2e+287) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.75e-99], t$95$1, If[LessEqual[NaChar, 1.65e-256], t$95$2, If[LessEqual[NaChar, 2.5e-207], t$95$1, If[LessEqual[NaChar, 4.5e-132], t$95$2, If[LessEqual[NaChar, 1.3e-86], t$95$0, If[LessEqual[NaChar, 3.8e-30], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.26e+216], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2e+287], t$95$1, t$95$0]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{if}\;NaChar \leq -1.75 \cdot 10^{-99}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 1.65 \cdot 10^{-256}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 2.5 \cdot 10^{-207}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 4.5 \cdot 10^{-132}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 1.3 \cdot 10^{-86}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NaChar \leq 3.8 \cdot 10^{-30}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.26 \cdot 10^{+216}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{1}{\frac{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}}{NdChar}}\\
\mathbf{elif}\;NaChar \leq 2 \cdot 10^{+287}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if NaChar < -1.7499999999999999e-99 or 1.65e-256 < NaChar < 2.50000000000000007e-207 or 1.2599999999999999e216 < NaChar < 2.0000000000000002e287Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.8%
Taylor expanded in mu around inf 43.9%
associate-/l*42.3%
Simplified42.3%
Taylor expanded in KbT around 0 80.1%
associate--l+80.1%
sub-neg80.1%
associate-+r+80.1%
mul-1-neg80.1%
mul-1-neg80.1%
associate-+r+80.1%
sub-neg80.1%
associate--l+80.1%
+-commutative80.1%
Simplified80.1%
if -1.7499999999999999e-99 < NaChar < 1.65e-256 or 2.50000000000000007e-207 < NaChar < 4.4999999999999999e-132Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 90.4%
Taylor expanded in Ev around 0 83.6%
if 4.4999999999999999e-132 < NaChar < 1.3000000000000001e-86 or 2.0000000000000002e287 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.1%
Taylor expanded in Ec around inf 61.3%
associate-*r/61.3%
mul-1-neg61.3%
Simplified61.3%
if 1.3000000000000001e-86 < NaChar < 3.8000000000000003e-30Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 69.8%
Taylor expanded in mu around inf 68.5%
associate-*r/68.5%
mul-1-neg68.5%
Simplified68.5%
if 3.8000000000000003e-30 < NaChar < 1.2599999999999999e216Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
div-inv99.8%
+-commutative99.8%
associate-+r-99.8%
associate-+l-99.8%
+-commutative99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 70.9%
Final simplification77.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
(if (<= EAccept -1.52e-271)
t_1
(if (<= EAccept 2.2e-258)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(if (<= EAccept 3.5e+24)
t_1
(if (<= EAccept 3.3e+86)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
double tmp;
if (EAccept <= -1.52e-271) {
tmp = t_1;
} else if (EAccept <= 2.2e-258) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (EAccept <= 3.5e+24) {
tmp = t_1;
} else if (EAccept <= 3.3e+86) {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
if (eaccept <= (-1.52d-271)) then
tmp = t_1
else if (eaccept <= 2.2d-258) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else if (eaccept <= 3.5d+24) then
tmp = t_1
else if (eaccept <= 3.3d+86) then
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
double tmp;
if (EAccept <= -1.52e-271) {
tmp = t_1;
} else if (EAccept <= 2.2e-258) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (EAccept <= 3.5e+24) {
tmp = t_1;
} else if (EAccept <= 3.3e+86) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) tmp = 0 if EAccept <= -1.52e-271: tmp = t_1 elif EAccept <= 2.2e-258: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) elif EAccept <= 3.5e+24: tmp = t_1 elif EAccept <= 3.3e+86: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))) tmp = 0.0 if (EAccept <= -1.52e-271) tmp = t_1; elseif (EAccept <= 2.2e-258) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); elseif (EAccept <= 3.5e+24) tmp = t_1; elseif (EAccept <= 3.3e+86) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); tmp = 0.0; if (EAccept <= -1.52e-271) tmp = t_1; elseif (EAccept <= 2.2e-258) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); elseif (EAccept <= 3.5e+24) tmp = t_1; elseif (EAccept <= 3.3e+86) tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -1.52e-271], t$95$1, If[LessEqual[EAccept, 2.2e-258], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.5e+24], t$95$1, If[LessEqual[EAccept, 3.3e+86], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{if}\;EAccept \leq -1.52 \cdot 10^{-271}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EAccept \leq 2.2 \cdot 10^{-258}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 3.5 \cdot 10^{+24}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EAccept \leq 3.3 \cdot 10^{+86}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < -1.51999999999999988e-271 or 2.20000000000000015e-258 < EAccept < 3.5000000000000002e24Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.1%
if -1.51999999999999988e-271 < EAccept < 2.20000000000000015e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.4%
Taylor expanded in mu around inf 32.5%
associate-/l*32.6%
Simplified32.6%
Taylor expanded in KbT around 0 71.5%
associate--l+71.5%
sub-neg71.5%
associate-+r+71.5%
mul-1-neg71.5%
mul-1-neg71.5%
associate-+r+71.5%
sub-neg71.5%
associate--l+71.5%
+-commutative71.5%
Simplified71.5%
if 3.5000000000000002e24 < EAccept < 3.2999999999999999e86Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 78.5%
if 3.2999999999999999e86 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 83.2%
Final simplification72.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))))
(if (<= Ev -1e+110)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= Ev -2.2e-222)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= Ev -1.35e-307)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -1e+110) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (Ev <= -2.2e-222) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
} else if (Ev <= -1.35e-307) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
if (ev <= (-1d+110)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (ev <= (-2.2d-222)) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
else if (ev <= (-1.35d-307)) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -1e+110) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (Ev <= -2.2e-222) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else if (Ev <= -1.35e-307) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) tmp = 0 if Ev <= -1e+110: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif Ev <= -2.2e-222: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) elif Ev <= -1.35e-307: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (Ev <= -1e+110) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (Ev <= -2.2e-222) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (Ev <= -1.35e-307) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); tmp = 0.0; if (Ev <= -1e+110) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (Ev <= -2.2e-222) tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); elseif (Ev <= -1.35e-307) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1e+110], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -2.2e-222], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.35e-307], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;Ev \leq -1 \cdot 10^{+110}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;Ev \leq -2.2 \cdot 10^{-222}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;Ev \leq -1.35 \cdot 10^{-307}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if Ev < -1e110Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 85.1%
if -1e110 < Ev < -2.2e-222Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.0%
if -2.2e-222 < Ev < -1.34999999999999993e-307Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.5%
Taylor expanded in mu around inf 35.9%
associate-/l*35.7%
Simplified35.7%
Taylor expanded in KbT around 0 73.1%
associate--l+73.1%
sub-neg73.1%
associate-+r+73.1%
mul-1-neg73.1%
mul-1-neg73.1%
associate-+r+73.1%
sub-neg73.1%
associate--l+73.1%
+-commutative73.1%
Simplified73.1%
if -1.34999999999999993e-307 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.6%
Final simplification78.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_3 (+ t_2 (/ NaChar (+ (/ Vef KbT) 2.0)))))
(if (<= NdChar -1.9e+29)
t_3
(if (<= NdChar -1.46e-25)
t_0
(if (<= NdChar -5.8e-60)
t_3
(if (<= NdChar -4.4e-111)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= NdChar -7.2e-207)
t_1
(if (<= NdChar 1.15e+34)
t_0
(if (<= NdChar 1.7e+135)
(+ t_2 (/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
(if (<= NdChar 4.4e+173) t_1 t_3))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = t_2 + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -1.9e+29) {
tmp = t_3;
} else if (NdChar <= -1.46e-25) {
tmp = t_0;
} else if (NdChar <= -5.8e-60) {
tmp = t_3;
} else if (NdChar <= -4.4e-111) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (NdChar <= -7.2e-207) {
tmp = t_1;
} else if (NdChar <= 1.15e+34) {
tmp = t_0;
} else if (NdChar <= 1.7e+135) {
tmp = t_2 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (NdChar <= 4.4e+173) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
t_2 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_3 = t_2 + (nachar / ((vef / kbt) + 2.0d0))
if (ndchar <= (-1.9d+29)) then
tmp = t_3
else if (ndchar <= (-1.46d-25)) then
tmp = t_0
else if (ndchar <= (-5.8d-60)) then
tmp = t_3
else if (ndchar <= (-4.4d-111)) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (ndchar <= (-7.2d-207)) then
tmp = t_1
else if (ndchar <= 1.15d+34) then
tmp = t_0
else if (ndchar <= 1.7d+135) then
tmp = t_2 + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else if (ndchar <= 4.4d+173) then
tmp = t_1
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
double t_2 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_3 = t_2 + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -1.9e+29) {
tmp = t_3;
} else if (NdChar <= -1.46e-25) {
tmp = t_0;
} else if (NdChar <= -5.8e-60) {
tmp = t_3;
} else if (NdChar <= -4.4e-111) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (NdChar <= -7.2e-207) {
tmp = t_1;
} else if (NdChar <= 1.15e+34) {
tmp = t_0;
} else if (NdChar <= 1.7e+135) {
tmp = t_2 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else if (NdChar <= 4.4e+173) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) t_2 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_3 = t_2 + (NaChar / ((Vef / KbT) + 2.0)) tmp = 0 if NdChar <= -1.9e+29: tmp = t_3 elif NdChar <= -1.46e-25: tmp = t_0 elif NdChar <= -5.8e-60: tmp = t_3 elif NdChar <= -4.4e-111: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif NdChar <= -7.2e-207: tmp = t_1 elif NdChar <= 1.15e+34: tmp = t_0 elif NdChar <= 1.7e+135: tmp = t_2 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) elif NdChar <= 4.4e+173: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_3 = Float64(t_2 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -1.9e+29) tmp = t_3; elseif (NdChar <= -1.46e-25) tmp = t_0; elseif (NdChar <= -5.8e-60) tmp = t_3; elseif (NdChar <= -4.4e-111) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (NdChar <= -7.2e-207) tmp = t_1; elseif (NdChar <= 1.15e+34) tmp = t_0; elseif (NdChar <= 1.7e+135) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); elseif (NdChar <= 4.4e+173) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); t_2 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_3 = t_2 + (NaChar / ((Vef / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -1.9e+29) tmp = t_3; elseif (NdChar <= -1.46e-25) tmp = t_0; elseif (NdChar <= -5.8e-60) tmp = t_3; elseif (NdChar <= -4.4e-111) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (NdChar <= -7.2e-207) tmp = t_1; elseif (NdChar <= 1.15e+34) tmp = t_0; elseif (NdChar <= 1.7e+135) tmp = t_2 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); elseif (NdChar <= 4.4e+173) tmp = t_1; else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.9e+29], t$95$3, If[LessEqual[NdChar, -1.46e-25], t$95$0, If[LessEqual[NdChar, -5.8e-60], t$95$3, If[LessEqual[NdChar, -4.4e-111], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -7.2e-207], t$95$1, If[LessEqual[NdChar, 1.15e+34], t$95$0, If[LessEqual[NdChar, 1.7e+135], N[(t$95$2 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.4e+173], t$95$1, t$95$3]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_3 := t_2 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -1.9 \cdot 10^{+29}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NdChar \leq -1.46 \cdot 10^{-25}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq -5.8 \cdot 10^{-60}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;NdChar \leq -4.4 \cdot 10^{-111}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq -7.2 \cdot 10^{-207}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+34}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 1.7 \cdot 10^{+135}:\\
\;\;\;\;t_2 + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{elif}\;NdChar \leq 4.4 \cdot 10^{+173}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if NdChar < -1.89999999999999985e29 or -1.46e-25 < NdChar < -5.7999999999999999e-60 or 4.4e173 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.9%
Taylor expanded in Vef around 0 71.6%
if -1.89999999999999985e29 < NdChar < -1.46e-25 or -7.1999999999999993e-207 < NdChar < 1.1499999999999999e34Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
Taylor expanded in mu around inf 49.1%
associate-/l*46.3%
Simplified46.3%
Taylor expanded in KbT around 0 81.7%
associate--l+81.7%
sub-neg81.7%
associate-+r+81.7%
mul-1-neg81.7%
mul-1-neg81.7%
associate-+r+81.7%
sub-neg81.7%
associate--l+81.7%
+-commutative81.7%
Simplified81.7%
if -5.7999999999999999e-60 < NdChar < -4.4e-111Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 71.2%
Taylor expanded in Vef around inf 42.4%
Taylor expanded in Vef around 0 23.3%
Taylor expanded in NdChar around inf 71.2%
if -4.4e-111 < NdChar < -7.1999999999999993e-207 or 1.70000000000000005e135 < NdChar < 4.4e173Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.3%
Taylor expanded in mu around 0 74.2%
if 1.1499999999999999e34 < NdChar < 1.70000000000000005e135Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 76.9%
Taylor expanded in Ev around 0 76.4%
Final simplification76.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -8e+27)
(not
(or (<= NdChar -1.65e-28)
(and (not (<= NdChar -2.8e-57))
(or (<= NdChar 4.3e+33)
(and (not (<= NdChar 3.6e+130))
(<= NdChar 1.22e+177)))))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -8e+27) || !((NdChar <= -1.65e-28) || (!(NdChar <= -2.8e-57) && ((NdChar <= 4.3e+33) || (!(NdChar <= 3.6e+130) && (NdChar <= 1.22e+177)))))) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-8d+27)) .or. (.not. (ndchar <= (-1.65d-28)) .or. (.not. (ndchar <= (-2.8d-57))) .and. (ndchar <= 4.3d+33) .or. (.not. (ndchar <= 3.6d+130)) .and. (ndchar <= 1.22d+177))) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
else
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -8e+27) || !((NdChar <= -1.65e-28) || (!(NdChar <= -2.8e-57) && ((NdChar <= 4.3e+33) || (!(NdChar <= 3.6e+130) && (NdChar <= 1.22e+177)))))) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -8e+27) or not ((NdChar <= -1.65e-28) or (not (NdChar <= -2.8e-57) and ((NdChar <= 4.3e+33) or (not (NdChar <= 3.6e+130) and (NdChar <= 1.22e+177))))): tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -8e+27) || !((NdChar <= -1.65e-28) || (!(NdChar <= -2.8e-57) && ((NdChar <= 4.3e+33) || (!(NdChar <= 3.6e+130) && (NdChar <= 1.22e+177)))))) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -8e+27) || ~(((NdChar <= -1.65e-28) || (~((NdChar <= -2.8e-57)) && ((NdChar <= 4.3e+33) || (~((NdChar <= 3.6e+130)) && (NdChar <= 1.22e+177))))))) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); else tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -8e+27], N[Not[Or[LessEqual[NdChar, -1.65e-28], And[N[Not[LessEqual[NdChar, -2.8e-57]], $MachinePrecision], Or[LessEqual[NdChar, 4.3e+33], And[N[Not[LessEqual[NdChar, 3.6e+130]], $MachinePrecision], LessEqual[NdChar, 1.22e+177]]]]]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -8 \cdot 10^{+27} \lor \neg \left(NdChar \leq -1.65 \cdot 10^{-28} \lor \neg \left(NdChar \leq -2.8 \cdot 10^{-57}\right) \land \left(NdChar \leq 4.3 \cdot 10^{+33} \lor \neg \left(NdChar \leq 3.6 \cdot 10^{+130}\right) \land NdChar \leq 1.22 \cdot 10^{+177}\right)\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -8.0000000000000001e27 or -1.6500000000000001e-28 < NdChar < -2.7999999999999999e-57 or 4.30000000000000028e33 < NdChar < 3.6000000000000001e130 or 1.21999999999999999e177 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.2%
Taylor expanded in Vef around 0 71.0%
if -8.0000000000000001e27 < NdChar < -1.6500000000000001e-28 or -2.7999999999999999e-57 < NdChar < 4.30000000000000028e33 or 3.6000000000000001e130 < NdChar < 1.21999999999999999e177Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.6%
Taylor expanded in mu around inf 45.4%
associate-/l*43.4%
Simplified43.4%
Taylor expanded in KbT around 0 76.4%
associate--l+76.4%
sub-neg76.4%
associate-+r+76.4%
mul-1-neg76.4%
mul-1-neg76.4%
associate-+r+76.4%
sub-neg76.4%
associate--l+76.4%
+-commutative76.4%
Simplified76.4%
Final simplification73.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
(if (<= NdChar -4.6e+27)
t_1
(if (<= NdChar -7.5e-29)
t_0
(if (<= NdChar -7e-56)
t_1
(if (<= NdChar 1.1e+34)
t_0
(if (or (<= NdChar 1.2e+134) (not (<= NdChar 4.4e+173)))
t_1
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar (+ (/ mu KbT) 2.0))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -4.6e+27) {
tmp = t_1;
} else if (NdChar <= -7.5e-29) {
tmp = t_0;
} else if (NdChar <= -7e-56) {
tmp = t_1;
} else if (NdChar <= 1.1e+34) {
tmp = t_0;
} else if ((NdChar <= 1.2e+134) || !(NdChar <= 4.4e+173)) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
t_1 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
if (ndchar <= (-4.6d+27)) then
tmp = t_1
else if (ndchar <= (-7.5d-29)) then
tmp = t_0
else if (ndchar <= (-7d-56)) then
tmp = t_1
else if (ndchar <= 1.1d+34) then
tmp = t_0
else if ((ndchar <= 1.2d+134) .or. (.not. (ndchar <= 4.4d+173))) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / ((mu / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
double tmp;
if (NdChar <= -4.6e+27) {
tmp = t_1;
} else if (NdChar <= -7.5e-29) {
tmp = t_0;
} else if (NdChar <= -7e-56) {
tmp = t_1;
} else if (NdChar <= 1.1e+34) {
tmp = t_0;
} else if ((NdChar <= 1.2e+134) || !(NdChar <= 4.4e+173)) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) t_1 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) tmp = 0 if NdChar <= -4.6e+27: tmp = t_1 elif NdChar <= -7.5e-29: tmp = t_0 elif NdChar <= -7e-56: tmp = t_1 elif NdChar <= 1.1e+34: tmp = t_0 elif (NdChar <= 1.2e+134) or not (NdChar <= 4.4e+173): tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -4.6e+27) tmp = t_1; elseif (NdChar <= -7.5e-29) tmp = t_0; elseif (NdChar <= -7e-56) tmp = t_1; elseif (NdChar <= 1.1e+34) tmp = t_0; elseif ((NdChar <= 1.2e+134) || !(NdChar <= 4.4e+173)) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); t_1 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -4.6e+27) tmp = t_1; elseif (NdChar <= -7.5e-29) tmp = t_0; elseif (NdChar <= -7e-56) tmp = t_1; elseif (NdChar <= 1.1e+34) tmp = t_0; elseif ((NdChar <= 1.2e+134) || ~((NdChar <= 4.4e+173))) tmp = t_1; else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4.6e+27], t$95$1, If[LessEqual[NdChar, -7.5e-29], t$95$0, If[LessEqual[NdChar, -7e-56], t$95$1, If[LessEqual[NdChar, 1.1e+34], t$95$0, If[Or[LessEqual[NdChar, 1.2e+134], N[Not[LessEqual[NdChar, 4.4e+173]], $MachinePrecision]], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -4.6 \cdot 10^{+27}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq -7.5 \cdot 10^{-29}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq -7 \cdot 10^{-56}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NdChar \leq 1.1 \cdot 10^{+34}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;NdChar \leq 1.2 \cdot 10^{+134} \lor \neg \left(NdChar \leq 4.4 \cdot 10^{+173}\right):\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -4.6000000000000001e27 or -7.50000000000000006e-29 < NdChar < -6.9999999999999996e-56 or 1.1000000000000001e34 < NdChar < 1.20000000000000003e134 or 4.4e173 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 80.3%
Taylor expanded in Vef around 0 71.2%
if -4.6000000000000001e27 < NdChar < -7.50000000000000006e-29 or -6.9999999999999996e-56 < NdChar < 1.1000000000000001e34Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.9%
Taylor expanded in mu around inf 45.5%
associate-/l*43.3%
Simplified43.3%
Taylor expanded in KbT around 0 75.9%
associate--l+75.9%
sub-neg75.9%
associate-+r+75.9%
mul-1-neg75.9%
mul-1-neg75.9%
associate-+r+75.9%
sub-neg75.9%
associate--l+75.9%
+-commutative75.9%
Simplified75.9%
if 1.20000000000000003e134 < NdChar < 4.4e173Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.4%
Taylor expanded in mu around 0 83.8%
Final simplification73.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
(if (<= KbT -8.8e-64)
t_0
(if (<= KbT -9e-90)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(if (<= KbT 2.5e+109)
t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))
(/ NdChar 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -8.8e-64) {
tmp = t_0;
} else if (KbT <= -9e-90) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else if (KbT <= 2.5e+109) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
if (kbt <= (-8.8d-64)) then
tmp = t_0
else if (kbt <= (-9d-90)) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else if (kbt <= 2.5d+109) then
tmp = t_0
else
tmp = (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
double tmp;
if (KbT <= -8.8e-64) {
tmp = t_0;
} else if (KbT <= -9e-90) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else if (KbT <= 2.5e+109) {
tmp = t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) tmp = 0 if KbT <= -8.8e-64: tmp = t_0 elif KbT <= -9e-90: tmp = NdChar / (1.0 + math.exp((mu / KbT))) elif KbT <= 2.5e+109: tmp = t_0 else: tmp = (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) tmp = 0.0 if (KbT <= -8.8e-64) tmp = t_0; elseif (KbT <= -9e-90) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); elseif (KbT <= 2.5e+109) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); tmp = 0.0; if (KbT <= -8.8e-64) tmp = t_0; elseif (KbT <= -9e-90) tmp = NdChar / (1.0 + exp((mu / KbT))); elseif (KbT <= 2.5e+109) tmp = t_0; else tmp = (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -8.8e-64], t$95$0, If[LessEqual[KbT, -9e-90], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.5e+109], t$95$0, N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{if}\;KbT \leq -8.8 \cdot 10^{-64}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -9 \cdot 10^{-90}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;KbT \leq 2.5 \cdot 10^{+109}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -8.7999999999999998e-64 or -9.00000000000000017e-90 < KbT < 2.5000000000000001e109Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.6%
Taylor expanded in mu around inf 32.6%
associate-/l*32.2%
Simplified32.2%
Taylor expanded in KbT around 0 64.1%
associate--l+64.1%
sub-neg64.1%
associate-+r+64.1%
mul-1-neg64.1%
mul-1-neg64.1%
associate-+r+64.1%
sub-neg64.1%
associate--l+64.1%
+-commutative64.1%
Simplified64.1%
if -8.7999999999999998e-64 < KbT < -9.00000000000000017e-90Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.4%
Taylor expanded in Vef around inf 88.4%
Taylor expanded in Vef around 0 74.6%
Taylor expanded in NdChar around inf 88.4%
if 2.5000000000000001e109 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 74.9%
Final simplification66.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -2.05e+105) (not (<= NaChar 5.5e-27))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)) (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.05e+105) || !(NaChar <= 5.5e-27)) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = NdChar / (1.0 + exp((mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-2.05d+105)) .or. (.not. (nachar <= 5.5d-27))) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.05e+105) || !(NaChar <= 5.5e-27)) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.05e+105) or not (NaChar <= 5.5e-27): tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) else: tmp = NdChar / (1.0 + math.exp((mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.05e+105) || !(NaChar <= 5.5e-27)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.05e+105) || ~((NaChar <= 5.5e-27))) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); else tmp = NdChar / (1.0 + exp((mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.05e+105], N[Not[LessEqual[NaChar, 5.5e-27]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.05 \cdot 10^{+105} \lor \neg \left(NaChar \leq 5.5 \cdot 10^{-27}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -2.0500000000000001e105 or 5.5000000000000002e-27 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.1%
Taylor expanded in EAccept around inf 47.4%
if -2.0500000000000001e105 < NaChar < 5.5000000000000002e-27Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 61.4%
Taylor expanded in Vef around inf 42.8%
Taylor expanded in Vef around 0 36.4%
Taylor expanded in NdChar around inf 39.8%
Final simplification43.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4.3e-60)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
(if (<= KbT 3.4e-214)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4.3e-60) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 3.4e-214) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-4.3d-60)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else if (kbt <= 3.4d-214) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4.3e-60) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else if (KbT <= 3.4e-214) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4.3e-60: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) elif KbT <= 3.4e-214: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4.3e-60) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); elseif (KbT <= 3.4e-214) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4.3e-60) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); elseif (KbT <= 3.4e-214) tmp = NdChar / (1.0 + exp((mu / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4.3e-60], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.4e-214], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.3 \cdot 10^{-60}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{elif}\;KbT \leq 3.4 \cdot 10^{-214}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if KbT < -4.3000000000000001e-60Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.6%
Taylor expanded in EAccept around inf 44.1%
if -4.3000000000000001e-60 < KbT < 3.3999999999999999e-214Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.2%
Taylor expanded in Vef around inf 49.5%
Taylor expanded in Vef around 0 38.6%
Taylor expanded in NdChar around inf 44.6%
if 3.3999999999999999e-214 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.9%
Taylor expanded in Ev around inf 35.4%
Final simplification40.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.2%
Taylor expanded in mu around inf 30.5%
associate-/l*30.1%
Simplified30.1%
Taylor expanded in KbT around 0 60.6%
associate--l+60.6%
sub-neg60.6%
associate-+r+60.6%
mul-1-neg60.6%
mul-1-neg60.6%
associate-+r+60.6%
sub-neg60.6%
associate--l+60.6%
+-commutative60.6%
Simplified60.6%
Final simplification60.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -4.5e+106)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 8e+101)
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(+ (/ NdChar 2.0) (/ NaChar (+ (/ EAccept KbT) 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4.5e+106) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 8e+101) {
tmp = NdChar / (1.0 + exp((mu / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-4.5d+106)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 8d+101) then
tmp = ndchar / (1.0d0 + exp((mu / kbt)))
else
tmp = (ndchar / 2.0d0) + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -4.5e+106) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 8e+101) {
tmp = NdChar / (1.0 + Math.exp((mu / KbT)));
} else {
tmp = (NdChar / 2.0) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -4.5e+106: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 8e+101: tmp = NdChar / (1.0 + math.exp((mu / KbT))) else: tmp = (NdChar / 2.0) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -4.5e+106) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 8e+101) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -4.5e+106) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 8e+101) tmp = NdChar / (1.0 + exp((mu / KbT))); else tmp = (NdChar / 2.0) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -4.5e+106], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 8e+101], N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -4.5 \cdot 10^{+106}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 8 \cdot 10^{+101}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -4.4999999999999997e106Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 64.9%
Taylor expanded in Vef around inf 49.1%
Taylor expanded in Vef around 0 46.9%
Taylor expanded in KbT around inf 45.7%
distribute-lft-out45.7%
Simplified45.7%
if -4.4999999999999997e106 < KbT < 7.9999999999999998e101Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 63.9%
Taylor expanded in Vef around inf 40.5%
Taylor expanded in Vef around 0 27.2%
Taylor expanded in NdChar around inf 33.1%
if 7.9999999999999998e101 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 73.0%
Taylor expanded in EAccept around inf 61.4%
Taylor expanded in EAccept around 0 60.5%
Final simplification39.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Vef 1.32e+135) (* 0.5 (+ NdChar NaChar)) (/ NaChar (+ (/ Vef KbT) 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.32e+135) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((Vef / KbT) + 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (vef <= 1.32d+135) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / ((vef / kbt) + 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Vef <= 1.32e+135) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((Vef / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Vef <= 1.32e+135: tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((Vef / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Vef <= 1.32e+135) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Vef <= 1.32e+135) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((Vef / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Vef, 1.32e+135], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq 1.32 \cdot 10^{+135}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if Vef < 1.32e135Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 70.0%
Taylor expanded in Vef around inf 47.4%
Taylor expanded in Vef around 0 38.0%
Taylor expanded in KbT around inf 28.3%
distribute-lft-out28.3%
Simplified28.3%
if 1.32e135 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 40.3%
Taylor expanded in Vef around inf 31.5%
Taylor expanded in Vef around 0 16.1%
Taylor expanded in NdChar around 0 28.7%
Final simplification28.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 66.4%
Taylor expanded in Vef around inf 45.4%
Taylor expanded in Vef around 0 35.4%
Taylor expanded in KbT around inf 26.4%
distribute-lft-out26.4%
Simplified26.4%
Final simplification26.4%
herbie shell --seed 2024011
(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))))))