
(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 22 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 (+ (cbrt (pow (exp (/ (+ EDonor (+ Vef (- mu Ec))) KbT)) 3.0)) 1.0)) (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (cbrt(pow(exp(((EDonor + (Vef + (mu - Ec))) / KbT)), 3.0)) + 1.0)) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (Math.cbrt(Math.pow(Math.exp(((EDonor + (Vef + (mu - Ec))) / KbT)), 3.0)) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0));
}
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(cbrt((exp(Float64(Float64(EDonor + Float64(Vef + Float64(mu - Ec))) / KbT)) ^ 3.0)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0))) end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Power[N[Power[N[Exp[N[(N[(EDonor + N[(Vef + N[(mu - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision], 3.0], $MachinePrecision], 1/3], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{\sqrt[3]{{\left(e^{\frac{EDonor + \left(Vef + \left(mu - Ec\right)\right)}{KbT}}\right)}^{3}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}
\end{array}
Initial program 99.9%
Simplified99.9%
add-cbrt-cube99.9%
pow399.9%
*-un-lft-identity99.9%
*-un-lft-identity99.9%
+-commutative99.9%
associate-+l-99.9%
Applied egg-rr99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0)))
(t_1 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0)))
(t_2 (+ t_1 (/ NaChar (+ (exp (/ Ev KbT)) 1.0)))))
(if (<= EAccept -6.2e-143)
t_2
(if (<= EAccept 2.5e-217)
(+ t_0 (/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0)))
(if (<= EAccept 4.5e-188)
(+
t_1
(/
NaChar
(+
(-
(+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 1.0)
(/ mu KbT))
1.0)))
(if (<= EAccept 2.35e-74)
(+ t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))
(if (<= EAccept 1.28e-20)
t_2
(if (<= EAccept 6.8e+90)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(+ t_1 (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_2 = t_1 + (NaChar / (exp((Ev / KbT)) + 1.0));
double tmp;
if (EAccept <= -6.2e-143) {
tmp = t_2;
} else if (EAccept <= 2.5e-217) {
tmp = t_0 + (NdChar / (exp((-Ec / KbT)) + 1.0));
} else if (EAccept <= 4.5e-188) {
tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (EAccept <= 2.35e-74) {
tmp = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0));
} else if (EAccept <= 1.28e-20) {
tmp = t_2;
} else if (EAccept <= 6.8e+90) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_1 + (NaChar / (exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)
t_1 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
t_2 = t_1 + (nachar / (exp((ev / kbt)) + 1.0d0))
if (eaccept <= (-6.2d-143)) then
tmp = t_2
else if (eaccept <= 2.5d-217) then
tmp = t_0 + (ndchar / (exp((-ec / kbt)) + 1.0d0))
else if (eaccept <= 4.5d-188) then
tmp = t_1 + (nachar / (((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 1.0d0) - (mu / kbt)) + 1.0d0))
else if (eaccept <= 2.35d-74) then
tmp = t_0 + (ndchar / (exp((edonor / kbt)) + 1.0d0))
else if (eaccept <= 1.28d-20) then
tmp = t_2
else if (eaccept <= 6.8d+90) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = t_1 + (nachar / (exp((eaccept / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double t_2 = t_1 + (NaChar / (Math.exp((Ev / KbT)) + 1.0));
double tmp;
if (EAccept <= -6.2e-143) {
tmp = t_2;
} else if (EAccept <= 2.5e-217) {
tmp = t_0 + (NdChar / (Math.exp((-Ec / KbT)) + 1.0));
} else if (EAccept <= 4.5e-188) {
tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (EAccept <= 2.35e-74) {
tmp = t_0 + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
} else if (EAccept <= 1.28e-20) {
tmp = t_2;
} else if (EAccept <= 6.8e+90) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_1 + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0) t_1 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) t_2 = t_1 + (NaChar / (math.exp((Ev / KbT)) + 1.0)) tmp = 0 if EAccept <= -6.2e-143: tmp = t_2 elif EAccept <= 2.5e-217: tmp = t_0 + (NdChar / (math.exp((-Ec / KbT)) + 1.0)) elif EAccept <= 4.5e-188: tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)) elif EAccept <= 2.35e-74: tmp = t_0 + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) elif EAccept <= 1.28e-20: tmp = t_2 elif EAccept <= 6.8e+90: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = t_1 + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) t_1 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) t_2 = Float64(t_1 + Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0))) tmp = 0.0 if (EAccept <= -6.2e-143) tmp = t_2; elseif (EAccept <= 2.5e-217) tmp = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0))); elseif (EAccept <= 4.5e-188) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(mu / KbT)) + 1.0))); elseif (EAccept <= 2.35e-74) tmp = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))); elseif (EAccept <= 1.28e-20) tmp = t_2; elseif (EAccept <= 6.8e+90) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(t_1 + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0); t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); t_2 = t_1 + (NaChar / (exp((Ev / KbT)) + 1.0)); tmp = 0.0; if (EAccept <= -6.2e-143) tmp = t_2; elseif (EAccept <= 2.5e-217) tmp = t_0 + (NdChar / (exp((-Ec / KbT)) + 1.0)); elseif (EAccept <= 4.5e-188) tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)); elseif (EAccept <= 2.35e-74) tmp = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0)); elseif (EAccept <= 1.28e-20) tmp = t_2; elseif (EAccept <= 6.8e+90) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = t_1 + (NaChar / (exp((EAccept / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -6.2e-143], t$95$2, If[LessEqual[EAccept, 2.5e-217], N[(t$95$0 + N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4.5e-188], N[(t$95$1 + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 2.35e-74], N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.28e-20], t$95$2, If[LessEqual[EAccept, 6.8e+90], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
t_2 := t\_1 + \frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{if}\;EAccept \leq -6.2 \cdot 10^{-143}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 2.5 \cdot 10^{-217}:\\
\;\;\;\;t\_0 + \frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 4.5 \cdot 10^{-188}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{mu}{KbT}\right) + 1}\\
\mathbf{elif}\;EAccept \leq 2.35 \cdot 10^{-74}:\\
\;\;\;\;t\_0 + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 1.28 \cdot 10^{-20}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EAccept \leq 6.8 \cdot 10^{+90}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < -6.20000000000000015e-143 or 2.35000000000000005e-74 < EAccept < 1.2800000000000001e-20Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 68.8%
if -6.20000000000000015e-143 < EAccept < 2.5000000000000001e-217Initial program 99.8%
Simplified99.8%
Taylor expanded in Ec around inf 75.9%
mul-1-neg37.1%
Simplified75.9%
if 2.5000000000000001e-217 < EAccept < 4.49999999999999993e-188Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 80.9%
if 4.49999999999999993e-188 < EAccept < 2.35000000000000005e-74Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 74.8%
if 1.2800000000000001e-20 < EAccept < 6.80000000000000036e90Initial program 99.7%
Simplified99.7%
Taylor expanded in KbT around inf 57.3%
associate-+r+57.3%
Simplified57.3%
Taylor expanded in EDonor around inf 24.9%
associate-/l*29.8%
Simplified29.8%
Taylor expanded in KbT around 0 83.6%
if 6.80000000000000036e90 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 93.0%
Final simplification76.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0)))
(t_1 (+ t_0 (/ NdChar (+ (exp (/ mu KbT)) 1.0))))
(t_2 (+ t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))))
(if (<= EDonor -3.9e+64)
t_2
(if (<= EDonor 2.7e-84)
t_1
(if (<= EDonor 2.1e+19)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(if (<= EDonor 5.2e+165) 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 / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = t_0 + (NdChar / (exp((mu / KbT)) + 1.0));
double t_2 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -3.9e+64) {
tmp = t_2;
} else if (EDonor <= 2.7e-84) {
tmp = t_1;
} else if (EDonor <= 2.1e+19) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (EDonor <= 5.2e+165) {
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 / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)
t_1 = t_0 + (ndchar / (exp((mu / kbt)) + 1.0d0))
t_2 = t_0 + (ndchar / (exp((edonor / kbt)) + 1.0d0))
if (edonor <= (-3.9d+64)) then
tmp = t_2
else if (edonor <= 2.7d-84) then
tmp = t_1
else if (edonor <= 2.1d+19) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else if (edonor <= 5.2d+165) 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 / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = t_0 + (NdChar / (Math.exp((mu / KbT)) + 1.0));
double t_2 = t_0 + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -3.9e+64) {
tmp = t_2;
} else if (EDonor <= 2.7e-84) {
tmp = t_1;
} else if (EDonor <= 2.1e+19) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else if (EDonor <= 5.2e+165) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0) t_1 = t_0 + (NdChar / (math.exp((mu / KbT)) + 1.0)) t_2 = t_0 + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) tmp = 0 if EDonor <= -3.9e+64: tmp = t_2 elif EDonor <= 2.7e-84: tmp = t_1 elif EDonor <= 2.1e+19: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) elif EDonor <= 5.2e+165: 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(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) t_1 = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))) t_2 = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))) tmp = 0.0 if (EDonor <= -3.9e+64) tmp = t_2; elseif (EDonor <= 2.7e-84) tmp = t_1; elseif (EDonor <= 2.1e+19) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); elseif (EDonor <= 5.2e+165) 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 / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0); t_1 = t_0 + (NdChar / (exp((mu / KbT)) + 1.0)); t_2 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0)); tmp = 0.0; if (EDonor <= -3.9e+64) tmp = t_2; elseif (EDonor <= 2.7e-84) tmp = t_1; elseif (EDonor <= 2.1e+19) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); elseif (EDonor <= 5.2e+165) 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[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -3.9e+64], t$95$2, If[LessEqual[EDonor, 2.7e-84], t$95$1, If[LessEqual[EDonor, 2.1e+19], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 5.2e+165], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}\\
t_1 := t\_0 + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
t_2 := t\_0 + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{if}\;EDonor \leq -3.9 \cdot 10^{+64}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;EDonor \leq 2.7 \cdot 10^{-84}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq 2.1 \cdot 10^{+19}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 5.2 \cdot 10^{+165}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if EDonor < -3.8999999999999998e64 or 5.2000000000000002e165 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 88.7%
if -3.8999999999999998e64 < EDonor < 2.6999999999999999e-84 or 2.1e19 < EDonor < 5.2000000000000002e165Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 82.3%
if 2.6999999999999999e-84 < EDonor < 2.1e19Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.9%
associate-+r+56.9%
Simplified56.9%
Taylor expanded in EDonor around inf 36.2%
associate-/l*36.2%
Simplified36.2%
Taylor expanded in KbT around 0 85.5%
Final simplification84.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))
(if (<= Ev -5.5e+132)
(+
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(/ NdChar (+ (exp (/ Vef KbT)) 1.0)))
(if (<= Ev -8e-99)
t_0
(if (<= Ev -9e-176)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(+
(-
(+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 1.0)
(/ mu KbT))
1.0)))
(if (<= Ev 1.05e-28)
t_0
(+
(/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -5.5e+132) {
tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0));
} else if (Ev <= -8e-99) {
tmp = t_0;
} else if (Ev <= -9e-176) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (Ev <= 1.05e-28) {
tmp = t_0;
} else {
tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
if (ev <= (-5.5d+132)) then
tmp = (nachar / (exp((ev / kbt)) + 1.0d0)) + (ndchar / (exp((vef / kbt)) + 1.0d0))
else if (ev <= (-8d-99)) then
tmp = t_0
else if (ev <= (-9d-176)) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 1.0d0) - (mu / kbt)) + 1.0d0))
else if (ev <= 1.05d-28) then
tmp = t_0
else
tmp = (ndchar / (exp((-ec / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -5.5e+132) {
tmp = (NaChar / (Math.exp((Ev / KbT)) + 1.0)) + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
} else if (Ev <= -8e-99) {
tmp = t_0;
} else if (Ev <= -9e-176) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (Ev <= 1.05e-28) {
tmp = t_0;
} else {
tmp = (NdChar / (Math.exp((-Ec / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) tmp = 0 if Ev <= -5.5e+132: tmp = (NaChar / (math.exp((Ev / KbT)) + 1.0)) + (NdChar / (math.exp((Vef / KbT)) + 1.0)) elif Ev <= -8e-99: tmp = t_0 elif Ev <= -9e-176: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)) elif Ev <= 1.05e-28: tmp = t_0 else: tmp = (NdChar / (math.exp((-Ec / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0.0 if (Ev <= -5.5e+132) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif (Ev <= -8e-99) tmp = t_0; elseif (Ev <= -9e-176) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(mu / KbT)) + 1.0))); elseif (Ev <= 1.05e-28) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); tmp = 0.0; if (Ev <= -5.5e+132) tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0)); elseif (Ev <= -8e-99) tmp = t_0; elseif (Ev <= -9e-176) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)); elseif (Ev <= 1.05e-28) tmp = t_0; else tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -5.5e+132], N[(N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -8e-99], t$95$0, If[LessEqual[Ev, -9e-176], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.05e-28], t$95$0, N[(N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;Ev \leq -5.5 \cdot 10^{+132}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -8 \cdot 10^{-99}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -9 \cdot 10^{-176}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{mu}{KbT}\right) + 1}\\
\mathbf{elif}\;Ev \leq 1.05 \cdot 10^{-28}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -5.5e132Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.5%
Taylor expanded in Ev around inf 67.0%
if -5.5e132 < Ev < -8.0000000000000002e-99 or -9e-176 < Ev < 1.05000000000000003e-28Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.7%
associate-+r+55.7%
Simplified55.7%
Taylor expanded in EDonor around inf 33.8%
associate-/l*36.0%
Simplified36.0%
Taylor expanded in KbT around 0 69.0%
if -8.0000000000000002e-99 < Ev < -9e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
if 1.05000000000000003e-28 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 78.9%
Taylor expanded in Ec around inf 60.0%
mul-1-neg42.9%
Simplified60.0%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))))
(if (<= EDonor -4.2e-213)
t_0
(if (<= EDonor 3.3e-94)
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ Vef Ev) mu) KbT)) 1.0)))
(if (<= EDonor 4.4e+80)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -4.2e-213) {
tmp = t_0;
} else if (EDonor <= 3.3e-94) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0));
} else if (EDonor <= 4.4e+80) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp((edonor / kbt)) + 1.0d0))
if (edonor <= (-4.2d-213)) then
tmp = t_0
else if (edonor <= 3.3d-94) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp((((vef + ev) - mu) / kbt)) + 1.0d0))
else if (edonor <= 4.4d+80) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -4.2e-213) {
tmp = t_0;
} else if (EDonor <= 3.3e-94) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp((((Vef + Ev) - mu) / KbT)) + 1.0));
} else if (EDonor <= 4.4e+80) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) tmp = 0 if EDonor <= -4.2e-213: tmp = t_0 elif EDonor <= 3.3e-94: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp((((Vef + Ev) - mu) / KbT)) + 1.0)) elif EDonor <= 4.4e+80: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))) tmp = 0.0 if (EDonor <= -4.2e-213) tmp = t_0; elseif (EDonor <= 3.3e-94) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) + 1.0))); elseif (EDonor <= 4.4e+80) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp((EDonor / KbT)) + 1.0)); tmp = 0.0; if (EDonor <= -4.2e-213) tmp = t_0; elseif (EDonor <= 3.3e-94) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0)); elseif (EDonor <= 4.4e+80) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -4.2e-213], t$95$0, If[LessEqual[EDonor, 3.3e-94], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 4.4e+80], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{if}\;EDonor \leq -4.2 \cdot 10^{-213}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;EDonor \leq 3.3 \cdot 10^{-94}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(Vef + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 4.4 \cdot 10^{+80}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if EDonor < -4.1999999999999997e-213 or 4.40000000000000005e80 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 81.9%
if -4.1999999999999997e-213 < EDonor < 3.3000000000000001e-94Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 83.3%
Taylor expanded in EAccept around 0 80.3%
if 3.3000000000000001e-94 < EDonor < 4.40000000000000005e80Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.5%
associate-+r+58.5%
Simplified58.5%
Taylor expanded in EDonor around inf 39.0%
associate-/l*39.0%
Simplified39.0%
Taylor expanded in KbT around 0 77.8%
Final simplification80.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0)))
(t_1 (+ t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)))))
(if (<= EDonor -1.1e-28)
t_1
(if (<= EDonor 3.7e-82)
(+ t_0 (/ NdChar (+ (exp (/ Vef KbT)) 1.0)))
(if (<= EDonor 9.2e+87)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -1.1e-28) {
tmp = t_1;
} else if (EDonor <= 3.7e-82) {
tmp = t_0 + (NdChar / (exp((Vef / KbT)) + 1.0));
} else if (EDonor <= 9.2e+87) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)
t_1 = t_0 + (ndchar / (exp((edonor / kbt)) + 1.0d0))
if (edonor <= (-1.1d-28)) then
tmp = t_1
else if (edonor <= 3.7d-82) then
tmp = t_0 + (ndchar / (exp((vef / kbt)) + 1.0d0))
else if (edonor <= 9.2d+87) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0);
double t_1 = t_0 + (NdChar / (Math.exp((EDonor / KbT)) + 1.0));
double tmp;
if (EDonor <= -1.1e-28) {
tmp = t_1;
} else if (EDonor <= 3.7e-82) {
tmp = t_0 + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
} else if (EDonor <= 9.2e+87) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0) t_1 = t_0 + (NdChar / (math.exp((EDonor / KbT)) + 1.0)) tmp = 0 if EDonor <= -1.1e-28: tmp = t_1 elif EDonor <= 3.7e-82: tmp = t_0 + (NdChar / (math.exp((Vef / KbT)) + 1.0)) elif EDonor <= 9.2e+87: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) t_1 = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0))) tmp = 0.0 if (EDonor <= -1.1e-28) tmp = t_1; elseif (EDonor <= 3.7e-82) tmp = Float64(t_0 + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif (EDonor <= 9.2e+87) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0); t_1 = t_0 + (NdChar / (exp((EDonor / KbT)) + 1.0)); tmp = 0.0; if (EDonor <= -1.1e-28) tmp = t_1; elseif (EDonor <= 3.7e-82) tmp = t_0 + (NdChar / (exp((Vef / KbT)) + 1.0)); elseif (EDonor <= 9.2e+87) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.1e-28], t$95$1, If[LessEqual[EDonor, 3.7e-82], N[(t$95$0 + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 9.2e+87], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}\\
t_1 := t\_0 + \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{if}\;EDonor \leq -1.1 \cdot 10^{-28}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;EDonor \leq 3.7 \cdot 10^{-82}:\\
\;\;\;\;t\_0 + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;EDonor \leq 9.2 \cdot 10^{+87}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if EDonor < -1.09999999999999998e-28 or 9.2000000000000007e87 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 83.8%
if -1.09999999999999998e-28 < EDonor < 3.7000000000000001e-82Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 83.2%
if 3.7000000000000001e-82 < EDonor < 9.2000000000000007e87Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.2%
associate-+r+58.2%
Simplified58.2%
Taylor expanded in EDonor around inf 41.6%
associate-/l*41.5%
Simplified41.5%
Taylor expanded in KbT around 0 80.7%
Final simplification83.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))
(if (<= Ev -7e+133)
(+
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(/ NdChar (+ (exp (/ Vef KbT)) 1.0)))
(if (<= Ev -1.4e-99)
t_0
(if (<= Ev -8.8e-176)
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(+
(-
(+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 1.0)
(/ mu KbT))
1.0)))
(if (<= Ev 6.5e-33)
t_0
(+
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (+ (exp (/ mu KbT)) 1.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -7e+133) {
tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0));
} else if (Ev <= -1.4e-99) {
tmp = t_0;
} else if (Ev <= -8.8e-176) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (Ev <= 6.5e-33) {
tmp = t_0;
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
if (ev <= (-7d+133)) then
tmp = (nachar / (exp((ev / kbt)) + 1.0d0)) + (ndchar / (exp((vef / kbt)) + 1.0d0))
else if (ev <= (-1.4d-99)) then
tmp = t_0
else if (ev <= (-8.8d-176)) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 1.0d0) - (mu / kbt)) + 1.0d0))
else if (ev <= 6.5d-33) then
tmp = t_0
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -7e+133) {
tmp = (NaChar / (Math.exp((Ev / KbT)) + 1.0)) + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
} else if (Ev <= -1.4e-99) {
tmp = t_0;
} else if (Ev <= -8.8e-176) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else if (Ev <= 6.5e-33) {
tmp = t_0;
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) tmp = 0 if Ev <= -7e+133: tmp = (NaChar / (math.exp((Ev / KbT)) + 1.0)) + (NdChar / (math.exp((Vef / KbT)) + 1.0)) elif Ev <= -1.4e-99: tmp = t_0 elif Ev <= -8.8e-176: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)) elif Ev <= 6.5e-33: tmp = t_0 else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) tmp = 0.0 if (Ev <= -7e+133) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif (Ev <= -1.4e-99) tmp = t_0; elseif (Ev <= -8.8e-176) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(mu / KbT)) + 1.0))); elseif (Ev <= 6.5e-33) tmp = t_0; else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); tmp = 0.0; if (Ev <= -7e+133) tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0)); elseif (Ev <= -1.4e-99) tmp = t_0; elseif (Ev <= -8.8e-176) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)); elseif (Ev <= 6.5e-33) tmp = t_0; else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -7e+133], N[(N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.4e-99], t$95$0, If[LessEqual[Ev, -8.8e-176], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 6.5e-33], t$95$0, N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;Ev \leq -7 \cdot 10^{+133}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.4 \cdot 10^{-99}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -8.8 \cdot 10^{-176}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{mu}{KbT}\right) + 1}\\
\mathbf{elif}\;Ev \leq 6.5 \cdot 10^{-33}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -6.9999999999999997e133Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.5%
Taylor expanded in Ev around inf 67.0%
if -6.9999999999999997e133 < Ev < -1.4e-99 or -8.7999999999999994e-176 < Ev < 6.4999999999999993e-33Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 56.4%
associate-+r+56.4%
Simplified56.4%
Taylor expanded in EDonor around inf 34.2%
associate-/l*36.4%
Simplified36.4%
Taylor expanded in KbT around 0 69.2%
if -1.4e-99 < Ev < -8.7999999999999994e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
if 6.4999999999999993e-33 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 79.6%
Taylor expanded in mu around inf 62.4%
Final simplification67.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0)) (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}
\end{array}
Initial program 99.9%
Simplified99.9%
Final simplification99.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 9.5e-11)
(+
(/ NdChar (+ (exp (/ Vef KbT)) 1.0))
(/ NaChar (+ (exp (/ (- (+ Vef Ev) mu) KbT)) 1.0)))
(if (<= EAccept 1e+204)
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(+
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))
(/ NdChar (+ (exp (/ mu KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9.5e-11) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0));
} else if (EAccept <= 1e+204) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 9.5d-11) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (exp((((vef + ev) - mu) / kbt)) + 1.0d0))
else if (eaccept <= 1d+204) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / (exp((mu / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9.5e-11) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (Math.exp((((Vef + Ev) - mu) / KbT)) + 1.0));
} else if (EAccept <= 1e+204) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (Math.exp((mu / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 9.5e-11: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (math.exp((((Vef + Ev) - mu) / KbT)) + 1.0)) elif EAccept <= 1e+204: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / (math.exp((mu / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 9.5e-11) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) + 1.0))); elseif (EAccept <= 1e+204) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 9.5e-11) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (exp((((Vef + Ev) - mu) / KbT)) + 1.0)); elseif (EAccept <= 1e+204) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / (exp((mu / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 9.5e-11], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1e+204], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 9.5 \cdot 10^{-11}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{e^{\frac{\left(Vef + Ev\right) - mu}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 10^{+204}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\end{array}
\end{array}
if EAccept < 9.49999999999999951e-11Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 71.7%
Taylor expanded in EAccept around 0 68.3%
if 9.49999999999999951e-11 < EAccept < 9.99999999999999989e203Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.5%
associate-+r+54.5%
Simplified54.5%
Taylor expanded in EDonor around inf 20.4%
associate-/l*20.1%
Simplified20.1%
Taylor expanded in KbT around 0 74.2%
if 9.99999999999999989e203 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 99.9%
Taylor expanded in mu around inf 79.3%
Final simplification70.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -1.85e+133)
(+ (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) (/ NdChar (+ (exp (/ Vef KbT)) 1.0)))
(if (or (<= Ev -3.6e-101) (not (<= Ev -9.5e-176)))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/
NaChar
(+
(- (+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 1.0) (/ mu KbT))
1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.85e+133) {
tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0));
} else if ((Ev <= -3.6e-101) || !(Ev <= -9.5e-176)) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-1.85d+133)) then
tmp = (nachar / (exp((ev / kbt)) + 1.0d0)) + (ndchar / (exp((vef / kbt)) + 1.0d0))
else if ((ev <= (-3.6d-101)) .or. (.not. (ev <= (-9.5d-176)))) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / (((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 1.0d0) - (mu / kbt)) + 1.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -1.85e+133) {
tmp = (NaChar / (Math.exp((Ev / KbT)) + 1.0)) + (NdChar / (Math.exp((Vef / KbT)) + 1.0));
} else if ((Ev <= -3.6e-101) || !(Ev <= -9.5e-176)) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -1.85e+133: tmp = (NaChar / (math.exp((Ev / KbT)) + 1.0)) + (NdChar / (math.exp((Vef / KbT)) + 1.0)) elif (Ev <= -3.6e-101) or not (Ev <= -9.5e-176): tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -1.85e+133) tmp = Float64(Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)) + Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0))); elseif ((Ev <= -3.6e-101) || !(Ev <= -9.5e-176)) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(mu / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -1.85e+133) tmp = (NaChar / (exp((Ev / KbT)) + 1.0)) + (NdChar / (exp((Vef / KbT)) + 1.0)); elseif ((Ev <= -3.6e-101) || ~((Ev <= -9.5e-176))) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -1.85e+133], N[(N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[Ev, -3.6e-101], N[Not[LessEqual[Ev, -9.5e-176]], $MachinePrecision]], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -1.85 \cdot 10^{+133}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1} + \frac{NdChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -3.6 \cdot 10^{-101} \lor \neg \left(Ev \leq -9.5 \cdot 10^{-176}\right):\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{mu}{KbT}\right) + 1}\\
\end{array}
\end{array}
if Ev < -1.85000000000000012e133Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.5%
Taylor expanded in Ev around inf 67.0%
if -1.85000000000000012e133 < Ev < -3.6e-101 or -9.5e-176 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 58.6%
associate-+r+58.6%
Simplified58.6%
Taylor expanded in EDonor around inf 33.4%
associate-/l*34.9%
Simplified34.9%
Taylor expanded in KbT around 0 67.3%
if -3.6e-101 < Ev < -9.5e-176Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
Final simplification67.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)))
(t_1 (/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))))
(if (<= NaChar -4.2e+44)
t_0
(if (<= NaChar -65000000000.0)
(+ (/ NdChar (+ (exp (/ Vef KbT)) 1.0)) (/ NaChar (- 2.0 (/ mu KbT))))
(if (<= NaChar -1.85e-57)
t_0
(if (<= NaChar -8.8e-147)
(+ t_1 (/ NaChar 2.0))
(if (<= NaChar -1.05e-199)
t_0
(if (<= NaChar 4.9e+23)
(+
t_1
(/
NaChar
(+
(-
(+ (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))) 1.0)
(/ mu KbT))
1.0)))
(+
(/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))
(/ NdChar (+ (/ Vef KbT) 2.0)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -4.2e+44) {
tmp = t_0;
} else if (NaChar <= -65000000000.0) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (2.0 - (mu / KbT)));
} else if (NaChar <= -1.85e-57) {
tmp = t_0;
} else if (NaChar <= -8.8e-147) {
tmp = t_1 + (NaChar / 2.0);
} else if (NaChar <= -1.05e-199) {
tmp = t_0;
} else if (NaChar <= 4.9e+23) {
tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
t_1 = ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)
if (nachar <= (-4.2d+44)) then
tmp = t_0
else if (nachar <= (-65000000000.0d0)) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / (2.0d0 - (mu / kbt)))
else if (nachar <= (-1.85d-57)) then
tmp = t_0
else if (nachar <= (-8.8d-147)) then
tmp = t_1 + (nachar / 2.0d0)
else if (nachar <= (-1.05d-199)) then
tmp = t_0
else if (nachar <= 4.9d+23) then
tmp = t_1 + (nachar / (((((eaccept / kbt) + ((ev / kbt) + (vef / kbt))) + 1.0d0) - (mu / kbt)) + 1.0d0))
else
tmp = (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.0d0)) + (ndchar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
double t_1 = NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0);
double tmp;
if (NaChar <= -4.2e+44) {
tmp = t_0;
} else if (NaChar <= -65000000000.0) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / (2.0 - (mu / KbT)));
} else if (NaChar <= -1.85e-57) {
tmp = t_0;
} else if (NaChar <= -8.8e-147) {
tmp = t_1 + (NaChar / 2.0);
} else if (NaChar <= -1.05e-199) {
tmp = t_0;
} else if (NaChar <= 4.9e+23) {
tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) t_1 = NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0) tmp = 0 if NaChar <= -4.2e+44: tmp = t_0 elif NaChar <= -65000000000.0: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / (2.0 - (mu / KbT))) elif NaChar <= -1.85e-57: tmp = t_0 elif NaChar <= -8.8e-147: tmp = t_1 + (NaChar / 2.0) elif NaChar <= -1.05e-199: tmp = t_0 elif NaChar <= 4.9e+23: tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)) else: tmp = (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)) t_1 = Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) tmp = 0.0 if (NaChar <= -4.2e+44) tmp = t_0; elseif (NaChar <= -65000000000.0) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / Float64(2.0 - Float64(mu / KbT)))); elseif (NaChar <= -1.85e-57) tmp = t_0; elseif (NaChar <= -8.8e-147) tmp = Float64(t_1 + Float64(NaChar / 2.0)); elseif (NaChar <= -1.05e-199) tmp = t_0; elseif (NaChar <= 4.9e+23) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) + 1.0) - Float64(mu / KbT)) + 1.0))); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0)) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); t_1 = NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0); tmp = 0.0; if (NaChar <= -4.2e+44) tmp = t_0; elseif (NaChar <= -65000000000.0) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / (2.0 - (mu / KbT))); elseif (NaChar <= -1.85e-57) tmp = t_0; elseif (NaChar <= -8.8e-147) tmp = t_1 + (NaChar / 2.0); elseif (NaChar <= -1.05e-199) tmp = t_0; elseif (NaChar <= 4.9e+23) tmp = t_1 + (NaChar / (((((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))) + 1.0) - (mu / KbT)) + 1.0)); else tmp = (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)) + (NdChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -4.2e+44], t$95$0, If[LessEqual[NaChar, -65000000000.0], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(2.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.85e-57], t$95$0, If[LessEqual[NaChar, -8.8e-147], N[(t$95$1 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -1.05e-199], t$95$0, If[LessEqual[NaChar, 4.9e+23], N[(t$95$1 + N[(NaChar / N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
t_1 := \frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1}\\
\mathbf{if}\;NaChar \leq -4.2 \cdot 10^{+44}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -65000000000:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{2 - \frac{mu}{KbT}}\\
\mathbf{elif}\;NaChar \leq -1.85 \cdot 10^{-57}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -8.8 \cdot 10^{-147}:\\
\;\;\;\;t\_1 + \frac{NaChar}{2}\\
\mathbf{elif}\;NaChar \leq -1.05 \cdot 10^{-199}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq 4.9 \cdot 10^{+23}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\left(\left(\left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) + 1\right) - \frac{mu}{KbT}\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -4.19999999999999974e44 or -6.5e10 < NaChar < -1.85e-57 or -8.8000000000000004e-147 < NaChar < -1.05000000000000001e-199Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 65.4%
associate-+r+65.4%
Simplified65.4%
Taylor expanded in EDonor around inf 40.6%
associate-/l*42.8%
Simplified42.8%
Taylor expanded in KbT around 0 79.3%
if -4.19999999999999974e44 < NaChar < -6.5e10Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in mu around inf 91.0%
associate-*r/91.0%
mul-1-neg91.0%
Simplified91.0%
Taylor expanded in mu around 0 91.0%
mul-1-neg91.0%
unsub-neg91.0%
Simplified91.0%
if -1.85e-57 < NaChar < -8.8000000000000004e-147Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.9%
if -1.05000000000000001e-199 < NaChar < 4.9000000000000003e23Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.5%
if 4.9000000000000003e23 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 91.2%
Taylor expanded in Vef around 0 84.0%
+-commutative51.6%
Simplified84.0%
Final simplification75.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= KbT -3.65e+118) (not (<= KbT 1.26e+151)))
(+
(/ NdChar (+ (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)) 1.0))
(/ NaChar 2.0))
(/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.65e+118) || !(KbT <= 1.26e+151)) {
tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-3.65d+118)) .or. (.not. (kbt <= 1.26d+151))) then
tmp = (ndchar / (exp(((edonor + (mu + (vef - ec))) / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -3.65e+118) || !(KbT <= 1.26e+151)) {
tmp = (NdChar / (Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -3.65e+118) or not (KbT <= 1.26e+151): tmp = (NdChar / (math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -3.65e+118) || !(KbT <= 1.26e+151)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -3.65e+118) || ~((KbT <= 1.26e+151))) tmp = (NdChar / (exp(((EDonor + (mu + (Vef - Ec))) / KbT)) + 1.0)) + (NaChar / 2.0); else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -3.65e+118], N[Not[LessEqual[KbT, 1.26e+151]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -3.65 \cdot 10^{+118} \lor \neg \left(KbT \leq 1.26 \cdot 10^{+151}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -3.6500000000000002e118 or 1.26000000000000006e151 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 83.1%
if -3.6500000000000002e118 < KbT < 1.26000000000000006e151Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 50.5%
associate-+r+50.5%
Simplified50.5%
Taylor expanded in EDonor around inf 38.4%
associate-/l*38.1%
Simplified38.1%
Taylor expanded in KbT around 0 67.2%
Final simplification71.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept -2.3e-102)
(+ (/ NdChar (+ (exp (/ Vef KbT)) 1.0)) (/ NaChar 2.0))
(if (<= EAccept 8.6e-135)
(+ (* NdChar 0.5) (/ NaChar (+ (exp (/ (- mu) KbT)) 1.0)))
(if (<= EAccept 1.7e-28)
(+ (/ NdChar (+ (exp (/ mu KbT)) 1.0)) (/ NaChar 2.0))
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= -2.3e-102) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (EAccept <= 8.6e-135) {
tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0));
} else if (EAccept <= 1.7e-28) {
tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= (-2.3d-102)) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (eaccept <= 8.6d-135) then
tmp = (ndchar * 0.5d0) + (nachar / (exp((-mu / kbt)) + 1.0d0))
else if (eaccept <= 1.7d-28) then
tmp = (ndchar / (exp((mu / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= -2.3e-102) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (EAccept <= 8.6e-135) {
tmp = (NdChar * 0.5) + (NaChar / (Math.exp((-mu / KbT)) + 1.0));
} else if (EAccept <= 1.7e-28) {
tmp = (NdChar / (Math.exp((mu / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= -2.3e-102: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0) elif EAccept <= 8.6e-135: tmp = (NdChar * 0.5) + (NaChar / (math.exp((-mu / KbT)) + 1.0)) elif EAccept <= 1.7e-28: tmp = (NdChar / (math.exp((mu / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= -2.3e-102) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (EAccept <= 8.6e-135) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(exp(Float64(Float64(-mu) / KbT)) + 1.0))); elseif (EAccept <= 1.7e-28) tmp = Float64(Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= -2.3e-102) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0); elseif (EAccept <= 8.6e-135) tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0)); elseif (EAccept <= 1.7e-28) tmp = (NdChar / (exp((mu / KbT)) + 1.0)) + (NaChar / 2.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, -2.3e-102], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 8.6e-135], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.7e-28], N[(N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq -2.3 \cdot 10^{-102}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;EAccept \leq 8.6 \cdot 10^{-135}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{e^{\frac{-mu}{KbT}} + 1}\\
\mathbf{elif}\;EAccept \leq 1.7 \cdot 10^{-28}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EAccept < -2.29999999999999987e-102Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.1%
Taylor expanded in KbT around inf 46.3%
if -2.29999999999999987e-102 < EAccept < 8.59999999999999997e-135Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 70.2%
Taylor expanded in mu around inf 49.4%
associate-*r/49.4%
mul-1-neg49.4%
Simplified49.4%
Taylor expanded in Vef around 0 40.8%
+-commutative40.8%
Simplified40.8%
Taylor expanded in Vef around 0 39.6%
if 8.59999999999999997e-135 < EAccept < 1.7e-28Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.9%
Taylor expanded in mu around inf 38.0%
if 1.7e-28 < EAccept Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 78.4%
Taylor expanded in KbT around inf 36.7%
Final simplification41.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.25e+121) (not (<= KbT 3.4e+161))) (+ (/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0)) (/ NaChar 2.0)) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.25e+121) || !(KbT <= 3.4e+161)) {
tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-1.25d+121)) .or. (.not. (kbt <= 3.4d+161))) then
tmp = (ndchar / (exp((-ec / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -1.25e+121) || !(KbT <= 3.4e+161)) {
tmp = (NdChar / (Math.exp((-Ec / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.25e+121) or not (KbT <= 3.4e+161): tmp = (NdChar / (math.exp((-Ec / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.25e+121) || !(KbT <= 3.4e+161)) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.25e+121) || ~((KbT <= 3.4e+161))) tmp = (NdChar / (exp((-Ec / KbT)) + 1.0)) + (NaChar / 2.0); else tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.25e+121], N[Not[LessEqual[KbT, 3.4e+161]], $MachinePrecision]], N[(N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.25 \cdot 10^{+121} \lor \neg \left(KbT \leq 3.4 \cdot 10^{+161}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -1.25000000000000002e121 or 3.39999999999999993e161 < KbT Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 83.6%
Taylor expanded in Ec around inf 78.7%
mul-1-neg78.7%
Simplified78.7%
if -1.25000000000000002e121 < KbT < 3.39999999999999993e161Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 50.8%
associate-+r+50.8%
Simplified50.8%
Taylor expanded in EDonor around inf 37.8%
associate-/l*37.5%
Simplified37.5%
Taylor expanded in KbT around 0 67.2%
Final simplification70.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -5.9e+128)
(+ (/ NdChar (+ (exp (/ Vef KbT)) 1.0)) (/ NaChar 2.0))
(if (<= Ev -7.2e-134)
(+ (* NdChar 0.5) (/ NaChar (+ (exp (/ (- mu) KbT)) 1.0)))
(+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5.9e+128) {
tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (Ev <= -7.2e-134) {
tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-5.9d+128)) then
tmp = (ndchar / (exp((vef / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else if (ev <= (-7.2d-134)) then
tmp = (ndchar * 0.5d0) + (nachar / (exp((-mu / kbt)) + 1.0d0))
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -5.9e+128) {
tmp = (NdChar / (Math.exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0);
} else if (Ev <= -7.2e-134) {
tmp = (NdChar * 0.5) + (NaChar / (Math.exp((-mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -5.9e+128: tmp = (NdChar / (math.exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0) elif Ev <= -7.2e-134: tmp = (NdChar * 0.5) + (NaChar / (math.exp((-mu / KbT)) + 1.0)) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -5.9e+128) tmp = Float64(Float64(NdChar / Float64(exp(Float64(Vef / KbT)) + 1.0)) + Float64(NaChar / 2.0)); elseif (Ev <= -7.2e-134) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(exp(Float64(Float64(-mu) / KbT)) + 1.0))); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -5.9e+128) tmp = (NdChar / (exp((Vef / KbT)) + 1.0)) + (NaChar / 2.0); elseif (Ev <= -7.2e-134) tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0)); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -5.9e+128], N[(N[(NdChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -7.2e-134], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -5.9 \cdot 10^{+128}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{Vef}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{elif}\;Ev \leq -7.2 \cdot 10^{-134}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{e^{\frac{-mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -5.89999999999999987e128Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.2%
Taylor expanded in KbT around inf 44.1%
if -5.89999999999999987e128 < Ev < -7.1999999999999998e-134Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 72.5%
Taylor expanded in mu around inf 52.3%
associate-*r/52.3%
mul-1-neg52.3%
Simplified52.3%
Taylor expanded in Vef around 0 37.3%
+-commutative37.3%
Simplified37.3%
Taylor expanded in Vef around 0 34.9%
if -7.1999999999999998e-134 < Ev Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 75.9%
Taylor expanded in KbT around inf 42.6%
Final simplification41.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT 1.9e+156) (/ NaChar (+ (exp (/ (- (+ EAccept (+ Vef Ev)) mu) KbT)) 1.0)) (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ 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.9e+156) {
tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (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.9d+156) then
tmp = nachar / (exp((((eaccept + (vef + ev)) - mu) / kbt)) + 1.0d0)
else
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (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.9e+156) {
tmp = NaChar / (Math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0);
} else {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= 1.9e+156: tmp = NaChar / (math.exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0) else: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= 1.9e+156) tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(EAccept + Float64(Vef + Ev)) - mu) / KbT)) + 1.0)); else tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + 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.9e+156) tmp = NaChar / (exp((((EAccept + (Vef + Ev)) - mu) / KbT)) + 1.0); else tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, 1.9e+156], N[(NaChar / N[(N[Exp[N[(N[(N[(EAccept + N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq 1.9 \cdot 10^{+156}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(EAccept + \left(Vef + Ev\right)\right) - mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if KbT < 1.90000000000000012e156Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 53.5%
associate-+r+53.5%
Simplified53.5%
Taylor expanded in EDonor around inf 34.5%
associate-/l*35.6%
Simplified35.6%
Taylor expanded in KbT around 0 65.7%
if 1.90000000000000012e156 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 90.1%
Taylor expanded in EDonor around inf 83.7%
Final simplification68.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 9e+89) (+ (* NdChar 0.5) (/ NaChar (+ (exp (/ (- mu) KbT)) 1.0))) (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9e+89) {
tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 9d+89) then
tmp = (ndchar * 0.5d0) + (nachar / (exp((-mu / kbt)) + 1.0d0))
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 9e+89) {
tmp = (NdChar * 0.5) + (NaChar / (Math.exp((-mu / KbT)) + 1.0));
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 9e+89: tmp = (NdChar * 0.5) + (NaChar / (math.exp((-mu / KbT)) + 1.0)) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 9e+89) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / Float64(exp(Float64(Float64(-mu) / KbT)) + 1.0))); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 9e+89) tmp = (NdChar * 0.5) + (NaChar / (exp((-mu / KbT)) + 1.0)); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 9e+89], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 9 \cdot 10^{+89}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{e^{\frac{-mu}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EAccept < 9e89Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 69.9%
Taylor expanded in mu around inf 51.8%
associate-*r/51.8%
mul-1-neg51.8%
Simplified51.8%
Taylor expanded in Vef around 0 40.1%
+-commutative40.1%
Simplified40.1%
Taylor expanded in Vef around 0 38.2%
if 9e89 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 93.0%
Taylor expanded in KbT around inf 45.0%
Final simplification39.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EDonor -8e+231) (* KbT (/ NdChar EDonor)) (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -8e+231) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (edonor <= (-8d+231)) then
tmp = kbt * (ndchar / edonor)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -8e+231) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -8e+231: tmp = KbT * (NdChar / EDonor) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -8e+231) tmp = Float64(KbT * Float64(NdChar / EDonor)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= -8e+231) tmp = KbT * (NdChar / EDonor); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -8e+231], N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -8 \cdot 10^{+231}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EDonor < -8.0000000000000005e231Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.8%
associate-+r+44.8%
Simplified44.8%
Taylor expanded in EDonor around inf 55.2%
associate-/l*60.3%
Simplified60.3%
Taylor expanded in KbT around inf 7.1%
Taylor expanded in NaChar around 0 30.1%
associate-*r/35.1%
Simplified35.1%
if -8.0000000000000005e231 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 71.5%
Taylor expanded in KbT around inf 39.9%
Final simplification39.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 1.5e+126) (+ (/ NdChar (+ (exp (/ EDonor KbT)) 1.0)) (/ NaChar 2.0)) (+ (/ NaChar (+ (exp (/ EAccept KbT)) 1.0)) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e+126) {
tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.5d+126) then
tmp = (ndchar / (exp((edonor / kbt)) + 1.0d0)) + (nachar / 2.0d0)
else
tmp = (nachar / (exp((eaccept / kbt)) + 1.0d0)) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.5e+126) {
tmp = (NdChar / (Math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0);
} else {
tmp = (NaChar / (Math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.5e+126: tmp = (NdChar / (math.exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0) else: tmp = (NaChar / (math.exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.5e+126) tmp = Float64(Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.5e+126) tmp = (NdChar / (exp((EDonor / KbT)) + 1.0)) + (NaChar / 2.0); else tmp = (NaChar / (exp((EAccept / KbT)) + 1.0)) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.5e+126], N[(N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.5 \cdot 10^{+126}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EAccept < 1.5000000000000001e126Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 48.8%
Taylor expanded in EDonor around inf 38.1%
if 1.5000000000000001e126 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 94.5%
Taylor expanded in KbT around inf 47.2%
Final simplification39.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EDonor -7.5e+229) (* KbT (/ NdChar EDonor)) (+ (/ NaChar 2.0) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -7.5e+229) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (edonor <= (-7.5d+229)) then
tmp = kbt * (ndchar / edonor)
else
tmp = (nachar / 2.0d0) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -7.5e+229) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = (NaChar / 2.0) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -7.5e+229: tmp = KbT * (NdChar / EDonor) else: tmp = (NaChar / 2.0) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -7.5e+229) tmp = Float64(KbT * Float64(NdChar / EDonor)); else tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= -7.5e+229) tmp = KbT * (NdChar / EDonor); else tmp = (NaChar / 2.0) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -7.5e+229], N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -7.5 \cdot 10^{+229}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if EDonor < -7.50000000000000021e229Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.8%
associate-+r+44.8%
Simplified44.8%
Taylor expanded in EDonor around inf 55.2%
associate-/l*60.3%
Simplified60.3%
Taylor expanded in KbT around inf 7.1%
Taylor expanded in NaChar around 0 30.1%
associate-*r/35.1%
Simplified35.1%
if -7.50000000000000021e229 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 48.5%
Taylor expanded in KbT around inf 30.9%
Final simplification31.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EDonor -3e+191) (* KbT (/ NdChar EDonor)) (* 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 (EDonor <= -3e+191) {
tmp = KbT * (NdChar / EDonor);
} 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 (edonor <= (-3d+191)) then
tmp = kbt * (ndchar / edonor)
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 (EDonor <= -3e+191) {
tmp = KbT * (NdChar / EDonor);
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -3e+191: tmp = KbT * (NdChar / EDonor) else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -3e+191) tmp = Float64(KbT * Float64(NdChar / EDonor)); 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 (EDonor <= -3e+191) tmp = KbT * (NdChar / EDonor); else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -3e+191], N[(KbT * N[(NdChar / EDonor), $MachinePrecision]), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -3 \cdot 10^{+191}:\\
\;\;\;\;KbT \cdot \frac{NdChar}{EDonor}\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if EDonor < -2.9999999999999997e191Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 40.6%
associate-+r+40.6%
Simplified40.6%
Taylor expanded in EDonor around inf 41.4%
associate-/l*48.6%
Simplified48.6%
Taylor expanded in KbT around inf 6.0%
Taylor expanded in NaChar around 0 22.8%
associate-*r/30.0%
Simplified30.0%
if -2.9999999999999997e191 < EDonor Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 59.2%
associate-+r+59.2%
Simplified59.2%
Taylor expanded in EDonor around inf 31.1%
associate-/l*31.7%
Simplified31.7%
Taylor expanded in KbT around inf 10.8%
Taylor expanded in NaChar around inf 22.0%
Final simplification22.8%
(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 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 57.3%
associate-+r+57.3%
Simplified57.3%
Taylor expanded in EDonor around inf 32.2%
associate-/l*33.4%
Simplified33.4%
Taylor expanded in KbT around inf 10.3%
Taylor expanded in NaChar around inf 20.4%
Final simplification20.4%
herbie shell --seed 2024046
(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))))))