
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 25 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT))))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef Ev) KbT)))))))
(if (<= mu -9.4e+114)
t_1
(if (<= mu -3.1e+43)
t_2
(if (<= mu -1.75e+27)
t_1
(if (<= mu -3.2e-70)
t_0
(if (<= mu -3.2e-111)
t_2
(if (<= mu -2.9e-146)
t_0
(if (<= mu 3.2e+172)
t_2
(+
NdChar
(/
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) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
double t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT))));
double tmp;
if (mu <= -9.4e+114) {
tmp = t_1;
} else if (mu <= -3.1e+43) {
tmp = t_2;
} else if (mu <= -1.75e+27) {
tmp = t_1;
} else if (mu <= -3.2e-70) {
tmp = t_0;
} else if (mu <= -3.2e-111) {
tmp = t_2;
} else if (mu <= -2.9e-146) {
tmp = t_0;
} else if (mu <= 3.2e+172) {
tmp = t_2;
} else {
tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (EAccept + (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) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
t_2 = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp(((vef + ev) / kbt))))
if (mu <= (-9.4d+114)) then
tmp = t_1
else if (mu <= (-3.1d+43)) then
tmp = t_2
else if (mu <= (-1.75d+27)) then
tmp = t_1
else if (mu <= (-3.2d-70)) then
tmp = t_0
else if (mu <= (-3.2d-111)) then
tmp = t_2
else if (mu <= (-2.9d-146)) then
tmp = t_0
else if (mu <= 3.2d+172) then
tmp = t_2
else
tmp = ndchar + (nachar / (1.0d0 + exp(((vef + (eaccept + (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 t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
double t_2 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + Ev) / KbT))));
double tmp;
if (mu <= -9.4e+114) {
tmp = t_1;
} else if (mu <= -3.1e+43) {
tmp = t_2;
} else if (mu <= -1.75e+27) {
tmp = t_1;
} else if (mu <= -3.2e-70) {
tmp = t_0;
} else if (mu <= -3.2e-111) {
tmp = t_2;
} else if (mu <= -2.9e-146) {
tmp = t_0;
} else if (mu <= 3.2e+172) {
tmp = t_2;
} else {
tmp = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) t_2 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + Ev) / KbT)))) tmp = 0 if mu <= -9.4e+114: tmp = t_1 elif mu <= -3.1e+43: tmp = t_2 elif mu <= -1.75e+27: tmp = t_1 elif mu <= -3.2e-70: tmp = t_0 elif mu <= -3.2e-111: tmp = t_2 elif mu <= -2.9e-146: tmp = t_0 elif mu <= 3.2e+172: tmp = t_2 else: tmp = NdChar + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Ev) / KbT))))) tmp = 0.0 if (mu <= -9.4e+114) tmp = t_1; elseif (mu <= -3.1e+43) tmp = t_2; elseif (mu <= -1.75e+27) tmp = t_1; elseif (mu <= -3.2e-70) tmp = t_0; elseif (mu <= -3.2e-111) tmp = t_2; elseif (mu <= -2.9e-146) tmp = t_0; elseif (mu <= 3.2e+172) tmp = t_2; else tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT)))); tmp = 0.0; if (mu <= -9.4e+114) tmp = t_1; elseif (mu <= -3.1e+43) tmp = t_2; elseif (mu <= -1.75e+27) tmp = t_1; elseif (mu <= -3.2e-70) tmp = t_0; elseif (mu <= -3.2e-111) tmp = t_2; elseif (mu <= -2.9e-146) tmp = t_0; elseif (mu <= 3.2e+172) tmp = t_2; else tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / 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[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(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$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -9.4e+114], t$95$1, If[LessEqual[mu, -3.1e+43], t$95$2, If[LessEqual[mu, -1.75e+27], t$95$1, If[LessEqual[mu, -3.2e-70], t$95$0, If[LessEqual[mu, -3.2e-111], t$95$2, If[LessEqual[mu, -2.9e-146], t$95$0, If[LessEqual[mu, 3.2e+172], t$95$2, N[(NdChar + 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}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + Ev}{KbT}}}\\
\mathbf{if}\;mu \leq -9.4 \cdot 10^{+114}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -3.1 \cdot 10^{+43}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -1.75 \cdot 10^{+27}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq -3.2 \cdot 10^{-70}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq -3.2 \cdot 10^{-111}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -2.9 \cdot 10^{-146}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;mu \leq 3.2 \cdot 10^{+172}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if mu < -9.4000000000000001e114 or -3.1000000000000002e43 < mu < -1.7500000000000001e27Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.2%
Taylor expanded in mu around inf 82.3%
associate-*r/82.3%
mul-1-neg82.3%
Simplified82.3%
if -9.4000000000000001e114 < mu < -3.1000000000000002e43 or -3.1999999999999997e-70 < mu < -3.1999999999999998e-111 or -2.90000000000000011e-146 < mu < 3.19999999999999985e172Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.8%
Taylor expanded in Ev around inf 72.5%
if -1.7500000000000001e27 < mu < -3.1999999999999997e-70 or -3.1999999999999998e-111 < mu < -2.90000000000000011e-146Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 93.9%
Taylor expanded in EAccept around inf 70.8%
if 3.19999999999999985e172 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.1%
associate-+r+35.1%
Simplified35.1%
Taylor expanded in mu around inf 35.9%
Taylor expanded in mu around 0 84.1%
Final simplification74.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= mu -1.05e+175)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= mu -3.65e-196)
t_1
(if (<= mu 4.5e-259)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef Ev) KbT)))))
(if (<= mu 3.1e+173) t_1 (+ NdChar t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (mu <= -1.05e+175) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (mu <= -3.65e-196) {
tmp = t_1;
} else if (mu <= 4.5e-259) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT))));
} else if (mu <= 3.1e+173) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (mu <= (-1.05d+175)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (mu <= (-3.65d-196)) then
tmp = t_1
else if (mu <= 4.5d-259) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp(((vef + ev) / kbt))))
else if (mu <= 3.1d+173) then
tmp = t_1
else
tmp = ndchar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (mu <= -1.05e+175) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (mu <= -3.65e-196) {
tmp = t_1;
} else if (mu <= 4.5e-259) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + Ev) / KbT))));
} else if (mu <= 3.1e+173) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if mu <= -1.05e+175: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif mu <= -3.65e-196: tmp = t_1 elif mu <= 4.5e-259: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + Ev) / KbT)))) elif mu <= 3.1e+173: tmp = t_1 else: tmp = NdChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (mu <= -1.05e+175) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (mu <= -3.65e-196) tmp = t_1; elseif (mu <= 4.5e-259) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Ev) / KbT))))); elseif (mu <= 3.1e+173) tmp = t_1; else tmp = Float64(NdChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (mu <= -1.05e+175) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (mu <= -3.65e-196) tmp = t_1; elseif (mu <= 4.5e-259) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT)))); elseif (mu <= 3.1e+173) tmp = t_1; else tmp = NdChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.05e+175], 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[mu, -3.65e-196], t$95$1, If[LessEqual[mu, 4.5e-259], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.1e+173], t$95$1, N[(NdChar + t$95$0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -1.05 \cdot 10^{+175}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;mu \leq -3.65 \cdot 10^{-196}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 4.5 \cdot 10^{-259}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 3.1 \cdot 10^{+173}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;NdChar + t_0\\
\end{array}
\end{array}
if mu < -1.05e175Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.3%
Taylor expanded in mu around inf 85.6%
associate-*r/85.6%
mul-1-neg85.6%
Simplified85.6%
if -1.05e175 < mu < -3.64999999999999985e-196 or 4.49999999999999974e-259 < mu < 3.1e173Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.8%
if -3.64999999999999985e-196 < mu < 4.49999999999999974e-259Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.8%
Taylor expanded in Ev around inf 73.4%
if 3.1e173 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.1%
associate-+r+35.1%
Simplified35.1%
Taylor expanded in mu around inf 35.9%
Taylor expanded in mu around 0 84.1%
Final simplification80.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= mu -1.65e+173)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= mu -5.5e-168)
t_1
(if (<= mu 2.25e-258)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 2.9e+173) t_1 (+ NdChar t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (mu <= -1.65e+173) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (mu <= -5.5e-168) {
tmp = t_1;
} else if (mu <= 2.25e-258) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 2.9e+173) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (mu <= (-1.65d+173)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (mu <= (-5.5d-168)) then
tmp = t_1
else if (mu <= 2.25d-258) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 2.9d+173) then
tmp = t_1
else
tmp = ndchar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (mu <= -1.65e+173) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (mu <= -5.5e-168) {
tmp = t_1;
} else if (mu <= 2.25e-258) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 2.9e+173) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if mu <= -1.65e+173: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif mu <= -5.5e-168: tmp = t_1 elif mu <= 2.25e-258: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 2.9e+173: tmp = t_1 else: tmp = NdChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (mu <= -1.65e+173) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (mu <= -5.5e-168) tmp = t_1; elseif (mu <= 2.25e-258) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 2.9e+173) tmp = t_1; else tmp = Float64(NdChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (mu <= -1.65e+173) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (mu <= -5.5e-168) tmp = t_1; elseif (mu <= 2.25e-258) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 2.9e+173) tmp = t_1; else tmp = NdChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.65e+173], 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[mu, -5.5e-168], t$95$1, If[LessEqual[mu, 2.25e-258], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.9e+173], t$95$1, N[(NdChar + t$95$0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;mu \leq -1.65 \cdot 10^{+173}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;mu \leq -5.5 \cdot 10^{-168}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 2.25 \cdot 10^{-258}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.9 \cdot 10^{+173}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;NdChar + t_0\\
\end{array}
\end{array}
if mu < -1.64999999999999998e173Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.3%
Taylor expanded in mu around inf 85.6%
associate-*r/85.6%
mul-1-neg85.6%
Simplified85.6%
if -1.64999999999999998e173 < mu < -5.4999999999999999e-168 or 2.25000000000000004e-258 < mu < 2.90000000000000007e173Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 80.6%
if -5.4999999999999999e-168 < mu < 2.25000000000000004e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.5%
if 2.90000000000000007e173 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.1%
associate-+r+35.1%
Simplified35.1%
Taylor expanded in mu around inf 35.9%
Taylor expanded in mu around 0 84.1%
Final simplification82.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT))))))
(t_2 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))))
(if (<= mu -1.05e+27)
t_2
(if (<= mu -6.9e-168)
t_1
(if (<= mu 1.5e-258)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(if (<= mu 4.5e+26) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double tmp;
if (mu <= -1.05e+27) {
tmp = t_2;
} else if (mu <= -6.9e-168) {
tmp = t_1;
} else if (mu <= 1.5e-258) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else if (mu <= 4.5e+26) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
t_2 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
if (mu <= (-1.05d+27)) then
tmp = t_2
else if (mu <= (-6.9d-168)) then
tmp = t_1
else if (mu <= 1.5d-258) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else if (mu <= 4.5d+26) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double t_2 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double tmp;
if (mu <= -1.05e+27) {
tmp = t_2;
} else if (mu <= -6.9e-168) {
tmp = t_1;
} else if (mu <= 1.5e-258) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else if (mu <= 4.5e+26) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) t_2 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) tmp = 0 if mu <= -1.05e+27: tmp = t_2 elif mu <= -6.9e-168: tmp = t_1 elif mu <= 1.5e-258: tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) elif mu <= 4.5e+26: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) t_2 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) tmp = 0.0 if (mu <= -1.05e+27) tmp = t_2; elseif (mu <= -6.9e-168) tmp = t_1; elseif (mu <= 1.5e-258) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); elseif (mu <= 4.5e+26) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); t_2 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); tmp = 0.0; if (mu <= -1.05e+27) tmp = t_2; elseif (mu <= -6.9e-168) tmp = t_1; elseif (mu <= 1.5e-258) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); elseif (mu <= 4.5e+26) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -1.05e+27], t$95$2, If[LessEqual[mu, -6.9e-168], t$95$1, If[LessEqual[mu, 1.5e-258], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4.5e+26], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -1.05 \cdot 10^{+27}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;mu \leq -6.9 \cdot 10^{-168}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 1.5 \cdot 10^{-258}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{elif}\;mu \leq 4.5 \cdot 10^{+26}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if mu < -1.04999999999999997e27 or 4.49999999999999978e26 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.6%
if -1.04999999999999997e27 < mu < -6.9e-168 or 1.5000000000000001e-258 < mu < 4.49999999999999978e26Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.7%
if -6.9e-168 < mu < 1.5000000000000001e-258Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.5%
Final simplification84.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))))
(if (<= Ec -4.1e+112)
t_1
(if (<= Ec -8.5e-45)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Ec 1.6e+26)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((-Ec / KbT))));
double tmp;
if (Ec <= -4.1e+112) {
tmp = t_1;
} else if (Ec <= -8.5e-45) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Ec <= 1.6e+26) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((-ec / kbt))))
if (ec <= (-4.1d+112)) then
tmp = t_1
else if (ec <= (-8.5d-45)) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (ec <= 1.6d+26) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
double tmp;
if (Ec <= -4.1e+112) {
tmp = t_1;
} else if (Ec <= -8.5e-45) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Ec <= 1.6e+26) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) tmp = 0 if Ec <= -4.1e+112: tmp = t_1 elif Ec <= -8.5e-45: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Ec <= 1.6e+26: tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))) tmp = 0.0 if (Ec <= -4.1e+112) tmp = t_1; elseif (Ec <= -8.5e-45) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Ec <= 1.6e+26) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((-Ec / KbT)))); tmp = 0.0; if (Ec <= -4.1e+112) tmp = t_1; elseif (Ec <= -8.5e-45) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Ec <= 1.6e+26) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ec, -4.1e+112], t$95$1, If[LessEqual[Ec, -8.5e-45], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ec, 1.6e+26], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{if}\;Ec \leq -4.1 \cdot 10^{+112}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Ec \leq -8.5 \cdot 10^{-45}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Ec \leq 1.6 \cdot 10^{+26}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if Ec < -4.09999999999999976e112 or 1.60000000000000014e26 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 89.1%
associate-*r/37.3%
mul-1-neg37.3%
Simplified89.1%
if -4.09999999999999976e112 < Ec < -8.50000000000000041e-45Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 83.2%
if -8.50000000000000041e-45 < Ec < 1.60000000000000014e26Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.2%
Final simplification84.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -2.75e+131)
t_1
(if (<= EDonor -5.1e+16)
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EDonor 1.2e+180)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.75e+131) {
tmp = t_1;
} else if (EDonor <= -5.1e+16) {
tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EDonor <= 1.2e+180) {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-2.75d+131)) then
tmp = t_1
else if (edonor <= (-5.1d+16)) then
tmp = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (edonor <= 1.2d+180) then
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -2.75e+131) {
tmp = t_1;
} else if (EDonor <= -5.1e+16) {
tmp = (NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EDonor <= 1.2e+180) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -2.75e+131: tmp = t_1 elif EDonor <= -5.1e+16: tmp = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EDonor <= 1.2e+180: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -2.75e+131) tmp = t_1; elseif (EDonor <= -5.1e+16) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EDonor <= 1.2e+180) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -2.75e+131) tmp = t_1; elseif (EDonor <= -5.1e+16) tmp = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EDonor <= 1.2e+180) tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -2.75e+131], t$95$1, If[LessEqual[EDonor, -5.1e+16], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 1.2e+180], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -2.75 \cdot 10^{+131}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;EDonor \leq -5.1 \cdot 10^{+16}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 1.2 \cdot 10^{+180}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if EDonor < -2.74999999999999986e131 or 1.1999999999999999e180 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 93.2%
if -2.74999999999999986e131 < EDonor < -5.1e16Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.7%
if -5.1e16 < EDonor < 1.1999999999999999e180Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.3%
Final simplification82.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= EAccept 2.4e-224)
t_0
(if (<= EAccept 2e-113)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (+ Vef Ev) KbT)))))
(if (<= EAccept 1.35e+155)
t_0
(+
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (EAccept <= 2.4e-224) {
tmp = t_0;
} else if (EAccept <= 2e-113) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT))));
} else if (EAccept <= 1.35e+155) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
if (eaccept <= 2.4d-224) then
tmp = t_0
else if (eaccept <= 2d-113) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp(((vef + ev) / kbt))))
else if (eaccept <= 1.35d+155) then
tmp = t_0
else
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (EAccept <= 2.4e-224) {
tmp = t_0;
} else if (EAccept <= 2e-113) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + Ev) / KbT))));
} else if (EAccept <= 1.35e+155) {
tmp = t_0;
} else {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if EAccept <= 2.4e-224: tmp = t_0 elif EAccept <= 2e-113: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + Ev) / KbT)))) elif EAccept <= 1.35e+155: tmp = t_0 else: tmp = (NdChar / (1.0 + math.exp((-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(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (EAccept <= 2.4e-224) tmp = t_0; elseif (EAccept <= 2e-113) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Ev) / KbT))))); elseif (EAccept <= 1.35e+155) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (EAccept <= 2.4e-224) tmp = t_0; elseif (EAccept <= 2e-113) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp(((Vef + Ev) / KbT)))); elseif (EAccept <= 1.35e+155) tmp = t_0; else tmp = (NdChar / (1.0 + exp((-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[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 2.4e-224], t$95$0, If[LessEqual[EAccept, 2e-113], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + Ev), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.35e+155], t$95$0, N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;EAccept \leq 2.4 \cdot 10^{-224}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;EAccept \leq 2 \cdot 10^{-113}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 1.35 \cdot 10^{+155}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 2.40000000000000014e-224 or 1.99999999999999996e-113 < EAccept < 1.34999999999999997e155Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 76.1%
Taylor expanded in EAccept around 0 69.8%
if 2.40000000000000014e-224 < EAccept < 1.99999999999999996e-113Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.6%
Taylor expanded in Ev around inf 69.8%
if 1.34999999999999997e155 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 64.5%
associate-*r/17.3%
mul-1-neg17.3%
Simplified64.5%
Taylor expanded in EAccept around inf 61.5%
Final simplification68.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1
(+
t_0
(/
NdChar
(+
1.0
(-
(+ (+ 1.0 (/ EDonor KbT)) (+ (/ mu KbT) (/ Vef KbT)))
(/ Ec KbT)))))))
(if (<= mu -2.1e+117)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= mu 7.2e-180)
t_1
(if (<= mu 1.8e+33)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 2.35e+111) t_1 (+ NdChar t_0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))));
double tmp;
if (mu <= -2.1e+117) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (mu <= 7.2e-180) {
tmp = t_1;
} else if (mu <= 1.8e+33) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 2.35e+111) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + ((mu / kbt) + (vef / kbt))) - (ec / kbt))))
if (mu <= (-2.1d+117)) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (mu <= 7.2d-180) then
tmp = t_1
else if (mu <= 1.8d+33) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 2.35d+111) then
tmp = t_1
else
tmp = ndchar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT))));
double tmp;
if (mu <= -2.1e+117) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (mu <= 7.2e-180) {
tmp = t_1;
} else if (mu <= 1.8e+33) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 2.35e+111) {
tmp = t_1;
} else {
tmp = NdChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) tmp = 0 if mu <= -2.1e+117: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif mu <= 7.2e-180: tmp = t_1 elif mu <= 1.8e+33: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 2.35e+111: tmp = t_1 else: tmp = NdChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT))))) tmp = 0.0 if (mu <= -2.1e+117) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (mu <= 7.2e-180) tmp = t_1; elseif (mu <= 1.8e+33) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 2.35e+111) tmp = t_1; else tmp = Float64(NdChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))); tmp = 0.0; if (mu <= -2.1e+117) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (mu <= 7.2e-180) tmp = t_1; elseif (mu <= 1.8e+33) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 2.35e+111) tmp = t_1; else tmp = NdChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.1e+117], 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[mu, 7.2e-180], t$95$1, If[LessEqual[mu, 1.8e+33], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.35e+111], t$95$1, N[(NdChar + t$95$0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := t_0 + \frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}\right)}\\
\mathbf{if}\;mu \leq -2.1 \cdot 10^{+117}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;mu \leq 7.2 \cdot 10^{-180}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;mu \leq 1.8 \cdot 10^{+33}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.35 \cdot 10^{+111}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;NdChar + t_0\\
\end{array}
\end{array}
if mu < -2.1000000000000001e117Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.0%
Taylor expanded in mu around inf 82.6%
associate-*r/82.6%
mul-1-neg82.6%
Simplified82.6%
if -2.1000000000000001e117 < mu < 7.1999999999999998e-180 or 1.8000000000000001e33 < mu < 2.35000000000000004e111Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.6%
associate-+r+70.6%
Simplified70.6%
if 7.1999999999999998e-180 < mu < 1.8000000000000001e33Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.9%
Taylor expanded in Ev around inf 67.2%
if 2.35000000000000004e111 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.8%
associate-+r+42.8%
Simplified42.8%
Taylor expanded in mu around inf 41.1%
Taylor expanded in mu around 0 77.8%
Final simplification72.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_2 (+ NdChar t_1)))
(if (<= NaChar -2.15e+21)
t_2
(if (<= NaChar 9.5e-26)
(+
t_0
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT)))))
(if (<= NaChar 2.9e+74)
(+ t_1 (/ NdChar (+ 1.0 (/ Vef KbT))))
(if (<= NaChar 4e+132)
(+ t_0 (/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))
t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (NaChar <= -2.15e+21) {
tmp = t_2;
} else if (NaChar <= 9.5e-26) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (NaChar <= 2.9e+74) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (NaChar <= 4e+132) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_2 = ndchar + t_1
if (nachar <= (-2.15d+21)) then
tmp = t_2
else if (nachar <= 9.5d-26) then
tmp = t_0 + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else if (nachar <= 2.9d+74) then
tmp = t_1 + (ndchar / (1.0d0 + (vef / kbt)))
else if (nachar <= 4d+132) then
tmp = t_0 + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_2 = NdChar + t_1;
double tmp;
if (NaChar <= -2.15e+21) {
tmp = t_2;
} else if (NaChar <= 9.5e-26) {
tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else if (NaChar <= 2.9e+74) {
tmp = t_1 + (NdChar / (1.0 + (Vef / KbT)));
} else if (NaChar <= 4e+132) {
tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_2 = NdChar + t_1 tmp = 0 if NaChar <= -2.15e+21: tmp = t_2 elif NaChar <= 9.5e-26: tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) elif NaChar <= 2.9e+74: tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))) elif NaChar <= 4e+132: tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu + Float64(EDonor + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_2 = Float64(NdChar + t_1) tmp = 0.0 if (NaChar <= -2.15e+21) tmp = t_2; elseif (NaChar <= 9.5e-26) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); elseif (NaChar <= 2.9e+74) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); elseif (NaChar <= 4e+132) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(1.0 + Float64(Ev / KbT))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_2 = NdChar + t_1; tmp = 0.0; if (NaChar <= -2.15e+21) tmp = t_2; elseif (NaChar <= 9.5e-26) tmp = t_0 + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); elseif (NaChar <= 2.9e+74) tmp = t_1 + (NdChar / (1.0 + (Vef / KbT))); elseif (NaChar <= 4e+132) tmp = t_0 + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu + N[(EDonor + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar + t$95$1), $MachinePrecision]}, If[LessEqual[NaChar, -2.15e+21], t$95$2, If[LessEqual[NaChar, 9.5e-26], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.9e+74], N[(t$95$1 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4e+132], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(1.0 + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu + \left(EDonor + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_2 := NdChar + t_1\\
\mathbf{if}\;NaChar \leq -2.15 \cdot 10^{+21}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 9.5 \cdot 10^{-26}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq 2.9 \cdot 10^{+74}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;NaChar \leq 4 \cdot 10^{+132}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + \left(1 + \frac{Ev}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if NaChar < -2.15e21 or 3.99999999999999996e132 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.6%
associate-+r+67.6%
Simplified67.6%
Taylor expanded in mu around inf 61.0%
Taylor expanded in mu around 0 76.2%
if -2.15e21 < NaChar < 9.4999999999999995e-26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.1%
if 9.4999999999999995e-26 < NaChar < 2.9000000000000002e74Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.8%
associate-+r+78.8%
Simplified78.8%
Taylor expanded in Vef around inf 80.8%
if 2.9000000000000002e74 < NaChar < 3.99999999999999996e132Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 72.2%
Taylor expanded in Ev around 0 72.2%
Final simplification71.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ NdChar t_0))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ (+ mu (+ EDonor (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (+ 1.0 (/ Ev KbT)))))))
(if (<= NaChar -1.22e-82)
t_1
(if (<= NaChar 4e-26)
t_2
(if (<= NaChar 1.55e+73)
(+ t_0 (/ NdChar (+ 1.0 (/ Vef KbT))))
(if (<= NaChar 4e+132) t_2 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
double t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT))));
double tmp;
if (NaChar <= -1.22e-82) {
tmp = t_1;
} else if (NaChar <= 4e-26) {
tmp = t_2;
} else if (NaChar <= 1.55e+73) {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
} else if (NaChar <= 4e+132) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = ndchar + t_0
t_2 = (ndchar / (1.0d0 + exp(((mu + (edonor + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 + (ev / kbt))))
if (nachar <= (-1.22d-82)) then
tmp = t_1
else if (nachar <= 4d-26) then
tmp = t_2
else if (nachar <= 1.55d+73) then
tmp = t_0 + (ndchar / (1.0d0 + (vef / kbt)))
else if (nachar <= 4d+132) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
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.22e-82) {
tmp = t_1;
} else if (NaChar <= 4e-26) {
tmp = t_2;
} else if (NaChar <= 1.55e+73) {
tmp = t_0 + (NdChar / (1.0 + (Vef / KbT)));
} else if (NaChar <= 4e+132) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = NdChar + t_0 t_2 = (NdChar / (1.0 + math.exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))) tmp = 0 if NaChar <= -1.22e-82: tmp = t_1 elif NaChar <= 4e-26: tmp = t_2 elif NaChar <= 1.55e+73: tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))) elif NaChar <= 4e+132: tmp = t_2 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(NdChar + t_0) 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.22e-82) tmp = t_1; elseif (NaChar <= 4e-26) tmp = t_2; elseif (NaChar <= 1.55e+73) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); elseif (NaChar <= 4e+132) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = NdChar + t_0; t_2 = (NdChar / (1.0 + exp(((mu + (EDonor + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (1.0 + (Ev / KbT)))); tmp = 0.0; if (NaChar <= -1.22e-82) tmp = t_1; elseif (NaChar <= 4e-26) tmp = t_2; elseif (NaChar <= 1.55e+73) tmp = t_0 + (NdChar / (1.0 + (Vef / KbT))); elseif (NaChar <= 4e+132) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + t$95$0), $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.22e-82], t$95$1, If[LessEqual[NaChar, 4e-26], t$95$2, If[LessEqual[NaChar, 1.55e+73], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4e+132], t$95$2, t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := NdChar + t_0\\
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.22 \cdot 10^{-82}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;NaChar \leq 4 \cdot 10^{-26}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;NaChar \leq 1.55 \cdot 10^{+73}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{elif}\;NaChar \leq 4 \cdot 10^{+132}:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}
\end{array}
if NaChar < -1.22000000000000001e-82 or 3.99999999999999996e132 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.0%
associate-+r+64.0%
Simplified64.0%
Taylor expanded in mu around inf 57.9%
Taylor expanded in mu around 0 70.6%
if -1.22000000000000001e-82 < NaChar < 4.0000000000000002e-26 or 1.55e73 < NaChar < 3.99999999999999996e132Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 71.7%
Taylor expanded in Ev around 0 65.3%
if 4.0000000000000002e-26 < NaChar < 1.55e73Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.8%
associate-+r+78.8%
Simplified78.8%
Taylor expanded in Vef around inf 80.8%
Final simplification69.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ NdChar t_0))
(t_2 (+ t_0 (/ NdChar 2.0))))
(if (<= KbT -3200000000.0)
t_2
(if (<= KbT 4.6e-246)
t_1
(if (<= KbT 4.4e-212)
(+ t_0 (* NdChar (/ KbT EDonor)))
(if (<= KbT 1.1e+64) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
double t_2 = t_0 + (NdChar / 2.0);
double tmp;
if (KbT <= -3200000000.0) {
tmp = t_2;
} else if (KbT <= 4.6e-246) {
tmp = t_1;
} else if (KbT <= 4.4e-212) {
tmp = t_0 + (NdChar * (KbT / EDonor));
} else if (KbT <= 1.1e+64) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = ndchar + t_0
t_2 = t_0 + (ndchar / 2.0d0)
if (kbt <= (-3200000000.0d0)) then
tmp = t_2
else if (kbt <= 4.6d-246) then
tmp = t_1
else if (kbt <= 4.4d-212) then
tmp = t_0 + (ndchar * (kbt / edonor))
else if (kbt <= 1.1d+64) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
double t_2 = t_0 + (NdChar / 2.0);
double tmp;
if (KbT <= -3200000000.0) {
tmp = t_2;
} else if (KbT <= 4.6e-246) {
tmp = t_1;
} else if (KbT <= 4.4e-212) {
tmp = t_0 + (NdChar * (KbT / EDonor));
} else if (KbT <= 1.1e+64) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = NdChar + t_0 t_2 = t_0 + (NdChar / 2.0) tmp = 0 if KbT <= -3200000000.0: tmp = t_2 elif KbT <= 4.6e-246: tmp = t_1 elif KbT <= 4.4e-212: tmp = t_0 + (NdChar * (KbT / EDonor)) elif KbT <= 1.1e+64: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(NdChar + t_0) t_2 = Float64(t_0 + Float64(NdChar / 2.0)) tmp = 0.0 if (KbT <= -3200000000.0) tmp = t_2; elseif (KbT <= 4.6e-246) tmp = t_1; elseif (KbT <= 4.4e-212) tmp = Float64(t_0 + Float64(NdChar * Float64(KbT / EDonor))); elseif (KbT <= 1.1e+64) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = NdChar + t_0; t_2 = t_0 + (NdChar / 2.0); tmp = 0.0; if (KbT <= -3200000000.0) tmp = t_2; elseif (KbT <= 4.6e-246) tmp = t_1; elseif (KbT <= 4.4e-212) tmp = t_0 + (NdChar * (KbT / EDonor)); elseif (KbT <= 1.1e+64) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -3200000000.0], t$95$2, If[LessEqual[KbT, 4.6e-246], t$95$1, If[LessEqual[KbT, 4.4e-212], N[(t$95$0 + N[(NdChar * N[(KbT / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.1e+64], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := NdChar + t_0\\
t_2 := t_0 + \frac{NdChar}{2}\\
\mathbf{if}\;KbT \leq -3200000000:\\
\;\;\;\;t_2\\
\mathbf{elif}\;KbT \leq 4.6 \cdot 10^{-246}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;KbT \leq 4.4 \cdot 10^{-212}:\\
\;\;\;\;t_0 + NdChar \cdot \frac{KbT}{EDonor}\\
\mathbf{elif}\;KbT \leq 1.1 \cdot 10^{+64}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if KbT < -3.2e9 or 1.10000000000000001e64 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.2%
Taylor expanded in EDonor around 0 68.2%
if -3.2e9 < KbT < 4.5999999999999995e-246 or 4.40000000000000006e-212 < KbT < 1.10000000000000001e64Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.5%
associate-+r+50.5%
Simplified50.5%
Taylor expanded in mu around inf 40.9%
Taylor expanded in mu around 0 63.8%
if 4.5999999999999995e-246 < KbT < 4.40000000000000006e-212Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.0%
associate-+r+70.0%
Simplified70.0%
Taylor expanded in EDonor around inf 52.3%
associate-/l*52.3%
Simplified52.3%
associate-/r/80.6%
Applied egg-rr80.6%
Final simplification66.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT)))))
(t_1 (+ NdChar t_0))
(t_2 (+ t_0 (/ NdChar 2.0))))
(if (<= KbT -3200000000.0)
t_2
(if (<= KbT 4.5e-245)
t_1
(if (<= KbT 7.8e-177)
(+ t_0 (/ NdChar (- 1.0 (/ Ec KbT))))
(if (<= KbT 2.25e+64) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
double t_2 = t_0 + (NdChar / 2.0);
double tmp;
if (KbT <= -3200000000.0) {
tmp = t_2;
} else if (KbT <= 4.5e-245) {
tmp = t_1;
} else if (KbT <= 7.8e-177) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (KbT <= 2.25e+64) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
t_1 = ndchar + t_0
t_2 = t_0 + (ndchar / 2.0d0)
if (kbt <= (-3200000000.0d0)) then
tmp = t_2
else if (kbt <= 4.5d-245) then
tmp = t_1
else if (kbt <= 7.8d-177) then
tmp = t_0 + (ndchar / (1.0d0 - (ec / kbt)))
else if (kbt <= 2.25d+64) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double t_1 = NdChar + t_0;
double t_2 = t_0 + (NdChar / 2.0);
double tmp;
if (KbT <= -3200000000.0) {
tmp = t_2;
} else if (KbT <= 4.5e-245) {
tmp = t_1;
} else if (KbT <= 7.8e-177) {
tmp = t_0 + (NdChar / (1.0 - (Ec / KbT)));
} else if (KbT <= 2.25e+64) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) t_1 = NdChar + t_0 t_2 = t_0 + (NdChar / 2.0) tmp = 0 if KbT <= -3200000000.0: tmp = t_2 elif KbT <= 4.5e-245: tmp = t_1 elif KbT <= 7.8e-177: tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))) elif KbT <= 2.25e+64: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) t_1 = Float64(NdChar + t_0) t_2 = Float64(t_0 + Float64(NdChar / 2.0)) tmp = 0.0 if (KbT <= -3200000000.0) tmp = t_2; elseif (KbT <= 4.5e-245) tmp = t_1; elseif (KbT <= 7.8e-177) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); elseif (KbT <= 2.25e+64) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); t_1 = NdChar + t_0; t_2 = t_0 + (NdChar / 2.0); tmp = 0.0; if (KbT <= -3200000000.0) tmp = t_2; elseif (KbT <= 4.5e-245) tmp = t_1; elseif (KbT <= 7.8e-177) tmp = t_0 + (NdChar / (1.0 - (Ec / KbT))); elseif (KbT <= 2.25e+64) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar + t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -3200000000.0], t$95$2, If[LessEqual[KbT, 4.5e-245], t$95$1, If[LessEqual[KbT, 7.8e-177], N[(t$95$0 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.25e+64], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
t_1 := NdChar + t_0\\
t_2 := t_0 + \frac{NdChar}{2}\\
\mathbf{if}\;KbT \leq -3200000000:\\
\;\;\;\;t_2\\
\mathbf{elif}\;KbT \leq 4.5 \cdot 10^{-245}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;KbT \leq 7.8 \cdot 10^{-177}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{elif}\;KbT \leq 2.25 \cdot 10^{+64}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
\end{array}
if KbT < -3.2e9 or 2.24999999999999987e64 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.2%
Taylor expanded in EDonor around 0 68.2%
if -3.2e9 < KbT < 4.49999999999999969e-245 or 7.80000000000000028e-177 < KbT < 2.24999999999999987e64Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.1%
associate-+r+50.1%
Simplified50.1%
Taylor expanded in mu around inf 42.0%
Taylor expanded in mu around 0 64.9%
if 4.49999999999999969e-245 < KbT < 7.80000000000000028e-177Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.0%
associate-+r+65.0%
Simplified65.0%
Taylor expanded in Ec around inf 71.8%
neg-mul-171.8%
distribute-neg-frac71.8%
Simplified71.8%
Final simplification66.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ EAccept (- Ev mu))) KbT))))))
(if (or (<= KbT -3200000000.0) (not (<= KbT 2.25e+64)))
(+ t_0 (/ NdChar 2.0))
(+ NdChar t_0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((KbT <= -3200000000.0) || !(KbT <= 2.25e+64)) {
tmp = t_0 + (NdChar / 2.0);
} else {
tmp = NdChar + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (eaccept + (ev - mu))) / kbt)))
if ((kbt <= (-3200000000.0d0)) .or. (.not. (kbt <= 2.25d+64))) then
tmp = t_0 + (ndchar / 2.0d0)
else
tmp = ndchar + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)));
double tmp;
if ((KbT <= -3200000000.0) || !(KbT <= 2.25e+64)) {
tmp = t_0 + (NdChar / 2.0);
} else {
tmp = NdChar + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))) tmp = 0 if (KbT <= -3200000000.0) or not (KbT <= 2.25e+64): tmp = t_0 + (NdChar / 2.0) else: tmp = NdChar + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT)))) tmp = 0.0 if ((KbT <= -3200000000.0) || !(KbT <= 2.25e+64)) tmp = Float64(t_0 + Float64(NdChar / 2.0)); else tmp = Float64(NdChar + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT))); tmp = 0.0; if ((KbT <= -3200000000.0) || ~((KbT <= 2.25e+64))) tmp = t_0 + (NdChar / 2.0); else tmp = NdChar + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(EAccept + N[(Ev - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[KbT, -3200000000.0], N[Not[LessEqual[KbT, 2.25e+64]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NdChar + t$95$0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;KbT \leq -3200000000 \lor \neg \left(KbT \leq 2.25 \cdot 10^{+64}\right):\\
\;\;\;\;t_0 + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar + t_0\\
\end{array}
\end{array}
if KbT < -3.2e9 or 2.24999999999999987e64 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 79.2%
Taylor expanded in EDonor around 0 68.2%
if -3.2e9 < KbT < 2.24999999999999987e64Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.0%
associate-+r+52.0%
Simplified52.0%
Taylor expanded in mu around inf 42.5%
Taylor expanded in mu around 0 61.4%
Final simplification64.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.06e-72)
(+ (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))) (/ NaChar 2.0))
(if (<= KbT 2.05e-252)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ KbT (/ EDonor NdChar)))
(if (<= KbT 9.2e-122)
(+
(/
NaChar
(+
1.0
(-
(+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
(/ mu KbT))))
(/ NdChar (- 1.0 (/ Ec KbT))))
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.06e-72) {
tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= 2.05e-252) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar));
} else if (KbT <= 9.2e-122) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.06d-72)) then
tmp = (ndchar / (1.0d0 + exp((-ec / kbt)))) + (nachar / 2.0d0)
else if (kbt <= 2.05d-252) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (kbt / (edonor / ndchar))
else if (kbt <= 9.2d-122) then
tmp = (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt)))) + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.06e-72) {
tmp = (NdChar / (1.0 + Math.exp((-Ec / KbT)))) + (NaChar / 2.0);
} else if (KbT <= 2.05e-252) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar));
} else if (KbT <= 9.2e-122) {
tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.06e-72: tmp = (NdChar / (1.0 + math.exp((-Ec / KbT)))) + (NaChar / 2.0) elif KbT <= 2.05e-252: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar)) elif KbT <= 9.2e-122: tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 - (Ec / KbT))) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.06e-72) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT)))) + Float64(NaChar / 2.0)); elseif (KbT <= 2.05e-252) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(KbT / Float64(EDonor / NdChar))); elseif (KbT <= 9.2e-122) tmp = Float64(Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT)))) + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.06e-72) tmp = (NdChar / (1.0 + exp((-Ec / KbT)))) + (NaChar / 2.0); elseif (KbT <= 2.05e-252) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar)); elseif (KbT <= 9.2e-122) tmp = (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) + (NdChar / (1.0 - (Ec / KbT))); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.06e-72], N[(N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.05e-252], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT / N[(EDonor / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 9.2e-122], N[(N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.06 \cdot 10^{-72}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{elif}\;KbT \leq 2.05 \cdot 10^{-252}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{KbT}{\frac{EDonor}{NdChar}}\\
\mathbf{elif}\;KbT \leq 9.2 \cdot 10^{-122}:\\
\;\;\;\;\frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)} + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < -1.05999999999999994e-72Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.6%
Taylor expanded in Ec around inf 47.5%
associate-*r/47.5%
mul-1-neg47.5%
Simplified47.5%
if -1.05999999999999994e-72 < KbT < 2.05000000000000007e-252Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.7%
associate-+r+53.7%
Simplified53.7%
Taylor expanded in EDonor around inf 45.0%
associate-/l*41.7%
Simplified41.7%
Taylor expanded in EAccept around inf 30.1%
if 2.05000000000000007e-252 < KbT < 9.20000000000000028e-122Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.3%
associate-+r+48.3%
Simplified48.3%
Taylor expanded in Ec around inf 55.8%
neg-mul-155.8%
distribute-neg-frac55.8%
Simplified55.8%
Taylor expanded in KbT around inf 38.0%
if 9.20000000000000028e-122 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.0%
Taylor expanded in KbT around inf 47.3%
Final simplification43.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.1e+186) (not (<= KbT 7e+117))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)) (+ NdChar (/ 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) {
double tmp;
if ((KbT <= -1.1e+186) || !(KbT <= 7e+117)) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (EAccept + (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 ((kbt <= (-1.1d+186)) .or. (.not. (kbt <= 7d+117))) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = ndchar + (nachar / (1.0d0 + exp(((vef + (eaccept + (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 ((KbT <= -1.1e+186) || !(KbT <= 7e+117)) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = NdChar + (NaChar / (1.0 + Math.exp(((Vef + (EAccept + (Ev - mu))) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.1e+186) or not (KbT <= 7e+117): tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = NdChar + (NaChar / (1.0 + math.exp(((Vef + (EAccept + (Ev - mu))) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.1e+186) || !(KbT <= 7e+117)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(NdChar + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(EAccept + Float64(Ev - mu))) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.1e+186) || ~((KbT <= 7e+117))) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = NdChar + (NaChar / (1.0 + exp(((Vef + (EAccept + (Ev - mu))) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.1e+186], N[Not[LessEqual[KbT, 7e+117]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NdChar + 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}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.1 \cdot 10^{+186} \lor \neg \left(KbT \leq 7 \cdot 10^{+117}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar + \frac{NaChar}{1 + e^{\frac{Vef + \left(EAccept + \left(Ev - mu\right)\right)}{KbT}}}\\
\end{array}
\end{array}
if KbT < -1.0999999999999999e186 or 6.99999999999999965e117 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 82.4%
Taylor expanded in KbT around inf 69.7%
if -1.0999999999999999e186 < KbT < 6.99999999999999965e117Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.7%
associate-+r+55.7%
Simplified55.7%
Taylor expanded in mu around inf 45.9%
Taylor expanded in mu around 0 60.3%
Final simplification62.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EDonor 4.7e+229)
(+
(/
NdChar
(+
1.0
(- (+ (+ 1.0 (/ EDonor KbT)) (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT))))
(/
NaChar
(+
1.0
(- (+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT)))) (/ mu KbT)))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (/ KbT (/ EDonor NdChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= 4.7e+229) {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (KbT / (EDonor / 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) :: tmp
if (edonor <= 4.7d+229) then
tmp = (ndchar / (1.0d0 + (((1.0d0 + (edonor / kbt)) + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (mu / kbt))))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (kbt / (edonor / 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 tmp;
if (EDonor <= 4.7e+229) {
tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (KbT / (EDonor / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= 4.7e+229: tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (KbT / (EDonor / NdChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= 4.7e+229) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(KbT / Float64(EDonor / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= 4.7e+229) tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (KbT / (EDonor / NdChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, 4.7e+229], N[(N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT / N[(EDonor / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq 4.7 \cdot 10^{+229}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{KbT}{\frac{EDonor}{NdChar}}\\
\end{array}
\end{array}
if EDonor < 4.7e229Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.5%
associate-+r+60.5%
Simplified60.5%
Taylor expanded in KbT around inf 36.7%
if 4.7e229 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 64.1%
associate-+r+64.1%
Simplified64.1%
Taylor expanded in EDonor around inf 60.4%
associate-/l*66.3%
Simplified66.3%
Taylor expanded in Ev around inf 45.9%
Final simplification37.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 5.6e+267) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ KbT (/ EDonor NdChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 5.6e+267) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT / (EDonor / 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) :: tmp
if (eaccept <= 5.6d+267) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (kbt / (edonor / 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 tmp;
if (EAccept <= 5.6e+267) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 5.6e+267: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 5.6e+267) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(KbT / Float64(EDonor / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 5.6e+267) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (KbT / (EDonor / NdChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 5.6e+267], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT / N[(EDonor / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 5.6 \cdot 10^{+267}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{KbT}{\frac{EDonor}{NdChar}}\\
\end{array}
\end{array}
if EAccept < 5.6000000000000004e267Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 72.2%
Taylor expanded in KbT around inf 38.1%
if 5.6000000000000004e267 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 87.7%
associate-+r+87.7%
Simplified87.7%
Taylor expanded in EDonor around inf 63.0%
associate-/l*63.0%
Simplified63.0%
Taylor expanded in EAccept around inf 63.0%
Final simplification38.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(+
(/
NdChar
(+
1.0
(- (+ (+ 1.0 (/ EDonor KbT)) (+ (/ mu KbT) (/ Vef KbT))) (/ Ec KbT))))
(/
NaChar
(+
1.0
(- (+ 1.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT)))) (/ 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 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (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 + (((1.0d0 + (edonor / kbt)) + ((mu / kbt) + (vef / kbt))) - (ec / kbt)))) + (nachar / (1.0d0 + ((1.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) - (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 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EDonor / KbT)) + Float64(Float64(mu / KbT) + Float64(Vef / KbT))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) - Float64(mu / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + (((1.0 + (EDonor / KbT)) + ((mu / KbT) + (Vef / KbT))) - (Ec / KbT)))) + (NaChar / (1.0 + ((1.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) - (mu / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[(N[(N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + \left(\left(\left(1 + \frac{EDonor}{KbT}\right) + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{1 + \left(\left(1 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.7%
associate-+r+60.7%
Simplified60.7%
Taylor expanded in KbT around inf 36.0%
Final simplification36.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -2.25e-141)
(+ (/ NaChar 2.0) (/ NdChar (+ 2.0 (/ (- (+ EDonor (+ mu Vef)) Ec) KbT))))
(if (<= KbT 3.6e+54)
(/ KbT (/ (+ EDonor (+ Vef (- mu Ec))) NdChar))
(+ (/ NaChar 2.0) (/ NdChar (+ (/ EDonor 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 <= -2.25e-141) {
tmp = (NaChar / 2.0) + (NdChar / (2.0 + (((EDonor + (mu + Vef)) - Ec) / KbT)));
} else if (KbT <= 3.6e+54) {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar);
} else {
tmp = (NaChar / 2.0) + (NdChar / ((EDonor / 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 <= (-2.25d-141)) then
tmp = (nachar / 2.0d0) + (ndchar / (2.0d0 + (((edonor + (mu + vef)) - ec) / kbt)))
else if (kbt <= 3.6d+54) then
tmp = kbt / ((edonor + (vef + (mu - ec))) / ndchar)
else
tmp = (nachar / 2.0d0) + (ndchar / ((edonor / 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 <= -2.25e-141) {
tmp = (NaChar / 2.0) + (NdChar / (2.0 + (((EDonor + (mu + Vef)) - Ec) / KbT)));
} else if (KbT <= 3.6e+54) {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar);
} else {
tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -2.25e-141: tmp = (NaChar / 2.0) + (NdChar / (2.0 + (((EDonor + (mu + Vef)) - Ec) / KbT))) elif KbT <= 3.6e+54: tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar) else: tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -2.25e-141) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(2.0 + Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))); elseif (KbT <= 3.6e+54) tmp = Float64(KbT / Float64(Float64(EDonor + Float64(Vef + Float64(mu - Ec))) / NdChar)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(Float64(EDonor / 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 <= -2.25e-141) tmp = (NaChar / 2.0) + (NdChar / (2.0 + (((EDonor + (mu + Vef)) - Ec) / KbT))); elseif (KbT <= 3.6e+54) tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar); else tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -2.25e-141], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 3.6e+54], N[(KbT / N[(N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.25 \cdot 10^{-141}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{2 + \frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}\\
\mathbf{elif}\;KbT \leq 3.6 \cdot 10^{+54}:\\
\;\;\;\;\frac{KbT}{\frac{EDonor + \left(Vef + \left(mu - Ec\right)\right)}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -2.25e-141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.2%
Taylor expanded in KbT around inf 37.8%
associate--l+37.8%
Simplified37.8%
Taylor expanded in KbT around 0 37.8%
if -2.25e-141 < KbT < 3.6000000000000001e54Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.0%
Taylor expanded in KbT around inf 8.8%
associate--l+8.8%
Simplified8.8%
Taylor expanded in KbT around 0 8.6%
Taylor expanded in KbT around inf 20.9%
associate-/l*21.8%
associate-+r-21.8%
+-commutative21.8%
associate--l+21.8%
Simplified21.8%
if 3.6000000000000001e54 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
Taylor expanded in KbT around inf 58.9%
associate--l+58.9%
Simplified58.9%
Taylor expanded in EDonor around inf 59.0%
Final simplification36.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -7.2e-140) (not (<= KbT 5.8e-62))) (+ (/ NaChar 2.0) (* NdChar 0.5)) (/ KbT (/ (+ EDonor (+ Vef (- mu Ec))) NdChar))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -7.2e-140) || !(KbT <= 5.8e-62)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / 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) :: tmp
if ((kbt <= (-7.2d-140)) .or. (.not. (kbt <= 5.8d-62))) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else
tmp = kbt / ((edonor + (vef + (mu - ec))) / 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 tmp;
if ((KbT <= -7.2e-140) || !(KbT <= 5.8e-62)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -7.2e-140) or not (KbT <= 5.8e-62): tmp = (NaChar / 2.0) + (NdChar * 0.5) else: tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -7.2e-140) || !(KbT <= 5.8e-62)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); else tmp = Float64(KbT / Float64(Float64(EDonor + Float64(Vef + Float64(mu - Ec))) / NdChar)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -7.2e-140) || ~((KbT <= 5.8e-62))) tmp = (NaChar / 2.0) + (NdChar * 0.5); else tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -7.2e-140], N[Not[LessEqual[KbT, 5.8e-62]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(KbT / N[(N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -7.2 \cdot 10^{-140} \lor \neg \left(KbT \leq 5.8 \cdot 10^{-62}\right):\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{KbT}{\frac{EDonor + \left(Vef + \left(mu - Ec\right)\right)}{NdChar}}\\
\end{array}
\end{array}
if KbT < -7.2000000000000001e-140 or 5.79999999999999971e-62 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.7%
Taylor expanded in KbT around inf 41.4%
associate--l+41.4%
Simplified41.4%
Taylor expanded in KbT around inf 41.4%
if -7.2000000000000001e-140 < KbT < 5.79999999999999971e-62Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.2%
Taylor expanded in KbT around inf 7.2%
associate--l+7.2%
Simplified7.2%
Taylor expanded in KbT around 0 7.3%
Taylor expanded in KbT around inf 23.8%
associate-/l*23.8%
associate-+r-23.8%
+-commutative23.8%
associate--l+23.8%
Simplified23.8%
Final simplification36.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -8e-142) (not (<= KbT 1e-61))) (+ (/ NaChar 2.0) (* NdChar 0.5)) (/ (* NdChar KbT) (- (+ EDonor (+ mu Vef)) Ec))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -8e-142) || !(KbT <= 1e-61)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = (NdChar * KbT) / ((EDonor + (mu + Vef)) - Ec);
}
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 <= (-8d-142)) .or. (.not. (kbt <= 1d-61))) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else
tmp = (ndchar * kbt) / ((edonor + (mu + vef)) - ec)
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 <= -8e-142) || !(KbT <= 1e-61)) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else {
tmp = (NdChar * KbT) / ((EDonor + (mu + Vef)) - Ec);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -8e-142) or not (KbT <= 1e-61): tmp = (NaChar / 2.0) + (NdChar * 0.5) else: tmp = (NdChar * KbT) / ((EDonor + (mu + Vef)) - Ec) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -8e-142) || !(KbT <= 1e-61)) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar * KbT) / Float64(Float64(EDonor + Float64(mu + Vef)) - Ec)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -8e-142) || ~((KbT <= 1e-61))) tmp = (NaChar / 2.0) + (NdChar * 0.5); else tmp = (NdChar * KbT) / ((EDonor + (mu + Vef)) - Ec); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -8e-142], N[Not[LessEqual[KbT, 1e-61]], $MachinePrecision]], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * KbT), $MachinePrecision] / N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -8 \cdot 10^{-142} \lor \neg \left(KbT \leq 10^{-61}\right):\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar \cdot KbT}{\left(EDonor + \left(mu + Vef\right)\right) - Ec}\\
\end{array}
\end{array}
if KbT < -8.0000000000000003e-142 or 1e-61 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.7%
Taylor expanded in KbT around inf 41.4%
associate--l+41.4%
Simplified41.4%
Taylor expanded in KbT around inf 41.4%
if -8.0000000000000003e-142 < KbT < 1e-61Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.2%
Taylor expanded in KbT around inf 7.2%
associate--l+7.2%
Simplified7.2%
Taylor expanded in KbT around 0 7.3%
Taylor expanded in KbT around inf 23.8%
Final simplification36.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.3e-141)
(+ (/ NaChar 2.0) (* NdChar 0.5))
(if (<= KbT 1.8e+54)
(/ KbT (/ (+ EDonor (+ Vef (- mu Ec))) NdChar))
(+ (/ NaChar 2.0) (/ NdChar (+ (/ EDonor 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 <= -1.3e-141) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else if (KbT <= 1.8e+54) {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar);
} else {
tmp = (NaChar / 2.0) + (NdChar / ((EDonor / 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 <= (-1.3d-141)) then
tmp = (nachar / 2.0d0) + (ndchar * 0.5d0)
else if (kbt <= 1.8d+54) then
tmp = kbt / ((edonor + (vef + (mu - ec))) / ndchar)
else
tmp = (nachar / 2.0d0) + (ndchar / ((edonor / 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 <= -1.3e-141) {
tmp = (NaChar / 2.0) + (NdChar * 0.5);
} else if (KbT <= 1.8e+54) {
tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar);
} else {
tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.3e-141: tmp = (NaChar / 2.0) + (NdChar * 0.5) elif KbT <= 1.8e+54: tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar) else: tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.3e-141) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)); elseif (KbT <= 1.8e+54) tmp = Float64(KbT / Float64(Float64(EDonor + Float64(Vef + Float64(mu - Ec))) / NdChar)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(Float64(EDonor / 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 <= -1.3e-141) tmp = (NaChar / 2.0) + (NdChar * 0.5); elseif (KbT <= 1.8e+54) tmp = KbT / ((EDonor + (Vef + (mu - Ec))) / NdChar); else tmp = (NaChar / 2.0) + (NdChar / ((EDonor / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.3e-141], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.8e+54], N[(KbT / N[(N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.3 \cdot 10^{-141}:\\
\;\;\;\;\frac{NaChar}{2} + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.8 \cdot 10^{+54}:\\
\;\;\;\;\frac{KbT}{\frac{EDonor + \left(Vef + \left(mu - Ec\right)\right)}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -1.30000000000000005e-141Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.2%
Taylor expanded in KbT around inf 37.8%
associate--l+37.8%
Simplified37.8%
Taylor expanded in KbT around inf 37.6%
if -1.30000000000000005e-141 < KbT < 1.8000000000000001e54Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.0%
Taylor expanded in KbT around inf 8.8%
associate--l+8.8%
Simplified8.8%
Taylor expanded in KbT around 0 8.6%
Taylor expanded in KbT around inf 20.9%
associate-/l*21.8%
associate-+r-21.8%
+-commutative21.8%
associate--l+21.8%
Simplified21.8%
if 1.8000000000000001e54 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
Taylor expanded in KbT around inf 58.9%
associate--l+58.9%
Simplified58.9%
Taylor expanded in EDonor around inf 59.0%
Final simplification36.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar 2.0) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / 2.0d0) + (ndchar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / 2.0) + (NdChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / 2.0) + (NdChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / 2.0) + Float64(NdChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / 2.0) + (NdChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{2} + NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.1%
Taylor expanded in KbT around inf 30.8%
associate--l+30.8%
Simplified30.8%
Taylor expanded in KbT around inf 31.5%
Final simplification31.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.1%
Taylor expanded in KbT around inf 30.8%
associate--l+30.8%
Simplified30.8%
Taylor expanded in KbT around 0 14.7%
Taylor expanded in KbT around 0 19.8%
Final simplification19.8%
herbie shell --seed 2024024
(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))))))