
(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 18 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 (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (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(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev + (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(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= EDonor -55000000000.0)
t_1
(if (<= EDonor -4.7e-189)
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT))))
(if (<= EDonor 3.8e-6)
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (EDonor <= -55000000000.0) {
tmp = t_1;
} else if (EDonor <= -4.7e-189) {
tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else if (EDonor <= 3.8e-6) {
tmp = t_0 + (NdChar / (1.0 + exp((Ec / -KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (edonor <= (-55000000000.0d0)) then
tmp = t_1
else if (edonor <= (-4.7d-189)) then
tmp = ndchar / (1.0d0 + exp((((edonor + (mu + vef)) - ec) / kbt)))
else if (edonor <= 3.8d-6) then
tmp = t_0 + (ndchar / (1.0d0 + exp((ec / -kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (EDonor <= -55000000000.0) {
tmp = t_1;
} else if (EDonor <= -4.7e-189) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else if (EDonor <= 3.8e-6) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if EDonor <= -55000000000.0: tmp = t_1 elif EDonor <= -4.7e-189: tmp = NdChar / (1.0 + math.exp((((EDonor + (mu + Vef)) - Ec) / KbT))) elif EDonor <= 3.8e-6: tmp = t_0 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (EDonor <= -55000000000.0) tmp = t_1; elseif (EDonor <= -4.7e-189) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))); elseif (EDonor <= 3.8e-6) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (EDonor <= -55000000000.0) tmp = t_1; elseif (EDonor <= -4.7e-189) tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT))); elseif (EDonor <= 3.8e-6) tmp = t_0 + (NdChar / (1.0 + exp((Ec / -KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -55000000000.0], t$95$1, If[LessEqual[EDonor, -4.7e-189], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 3.8e-6], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;EDonor \leq -55000000000:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq -4.7 \cdot 10^{-189}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{elif}\;EDonor \leq 3.8 \cdot 10^{-6}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -5.5e10 or 3.8e-6 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 85.3%
if -5.5e10 < EDonor < -4.6999999999999997e-189Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 73.6%
if -4.6999999999999997e-189 < EDonor < 3.8e-6Initial program 100.0%
Simplified100.0%
Taylor expanded in Ec around inf 79.7%
associate-*r/79.7%
mul-1-neg79.7%
Simplified79.7%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT))))))
(if (<= NdChar -1.3e-49)
t_0
(if (<= NdChar -3.8e-207)
(/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))
(if (<= NdChar 5.3e+53)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
double tmp;
if (NdChar <= -1.3e-49) {
tmp = t_0;
} else if (NdChar <= -3.8e-207) {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (NdChar <= 5.3e+53) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((((edonor + (mu + vef)) - ec) / kbt)))
if (ndchar <= (-1.3d-49)) then
tmp = t_0
else if (ndchar <= (-3.8d-207)) then
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
else if (ndchar <= 5.3d+53) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
double tmp;
if (NdChar <= -1.3e-49) {
tmp = t_0;
} else if (NdChar <= -3.8e-207) {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
} else if (NdChar <= 5.3e+53) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((((EDonor + (mu + Vef)) - Ec) / KbT))) tmp = 0 if NdChar <= -1.3e-49: tmp = t_0 elif NdChar <= -3.8e-207: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) elif NdChar <= 5.3e+53: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))) tmp = 0.0 if (NdChar <= -1.3e-49) tmp = t_0; elseif (NdChar <= -3.8e-207) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); elseif (NdChar <= 5.3e+53) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT))); tmp = 0.0; if (NdChar <= -1.3e-49) tmp = t_0; elseif (NdChar <= -3.8e-207) tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); elseif (NdChar <= 5.3e+53) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -1.3e-49], t$95$0, If[LessEqual[NdChar, -3.8e-207], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 5.3e+53], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{if}\;NdChar \leq -1.3 \cdot 10^{-49}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq -3.8 \cdot 10^{-207}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 5.3 \cdot 10^{+53}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -1.29999999999999997e-49 or 5.3000000000000002e53 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 75.5%
if -1.29999999999999997e-49 < NdChar < -3.8e-207Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.4%
Taylor expanded in NdChar around 0 85.9%
if -3.8e-207 < NdChar < 5.3000000000000002e53Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.9%
Final simplification77.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= EDonor -1250.0) (not (<= EDonor 1.82e-84)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -1250.0) || !(EDonor <= 1.82e-84)) {
tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((edonor <= (-1250.0d0)) .or. (.not. (edonor <= 1.82d-84))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((EDonor <= -1250.0) || !(EDonor <= 1.82e-84)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (EDonor <= -1250.0) or not (EDonor <= 1.82e-84): tmp = t_0 + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((EDonor <= -1250.0) || !(EDonor <= 1.82e-84)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((EDonor <= -1250.0) || ~((EDonor <= 1.82e-84))) tmp = t_0 + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[EDonor, -1250.0], N[Not[LessEqual[EDonor, 1.82e-84]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1250 \lor \neg \left(EDonor \leq 1.82 \cdot 10^{-84}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -1250 or 1.81999999999999991e-84 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 83.1%
if -1250 < EDonor < 1.81999999999999991e-84Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 75.8%
Final simplification80.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -5.4e+103)
t_1
(if (<= Vef -7.6e+24)
(+ t_0 (/ NaChar 2.0))
(if (<= Vef 9.5e-279)
t_0
(if (<= Vef 1.26e-156)
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -5.4e+103) {
tmp = t_1;
} else if (Vef <= -7.6e+24) {
tmp = t_0 + (NaChar / 2.0);
} else if (Vef <= 9.5e-279) {
tmp = t_0;
} else if (Vef <= 1.26e-156) {
tmp = NdChar / (1.0 + exp((Ec / -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 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-5.4d+103)) then
tmp = t_1
else if (vef <= (-7.6d+24)) then
tmp = t_0 + (nachar / 2.0d0)
else if (vef <= 9.5d-279) then
tmp = t_0
else if (vef <= 1.26d-156) then
tmp = ndchar / (1.0d0 + exp((ec / -kbt)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -5.4e+103) {
tmp = t_1;
} else if (Vef <= -7.6e+24) {
tmp = t_0 + (NaChar / 2.0);
} else if (Vef <= 9.5e-279) {
tmp = t_0;
} else if (Vef <= 1.26e-156) {
tmp = NdChar / (1.0 + Math.exp((Ec / -KbT)));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -5.4e+103: tmp = t_1 elif Vef <= -7.6e+24: tmp = t_0 + (NaChar / 2.0) elif Vef <= 9.5e-279: tmp = t_0 elif Vef <= 1.26e-156: tmp = NdChar / (1.0 + math.exp((Ec / -KbT))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -5.4e+103) tmp = t_1; elseif (Vef <= -7.6e+24) tmp = Float64(t_0 + Float64(NaChar / 2.0)); elseif (Vef <= 9.5e-279) tmp = t_0; elseif (Vef <= 1.26e-156) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = NdChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -5.4e+103) tmp = t_1; elseif (Vef <= -7.6e+24) tmp = t_0 + (NaChar / 2.0); elseif (Vef <= 9.5e-279) tmp = t_0; elseif (Vef <= 1.26e-156) tmp = NdChar / (1.0 + exp((Ec / -KbT))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -5.4e+103], t$95$1, If[LessEqual[Vef, -7.6e+24], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 9.5e-279], t$95$0, If[LessEqual[Vef, 1.26e-156], N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -5.4 \cdot 10^{+103}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -7.6 \cdot 10^{+24}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\mathbf{elif}\;Vef \leq 9.5 \cdot 10^{-279}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq 1.26 \cdot 10^{-156}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -5.39999999999999985e103 or 1.2600000000000001e-156 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 64.4%
Taylor expanded in Vef around inf 54.5%
if -5.39999999999999985e103 < Vef < -7.6000000000000003e24Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.2%
Taylor expanded in mu around inf 50.1%
if -7.6000000000000003e24 < Vef < 9.4999999999999996e-279Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 60.9%
Taylor expanded in mu around inf 46.1%
if 9.4999999999999996e-279 < Vef < 1.2600000000000001e-156Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 58.9%
Taylor expanded in Ec around inf 50.7%
neg-mul-150.7%
Simplified50.7%
Final simplification51.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1.55e-49) (not (<= NdChar 3.05e-83))) (/ NdChar (+ 1.0 (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.55e-49) || !(NdChar <= 3.05e-83)) {
tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.55d-49)) .or. (.not. (ndchar <= 3.05d-83))) then
tmp = ndchar / (1.0d0 + exp((((edonor + (mu + vef)) - ec) / kbt)))
else
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.55e-49) || !(NdChar <= 3.05e-83)) {
tmp = NdChar / (1.0 + Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.55e-49) or not (NdChar <= 3.05e-83): tmp = NdChar / (1.0 + math.exp((((EDonor + (mu + Vef)) - Ec) / KbT))) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.55e-49) || !(NdChar <= 3.05e-83)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.55e-49) || ~((NdChar <= 3.05e-83))) tmp = NdChar / (1.0 + exp((((EDonor + (mu + Vef)) - Ec) / KbT))); else tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.55e-49], N[Not[LessEqual[NdChar, 3.05e-83]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.55 \cdot 10^{-49} \lor \neg \left(NdChar \leq 3.05 \cdot 10^{-83}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.55e-49 or 3.05000000000000001e-83 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 73.8%
if -1.55e-49 < NdChar < 3.05000000000000001e-83Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.1%
Taylor expanded in NdChar around 0 76.1%
Final simplification74.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.8e+187) (not (<= KbT 1.4e+111))) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0)) (/ NaChar (+ 1.0 (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.8e+187) || !(KbT <= 1.4e+111)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-1.8d+187)) .or. (.not. (kbt <= 1.4d+111))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
else
tmp = nachar / (1.0d0 + exp((((eaccept + (vef + ev)) - mu) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.8e+187) || !(KbT <= 1.4e+111)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = NaChar / (1.0 + Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.8e+187) or not (KbT <= 1.4e+111): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) else: tmp = NaChar / (1.0 + math.exp((((EAccept + (Vef + Ev)) - mu) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.8e+187) || !(KbT <= 1.4e+111)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.8e+187) || ~((KbT <= 1.4e+111))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); else tmp = NaChar / (1.0 + exp((((EAccept + (Vef + Ev)) - mu) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.8e+187], N[Not[LessEqual[KbT, 1.4e+111]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.8 \cdot 10^{+187} \lor \neg \left(KbT \leq 1.4 \cdot 10^{+111}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if KbT < -1.80000000000000018e187 or 1.4e111 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 76.9%
Taylor expanded in mu around inf 65.2%
if -1.80000000000000018e187 < KbT < 1.4e111Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.2%
Taylor expanded in NdChar around 0 65.1%
Final simplification65.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= EDonor -1400000.0) (not (<= EDonor 1.26e+53))) (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -1400000.0) || !(EDonor <= 1.26e+53)) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = NdChar / (1.0 + exp((Vef / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((edonor <= (-1400000.0d0)) .or. (.not. (edonor <= 1.26d+53))) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = ndchar / (1.0d0 + exp((vef / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -1400000.0) || !(EDonor <= 1.26e+53)) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = NdChar / (1.0 + Math.exp((Vef / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (EDonor <= -1400000.0) or not (EDonor <= 1.26e+53): tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = NdChar / (1.0 + math.exp((Vef / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((EDonor <= -1400000.0) || !(EDonor <= 1.26e+53)) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((EDonor <= -1400000.0) || ~((EDonor <= 1.26e+53))) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = NdChar / (1.0 + exp((Vef / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[EDonor, -1400000.0], N[Not[LessEqual[EDonor, 1.26e+53]], $MachinePrecision]], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -1400000 \lor \neg \left(EDonor \leq 1.26 \cdot 10^{+53}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if EDonor < -1.4e6 or 1.25999999999999999e53 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 62.6%
Taylor expanded in EDonor around inf 51.8%
if -1.4e6 < EDonor < 1.25999999999999999e53Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 60.4%
Taylor expanded in Vef around inf 43.9%
Final simplification47.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.4e+138)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 1.45e+169)
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(+ (/ NaChar 2.0) (/ NdChar (+ (/ mu KbT) 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.4e+138) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.45e+169) {
tmp = NdChar / (1.0 + exp((EDonor / KbT)));
} else {
tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.4d+138)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 1.45d+169) then
tmp = ndchar / (1.0d0 + exp((edonor / kbt)))
else
tmp = (nachar / 2.0d0) + (ndchar / ((mu / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.4e+138) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.45e+169) {
tmp = NdChar / (1.0 + Math.exp((EDonor / KbT)));
} else {
tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.4e+138: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 1.45e+169: tmp = NdChar / (1.0 + math.exp((EDonor / KbT))) else: tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.4e+138) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 1.45e+169) tmp = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.4e+138) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 1.45e+169) tmp = NdChar / (1.0 + exp((EDonor / KbT))); else tmp = (NaChar / 2.0) + (NdChar / ((mu / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.4e+138], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.45e+169], N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.4 \cdot 10^{+138}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 1.45 \cdot 10^{+169}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\end{array}
\end{array}
if KbT < -1.4e138Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 62.9%
distribute-lft-out62.9%
Simplified62.9%
if -1.4e138 < KbT < 1.45e169Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 64.2%
Taylor expanded in EDonor around inf 36.6%
if 1.45e169 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 80.7%
Taylor expanded in mu around inf 65.9%
Taylor expanded in mu around 0 65.5%
Final simplification43.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -6.3e-46)
(* 0.5 (+ NdChar NaChar))
(if (<= KbT 1.55e+21)
(/
NdChar
(*
mu
(*
EDonor
(+
(+ (/ 1.0 (* mu KbT)) (/ (/ 1.0 EDonor) KbT))
(/ (+ (/ 2.0 mu) (- (/ Vef (* mu KbT)) (/ Ec (* mu KbT)))) EDonor)))))
(+
(/
NdChar
(- (+ 2.0 (+ (/ EDonor KbT) (+ (/ mu KbT) (/ Vef KbT)))) (/ Ec KbT)))
(/
NaChar
(+
1.0
(-
(+ (+ 1.0 (/ EAccept KbT)) (+ (/ Vef KbT) (/ Ev KbT)))
(/ 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 <= -6.3e-46) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.55e+21) {
tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor))));
} else {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (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 <= (-6.3d-46)) then
tmp = 0.5d0 * (ndchar + nachar)
else if (kbt <= 1.55d+21) then
tmp = ndchar / (mu * (edonor * (((1.0d0 / (mu * kbt)) + ((1.0d0 / edonor) / kbt)) + (((2.0d0 / mu) + ((vef / (mu * kbt)) - (ec / (mu * kbt)))) / edonor))))
else
tmp = (ndchar / ((2.0d0 + ((edonor / kbt) + ((mu / kbt) + (vef / kbt)))) - (ec / kbt))) + (nachar / (1.0d0 + (((1.0d0 + (eaccept / kbt)) + ((vef / kbt) + (ev / kbt))) - (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 <= -6.3e-46) {
tmp = 0.5 * (NdChar + NaChar);
} else if (KbT <= 1.55e+21) {
tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor))));
} else {
tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -6.3e-46: tmp = 0.5 * (NdChar + NaChar) elif KbT <= 1.55e+21: tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor)))) else: tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -6.3e-46) tmp = Float64(0.5 * Float64(NdChar + NaChar)); elseif (KbT <= 1.55e+21) tmp = Float64(NdChar / Float64(mu * Float64(EDonor * Float64(Float64(Float64(1.0 / Float64(mu * KbT)) + Float64(Float64(1.0 / EDonor) / KbT)) + Float64(Float64(Float64(2.0 / mu) + Float64(Float64(Vef / Float64(mu * KbT)) - Float64(Ec / Float64(mu * KbT)))) / EDonor))))); else tmp = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(mu / KbT) + Float64(Vef / KbT)))) - Float64(Ec / KbT))) + Float64(NaChar / Float64(1.0 + Float64(Float64(Float64(1.0 + Float64(EAccept / KbT)) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) - Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -6.3e-46) tmp = 0.5 * (NdChar + NaChar); elseif (KbT <= 1.55e+21) tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor)))); else tmp = (NdChar / ((2.0 + ((EDonor / KbT) + ((mu / KbT) + (Vef / KbT)))) - (Ec / KbT))) + (NaChar / (1.0 + (((1.0 + (EAccept / KbT)) + ((Vef / KbT) + (Ev / KbT))) - (mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -6.3e-46], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.55e+21], N[(NdChar / N[(mu * N[(EDonor * N[(N[(N[(1.0 / N[(mu * KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(1.0 / EDonor), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(2.0 / mu), $MachinePrecision] + N[(N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision] - N[(Ec / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(mu / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(N[(N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -6.3 \cdot 10^{-46}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{elif}\;KbT \leq 1.55 \cdot 10^{+21}:\\
\;\;\;\;\frac{NdChar}{mu \cdot \left(EDonor \cdot \left(\left(\frac{1}{mu \cdot KbT} + \frac{\frac{1}{EDonor}}{KbT}\right) + \frac{\frac{2}{mu} + \left(\frac{Vef}{mu \cdot KbT} - \frac{Ec}{mu \cdot KbT}\right)}{EDonor}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{mu}{KbT} + \frac{Vef}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} + \frac{NaChar}{1 + \left(\left(\left(1 + \frac{EAccept}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right) - \frac{mu}{KbT}\right)}\\
\end{array}
\end{array}
if KbT < -6.30000000000000001e-46Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 34.5%
distribute-lft-out34.5%
Simplified34.5%
if -6.30000000000000001e-46 < KbT < 1.55e21Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.6%
Taylor expanded in KbT around inf 15.7%
Taylor expanded in mu around -inf 24.3%
Taylor expanded in EDonor around inf 26.1%
associate-*r/26.1%
mul-1-neg26.1%
associate--l+26.1%
associate-*r/26.1%
metadata-eval26.1%
*-commutative26.1%
*-commutative26.1%
+-commutative26.1%
*-commutative26.1%
associate-/r*26.1%
Simplified26.1%
if 1.55e21 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.9%
Taylor expanded in KbT around inf 47.9%
associate-+r+47.9%
+-commutative47.9%
Simplified47.9%
Final simplification34.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -3.5e-46) (not (<= KbT 1.7e+15)))
(* 0.5 (+ NdChar NaChar))
(/
NdChar
(*
mu
(*
EDonor
(+
(+ (/ 1.0 (* mu KbT)) (/ (/ 1.0 EDonor) KbT))
(/ (+ (/ 2.0 mu) (- (/ Vef (* mu KbT)) (/ Ec (* mu KbT)))) EDonor)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.5e-46) || !(KbT <= 1.7e+15)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-3.5d-46)) .or. (.not. (kbt <= 1.7d+15))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (mu * (edonor * (((1.0d0 / (mu * kbt)) + ((1.0d0 / edonor) / kbt)) + (((2.0d0 / mu) + ((vef / (mu * kbt)) - (ec / (mu * kbt)))) / edonor))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.5e-46) || !(KbT <= 1.7e+15)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.5e-46) or not (KbT <= 1.7e+15): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.5e-46) || !(KbT <= 1.7e+15)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(mu * Float64(EDonor * Float64(Float64(Float64(1.0 / Float64(mu * KbT)) + Float64(Float64(1.0 / EDonor) / KbT)) + Float64(Float64(Float64(2.0 / mu) + Float64(Float64(Vef / Float64(mu * KbT)) - Float64(Ec / Float64(mu * KbT)))) / EDonor))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.5e-46) || ~((KbT <= 1.7e+15))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (mu * (EDonor * (((1.0 / (mu * KbT)) + ((1.0 / EDonor) / KbT)) + (((2.0 / mu) + ((Vef / (mu * KbT)) - (Ec / (mu * KbT)))) / EDonor)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.5e-46], N[Not[LessEqual[KbT, 1.7e+15]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(mu * N[(EDonor * N[(N[(N[(1.0 / N[(mu * KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(1.0 / EDonor), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(2.0 / mu), $MachinePrecision] + N[(N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision] - N[(Ec / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.5 \cdot 10^{-46} \lor \neg \left(KbT \leq 1.7 \cdot 10^{+15}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{mu \cdot \left(EDonor \cdot \left(\left(\frac{1}{mu \cdot KbT} + \frac{\frac{1}{EDonor}}{KbT}\right) + \frac{\frac{2}{mu} + \left(\frac{Vef}{mu \cdot KbT} - \frac{Ec}{mu \cdot KbT}\right)}{EDonor}\right)\right)}\\
\end{array}
\end{array}
if KbT < -3.5000000000000002e-46 or 1.7e15 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.4%
distribute-lft-out40.4%
Simplified40.4%
if -3.5000000000000002e-46 < KbT < 1.7e15Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.6%
Taylor expanded in KbT around inf 15.7%
Taylor expanded in mu around -inf 24.3%
Taylor expanded in EDonor around inf 26.1%
associate-*r/26.1%
mul-1-neg26.1%
associate--l+26.1%
associate-*r/26.1%
metadata-eval26.1%
*-commutative26.1%
*-commutative26.1%
+-commutative26.1%
*-commutative26.1%
associate-/r*26.1%
Simplified26.1%
Final simplification34.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.1e-57) (not (<= KbT 10500000000000.0))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (/ (- (+ EDonor (+ Vef (+ mu (* KbT 2.0)))) Ec) 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-57) || !(KbT <= 10500000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (((EDonor + (Vef + (mu + (KbT * 2.0)))) - Ec) / 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-57)) .or. (.not. (kbt <= 10500000000000.0d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (((edonor + (vef + (mu + (kbt * 2.0d0)))) - ec) / 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-57) || !(KbT <= 10500000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (((EDonor + (Vef + (mu + (KbT * 2.0)))) - Ec) / KbT);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.1e-57) or not (KbT <= 10500000000000.0): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (((EDonor + (Vef + (mu + (KbT * 2.0)))) - Ec) / KbT) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.1e-57) || !(KbT <= 10500000000000.0)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(Float64(Float64(EDonor + Float64(Vef + Float64(mu + Float64(KbT * 2.0)))) - Ec) / 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-57) || ~((KbT <= 10500000000000.0))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (((EDonor + (Vef + (mu + (KbT * 2.0)))) - Ec) / KbT); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.1e-57], N[Not[LessEqual[KbT, 10500000000000.0]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[(N[(EDonor + N[(Vef + N[(mu + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.1 \cdot 10^{-57} \lor \neg \left(KbT \leq 10500000000000\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\frac{\left(EDonor + \left(Vef + \left(mu + KbT \cdot 2\right)\right)\right) - Ec}{KbT}}\\
\end{array}
\end{array}
if KbT < -1.09999999999999999e-57 or 1.05e13 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 39.9%
distribute-lft-out39.9%
Simplified39.9%
if -1.09999999999999999e-57 < KbT < 1.05e13Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.6%
Taylor expanded in KbT around inf 16.0%
Taylor expanded in KbT around 0 25.2%
Final simplification33.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -7.8e-59) (not (<= KbT 69000000000000.0))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (/ (- (+ EDonor (+ mu Vef)) Ec) 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 <= -7.8e-59) || !(KbT <= 69000000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (((EDonor + (mu + Vef)) - Ec) / 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 <= (-7.8d-59)) .or. (.not. (kbt <= 69000000000000.0d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (((edonor + (mu + vef)) - ec) / 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 <= -7.8e-59) || !(KbT <= 69000000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (((EDonor + (mu + Vef)) - Ec) / KbT);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -7.8e-59) or not (KbT <= 69000000000000.0): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (((EDonor + (mu + Vef)) - Ec) / KbT) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -7.8e-59) || !(KbT <= 69000000000000.0)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -7.8e-59) || ~((KbT <= 69000000000000.0))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (((EDonor + (mu + Vef)) - Ec) / KbT); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -7.8e-59], N[Not[LessEqual[KbT, 69000000000000.0]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -7.8 \cdot 10^{-59} \lor \neg \left(KbT \leq 69000000000000\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}}\\
\end{array}
\end{array}
if KbT < -7.80000000000000038e-59 or 6.9e13 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 39.9%
distribute-lft-out39.9%
Simplified39.9%
if -7.80000000000000038e-59 < KbT < 6.9e13Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.6%
Taylor expanded in KbT around inf 16.0%
Taylor expanded in KbT around 0 24.4%
Final simplification33.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.05e-57) (not (<= KbT 10200000000000.0))) (* 0.5 (+ NdChar NaChar)) (/ (* NdChar KbT) Vef)))
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.05e-57) || !(KbT <= 10200000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-1.05d-57)) .or. (.not. (kbt <= 10200000000000.0d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = (ndchar * kbt) / vef
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.05e-57) || !(KbT <= 10200000000000.0)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar * KbT) / Vef;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.05e-57) or not (KbT <= 10200000000000.0): tmp = 0.5 * (NdChar + NaChar) else: tmp = (NdChar * KbT) / Vef return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.05e-57) || !(KbT <= 10200000000000.0)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(Float64(NdChar * KbT) / Vef); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.05e-57) || ~((KbT <= 10200000000000.0))) tmp = 0.5 * (NdChar + NaChar); else tmp = (NdChar * KbT) / Vef; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.05e-57], N[Not[LessEqual[KbT, 10200000000000.0]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * KbT), $MachinePrecision] / Vef), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.05 \cdot 10^{-57} \lor \neg \left(KbT \leq 10200000000000\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar \cdot KbT}{Vef}\\
\end{array}
\end{array}
if KbT < -1.05e-57 or 1.02e13 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 39.9%
distribute-lft-out39.9%
Simplified39.9%
if -1.05e-57 < KbT < 1.02e13Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 72.6%
Taylor expanded in KbT around inf 16.0%
Taylor expanded in Vef around inf 18.6%
Final simplification30.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1.8e-49) (not (<= NdChar 3.5e-86))) (* NdChar 0.5) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.8e-49) || !(NdChar <= 3.5e-86)) {
tmp = NdChar * 0.5;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.8d-49)) .or. (.not. (ndchar <= 3.5d-86))) then
tmp = ndchar * 0.5d0
else
tmp = nachar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.8e-49) || !(NdChar <= 3.5e-86)) {
tmp = NdChar * 0.5;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.8e-49) or not (NdChar <= 3.5e-86): tmp = NdChar * 0.5 else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.8e-49) || !(NdChar <= 3.5e-86)) tmp = Float64(NdChar * 0.5); else tmp = Float64(NaChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.8e-49) || ~((NdChar <= 3.5e-86))) tmp = NdChar * 0.5; else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.8e-49], N[Not[LessEqual[NdChar, 3.5e-86]], $MachinePrecision]], N[(NdChar * 0.5), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.8 \cdot 10^{-49} \lor \neg \left(NdChar \leq 3.5 \cdot 10^{-86}\right):\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -1.79999999999999985e-49 or 3.50000000000000021e-86 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 23.9%
distribute-lft-out23.9%
Simplified23.9%
Taylor expanded in NaChar around 0 23.1%
if -1.79999999999999985e-49 < NdChar < 3.50000000000000021e-86Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 30.9%
distribute-lft-out30.9%
Simplified30.9%
Taylor expanded in NaChar around inf 28.2%
Final simplification25.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 2.55e+230) (* 0.5 (+ NdChar NaChar)) (/ 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 (EAccept <= 2.55e+230) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 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 (eaccept <= 2.55d+230) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 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 (EAccept <= 2.55e+230) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / ((EDonor / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 2.55e+230: tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / ((EDonor / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 2.55e+230) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = 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 (EAccept <= 2.55e+230) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / ((EDonor / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 2.55e+230], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[(EDonor / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 2.55 \cdot 10^{+230}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{\frac{EDonor}{KbT} + 2}\\
\end{array}
\end{array}
if EAccept < 2.55e230Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.8%
distribute-lft-out27.8%
Simplified27.8%
if 2.55e230 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 88.9%
Taylor expanded in EDonor around inf 60.4%
Taylor expanded in EDonor around 0 31.5%
Final simplification28.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 9e+245) (* 0.5 (+ NdChar NaChar)) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9e+245) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 9d+245) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar * 0.5d0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9e+245) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 9e+245: tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 9e+245) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar * 0.5); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 9e+245) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 9e+245], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 9 \cdot 10^{+245}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 9e245Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.8%
distribute-lft-out27.8%
Simplified27.8%
if 9e245 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 12.3%
distribute-lft-out12.3%
Simplified12.3%
Taylor expanded in NaChar around 0 31.9%
Final simplification28.1%
(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 26.8%
distribute-lft-out26.8%
Simplified26.8%
Taylor expanded in NaChar around inf 18.0%
Final simplification18.0%
herbie shell --seed 2024137
(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))))))