
(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 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))) + (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}}
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT)))))
(t_2
(+
t_1
(/ NaChar (+ (/ Ev KbT) (+ 2.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT))))))))
(t_3 (+ (/ NaChar t_0) (/ NdChar t_0)))
(t_4
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))))
(if (<= Vef -3.7e+22)
t_3
(if (<= Vef -1.2e-96)
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= Vef -4.5e-184)
t_4
(if (<= Vef -1.2e-224)
t_2
(if (<= Vef -3.7e-277)
t_4
(if (<= Vef 1.22e-231)
t_2
(if (<= Vef 9.2e-210)
t_4
(if (<= Vef 9.5e-170)
(+ t_1 (/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))
(if (<= Vef 1.15e+44)
t_4
(if (<= Vef 1.85e+116)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (- 1.0 (/ Ec KbT))))
t_3))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double t_2 = t_1 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double t_4 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
double tmp;
if (Vef <= -3.7e+22) {
tmp = t_3;
} else if (Vef <= -1.2e-96) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (Vef <= -4.5e-184) {
tmp = t_4;
} else if (Vef <= -1.2e-224) {
tmp = t_2;
} else if (Vef <= -3.7e-277) {
tmp = t_4;
} else if (Vef <= 1.22e-231) {
tmp = t_2;
} else if (Vef <= 9.2e-210) {
tmp = t_4;
} else if (Vef <= 9.5e-170) {
tmp = t_1 + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else if (Vef <= 1.15e+44) {
tmp = t_4;
} else if (Vef <= 1.85e+116) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))
t_2 = t_1 + (nachar / ((ev / kbt) + (2.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt))))))
t_3 = (nachar / t_0) + (ndchar / t_0)
t_4 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
if (vef <= (-3.7d+22)) then
tmp = t_3
else if (vef <= (-1.2d-96)) then
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
else if (vef <= (-4.5d-184)) then
tmp = t_4
else if (vef <= (-1.2d-224)) then
tmp = t_2
else if (vef <= (-3.7d-277)) then
tmp = t_4
else if (vef <= 1.22d-231) then
tmp = t_2
else if (vef <= 9.2d-210) then
tmp = t_4
else if (vef <= 9.5d-170) then
tmp = t_1 + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
else if (vef <= 1.15d+44) then
tmp = t_4
else if (vef <= 1.85d+116) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double t_2 = t_1 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double t_4 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
double tmp;
if (Vef <= -3.7e+22) {
tmp = t_3;
} else if (Vef <= -1.2e-96) {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
} else if (Vef <= -4.5e-184) {
tmp = t_4;
} else if (Vef <= -1.2e-224) {
tmp = t_2;
} else if (Vef <= -3.7e-277) {
tmp = t_4;
} else if (Vef <= 1.22e-231) {
tmp = t_2;
} else if (Vef <= 9.2e-210) {
tmp = t_4;
} else if (Vef <= 9.5e-170) {
tmp = t_1 + (NaChar / (1.0 + (1.0 - (mu / KbT))));
} else if (Vef <= 1.15e+44) {
tmp = t_4;
} else if (Vef <= 1.85e+116) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT))) t_2 = t_1 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))) t_3 = (NaChar / t_0) + (NdChar / t_0) t_4 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) tmp = 0 if Vef <= -3.7e+22: tmp = t_3 elif Vef <= -1.2e-96: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) elif Vef <= -4.5e-184: tmp = t_4 elif Vef <= -1.2e-224: tmp = t_2 elif Vef <= -3.7e-277: tmp = t_4 elif Vef <= 1.22e-231: tmp = t_2 elif Vef <= 9.2e-210: tmp = t_4 elif Vef <= 9.5e-170: tmp = t_1 + (NaChar / (1.0 + (1.0 - (mu / KbT)))) elif Vef <= 1.15e+44: tmp = t_4 elif Vef <= 1.85e+116: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 - (Ec / KbT))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + Float64(2.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT))))))) t_3 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) t_4 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (Vef <= -3.7e+22) tmp = t_3; elseif (Vef <= -1.2e-96) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (Vef <= -4.5e-184) tmp = t_4; elseif (Vef <= -1.2e-224) tmp = t_2; elseif (Vef <= -3.7e-277) tmp = t_4; elseif (Vef <= 1.22e-231) tmp = t_2; elseif (Vef <= 9.2e-210) tmp = t_4; elseif (Vef <= 9.5e-170) tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); elseif (Vef <= 1.15e+44) tmp = t_4; elseif (Vef <= 1.85e+116) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT))); t_2 = t_1 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))); t_3 = (NaChar / t_0) + (NdChar / t_0); t_4 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (Vef <= -3.7e+22) tmp = t_3; elseif (Vef <= -1.2e-96) tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); elseif (Vef <= -4.5e-184) tmp = t_4; elseif (Vef <= -1.2e-224) tmp = t_2; elseif (Vef <= -3.7e-277) tmp = t_4; elseif (Vef <= 1.22e-231) tmp = t_2; elseif (Vef <= 9.2e-210) tmp = t_4; elseif (Vef <= 9.5e-170) tmp = t_1 + (NaChar / (1.0 + (1.0 - (mu / KbT)))); elseif (Vef <= 1.15e+44) tmp = t_4; elseif (Vef <= 1.85e+116) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 - (Ec / KbT))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + N[(2.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.7e+22], t$95$3, If[LessEqual[Vef, -1.2e-96], N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -4.5e-184], t$95$4, If[LessEqual[Vef, -1.2e-224], t$95$2, If[LessEqual[Vef, -3.7e-277], t$95$4, If[LessEqual[Vef, 1.22e-231], t$95$2, If[LessEqual[Vef, 9.2e-210], t$95$4, If[LessEqual[Vef, 9.5e-170], N[(t$95$1 + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.15e+44], t$95$4, If[LessEqual[Vef, 1.85e+116], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}}\\
t_2 := t_1 + \frac{NaChar}{\frac{Ev}{KbT} + \left(2 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)}\\
t_3 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
t_4 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;Vef \leq -3.7 \cdot 10^{+22}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -1.2 \cdot 10^{-96}:\\
\;\;\;\;t_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;Vef \leq -4.5 \cdot 10^{-184}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -1.2 \cdot 10^{-224}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq -3.7 \cdot 10^{-277}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.22 \cdot 10^{-231}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;Vef \leq 9.2 \cdot 10^{-210}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 9.5 \cdot 10^{-170}:\\
\;\;\;\;t_1 + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;Vef \leq 1.15 \cdot 10^{+44}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.85 \cdot 10^{+116}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -3.6999999999999998e22 or 1.8500000000000001e116 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.5%
Taylor expanded in Ec around 0 85.2%
Taylor expanded in Vef around inf 79.8%
if -3.6999999999999998e22 < Vef < -1.2000000000000001e-96Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.0%
Taylor expanded in Ev around 0 78.2%
if -1.2000000000000001e-96 < Vef < -4.5000000000000001e-184 or -1.20000000000000007e-224 < Vef < -3.69999999999999985e-277 or 1.22e-231 < Vef < 9.2e-210 or 9.5000000000000001e-170 < Vef < 1.15000000000000002e44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 71.3%
*-commutative32.3%
Simplified71.3%
if -4.5000000000000001e-184 < Vef < -1.20000000000000007e-224 or -3.69999999999999985e-277 < Vef < 1.22e-231Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 59.6%
Taylor expanded in Ev around 0 54.1%
unpow254.1%
unpow254.1%
Simplified54.1%
if 9.2e-210 < Vef < 9.5000000000000001e-170Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 100.0%
neg-mul-1100.0%
distribute-neg-frac100.0%
Simplified100.0%
Taylor expanded in mu around 0 100.0%
mul-1-neg100.0%
unsub-neg100.0%
Simplified100.0%
if 1.15000000000000002e44 < Vef < 1.8500000000000001e116Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.2%
Taylor expanded in KbT around inf 30.9%
Taylor expanded in Ec around inf 65.7%
neg-mul-165.7%
distribute-neg-frac65.7%
Simplified65.7%
Final simplification73.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT)))))
(t_3 (+ (/ NaChar t_0) (/ NdChar t_0)))
(t_4
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))))
(if (<= Vef -1.3e+21)
t_3
(if (<= Vef -3.4e-93)
(+ t_2 (/ NaChar (+ (/ Ev KbT) 2.0)))
(if (<= Vef -1.95e-184)
t_4
(if (<= Vef -5.6e-210)
(+
t_2
(/
NaChar
(+ (/ Ev KbT) (+ 2.0 (* 0.5 (/ (* Ev Ev) (* KbT KbT)))))))
(if (<= Vef 1.26e-278)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))
(if (<= Vef 3.3e-222)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.75e+44)
t_4
(if (<= Vef 1.6e+116)
(+ t_1 (/ NdChar (- 1.0 (/ Ec KbT))))
t_3))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / (1.0 + exp((EAccept / KbT)));
double t_2 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double t_4 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
double tmp;
if (Vef <= -1.3e+21) {
tmp = t_3;
} else if (Vef <= -3.4e-93) {
tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0));
} else if (Vef <= -1.95e-184) {
tmp = t_4;
} else if (Vef <= -5.6e-210) {
tmp = t_2 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))));
} else if (Vef <= 1.26e-278) {
tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT))));
} else if (Vef <= 3.3e-222) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.75e+44) {
tmp = t_4;
} else if (Vef <= 1.6e+116) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / (1.0d0 + exp((eaccept / kbt)))
t_2 = ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))
t_3 = (nachar / t_0) + (ndchar / t_0)
t_4 = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
if (vef <= (-1.3d+21)) then
tmp = t_3
else if (vef <= (-3.4d-93)) then
tmp = t_2 + (nachar / ((ev / kbt) + 2.0d0))
else if (vef <= (-1.95d-184)) then
tmp = t_4
else if (vef <= (-5.6d-210)) then
tmp = t_2 + (nachar / ((ev / kbt) + (2.0d0 + (0.5d0 * ((ev * ev) / (kbt * kbt))))))
else if (vef <= 1.26d-278) then
tmp = t_1 + (ndchar / (1.0d0 + exp((-ec / kbt))))
else if (vef <= 3.3d-222) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.75d+44) then
tmp = t_4
else if (vef <= 1.6d+116) then
tmp = t_1 + (ndchar / (1.0d0 - (ec / kbt)))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double t_2 = NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double t_3 = (NaChar / t_0) + (NdChar / t_0);
double t_4 = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
double tmp;
if (Vef <= -1.3e+21) {
tmp = t_3;
} else if (Vef <= -3.4e-93) {
tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0));
} else if (Vef <= -1.95e-184) {
tmp = t_4;
} else if (Vef <= -5.6e-210) {
tmp = t_2 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT))))));
} else if (Vef <= 1.26e-278) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
} else if (Vef <= 3.3e-222) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.75e+44) {
tmp = t_4;
} else if (Vef <= 1.6e+116) {
tmp = t_1 + (NdChar / (1.0 - (Ec / KbT)));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / (1.0 + math.exp((EAccept / KbT))) t_2 = NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT))) t_3 = (NaChar / t_0) + (NdChar / t_0) t_4 = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) tmp = 0 if Vef <= -1.3e+21: tmp = t_3 elif Vef <= -3.4e-93: tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0)) elif Vef <= -1.95e-184: tmp = t_4 elif Vef <= -5.6e-210: tmp = t_2 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))) elif Vef <= 1.26e-278: tmp = t_1 + (NdChar / (1.0 + math.exp((-Ec / KbT)))) elif Vef <= 3.3e-222: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.75e+44: tmp = t_4 elif Vef <= 1.6e+116: tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) t_3 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) t_4 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)) tmp = 0.0 if (Vef <= -1.3e+21) tmp = t_3; elseif (Vef <= -3.4e-93) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); elseif (Vef <= -1.95e-184) tmp = t_4; elseif (Vef <= -5.6e-210) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(Ev / KbT) + Float64(2.0 + Float64(0.5 * Float64(Float64(Ev * Ev) / Float64(KbT * KbT))))))); elseif (Vef <= 1.26e-278) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); elseif (Vef <= 3.3e-222) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.75e+44) tmp = t_4; elseif (Vef <= 1.6e+116) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 - Float64(Ec / KbT)))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / (1.0 + exp((EAccept / KbT))); t_2 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT))); t_3 = (NaChar / t_0) + (NdChar / t_0); t_4 = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); tmp = 0.0; if (Vef <= -1.3e+21) tmp = t_3; elseif (Vef <= -3.4e-93) tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0)); elseif (Vef <= -1.95e-184) tmp = t_4; elseif (Vef <= -5.6e-210) tmp = t_2 + (NaChar / ((Ev / KbT) + (2.0 + (0.5 * ((Ev * Ev) / (KbT * KbT)))))); elseif (Vef <= 1.26e-278) tmp = t_1 + (NdChar / (1.0 + exp((-Ec / KbT)))); elseif (Vef <= 3.3e-222) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.75e+44) tmp = t_4; elseif (Vef <= 1.6e+116) tmp = t_1 + (NdChar / (1.0 - (Ec / KbT))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.3e+21], t$95$3, If[LessEqual[Vef, -3.4e-93], N[(t$95$2 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, -1.95e-184], t$95$4, If[LessEqual[Vef, -5.6e-210], N[(t$95$2 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + N[(2.0 + N[(0.5 * N[(N[(Ev * Ev), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.26e-278], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 3.3e-222], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.75e+44], t$95$4, If[LessEqual[Vef, 1.6e+116], N[(t$95$1 + N[(NdChar / N[(1.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}}\\
t_3 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
t_4 := \frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{if}\;Vef \leq -1.3 \cdot 10^{+21}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;Vef \leq -3.4 \cdot 10^{-93}:\\
\;\;\;\;t_2 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\mathbf{elif}\;Vef \leq -1.95 \cdot 10^{-184}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq -5.6 \cdot 10^{-210}:\\
\;\;\;\;t_2 + \frac{NaChar}{\frac{Ev}{KbT} + \left(2 + 0.5 \cdot \frac{Ev \cdot Ev}{KbT \cdot KbT}\right)}\\
\mathbf{elif}\;Vef \leq 1.26 \cdot 10^{-278}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\mathbf{elif}\;Vef \leq 3.3 \cdot 10^{-222}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.75 \cdot 10^{+44}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;Vef \leq 1.6 \cdot 10^{+116}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
\end{array}
if Vef < -1.3e21 or 1.6e116 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.5%
Taylor expanded in Ec around 0 85.2%
Taylor expanded in Vef around inf 79.8%
if -1.3e21 < Vef < -3.40000000000000001e-93Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.0%
Taylor expanded in Ev around 0 78.2%
if -3.40000000000000001e-93 < Vef < -1.94999999999999997e-184 or 3.30000000000000002e-222 < Vef < 1.75e44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.4%
*-commutative33.7%
Simplified69.4%
if -1.94999999999999997e-184 < Vef < -5.6e-210Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 46.4%
Taylor expanded in Ev around 0 36.3%
unpow236.3%
unpow236.3%
Simplified36.3%
if -5.6e-210 < Vef < 1.26e-278Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 58.7%
Taylor expanded in Ec around inf 55.1%
mul-1-neg55.1%
Simplified55.1%
if 1.26e-278 < Vef < 3.30000000000000002e-222Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 77.6%
Taylor expanded in mu around inf 61.1%
if 1.75e44 < Vef < 1.6e116Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.2%
Taylor expanded in KbT around inf 30.9%
Taylor expanded in Ec around inf 65.7%
neg-mul-165.7%
distribute-neg-frac65.7%
Simplified65.7%
Final simplification70.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT)))) (t_1 (/ NaChar t_0)))
(if (<= Vef -2.55e+190)
(+ t_1 (/ NdChar t_0))
(if (<= Vef 5e+44)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(+ t_1 (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -2.55e+190) {
tmp = t_1 + (NdChar / t_0);
} else if (Vef <= 5e+44) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else {
tmp = t_1 + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = nachar / t_0
if (vef <= (-2.55d+190)) then
tmp = t_1 + (ndchar / t_0)
else if (vef <= 5d+44) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else
tmp = t_1 + (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NaChar / t_0;
double tmp;
if (Vef <= -2.55e+190) {
tmp = t_1 + (NdChar / t_0);
} else if (Vef <= 5e+44) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else {
tmp = t_1 + (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NaChar / t_0 tmp = 0 if Vef <= -2.55e+190: tmp = t_1 + (NdChar / t_0) elif Vef <= 5e+44: tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) else: tmp = t_1 + (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NaChar / t_0) tmp = 0.0 if (Vef <= -2.55e+190) tmp = Float64(t_1 + Float64(NdChar / t_0)); elseif (Vef <= 5e+44) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); else tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NaChar / t_0; tmp = 0.0; if (Vef <= -2.55e+190) tmp = t_1 + (NdChar / t_0); elseif (Vef <= 5e+44) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); else tmp = t_1 + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -2.55e+190], N[(t$95$1 + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 5e+44], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0}\\
\mathbf{if}\;Vef \leq -2.55 \cdot 10^{+190}:\\
\;\;\;\;t_1 + \frac{NdChar}{t_0}\\
\mathbf{elif}\;Vef \leq 5 \cdot 10^{+44}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_1 + \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.55000000000000015e190Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 100.0%
Taylor expanded in Ec around 0 100.0%
Taylor expanded in Vef around inf 100.0%
if -2.55000000000000015e190 < Vef < 4.9999999999999996e44Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 77.8%
if 4.9999999999999996e44 < Vef Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.2%
Taylor expanded in Ec around 0 80.9%
Final simplification80.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT))))))
(if (<= EAccept 1.7e-153)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 4.5e+135)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double tmp;
if (EAccept <= 1.7e-153) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 4.5e+135) {
tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))
if (eaccept <= 1.7d-153) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 4.5d+135) then
tmp = t_0 + (nachar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)));
double tmp;
if (EAccept <= 1.7e-153) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 4.5e+135) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT))) tmp = 0 if EAccept <= 1.7e-153: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 4.5e+135: tmp = t_0 + (NaChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) tmp = 0.0 if (EAccept <= 1.7e-153) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 4.5e+135) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT))); tmp = 0.0; if (EAccept <= 1.7e-153) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 4.5e+135) tmp = t_0 + (NaChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 1.7e-153], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4.5e+135], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 1.7 \cdot 10^{-153}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 4.5 \cdot 10^{+135}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.6999999999999999e-153Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.4%
if 1.6999999999999999e-153 < EAccept < 4.50000000000000007e135Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.8%
if 4.50000000000000007e135 < EAccept Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 90.3%
Final simplification73.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (+ (/ NaChar t_0) (/ NdChar t_0))))
(if (<= Ev -2.2e+18)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))))
(if (<= Ev -3.45e-279)
t_1
(if (<= Ev 3.4e-247)
(+
(/
NdChar
(+
1.0
(-
(+ (/ mu KbT) (+ 1.0 (+ (/ Vef KbT) (/ EDonor KbT))))
(/ Ec KbT))))
(/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))))
(if (<= Ev 1.55e-38)
t_1
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ (- Ec) KbT)))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Ev <= -2.2e+18) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))));
} else if (Ev <= -3.45e-279) {
tmp = t_1;
} else if (Ev <= 3.4e-247) {
tmp = (NdChar / (1.0 + (((mu / KbT) + (1.0 + ((Vef / KbT) + (EDonor / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT))));
} else if (Ev <= 1.55e-38) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = (nachar / t_0) + (ndchar / t_0)
if (ev <= (-2.2d+18)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt))))
else if (ev <= (-3.45d-279)) then
tmp = t_1
else if (ev <= 3.4d-247) then
tmp = (ndchar / (1.0d0 + (((mu / kbt) + (1.0d0 + ((vef / kbt) + (edonor / kbt)))) - (ec / kbt)))) + (nachar / (1.0d0 + exp((-mu / kbt))))
else if (ev <= 1.55d-38) then
tmp = t_1
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((-ec / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = (NaChar / t_0) + (NdChar / t_0);
double tmp;
if (Ev <= -2.2e+18) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT))));
} else if (Ev <= -3.45e-279) {
tmp = t_1;
} else if (Ev <= 3.4e-247) {
tmp = (NdChar / (1.0 + (((mu / KbT) + (1.0 + ((Vef / KbT) + (EDonor / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + Math.exp((-mu / KbT))));
} else if (Ev <= 1.55e-38) {
tmp = t_1;
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((-Ec / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = (NaChar / t_0) + (NdChar / t_0) tmp = 0 if Ev <= -2.2e+18: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) elif Ev <= -3.45e-279: tmp = t_1 elif Ev <= 3.4e-247: tmp = (NdChar / (1.0 + (((mu / KbT) + (1.0 + ((Vef / KbT) + (EDonor / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + math.exp((-mu / KbT)))) elif Ev <= 1.55e-38: tmp = t_1 else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((-Ec / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(Float64(NaChar / t_0) + Float64(NdChar / t_0)) tmp = 0.0 if (Ev <= -2.2e+18) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT))))); elseif (Ev <= -3.45e-279) tmp = t_1; elseif (Ev <= 3.4e-247) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(Float64(mu / KbT) + Float64(1.0 + Float64(Float64(Vef / KbT) + Float64(EDonor / KbT)))) - Float64(Ec / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT))))); elseif (Ev <= 1.55e-38) tmp = t_1; else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Ec) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = (NaChar / t_0) + (NdChar / t_0); tmp = 0.0; if (Ev <= -2.2e+18) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))); elseif (Ev <= -3.45e-279) tmp = t_1; elseif (Ev <= 3.4e-247) tmp = (NdChar / (1.0 + (((mu / KbT) + (1.0 + ((Vef / KbT) + (EDonor / KbT)))) - (Ec / KbT)))) + (NaChar / (1.0 + exp((-mu / KbT)))); elseif (Ev <= 1.55e-38) tmp = t_1; else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((-Ec / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / t$95$0), $MachinePrecision] + N[(NdChar / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -2.2e+18], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -3.45e-279], t$95$1, If[LessEqual[Ev, 3.4e-247], N[(N[(NdChar / N[(1.0 + N[(N[(N[(mu / KbT), $MachinePrecision] + N[(1.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.55e-38], t$95$1, N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NaChar}{t_0} + \frac{NdChar}{t_0}\\
\mathbf{if}\;Ev \leq -2.2 \cdot 10^{+18}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
\mathbf{elif}\;Ev \leq -3.45 \cdot 10^{-279}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;Ev \leq 3.4 \cdot 10^{-247}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(\frac{mu}{KbT} + \left(1 + \left(\frac{Vef}{KbT} + \frac{EDonor}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)} + \frac{NaChar}{1 + e^{\frac{-mu}{KbT}}}\\
\mathbf{elif}\;Ev \leq 1.55 \cdot 10^{-38}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{-Ec}{KbT}}}\\
\end{array}
\end{array}
if Ev < -2.2e18Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 84.9%
Taylor expanded in Ec around 0 80.3%
if -2.2e18 < Ev < -3.45000000000000012e-279 or 3.4000000000000001e-247 < Ev < 1.54999999999999991e-38Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.9%
Taylor expanded in Ec around 0 66.8%
Taylor expanded in Vef around inf 54.1%
if -3.45000000000000012e-279 < Ev < 3.4000000000000001e-247Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.7%
neg-mul-185.7%
distribute-neg-frac85.7%
Simplified85.7%
Taylor expanded in KbT around inf 56.9%
if 1.54999999999999991e-38 < Ev Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 59.9%
Taylor expanded in Ec around inf 45.3%
mul-1-neg45.3%
Simplified45.3%
Final simplification58.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT))))))
(if (<= EAccept 9e-156)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_0)
(if (<= EAccept 1.05e+265)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) t_0)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ mu KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)));
double tmp;
if (EAccept <= 9e-156) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0;
} else if (EAccept <= 1.05e+265) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0;
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt)))
if (eaccept <= 9d-156) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + t_0
else if (eaccept <= 1.05d+265) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + t_0
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT)));
double tmp;
if (EAccept <= 9e-156) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_0;
} else if (EAccept <= 1.05e+265) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT))) tmp = 0 if EAccept <= 9e-156: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_0 elif EAccept <= 1.05e+265: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + t_0 else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT)))) tmp = 0.0 if (EAccept <= 9e-156) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_0); elseif (EAccept <= 1.05e+265) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT))); tmp = 0.0; if (EAccept <= 9e-156) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_0; elseif (EAccept <= 1.05e+265) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + t_0; else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 9e-156], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EAccept, 1.05e+265], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 9 \cdot 10^{-156}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t_0\\
\mathbf{elif}\;EAccept \leq 1.05 \cdot 10^{+265}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 8.99999999999999971e-156Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 65.4%
Taylor expanded in Ec around 0 60.6%
if 8.99999999999999971e-156 < EAccept < 1.0499999999999999e265Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.0%
Taylor expanded in Ec around 0 71.8%
if 1.0499999999999999e265 < EAccept Initial program 99.9%
neg-sub099.9%
associate--r-99.9%
+-commutative99.9%
neg-sub099.9%
sub-neg99.9%
associate--l-99.9%
unsub-neg99.9%
+-commutative99.9%
associate-+l+99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 99.9%
Taylor expanded in mu around inf 70.0%
Final simplification65.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -9.8e-39) (not (<= NaChar 3e-11)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT))))
(/ NaChar (+ 1.0 (- 1.0 (/ mu KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -9.8e-39) || !(NaChar <= 3e-11)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-9.8d-39)) .or. (.not. (nachar <= 3d-11))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))) + (nachar / (1.0d0 + (1.0d0 - (mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -9.8e-39) || !(NaChar <= 3e-11)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -9.8e-39) or not (NaChar <= 3e-11): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -9.8e-39) || !(NaChar <= 3e-11)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(1.0 - Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -9.8e-39) || ~((NaChar <= 3e-11))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / (1.0 + (1.0 - (mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -9.8e-39], N[Not[LessEqual[NaChar, 3e-11]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -9.8 \cdot 10^{-39} \lor \neg \left(NaChar \leq 3 \cdot 10^{-11}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}} + \frac{NaChar}{1 + \left(1 - \frac{mu}{KbT}\right)}\\
\end{array}
\end{array}
if NaChar < -9.79999999999999947e-39 or 3e-11 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.6%
*-commutative25.7%
Simplified60.6%
if -9.79999999999999947e-39 < NaChar < 3e-11Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.9%
neg-mul-185.9%
distribute-neg-frac85.9%
Simplified85.9%
Taylor expanded in mu around 0 70.6%
mul-1-neg70.6%
unsub-neg70.6%
Simplified70.6%
Final simplification65.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.6e-38) (not (<= NaChar 0.48)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT))))
(/ NaChar (+ (/ Ev KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.6e-38) || !(NaChar <= 0.48)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-2.6d-38)) .or. (.not. (nachar <= 0.48d0))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -2.6e-38) || !(NaChar <= 0.48)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.6e-38) or not (NaChar <= 0.48): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.6e-38) || !(NaChar <= 0.48)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -2.6e-38) || ~((NaChar <= 0.48))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.6e-38], N[Not[LessEqual[NaChar, 0.48]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.6 \cdot 10^{-38} \lor \neg \left(NaChar \leq 0.48\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -2.60000000000000011e-38 or 0.47999999999999998 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 61.3%
*-commutative26.1%
Simplified61.3%
if -2.60000000000000011e-38 < NaChar < 0.47999999999999998Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.0%
Taylor expanded in Ev around 0 66.2%
Final simplification63.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= EAccept 1.15e-143)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= EAccept 4e-126)
(+ t_0 (/ KbT (/ Vef NdChar)))
(if (<= EAccept 1.5e+41)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) (* NdChar 0.5))
(if (<= EAccept 5.8e+110)
(+ t_0 (/ NdChar (+ 1.0 (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (EAccept <= 1.15e-143) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 4e-126) {
tmp = t_0 + (KbT / (Vef / NdChar));
} else if (EAccept <= 1.5e+41) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 5.8e+110) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((vef / kbt)))
if (eaccept <= 1.15d-143) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (eaccept <= 4d-126) then
tmp = t_0 + (kbt / (vef / ndchar))
else if (eaccept <= 1.5d+41) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar * 0.5d0)
else if (eaccept <= 5.8d+110) then
tmp = t_0 + (ndchar / (1.0d0 + (edonor / kbt)))
else
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (EAccept <= 1.15e-143) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 4e-126) {
tmp = t_0 + (KbT / (Vef / NdChar));
} else if (EAccept <= 1.5e+41) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 5.8e+110) {
tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT)));
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if EAccept <= 1.15e-143: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif EAccept <= 4e-126: tmp = t_0 + (KbT / (Vef / NdChar)) elif EAccept <= 1.5e+41: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar * 0.5) elif EAccept <= 5.8e+110: tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (EAccept <= 1.15e-143) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (EAccept <= 4e-126) tmp = Float64(t_0 + Float64(KbT / Float64(Vef / NdChar))); elseif (EAccept <= 1.5e+41) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar * 0.5)); elseif (EAccept <= 5.8e+110) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(EDonor / KbT)))); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (EAccept <= 1.15e-143) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (EAccept <= 4e-126) tmp = t_0 + (KbT / (Vef / NdChar)); elseif (EAccept <= 1.5e+41) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5); elseif (EAccept <= 5.8e+110) tmp = t_0 + (NdChar / (1.0 + (EDonor / KbT))); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 1.15e-143], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 4e-126], N[(t$95$0 + N[(KbT / N[(Vef / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.5e+41], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 5.8e+110], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;EAccept \leq 1.15 \cdot 10^{-143}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;EAccept \leq 4 \cdot 10^{-126}:\\
\;\;\;\;t_0 + \frac{KbT}{\frac{Vef}{NdChar}}\\
\mathbf{elif}\;EAccept \leq 1.5 \cdot 10^{+41}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;EAccept \leq 5.8 \cdot 10^{+110}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{EDonor}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 1.15000000000000006e-143Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.1%
*-commutative27.4%
Simplified52.1%
Taylor expanded in Ev around inf 37.1%
if 1.15000000000000006e-143 < EAccept < 3.9999999999999998e-126Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.4%
Taylor expanded in KbT around inf 46.1%
Taylor expanded in Vef around inf 46.0%
associate-/l*46.0%
Simplified46.0%
if 3.9999999999999998e-126 < EAccept < 1.4999999999999999e41Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 87.3%
neg-mul-187.3%
distribute-neg-frac87.3%
Simplified87.3%
Taylor expanded in KbT around inf 49.2%
*-commutative37.2%
Simplified49.2%
if 1.4999999999999999e41 < EAccept < 5.7999999999999999e110Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 73.9%
Taylor expanded in KbT around inf 33.2%
Taylor expanded in EDonor around inf 28.2%
if 5.7999999999999999e110 < EAccept Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 88.8%
Taylor expanded in KbT around inf 36.8%
Taylor expanded in Ec around inf 26.9%
mul-1-neg26.9%
associate-/l*27.2%
distribute-neg-frac27.2%
Simplified27.2%
Taylor expanded in KbT around 0 50.3%
Final simplification41.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT))))
(* NaChar 0.5))))
(if (<= KbT -9.5e-83)
t_0
(if (<= KbT -1.45e-250)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= KbT 9e-275)
t_0
(if (<= KbT 1.1e-37)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (/ Vef KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5);
double tmp;
if (KbT <= -9.5e-83) {
tmp = t_0;
} else if (KbT <= -1.45e-250) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + (mu / KbT)));
} else if (KbT <= 9e-275) {
tmp = t_0;
} else if (KbT <= 1.1e-37) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt)))) + (nachar * 0.5d0)
if (kbt <= (-9.5d-83)) then
tmp = t_0
else if (kbt <= (-1.45d-250)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + (mu / kbt)))
else if (kbt <= 9d-275) then
tmp = t_0
else if (kbt <= 1.1d-37) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + (vef / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5);
double tmp;
if (KbT <= -9.5e-83) {
tmp = t_0;
} else if (KbT <= -1.45e-250) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + (mu / KbT)));
} else if (KbT <= 9e-275) {
tmp = t_0;
} else if (KbT <= 1.1e-37) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5) tmp = 0 if KbT <= -9.5e-83: tmp = t_0 elif KbT <= -1.45e-250: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + (mu / KbT))) elif KbT <= 9e-275: tmp = t_0 elif KbT <= 1.1e-37: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT)))) + Float64(NaChar * 0.5)) tmp = 0.0 if (KbT <= -9.5e-83) tmp = t_0; elseif (KbT <= -1.45e-250) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (KbT <= 9e-275) tmp = t_0; elseif (KbT <= 1.1e-37) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5); tmp = 0.0; if (KbT <= -9.5e-83) tmp = t_0; elseif (KbT <= -1.45e-250) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + (mu / KbT))); elseif (KbT <= 9e-275) tmp = t_0; elseif (KbT <= 1.1e-37) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -9.5e-83], t$95$0, If[LessEqual[KbT, -1.45e-250], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 9e-275], t$95$0, If[LessEqual[KbT, 1.1e-37], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{if}\;KbT \leq -9.5 \cdot 10^{-83}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq -1.45 \cdot 10^{-250}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq 9 \cdot 10^{-275}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;KbT \leq 1.1 \cdot 10^{-37}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -9.50000000000000051e-83 or -1.4500000000000001e-250 < KbT < 8.99999999999999957e-275Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 76.6%
neg-mul-176.6%
distribute-neg-frac76.6%
Simplified76.6%
Taylor expanded in mu around 0 61.6%
Taylor expanded in Ec around 0 59.6%
if -9.50000000000000051e-83 < KbT < -1.4500000000000001e-250Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 61.8%
Taylor expanded in KbT around inf 23.2%
Taylor expanded in mu around inf 42.9%
if 8.99999999999999957e-275 < KbT < 1.10000000000000001e-37Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.3%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in Vef around inf 49.3%
if 1.10000000000000001e-37 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.9%
*-commutative33.9%
Simplified58.9%
Taylor expanded in Ev around inf 46.7%
Final simplification51.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= KbT -1.5e-73)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(if (<= KbT 1.4e-273)
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(if (<= KbT 2.55e-37)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ NdChar (+ 1.0 (/ Vef KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.5e-73) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (KbT <= 1.4e-273) {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
} else if (KbT <= 2.55e-37) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.5d-73)) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else if (kbt <= 1.4d-273) then
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
else if (kbt <= 2.55d-37) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + (vef / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.5e-73) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else if (KbT <= 1.4e-273) {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
} else if (KbT <= 2.55e-37) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.5e-73: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) elif KbT <= 1.4e-273: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) elif KbT <= 2.55e-37: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.5e-73) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); elseif (KbT <= 1.4e-273) tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); elseif (KbT <= 2.55e-37) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.5e-73) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); elseif (KbT <= 1.4e-273) tmp = NaChar / (1.0 + exp((EAccept / KbT))); elseif (KbT <= 2.55e-37) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.5e-73], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 1.4e-273], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.55e-37], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.5 \cdot 10^{-73}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq 1.4 \cdot 10^{-273}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;KbT \leq 2.55 \cdot 10^{-37}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -1.5e-73Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.6%
neg-mul-174.6%
distribute-neg-frac74.6%
Simplified74.6%
Taylor expanded in mu around 0 62.8%
Taylor expanded in EDonor around inf 50.7%
if -1.5e-73 < KbT < 1.39999999999999993e-273Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 68.1%
Taylor expanded in KbT around inf 21.2%
Taylor expanded in Ec around inf 23.2%
mul-1-neg23.2%
associate-/l*21.5%
distribute-neg-frac21.5%
Simplified21.5%
Taylor expanded in KbT around 0 33.1%
if 1.39999999999999993e-273 < KbT < 2.55e-37Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 70.3%
Taylor expanded in KbT around inf 43.3%
Taylor expanded in Vef around inf 49.3%
if 2.55e-37 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.9%
*-commutative33.9%
Simplified58.9%
Taylor expanded in Ev around inf 46.7%
Final simplification45.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (<= KbT -2.5e+57)
(+ t_0 (* NdChar 0.5))
(if (<= KbT -2.65e-216)
(+ t_0 (/ NdChar (+ 1.0 (/ mu KbT))))
(if (<= KbT 2.3e-36)
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (/ Vef KbT))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if (KbT <= -2.5e+57) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= -2.65e-216) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (KbT <= 2.3e-36) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((eaccept / kbt)))
if (kbt <= (-2.5d+57)) then
tmp = t_0 + (ndchar * 0.5d0)
else if (kbt <= (-2.65d-216)) then
tmp = t_0 + (ndchar / (1.0d0 + (mu / kbt)))
else if (kbt <= 2.3d-36) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + (vef / kbt)))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if (KbT <= -2.5e+57) {
tmp = t_0 + (NdChar * 0.5);
} else if (KbT <= -2.65e-216) {
tmp = t_0 + (NdChar / (1.0 + (mu / KbT)));
} else if (KbT <= 2.3e-36) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT)));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if KbT <= -2.5e+57: tmp = t_0 + (NdChar * 0.5) elif KbT <= -2.65e-216: tmp = t_0 + (NdChar / (1.0 + (mu / KbT))) elif KbT <= 2.3e-36: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if (KbT <= -2.5e+57) tmp = Float64(t_0 + Float64(NdChar * 0.5)); elseif (KbT <= -2.65e-216) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + Float64(mu / KbT)))); elseif (KbT <= 2.3e-36) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + Float64(Vef / KbT)))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if (KbT <= -2.5e+57) tmp = t_0 + (NdChar * 0.5); elseif (KbT <= -2.65e-216) tmp = t_0 + (NdChar / (1.0 + (mu / KbT))); elseif (KbT <= 2.3e-36) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + (Vef / KbT))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[KbT, -2.5e+57], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, -2.65e-216], N[(t$95$0 + N[(NdChar / N[(1.0 + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[KbT, 2.3e-36], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;KbT \leq -2.5 \cdot 10^{+57}:\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{elif}\;KbT \leq -2.65 \cdot 10^{-216}:\\
\;\;\;\;t_0 + \frac{NdChar}{1 + \frac{mu}{KbT}}\\
\mathbf{elif}\;KbT \leq 2.3 \cdot 10^{-36}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + \frac{Vef}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -2.49999999999999986e57Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.7%
Taylor expanded in KbT around inf 59.2%
*-commutative51.4%
Simplified59.2%
if -2.49999999999999986e57 < KbT < -2.64999999999999989e-216Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 66.9%
Taylor expanded in KbT around inf 25.7%
Taylor expanded in mu around inf 38.0%
if -2.64999999999999989e-216 < KbT < 2.29999999999999996e-36Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 72.6%
Taylor expanded in KbT around inf 36.2%
Taylor expanded in Vef around inf 43.2%
if 2.29999999999999996e-36 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.9%
*-commutative33.9%
Simplified58.9%
Taylor expanded in Ev around inf 46.7%
Final simplification46.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.7e-42) (not (<= NaChar 4.1e-41)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ (+ Vef (+ mu EDonor)) KbT)))) (* 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 ((NaChar <= -2.7e-42) || !(NaChar <= 4.1e-41)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (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 ((nachar <= (-2.7d-42)) .or. (.not. (nachar <= 4.1d-41))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((vef + (mu + edonor)) / kbt)))) + (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 ((NaChar <= -2.7e-42) || !(NaChar <= 4.1e-41)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.7e-42) or not (NaChar <= 4.1e-41): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -2.7e-42) || !(NaChar <= 4.1e-41)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(mu + EDonor)) / KbT)))) + 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 ((NaChar <= -2.7e-42) || ~((NaChar <= 4.1e-41))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((Vef + (mu + EDonor)) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -2.7e-42], N[Not[LessEqual[NaChar, 4.1e-41]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(mu + EDonor), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.7 \cdot 10^{-42} \lor \neg \left(NaChar \leq 4.1 \cdot 10^{-41}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef + \left(mu + EDonor\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -2.69999999999999999e-42 or 4.10000000000000014e-41 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.0%
*-commutative25.8%
Simplified60.0%
if -2.69999999999999999e-42 < NaChar < 4.10000000000000014e-41Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.1%
neg-mul-185.1%
distribute-neg-frac85.1%
Simplified85.1%
Taylor expanded in mu around 0 65.3%
Taylor expanded in Ec around 0 59.3%
Final simplification59.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.7e-39) (not (<= NaChar 7e-42)))
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (- mu (- Ec (+ Vef EDonor))) KbT))))
(* 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 ((NaChar <= -1.7e-39) || !(NaChar <= 7e-42)) {
tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (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 ((nachar <= (-1.7d-39)) .or. (.not. (nachar <= 7d-42))) then
tmp = (nachar / (1.0d0 + exp((((vef + (ev + eaccept)) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((mu - (ec - (vef + edonor))) / kbt)))) + (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 ((NaChar <= -1.7e-39) || !(NaChar <= 7e-42)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.7e-39) or not (NaChar <= 7e-42): tmp = (NaChar / (1.0 + math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.7e-39) || !(NaChar <= 7e-42)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(mu - Float64(Ec - Float64(Vef + EDonor))) / KbT)))) + 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 ((NaChar <= -1.7e-39) || ~((NaChar <= 7e-42))) tmp = (NaChar / (1.0 + exp((((Vef + (Ev + EAccept)) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((mu - (Ec - (Vef + EDonor))) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.7e-39], N[Not[LessEqual[NaChar, 7e-42]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(mu - N[(Ec - N[(Vef + EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.7 \cdot 10^{-39} \lor \neg \left(NaChar \leq 7 \cdot 10^{-42}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu - \left(Ec - \left(Vef + EDonor\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -1.7e-39 or 7.0000000000000004e-42 < NaChar Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.3%
*-commutative25.8%
Simplified60.3%
if -1.7e-39 < NaChar < 7.0000000000000004e-42Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 85.2%
neg-mul-185.2%
distribute-neg-frac85.2%
Simplified85.2%
Taylor expanded in mu around 0 65.6%
Final simplification62.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 4e-144)
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5))
(if (<= EAccept 6.2e-124)
(+ (/ NaChar (+ 1.0 (exp (/ Vef KbT)))) (/ KbT (/ Vef NdChar)))
(if (<= EAccept 1.9e+110)
(+ (/ NaChar (+ 1.0 (exp (/ (- mu) KbT)))) (* NdChar 0.5))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4e-144) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 6.2e-124) {
tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (KbT / (Vef / NdChar));
} else if (EAccept <= 1.9e+110) {
tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 4d-144) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else if (eaccept <= 6.2d-124) then
tmp = (nachar / (1.0d0 + exp((vef / kbt)))) + (kbt / (vef / ndchar))
else if (eaccept <= 1.9d+110) then
tmp = (nachar / (1.0d0 + exp((-mu / kbt)))) + (ndchar * 0.5d0)
else
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4e-144) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else if (EAccept <= 6.2e-124) {
tmp = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (KbT / (Vef / NdChar));
} else if (EAccept <= 1.9e+110) {
tmp = (NaChar / (1.0 + Math.exp((-mu / KbT)))) + (NdChar * 0.5);
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 4e-144: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) elif EAccept <= 6.2e-124: tmp = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (KbT / (Vef / NdChar)) elif EAccept <= 1.9e+110: tmp = (NaChar / (1.0 + math.exp((-mu / KbT)))) + (NdChar * 0.5) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 4e-144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); elseif (EAccept <= 6.2e-124) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(KbT / Float64(Vef / NdChar))); elseif (EAccept <= 1.9e+110) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(-mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 4e-144) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); elseif (EAccept <= 6.2e-124) tmp = (NaChar / (1.0 + exp((Vef / KbT)))) + (KbT / (Vef / NdChar)); elseif (EAccept <= 1.9e+110) tmp = (NaChar / (1.0 + exp((-mu / KbT)))) + (NdChar * 0.5); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 4e-144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 6.2e-124], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT / N[(Vef / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 1.9e+110], N[(N[(NaChar / N[(1.0 + N[Exp[N[((-mu) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 4 \cdot 10^{-144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;EAccept \leq 6.2 \cdot 10^{-124}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{KbT}{\frac{Vef}{NdChar}}\\
\mathbf{elif}\;EAccept \leq 1.9 \cdot 10^{+110}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{-mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 3.9999999999999998e-144Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.1%
*-commutative27.4%
Simplified52.1%
Taylor expanded in Ev around inf 37.1%
if 3.9999999999999998e-144 < EAccept < 6.1999999999999996e-124Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.4%
Taylor expanded in KbT around inf 46.1%
Taylor expanded in Vef around inf 46.0%
associate-/l*46.0%
Simplified46.0%
if 6.1999999999999996e-124 < EAccept < 1.89999999999999994e110Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.2%
neg-mul-174.2%
distribute-neg-frac74.2%
Simplified74.2%
Taylor expanded in KbT around inf 39.9%
*-commutative30.4%
Simplified39.9%
if 1.89999999999999994e110 < EAccept Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 88.8%
Taylor expanded in KbT around inf 36.8%
Taylor expanded in Ec around inf 26.9%
mul-1-neg26.9%
associate-/l*27.2%
distribute-neg-frac27.2%
Simplified27.2%
Taylor expanded in KbT around 0 50.3%
Final simplification40.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
(if (or (<= KbT -1.7e-88) (and (not (<= KbT 6.6e+142)) (<= KbT 3.8e+264)))
(+ t_0 (* NdChar 0.5))
t_0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((EAccept / KbT)));
double tmp;
if ((KbT <= -1.7e-88) || (!(KbT <= 6.6e+142) && (KbT <= 3.8e+264))) {
tmp = t_0 + (NdChar * 0.5);
} 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 / (1.0d0 + exp((eaccept / kbt)))
if ((kbt <= (-1.7d-88)) .or. (.not. (kbt <= 6.6d+142)) .and. (kbt <= 3.8d+264)) then
tmp = t_0 + (ndchar * 0.5d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((EAccept / KbT)));
double tmp;
if ((KbT <= -1.7e-88) || (!(KbT <= 6.6e+142) && (KbT <= 3.8e+264))) {
tmp = t_0 + (NdChar * 0.5);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((EAccept / KbT))) tmp = 0 if (KbT <= -1.7e-88) or (not (KbT <= 6.6e+142) and (KbT <= 3.8e+264)): tmp = t_0 + (NdChar * 0.5) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) tmp = 0.0 if ((KbT <= -1.7e-88) || (!(KbT <= 6.6e+142) && (KbT <= 3.8e+264))) tmp = Float64(t_0 + Float64(NdChar * 0.5)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((EAccept / KbT))); tmp = 0.0; if ((KbT <= -1.7e-88) || (~((KbT <= 6.6e+142)) && (KbT <= 3.8e+264))) tmp = t_0 + (NdChar * 0.5); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[KbT, -1.7e-88], And[N[Not[LessEqual[KbT, 6.6e+142]], $MachinePrecision], LessEqual[KbT, 3.8e+264]]], N[(t$95$0 + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], t$95$0]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{if}\;KbT \leq -1.7 \cdot 10^{-88} \lor \neg \left(KbT \leq 6.6 \cdot 10^{+142}\right) \land KbT \leq 3.8 \cdot 10^{+264}:\\
\;\;\;\;t_0 + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
if KbT < -1.69999999999999987e-88 or 6.6000000000000004e142 < KbT < 3.8000000000000001e264Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.0%
Taylor expanded in KbT around inf 48.7%
*-commutative40.9%
Simplified48.7%
if -1.69999999999999987e-88 < KbT < 6.6000000000000004e142 or 3.8000000000000001e264 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 65.4%
Taylor expanded in KbT around inf 27.8%
Taylor expanded in Ec around inf 22.3%
mul-1-neg22.3%
associate-/l*22.6%
distribute-neg-frac22.6%
Simplified22.6%
Taylor expanded in KbT around 0 37.4%
Final simplification41.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 7.5e+43) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 7.5e+43) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 7.5d+43) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 7.5e+43) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 7.5e+43: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 7.5e+43) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 7.5e+43) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 7.5e+43], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 7.5 \cdot 10^{+43}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 7.49999999999999967e43Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.7%
*-commutative29.2%
Simplified52.7%
Taylor expanded in Ev around inf 38.6%
if 7.49999999999999967e43 < EAccept Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 81.2%
Taylor expanded in KbT around inf 32.6%
Taylor expanded in Ec around inf 22.1%
mul-1-neg22.1%
associate-/l*22.3%
distribute-neg-frac22.3%
Simplified22.3%
Taylor expanded in KbT around 0 45.6%
Final simplification40.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -1.15e-71) (+ (* NdChar 0.5) (* NaChar 0.5)) (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.15e-71) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else {
tmp = NaChar / (1.0 + exp((EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.15d-71)) then
tmp = (ndchar * 0.5d0) + (nachar * 0.5d0)
else
tmp = nachar / (1.0d0 + exp((eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.15e-71) {
tmp = (NdChar * 0.5) + (NaChar * 0.5);
} else {
tmp = NaChar / (1.0 + Math.exp((EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.15e-71: tmp = (NdChar * 0.5) + (NaChar * 0.5) else: tmp = NaChar / (1.0 + math.exp((EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.15e-71) tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)); else tmp = Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.15e-71) tmp = (NdChar * 0.5) + (NaChar * 0.5); else tmp = NaChar / (1.0 + exp((EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.15e-71], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.15 \cdot 10^{-71}:\\
\;\;\;\;NdChar \cdot 0.5 + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if KbT < -1.1499999999999999e-71Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 74.6%
neg-mul-174.6%
distribute-neg-frac74.6%
Simplified74.6%
Taylor expanded in mu around 0 62.8%
Taylor expanded in KbT around inf 41.0%
*-commutative41.0%
Simplified41.0%
if -1.1499999999999999e-71 < KbT Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 65.8%
Taylor expanded in KbT around inf 29.7%
Taylor expanded in Ec around inf 20.9%
mul-1-neg20.9%
associate-/l*21.2%
distribute-neg-frac21.2%
Simplified21.2%
Taylor expanded in KbT around 0 36.3%
Final simplification37.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (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 = (ndchar * 0.5d0) + (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 (NdChar * 0.5) + (NaChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + NaChar \cdot 0.5
\end{array}
Initial program 100.0%
neg-sub0100.0%
associate--r-100.0%
+-commutative100.0%
neg-sub0100.0%
sub-neg100.0%
associate--l-100.0%
unsub-neg100.0%
+-commutative100.0%
associate-+l+100.0%
Simplified100.0%
Taylor expanded in mu around inf 68.9%
neg-mul-168.9%
distribute-neg-frac68.9%
Simplified68.9%
Taylor expanded in mu around 0 46.1%
Taylor expanded in KbT around inf 26.1%
*-commutative26.1%
Simplified26.1%
Final simplification26.1%
herbie shell --seed 2023224
(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))))))