
(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 26 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
t_0
(/
NaChar
(*
EAccept
(+
(/ 1.0 KbT)
(/ (- (+ 2.0 (+ (/ Ev KbT) (/ Vef KbT))) (/ mu KbT)) EAccept))))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_3
(-
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))
(/
1.0
(/ (- -1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar)))))
(if (<= mu -8.2e+198)
t_2
(if (<= mu -2.55e+79)
(+
t_0
(/
NaChar
(*
Vef
(+
(/ 1.0 KbT)
(*
Ev
(+
(/ 1.0 (* Vef KbT))
(/ (- (/ 2.0 Vef) (/ (/ (- mu EAccept) KbT) Vef)) Ev)))))))
(if (<= mu -1.16e+30)
t_3
(if (<= mu -6.9e-217)
t_1
(if (<= mu 1.2e-102) t_3 (if (<= mu 1.52e+62) t_1 t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept))));
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_3 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double tmp;
if (mu <= -8.2e+198) {
tmp = t_2;
} else if (mu <= -2.55e+79) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) + (Ev * ((1.0 / (Vef * KbT)) + (((2.0 / Vef) - (((mu - EAccept) / KbT) / Vef)) / Ev))))));
} else if (mu <= -1.16e+30) {
tmp = t_3;
} else if (mu <= -6.9e-217) {
tmp = t_1;
} else if (mu <= 1.2e-102) {
tmp = t_3;
} else if (mu <= 1.52e+62) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / (eaccept * ((1.0d0 / kbt) + (((2.0d0 + ((ev / kbt) + (vef / kbt))) - (mu / kbt)) / eaccept))))
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_3 = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) - (1.0d0 / (((-1.0d0) - exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar))
if (mu <= (-8.2d+198)) then
tmp = t_2
else if (mu <= (-2.55d+79)) then
tmp = t_0 + (nachar / (vef * ((1.0d0 / kbt) + (ev * ((1.0d0 / (vef * kbt)) + (((2.0d0 / vef) - (((mu - eaccept) / kbt) / vef)) / ev))))))
else if (mu <= (-1.16d+30)) then
tmp = t_3
else if (mu <= (-6.9d-217)) then
tmp = t_1
else if (mu <= 1.2d-102) then
tmp = t_3
else if (mu <= 1.52d+62) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept))));
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_3 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double tmp;
if (mu <= -8.2e+198) {
tmp = t_2;
} else if (mu <= -2.55e+79) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) + (Ev * ((1.0 / (Vef * KbT)) + (((2.0 / Vef) - (((mu - EAccept) / KbT) / Vef)) / Ev))))));
} else if (mu <= -1.16e+30) {
tmp = t_3;
} else if (mu <= -6.9e-217) {
tmp = t_1;
} else if (mu <= 1.2e-102) {
tmp = t_3;
} else if (mu <= 1.52e+62) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept)))) t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_3 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) tmp = 0 if mu <= -8.2e+198: tmp = t_2 elif mu <= -2.55e+79: tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) + (Ev * ((1.0 / (Vef * KbT)) + (((2.0 / Vef) - (((mu - EAccept) / KbT) / Vef)) / Ev)))))) elif mu <= -1.16e+30: tmp = t_3 elif mu <= -6.9e-217: tmp = t_1 elif mu <= 1.2e-102: tmp = t_3 elif mu <= 1.52e+62: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT)) / EAccept))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_3 = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) - Float64(1.0 / Float64(Float64(-1.0 - exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar))) tmp = 0.0 if (mu <= -8.2e+198) tmp = t_2; elseif (mu <= -2.55e+79) tmp = Float64(t_0 + Float64(NaChar / Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(Ev * Float64(Float64(1.0 / Float64(Vef * KbT)) + Float64(Float64(Float64(2.0 / Vef) - Float64(Float64(Float64(mu - EAccept) / KbT) / Vef)) / Ev))))))); elseif (mu <= -1.16e+30) tmp = t_3; elseif (mu <= -6.9e-217) tmp = t_1; elseif (mu <= 1.2e-102) tmp = t_3; elseif (mu <= 1.52e+62) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept)))); t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_3 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)); tmp = 0.0; if (mu <= -8.2e+198) tmp = t_2; elseif (mu <= -2.55e+79) tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) + (Ev * ((1.0 / (Vef * KbT)) + (((2.0 / Vef) - (((mu - EAccept) / KbT) / Vef)) / Ev)))))); elseif (mu <= -1.16e+30) tmp = t_3; elseif (mu <= -6.9e-217) tmp = t_1; elseif (mu <= 1.2e-102) tmp = t_3; elseif (mu <= 1.52e+62) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(1.0 / N[(N[(-1.0 - N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -8.2e+198], t$95$2, If[LessEqual[mu, -2.55e+79], N[(t$95$0 + N[(NaChar / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(Ev * N[(N[(1.0 / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(2.0 / Vef), $MachinePrecision] - N[(N[(N[(mu - EAccept), $MachinePrecision] / KbT), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision] / Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -1.16e+30], t$95$3, If[LessEqual[mu, -6.9e-217], t$95$1, If[LessEqual[mu, 1.2e-102], t$95$3, If[LessEqual[mu, 1.52e+62], t$95$1, t$95$2]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{EAccept \cdot \left(\frac{1}{KbT} + \frac{\left(2 + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}}{EAccept}\right)}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_3 := \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} - \frac{1}{\frac{-1 - e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}}\\
\mathbf{if}\;mu \leq -8.2 \cdot 10^{+198}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -2.55 \cdot 10^{+79}:\\
\;\;\;\;t\_0 + \frac{NaChar}{Vef \cdot \left(\frac{1}{KbT} + Ev \cdot \left(\frac{1}{Vef \cdot KbT} + \frac{\frac{2}{Vef} - \frac{\frac{mu - EAccept}{KbT}}{Vef}}{Ev}\right)\right)}\\
\mathbf{elif}\;mu \leq -1.16 \cdot 10^{+30}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq -6.9 \cdot 10^{-217}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq 1.2 \cdot 10^{-102}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq 1.52 \cdot 10^{+62}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -8.2000000000000003e198 or 1.51999999999999998e62 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.0%
associate-*r/91.0%
mul-1-neg91.0%
Simplified91.0%
Taylor expanded in mu around inf 81.9%
if -8.2000000000000003e198 < mu < -2.5500000000000001e79Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.3%
associate-+r+47.3%
Simplified47.3%
Taylor expanded in Vef around -inf 62.5%
Taylor expanded in Ev around -inf 67.1%
associate-*r*67.1%
mul-1-neg67.1%
associate-*r/67.1%
mul-1-neg67.1%
associate--l+67.1%
associate-*r/67.1%
metadata-eval67.1%
associate-/r*67.1%
associate-/r*67.0%
div-sub67.0%
div-sub67.1%
*-commutative67.1%
Simplified67.1%
if -2.5500000000000001e79 < mu < -1.16e30 or -6.89999999999999974e-217 < mu < 1.2e-102Initial program 100.0%
Simplified100.0%
clear-num100.0%
inv-pow100.0%
div-inv100.0%
associate-*r/100.0%
*-commutative100.0%
*-un-lft-identity100.0%
+-commutative100.0%
associate-+l-100.0%
Applied egg-rr100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.6%
if -1.16e30 < mu < -6.89999999999999974e-217 or 1.2e-102 < mu < 1.51999999999999998e62Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 64.7%
associate-+r+64.7%
Simplified64.7%
Taylor expanded in EAccept around -inf 69.4%
Final simplification74.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (+ EDonor Vef) KbT)))))))
(if (<= Vef -3.3e+28)
t_1
(if (<= Vef 1.95e-208)
(+
t_0
(/
NaChar
(*
Vef
(-
(/ 1.0 KbT)
(/ (- (/ mu KbT) (+ 2.0 (+ (/ Ev KbT) (/ EAccept KbT)))) Vef)))))
(if (<= Vef 4.7e-130)
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= Vef 6.8e+75)
(-
t_0
(/
NaChar
(*
mu
(-
(/ 1.0 KbT)
(/
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT))))
mu)))))
t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((EDonor + Vef) / KbT))));
double tmp;
if (Vef <= -3.3e+28) {
tmp = t_1;
} else if (Vef <= 1.95e-208) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
} else if (Vef <= 4.7e-130) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (Vef <= 6.8e+75) {
tmp = t_0 - (NaChar / (mu * ((1.0 / KbT) - ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) / mu))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + vef) / kbt))))
if (vef <= (-3.3d+28)) then
tmp = t_1
else if (vef <= 1.95d-208) then
tmp = t_0 + (nachar / (vef * ((1.0d0 / kbt) - (((mu / kbt) - (2.0d0 + ((ev / kbt) + (eaccept / kbt)))) / vef))))
else if (vef <= 4.7d-130) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (vef <= 6.8d+75) then
tmp = t_0 - (nachar / (mu * ((1.0d0 / kbt) - ((2.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))) / mu))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + Vef) / KbT))));
double tmp;
if (Vef <= -3.3e+28) {
tmp = t_1;
} else if (Vef <= 1.95e-208) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
} else if (Vef <= 4.7e-130) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (Vef <= 6.8e+75) {
tmp = t_0 - (NaChar / (mu * ((1.0 / KbT) - ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) / mu))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + Vef) / KbT)))) tmp = 0 if Vef <= -3.3e+28: tmp = t_1 elif Vef <= 1.95e-208: tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))) elif Vef <= 4.7e-130: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif Vef <= 6.8e+75: tmp = t_0 - (NaChar / (mu * ((1.0 / KbT) - ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) / mu)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Vef) / KbT))))) tmp = 0.0 if (Vef <= -3.3e+28) tmp = t_1; elseif (Vef <= 1.95e-208) tmp = Float64(t_0 + Float64(NaChar / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(mu / KbT) - Float64(2.0 + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) / Vef))))); elseif (Vef <= 4.7e-130) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (Vef <= 6.8e+75) tmp = Float64(t_0 - Float64(NaChar / Float64(mu * Float64(Float64(1.0 / KbT) - Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))) / mu))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))); tmp = 0.0; if (Vef <= -3.3e+28) tmp = t_1; elseif (Vef <= 1.95e-208) tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))); elseif (Vef <= 4.7e-130) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (Vef <= 6.8e+75) tmp = t_0 - (NaChar / (mu * ((1.0 / KbT) - ((2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))) / mu)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + Vef), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -3.3e+28], t$95$1, If[LessEqual[Vef, 1.95e-208], N[(t$95$0 + N[(NaChar / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(mu / KbT), $MachinePrecision] - N[(2.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.7e-130], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 6.8e+75], N[(t$95$0 - N[(NaChar / N[(mu * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -3.3 \cdot 10^{+28}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 1.95 \cdot 10^{-208}:\\
\;\;\;\;t\_0 + \frac{NaChar}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{mu}{KbT} - \left(2 + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{elif}\;Vef \leq 4.7 \cdot 10^{-130}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;Vef \leq 6.8 \cdot 10^{+75}:\\
\;\;\;\;t\_0 - \frac{NaChar}{mu \cdot \left(\frac{1}{KbT} - \frac{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)}{mu}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -3.3e28 or 6.80000000000000022e75 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 87.6%
Taylor expanded in Vef around inf 80.0%
if -3.3e28 < Vef < 1.95000000000000002e-208Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.6%
associate-+r+63.6%
Simplified63.6%
Taylor expanded in Vef around -inf 68.7%
if 1.95000000000000002e-208 < Vef < 4.69999999999999968e-130Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 93.8%
associate-*r/93.8%
mul-1-neg93.8%
Simplified93.8%
Taylor expanded in mu around inf 93.8%
if 4.69999999999999968e-130 < Vef < 6.80000000000000022e75Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 66.6%
associate-+r+66.6%
Simplified66.6%
Taylor expanded in mu around -inf 72.2%
Final simplification75.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ Vef KbT))))
(/ NdChar (+ 1.0 (exp (/ (+ EDonor Vef) KbT)))))))
(if (<= Vef -8e+171)
t_0
(if (<= Vef -1.3e+15)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef EAccept) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 1.3e+76)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Vef / KbT)))) + (NdChar / (1.0 + exp(((EDonor + Vef) / KbT))));
double tmp;
if (Vef <= -8e+171) {
tmp = t_0;
} else if (Vef <= -1.3e+15) {
tmp = (NaChar / (1.0 + exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 1.3e+76) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((vef / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + vef) / kbt))))
if (vef <= (-8d+171)) then
tmp = t_0
else if (vef <= (-1.3d+15)) then
tmp = (nachar / (1.0d0 + exp((((vef + eaccept) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 1.3d+76) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Vef / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + Vef) / KbT))));
double tmp;
if (Vef <= -8e+171) {
tmp = t_0;
} else if (Vef <= -1.3e+15) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 1.3e+76) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((Vef / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + Vef) / KbT)))) tmp = 0 if Vef <= -8e+171: tmp = t_0 elif Vef <= -1.3e+15: tmp = (NaChar / (1.0 + math.exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 1.3e+76: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Vef) / KbT))))) tmp = 0.0 if (Vef <= -8e+171) tmp = t_0; elseif (Vef <= -1.3e+15) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EAccept) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 1.3e+76) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); 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((Vef / KbT)))) + (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))); tmp = 0.0; if (Vef <= -8e+171) tmp = t_0; elseif (Vef <= -1.3e+15) tmp = (NaChar / (1.0 + exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 1.3e+76) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + Vef), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -8e+171], t$95$0, If[LessEqual[Vef, -1.3e+15], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.3e+76], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -8 \cdot 10^{+171}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Vef \leq -1.3 \cdot 10^{+15}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + EAccept\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.3 \cdot 10^{+76}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if Vef < -7.99999999999999963e171 or 1.3e76 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 89.7%
Taylor expanded in Vef around inf 84.0%
if -7.99999999999999963e171 < Vef < -1.3e15Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around 0 92.9%
Taylor expanded in EDonor around inf 78.7%
if -1.3e15 < Vef < 1.3e76Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 75.1%
Final simplification78.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef EAccept) mu) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))))
(if (<= NaChar -1.3e-104)
t_1
(if (<= NaChar 1.85e-186)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 6.5e+18)
(+
t_0
(/
NaChar
(*
Vef
(-
(/ 1.0 KbT)
(/ (- (/ mu KbT) (+ 2.0 (+ (/ Ev KbT) (/ EAccept KbT)))) Vef)))))
t_1)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
double tmp;
if (NaChar <= -1.3e-104) {
tmp = t_1;
} else if (NaChar <= 1.85e-186) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 6.5e+18) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (nachar / (1.0d0 + exp((((vef + eaccept) - mu) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
if (nachar <= (-1.3d-104)) then
tmp = t_1
else if (nachar <= 1.85d-186) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 6.5d+18) then
tmp = t_0 + (nachar / (vef * ((1.0d0 / kbt) - (((mu / kbt) - (2.0d0 + ((ev / kbt) + (eaccept / kbt)))) / vef))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NaChar / (1.0 + Math.exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
double tmp;
if (NaChar <= -1.3e-104) {
tmp = t_1;
} else if (NaChar <= 1.85e-186) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 6.5e+18) {
tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NaChar / (1.0 + math.exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) tmp = 0 if NaChar <= -1.3e-104: tmp = t_1 elif NaChar <= 1.85e-186: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 6.5e+18: tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EAccept) - mu) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))) tmp = 0.0 if (NaChar <= -1.3e-104) tmp = t_1; elseif (NaChar <= 1.85e-186) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 6.5e+18) tmp = Float64(t_0 + Float64(NaChar / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(mu / KbT) - Float64(2.0 + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) / Vef))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NaChar / (1.0 + exp((((Vef + EAccept) - mu) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); tmp = 0.0; if (NaChar <= -1.3e-104) tmp = t_1; elseif (NaChar <= 1.85e-186) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 6.5e+18) tmp = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.3e-104], t$95$1, If[LessEqual[NaChar, 1.85e-186], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 6.5e+18], N[(t$95$0 + N[(NaChar / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(mu / KbT), $MachinePrecision] - N[(2.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{\left(Vef + EAccept\right) - mu}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{if}\;NaChar \leq -1.3 \cdot 10^{-104}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 1.85 \cdot 10^{-186}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 6.5 \cdot 10^{+18}:\\
\;\;\;\;t\_0 + \frac{NaChar}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{mu}{KbT} - \left(2 + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -1.30000000000000001e-104 or 6.5e18 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around 0 94.7%
Taylor expanded in EDonor around inf 71.0%
if -1.30000000000000001e-104 < NaChar < 1.8500000000000001e-186Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.1%
associate-+r+75.1%
Simplified75.1%
Taylor expanded in KbT around 0 81.6%
associate-/l*88.3%
associate--l+88.3%
associate--l+88.3%
sub-neg88.3%
neg-mul-188.3%
associate-+r+88.3%
+-commutative88.3%
neg-mul-188.3%
sub-neg88.3%
Simplified88.3%
if 1.8500000000000001e-186 < NaChar < 6.5e18Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.5%
associate-+r+68.5%
Simplified68.5%
Taylor expanded in Vef around -inf 77.4%
Final simplification76.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= EAccept -5500000.0)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= EAccept 3.5e+89)
(+ 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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= -5500000.0) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (EAccept <= 3.5e+89) {
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(((edonor + (mu + (vef - ec))) / kbt)))
if (eaccept <= (-5500000.0d0)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else if (eaccept <= 3.5d+89) 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(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= -5500000.0) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (EAccept <= 3.5e+89) {
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(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if EAccept <= -5500000.0: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif EAccept <= 3.5e+89: 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(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (EAccept <= -5500000.0) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (EAccept <= 3.5e+89) 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(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (EAccept <= -5500000.0) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (EAccept <= 3.5e+89) 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -5500000.0], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EAccept, 3.5e+89], 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{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq -5500000:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;EAccept \leq 3.5 \cdot 10^{+89}:\\
\;\;\;\;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 < -5.5e6Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.5%
if -5.5e6 < EAccept < 3.5000000000000001e89Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 79.5%
if 3.5000000000000001e89 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 89.9%
Final simplification79.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= Ev -6.5e+164)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef EAccept) mu) KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -6.5e+164) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + EAccept) - 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(((edonor + (mu + (vef - ec))) / kbt)))
if (ev <= (-6.5d+164)) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + eaccept) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (Ev <= -6.5e+164) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + EAccept) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if Ev <= -6.5e+164: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + EAccept) - 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(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (Ev <= -6.5e+164) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + EAccept) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (Ev <= -6.5e+164) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + EAccept) - 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[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -6.5e+164], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + EAccept), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;Ev \leq -6.5 \cdot 10^{+164}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + EAccept\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Ev < -6.5000000000000003e164Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 100.0%
if -6.5000000000000003e164 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around 0 95.1%
Final simplification95.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(-
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))
(/
1.0
(/ (- -1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))))
(t_2
(+
t_0
(/
NaChar
(*
Vef
(-
(/ 1.0 KbT)
(/
(- (/ mu KbT) (+ 2.0 (+ (/ Ev KbT) (/ EAccept KbT))))
Vef)))))))
(if (<= NaChar -5.2e+56)
t_1
(if (<= NaChar -4e-101)
t_2
(if (<= NaChar 9e-191)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 1.5e+50) t_2 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double t_2 = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
double tmp;
if (NaChar <= -5.2e+56) {
tmp = t_1;
} else if (NaChar <= -4e-101) {
tmp = t_2;
} else if (NaChar <= 9e-191) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.5e+50) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) - (1.0d0 / (((-1.0d0) - exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar))
t_2 = t_0 + (nachar / (vef * ((1.0d0 / kbt) - (((mu / kbt) - (2.0d0 + ((ev / kbt) + (eaccept / kbt)))) / vef))))
if (nachar <= (-5.2d+56)) then
tmp = t_1
else if (nachar <= (-4d-101)) then
tmp = t_2
else if (nachar <= 9d-191) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 1.5d+50) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double t_2 = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef))));
double tmp;
if (NaChar <= -5.2e+56) {
tmp = t_1;
} else if (NaChar <= -4e-101) {
tmp = t_2;
} else if (NaChar <= 9e-191) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.5e+50) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) t_2 = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))) tmp = 0 if NaChar <= -5.2e+56: tmp = t_1 elif NaChar <= -4e-101: tmp = t_2 elif NaChar <= 9e-191: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 1.5e+50: tmp = t_2 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) - Float64(1.0 / Float64(Float64(-1.0 - exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar))) t_2 = Float64(t_0 + Float64(NaChar / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(mu / KbT) - Float64(2.0 + Float64(Float64(Ev / KbT) + Float64(EAccept / KbT)))) / Vef))))) tmp = 0.0 if (NaChar <= -5.2e+56) tmp = t_1; elseif (NaChar <= -4e-101) tmp = t_2; elseif (NaChar <= 9e-191) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 1.5e+50) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)); t_2 = t_0 + (NaChar / (Vef * ((1.0 / KbT) - (((mu / KbT) - (2.0 + ((Ev / KbT) + (EAccept / KbT)))) / Vef)))); tmp = 0.0; if (NaChar <= -5.2e+56) tmp = t_1; elseif (NaChar <= -4e-101) tmp = t_2; elseif (NaChar <= 9e-191) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 1.5e+50) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(1.0 / N[(N[(-1.0 - N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NaChar / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(mu / KbT), $MachinePrecision] - N[(2.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5.2e+56], t$95$1, If[LessEqual[NaChar, -4e-101], t$95$2, If[LessEqual[NaChar, 9e-191], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.5e+50], t$95$2, t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} - \frac{1}{\frac{-1 - e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}}\\
t_2 := t\_0 + \frac{NaChar}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{mu}{KbT} - \left(2 + \left(\frac{Ev}{KbT} + \frac{EAccept}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{if}\;NaChar \leq -5.2 \cdot 10^{+56}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -4 \cdot 10^{-101}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 9 \cdot 10^{-191}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 1.5 \cdot 10^{+50}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -5.20000000000000022e56 or 1.4999999999999999e50 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 60.1%
if -5.20000000000000022e56 < NaChar < -4.00000000000000021e-101 or 9.00000000000000017e-191 < NaChar < 1.4999999999999999e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.1%
associate-+r+67.1%
Simplified67.1%
Taylor expanded in Vef around -inf 75.0%
if -4.00000000000000021e-101 < NaChar < 9.00000000000000017e-191Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.0%
associate-+r+74.0%
Simplified74.0%
Taylor expanded in KbT around 0 80.4%
associate-/l*87.0%
associate--l+87.0%
associate--l+87.0%
sub-neg87.0%
neg-mul-187.0%
associate-+r+87.0%
+-commutative87.0%
neg-mul-187.0%
sub-neg87.0%
Simplified87.0%
Final simplification71.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(-
(/
NdChar
(-
(+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT))))
(/ Ec KbT)))
(/
1.0
(/ (- -1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))))
(t_2
(+
t_0
(/ NaChar (/ (- (+ EAccept (+ Ev (+ Vef (* KbT 2.0)))) mu) KbT)))))
(if (<= NaChar -6.5e+56)
t_1
(if (<= NaChar -3.2e-101)
t_2
(if (<= NaChar 2.5e-185)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 1.52e+50) t_2 t_1))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double t_2 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT));
double tmp;
if (NaChar <= -6.5e+56) {
tmp = t_1;
} else if (NaChar <= -3.2e-101) {
tmp = t_2;
} else if (NaChar <= 2.5e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.52e+50) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = (ndchar / ((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt))) - (1.0d0 / (((-1.0d0) - exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar))
t_2 = t_0 + (nachar / (((eaccept + (ev + (vef + (kbt * 2.0d0)))) - mu) / kbt))
if (nachar <= (-6.5d+56)) then
tmp = t_1
else if (nachar <= (-3.2d-101)) then
tmp = t_2
else if (nachar <= 2.5d-185) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 1.52d+50) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar));
double t_2 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT));
double tmp;
if (NaChar <= -6.5e+56) {
tmp = t_1;
} else if (NaChar <= -3.2e-101) {
tmp = t_2;
} else if (NaChar <= 2.5e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.52e+50) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) t_2 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT)) tmp = 0 if NaChar <= -6.5e+56: tmp = t_1 elif NaChar <= -3.2e-101: tmp = t_2 elif NaChar <= 2.5e-185: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 1.52e+50: tmp = t_2 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT))) - Float64(1.0 / Float64(Float64(-1.0 - exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar))) t_2 = Float64(t_0 + Float64(NaChar / Float64(Float64(Float64(EAccept + Float64(Ev + Float64(Vef + Float64(KbT * 2.0)))) - mu) / KbT))) tmp = 0.0 if (NaChar <= -6.5e+56) tmp = t_1; elseif (NaChar <= -3.2e-101) tmp = t_2; elseif (NaChar <= 2.5e-185) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 1.52e+50) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = (NdChar / ((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT))) - (1.0 / ((-1.0 - exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)); t_2 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT)); tmp = 0.0; if (NaChar <= -6.5e+56) tmp = t_1; elseif (NaChar <= -3.2e-101) tmp = t_2; elseif (NaChar <= 2.5e-185) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 1.52e+50) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(1.0 / N[(N[(-1.0 - N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 + N[(NaChar / N[(N[(N[(EAccept + N[(Ev + N[(Vef + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.5e+56], t$95$1, If[LessEqual[NaChar, -3.2e-101], t$95$2, If[LessEqual[NaChar, 2.5e-185], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.52e+50], t$95$2, t$95$1]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{\left(2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}} - \frac{1}{\frac{-1 - e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}}\\
t_2 := t\_0 + \frac{NaChar}{\frac{\left(EAccept + \left(Ev + \left(Vef + KbT \cdot 2\right)\right)\right) - mu}{KbT}}\\
\mathbf{if}\;NaChar \leq -6.5 \cdot 10^{+56}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq -3.2 \cdot 10^{-101}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq 2.5 \cdot 10^{-185}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 1.52 \cdot 10^{+50}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if NaChar < -6.5000000000000001e56 or 1.5199999999999999e50 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 60.1%
if -6.5000000000000001e56 < NaChar < -3.19999999999999978e-101 or 2.5000000000000001e-185 < NaChar < 1.5199999999999999e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.7%
associate-+r+67.7%
Simplified67.7%
Taylor expanded in KbT around 0 72.6%
if -3.19999999999999978e-101 < NaChar < 2.5000000000000001e-185Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.1%
associate-+r+73.1%
Simplified73.1%
Taylor expanded in KbT around 0 79.4%
associate-/l*87.2%
associate--l+87.2%
associate--l+87.2%
sub-neg87.2%
neg-mul-187.2%
associate-+r+87.2%
+-commutative87.2%
neg-mul-187.2%
sub-neg87.2%
Simplified87.2%
Final simplification71.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
t_0
(/ NaChar (+ 2.0 (+ (/ EAccept KbT) (+ (/ Ev KbT) (/ Vef KbT)))))))
(t_2
(+
(/
1.0
(/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))))
(if (<= NaChar -5e+42)
t_2
(if (<= NaChar -4.4e-101)
t_1
(if (<= NaChar 2.45e-185)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 1.95e+50) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))));
double t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -5e+42) {
tmp = t_2;
} else if (NaChar <= -4.4e-101) {
tmp = t_1;
} else if (NaChar <= 2.45e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.95e+50) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / (2.0d0 + ((eaccept / kbt) + ((ev / kbt) + (vef / kbt)))))
t_2 = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
if (nachar <= (-5d+42)) then
tmp = t_2
else if (nachar <= (-4.4d-101)) then
tmp = t_1
else if (nachar <= 2.45d-185) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 1.95d+50) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT)))));
double t_2 = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -5e+42) {
tmp = t_2;
} else if (NaChar <= -4.4e-101) {
tmp = t_1;
} else if (NaChar <= 2.45e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.95e+50) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))))) t_2 = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) tmp = 0 if NaChar <= -5e+42: tmp = t_2 elif NaChar <= -4.4e-101: tmp = t_1 elif NaChar <= 2.45e-185: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 1.95e+50: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Ev / KbT) + Float64(Vef / KbT)))))) t_2 = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -5e+42) tmp = t_2; elseif (NaChar <= -4.4e-101) tmp = t_1; elseif (NaChar <= 2.45e-185) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 1.95e+50) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / (2.0 + ((EAccept / KbT) + ((Ev / KbT) + (Vef / KbT))))); t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -5e+42) tmp = t_2; elseif (NaChar <= -4.4e-101) tmp = t_1; elseif (NaChar <= 2.45e-185) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 1.95e+50) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -5e+42], t$95$2, If[LessEqual[NaChar, -4.4e-101], t$95$1, If[LessEqual[NaChar, 2.45e-185], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.95e+50], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{2 + \left(\frac{EAccept}{KbT} + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right)}\\
t_2 := \frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -5 \cdot 10^{+42}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -4.4 \cdot 10^{-101}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.45 \cdot 10^{-185}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 1.95 \cdot 10^{+50}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -5.00000000000000007e42 or 1.94999999999999984e50 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.6%
if -5.00000000000000007e42 < NaChar < -4.3999999999999998e-101 or 2.4500000000000001e-185 < NaChar < 1.94999999999999984e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.0%
associate-+r+69.0%
Simplified69.0%
Taylor expanded in mu around 0 71.5%
if -4.3999999999999998e-101 < NaChar < 2.4500000000000001e-185Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.1%
associate-+r+73.1%
Simplified73.1%
Taylor expanded in KbT around 0 79.4%
associate-/l*87.2%
associate--l+87.2%
associate--l+87.2%
sub-neg87.2%
neg-mul-187.2%
associate-+r+87.2%
+-commutative87.2%
neg-mul-187.2%
sub-neg87.2%
Simplified87.2%
Final simplification68.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1
(+
t_0
(/ NaChar (/ (- (+ EAccept (+ Ev (+ Vef (* KbT 2.0)))) mu) KbT))))
(t_2
(+
(/
1.0
(/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))))
(if (<= NaChar -1.5e+43)
t_2
(if (<= NaChar -3.5e-101)
t_1
(if (<= NaChar 9.6e-186)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 1.8e+50) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT));
double t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.5e+43) {
tmp = t_2;
} else if (NaChar <= -3.5e-101) {
tmp = t_1;
} else if (NaChar <= 9.6e-186) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.8e+50) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / (((eaccept + (ev + (vef + (kbt * 2.0d0)))) - mu) / kbt))
t_2 = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
if (nachar <= (-1.5d+43)) then
tmp = t_2
else if (nachar <= (-3.5d-101)) then
tmp = t_1
else if (nachar <= 9.6d-186) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 1.8d+50) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT));
double t_2 = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -1.5e+43) {
tmp = t_2;
} else if (NaChar <= -3.5e-101) {
tmp = t_1;
} else if (NaChar <= 9.6e-186) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 1.8e+50) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT)) t_2 = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) tmp = 0 if NaChar <= -1.5e+43: tmp = t_2 elif NaChar <= -3.5e-101: tmp = t_1 elif NaChar <= 9.6e-186: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 1.8e+50: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Float64(EAccept + Float64(Ev + Float64(Vef + Float64(KbT * 2.0)))) - mu) / KbT))) t_2 = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -1.5e+43) tmp = t_2; elseif (NaChar <= -3.5e-101) tmp = t_1; elseif (NaChar <= 9.6e-186) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 1.8e+50) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / (((EAccept + (Ev + (Vef + (KbT * 2.0)))) - mu) / KbT)); t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -1.5e+43) tmp = t_2; elseif (NaChar <= -3.5e-101) tmp = t_1; elseif (NaChar <= 9.6e-186) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 1.8e+50) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(N[(EAccept + N[(Ev + N[(Vef + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -1.5e+43], t$95$2, If[LessEqual[NaChar, -3.5e-101], t$95$1, If[LessEqual[NaChar, 9.6e-186], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.8e+50], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{\left(EAccept + \left(Ev + \left(Vef + KbT \cdot 2\right)\right)\right) - mu}{KbT}}\\
t_2 := \frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -1.5 \cdot 10^{+43}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -3.5 \cdot 10^{-101}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 9.6 \cdot 10^{-186}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 1.8 \cdot 10^{+50}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -1.50000000000000008e43 or 1.79999999999999993e50 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.6%
if -1.50000000000000008e43 < NaChar < -3.49999999999999994e-101 or 9.60000000000000012e-186 < NaChar < 1.79999999999999993e50Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.0%
associate-+r+69.0%
Simplified69.0%
Taylor expanded in KbT around 0 74.0%
if -3.49999999999999994e-101 < NaChar < 9.60000000000000012e-186Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.1%
associate-+r+73.1%
Simplified73.1%
Taylor expanded in KbT around 0 79.4%
associate-/l*87.2%
associate--l+87.2%
associate--l+87.2%
sub-neg87.2%
neg-mul-187.2%
associate-+r+87.2%
+-commutative87.2%
neg-mul-187.2%
sub-neg87.2%
Simplified87.2%
Final simplification69.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))
(t_2
(+
(/
1.0
(/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))))
(if (<= NaChar -2.3e+35)
t_2
(if (<= NaChar -4.2e-106)
t_1
(if (<= NaChar 4.5e-254)
(+ t_0 (+ -1.0 (- 1.0 (/ NaChar (/ mu KbT)))))
(if (<= NaChar 7.2e+48) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -2.3e+35) {
tmp = t_2;
} else if (NaChar <= -4.2e-106) {
tmp = t_1;
} else if (NaChar <= 4.5e-254) {
tmp = t_0 + (-1.0 + (1.0 - (NaChar / (mu / KbT))));
} else if (NaChar <= 7.2e+48) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
t_2 = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
if (nachar <= (-2.3d+35)) then
tmp = t_2
else if (nachar <= (-4.2d-106)) then
tmp = t_1
else if (nachar <= 4.5d-254) then
tmp = t_0 + ((-1.0d0) + (1.0d0 - (nachar / (mu / kbt))))
else if (nachar <= 7.2d+48) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -2.3e+35) {
tmp = t_2;
} else if (NaChar <= -4.2e-106) {
tmp = t_1;
} else if (NaChar <= 4.5e-254) {
tmp = t_0 + (-1.0 + (1.0 - (NaChar / (mu / KbT))));
} else if (NaChar <= 7.2e+48) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) t_2 = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) tmp = 0 if NaChar <= -2.3e+35: tmp = t_2 elif NaChar <= -4.2e-106: tmp = t_1 elif NaChar <= 4.5e-254: tmp = t_0 + (-1.0 + (1.0 - (NaChar / (mu / KbT)))) elif NaChar <= 7.2e+48: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) t_2 = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -2.3e+35) tmp = t_2; elseif (NaChar <= -4.2e-106) tmp = t_1; elseif (NaChar <= 4.5e-254) tmp = Float64(t_0 + Float64(-1.0 + Float64(1.0 - Float64(NaChar / Float64(mu / KbT))))); elseif (NaChar <= 7.2e+48) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -2.3e+35) tmp = t_2; elseif (NaChar <= -4.2e-106) tmp = t_1; elseif (NaChar <= 4.5e-254) tmp = t_0 + (-1.0 + (1.0 - (NaChar / (mu / KbT)))); elseif (NaChar <= 7.2e+48) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.3e+35], t$95$2, If[LessEqual[NaChar, -4.2e-106], t$95$1, If[LessEqual[NaChar, 4.5e-254], N[(t$95$0 + N[(-1.0 + N[(1.0 - N[(NaChar / N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 7.2e+48], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_2 := \frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -2.3 \cdot 10^{+35}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -4.2 \cdot 10^{-106}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 4.5 \cdot 10^{-254}:\\
\;\;\;\;t\_0 + \left(-1 + \left(1 - \frac{NaChar}{\frac{mu}{KbT}}\right)\right)\\
\mathbf{elif}\;NaChar \leq 7.2 \cdot 10^{+48}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -2.2999999999999998e35 or 7.19999999999999967e48 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.7%
if -2.2999999999999998e35 < NaChar < -4.20000000000000007e-106 or 4.5e-254 < NaChar < 7.19999999999999967e48Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.2%
Taylor expanded in Vef around 0 69.5%
if -4.20000000000000007e-106 < NaChar < 4.5e-254Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.1%
associate-+r+78.1%
Simplified78.1%
Taylor expanded in Vef around -inf 81.9%
Taylor expanded in mu around inf 61.2%
expm1-log1p-u59.3%
expm1-undefine82.0%
mul-1-neg82.0%
Applied egg-rr82.0%
sub-neg82.0%
log1p-undefine82.0%
rem-exp-log83.9%
distribute-frac-neg283.9%
unsub-neg83.9%
metadata-eval83.9%
Simplified83.9%
Final simplification66.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_1 (+ t_0 (/ NaChar (+ (/ Vef KbT) 2.0))))
(t_2
(+
(/
1.0
(/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))))
(if (<= NaChar -3.6e+35)
t_2
(if (<= NaChar -6e-102)
t_1
(if (<= NaChar 2.25e-185)
(+ t_0 (* KbT (/ NaChar (+ (+ Ev EAccept) (- Vef mu)))))
(if (<= NaChar 2.15e+49) t_1 t_2))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -3.6e+35) {
tmp = t_2;
} else if (NaChar <= -6e-102) {
tmp = t_1;
} else if (NaChar <= 2.25e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 2.15e+49) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_1 = t_0 + (nachar / ((vef / kbt) + 2.0d0))
t_2 = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
if (nachar <= (-3.6d+35)) then
tmp = t_2
else if (nachar <= (-6d-102)) then
tmp = t_1
else if (nachar <= 2.25d-185) then
tmp = t_0 + (kbt * (nachar / ((ev + eaccept) + (vef - mu))))
else if (nachar <= 2.15d+49) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0));
double t_2 = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
double tmp;
if (NaChar <= -3.6e+35) {
tmp = t_2;
} else if (NaChar <= -6e-102) {
tmp = t_1;
} else if (NaChar <= 2.25e-185) {
tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu))));
} else if (NaChar <= 2.15e+49) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)) t_2 = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) tmp = 0 if NaChar <= -3.6e+35: tmp = t_2 elif NaChar <= -6e-102: tmp = t_1 elif NaChar <= 2.25e-185: tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))) elif NaChar <= 2.15e+49: tmp = t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))) t_2 = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)) tmp = 0.0 if (NaChar <= -3.6e+35) tmp = t_2; elseif (NaChar <= -6e-102) tmp = t_1; elseif (NaChar <= 2.25e-185) tmp = Float64(t_0 + Float64(KbT * Float64(NaChar / Float64(Float64(Ev + EAccept) + Float64(Vef - mu))))); elseif (NaChar <= 2.15e+49) tmp = t_1; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_1 = t_0 + (NaChar / ((Vef / KbT) + 2.0)); t_2 = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); tmp = 0.0; if (NaChar <= -3.6e+35) tmp = t_2; elseif (NaChar <= -6e-102) tmp = t_1; elseif (NaChar <= 2.25e-185) tmp = t_0 + (KbT * (NaChar / ((Ev + EAccept) + (Vef - mu)))); elseif (NaChar <= 2.15e+49) tmp = t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3.6e+35], t$95$2, If[LessEqual[NaChar, -6e-102], t$95$1, If[LessEqual[NaChar, 2.25e-185], N[(t$95$0 + N[(KbT * N[(NaChar / N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 2.15e+49], t$95$1, t$95$2]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
t_2 := \frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{if}\;NaChar \leq -3.6 \cdot 10^{+35}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NaChar \leq -6 \cdot 10^{-102}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;NaChar \leq 2.25 \cdot 10^{-185}:\\
\;\;\;\;t\_0 + KbT \cdot \frac{NaChar}{\left(Ev + EAccept\right) + \left(Vef - mu\right)}\\
\mathbf{elif}\;NaChar \leq 2.15 \cdot 10^{+49}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if NaChar < -3.6e35 or 2.15e49 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.7%
if -3.6e35 < NaChar < -6e-102 or 2.2500000000000001e-185 < NaChar < 2.15e49Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 74.9%
Taylor expanded in Vef around 0 70.1%
if -6e-102 < NaChar < 2.2500000000000001e-185Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.1%
associate-+r+74.1%
Simplified74.1%
Taylor expanded in KbT around 0 80.6%
associate-/l*88.5%
associate--l+88.5%
associate--l+88.5%
sub-neg88.5%
neg-mul-188.5%
associate-+r+88.5%
+-commutative88.5%
neg-mul-188.5%
sub-neg88.5%
Simplified88.5%
Final simplification68.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -2.15e+35) (not (<= NaChar 3.9e+56)))
(+
(/ 1.0 (/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) 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.15e+35) || !(NaChar <= 3.9e+56)) {
tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / 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.15d+35)) .or. (.not. (nachar <= 3.9d+56))) then
tmp = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / 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.15e+35) || !(NaChar <= 3.9e+56)) {
tmp = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -2.15e+35) or not (NaChar <= 3.9e+56): tmp = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / 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.15e+35) || !(NaChar <= 3.9e+56)) tmp = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / 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.15e+35) || ~((NaChar <= 3.9e+56))) tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / 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.15e+35], N[Not[LessEqual[NaChar, 3.9e+56]], $MachinePrecision]], N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -2.15 \cdot 10^{+35} \lor \neg \left(NaChar \leq 3.9 \cdot 10^{+56}\right):\\
\;\;\;\;\frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -2.1499999999999999e35 or 3.89999999999999994e56 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.9%
inv-pow99.9%
div-inv99.9%
associate-*r/99.9%
*-commutative99.9%
*-un-lft-identity99.9%
+-commutative99.9%
associate-+l-99.9%
Applied egg-rr99.9%
Simplified99.9%
Taylor expanded in KbT around inf 55.6%
if -2.1499999999999999e35 < NaChar < 3.89999999999999994e56Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.0%
Taylor expanded in Ev around 0 67.6%
Final simplification62.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.25e+35) (not (<= NaChar 1.45e+49)))
(+
(/ 1.0 (/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ Vef KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+35) || !(NaChar <= 1.45e+49)) {
tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.25d+35)) .or. (.not. (nachar <= 1.45d+49))) then
tmp = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((vef / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+35) || !(NaChar <= 1.45e+49)) {
tmp = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.25e+35) or not (NaChar <= 1.45e+49): tmp = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.25e+35) || !(NaChar <= 1.45e+49)) tmp = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(Vef / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.25e+35) || ~((NaChar <= 1.45e+49))) tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((Vef / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.25e+35], N[Not[LessEqual[NaChar, 1.45e+49]], $MachinePrecision]], N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.25 \cdot 10^{+35} \lor \neg \left(NaChar \leq 1.45 \cdot 10^{+49}\right):\\
\;\;\;\;\frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{Vef}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -1.25000000000000005e35 or 1.45e49 < NaChar Initial program 100.0%
Simplified100.0%
clear-num99.8%
inv-pow99.8%
div-inv99.8%
associate-*r/99.8%
*-commutative99.8%
*-un-lft-identity99.8%
+-commutative99.8%
associate-+l-99.8%
Applied egg-rr99.8%
Simplified99.8%
Taylor expanded in KbT around inf 54.7%
if -1.25000000000000005e35 < NaChar < 1.45e49Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.4%
Taylor expanded in Vef around 0 71.7%
Final simplification64.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -7.5e+121) (not (<= NdChar 1.25e-20)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(+
(/ 1.0 (/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -7.5e+121) || !(NdChar <= 1.25e-20)) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (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 ((ndchar <= (-7.5d+121)) .or. (.not. (ndchar <= 1.25d-20))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (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 ((NdChar <= -7.5e+121) || !(NdChar <= 1.25e-20)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -7.5e+121) or not (NdChar <= 1.25e-20): tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -7.5e+121) || !(NdChar <= 1.25e-20)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + 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 ((NdChar <= -7.5e+121) || ~((NdChar <= 1.25e-20))) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -7.5e+121], N[Not[LessEqual[NdChar, 1.25e-20]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -7.5 \cdot 10^{+121} \lor \neg \left(NdChar \leq 1.25 \cdot 10^{-20}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -7.49999999999999965e121 or 1.25e-20 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.0%
if -7.49999999999999965e121 < NdChar < 1.25e-20Initial program 100.0%
Simplified100.0%
clear-num99.9%
inv-pow99.9%
div-inv99.9%
associate-*r/99.9%
*-commutative99.9%
*-un-lft-identity99.9%
+-commutative99.9%
associate-+l-99.9%
Applied egg-rr99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.3%
Final simplification56.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -6e+122)
(+ t_0 (/ 1.0 (/ 2.0 NaChar)))
(if (<= NdChar 3e-23)
(+
(/ 1.0 (/ (+ 1.0 (exp (/ (- EAccept (- (- mu Ev) Vef)) KbT))) NaChar))
(* NdChar 0.5))
(+ t_0 (/ NaChar 2.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -6e+122) {
tmp = t_0 + (1.0 / (2.0 / NaChar));
} else if (NdChar <= 3e-23) {
tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-6d+122)) then
tmp = t_0 + (1.0d0 / (2.0d0 / nachar))
else if (ndchar <= 3d-23) then
tmp = (1.0d0 / ((1.0d0 + exp(((eaccept - ((mu - ev) - vef)) / kbt))) / nachar)) + (ndchar * 0.5d0)
else
tmp = t_0 + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -6e+122) {
tmp = t_0 + (1.0 / (2.0 / NaChar));
} else if (NdChar <= 3e-23) {
tmp = (1.0 / ((1.0 + Math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5);
} else {
tmp = t_0 + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -6e+122: tmp = t_0 + (1.0 / (2.0 / NaChar)) elif NdChar <= 3e-23: tmp = (1.0 / ((1.0 + math.exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5) else: tmp = t_0 + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -6e+122) tmp = Float64(t_0 + Float64(1.0 / Float64(2.0 / NaChar))); elseif (NdChar <= 3e-23) tmp = Float64(Float64(1.0 / Float64(Float64(1.0 + exp(Float64(Float64(EAccept - Float64(Float64(mu - Ev) - Vef)) / KbT))) / NaChar)) + Float64(NdChar * 0.5)); else tmp = Float64(t_0 + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -6e+122) tmp = t_0 + (1.0 / (2.0 / NaChar)); elseif (NdChar <= 3e-23) tmp = (1.0 / ((1.0 + exp(((EAccept - ((mu - Ev) - Vef)) / KbT))) / NaChar)) + (NdChar * 0.5); else tmp = t_0 + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -6e+122], N[(t$95$0 + N[(1.0 / N[(2.0 / NaChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3e-23], N[(N[(1.0 / N[(N[(1.0 + N[Exp[N[(N[(EAccept - N[(N[(mu - Ev), $MachinePrecision] - Vef), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / NaChar), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -6 \cdot 10^{+122}:\\
\;\;\;\;t\_0 + \frac{1}{\frac{2}{NaChar}}\\
\mathbf{elif}\;NdChar \leq 3 \cdot 10^{-23}:\\
\;\;\;\;\frac{1}{\frac{1 + e^{\frac{EAccept - \left(\left(mu - Ev\right) - Vef\right)}{KbT}}}{NaChar}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NdChar < -5.99999999999999972e122Initial program 100.0%
Simplified100.0%
clear-num99.9%
inv-pow99.9%
div-inv99.9%
associate-*r/99.9%
*-commutative99.9%
*-un-lft-identity99.9%
+-commutative99.9%
associate-+l-99.9%
Applied egg-rr99.9%
Simplified99.9%
Taylor expanded in KbT around inf 62.4%
if -5.99999999999999972e122 < NdChar < 3.00000000000000003e-23Initial program 100.0%
Simplified100.0%
clear-num99.9%
inv-pow99.9%
div-inv99.9%
associate-*r/99.9%
*-commutative99.9%
*-un-lft-identity99.9%
+-commutative99.9%
associate-+l-99.9%
Applied egg-rr99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.3%
if 3.00000000000000003e-23 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.4%
Final simplification56.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -1.1e+44)
(+ (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))) (* NdChar 0.5))
(if (<= NaChar 1.7e+189)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar 2.0))
(- (* NdChar 0.5) (/ NaChar (- -1.0 (exp (/ Ev 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 <= -1.1e+44) {
tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.7e+189) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / 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 <= (-1.1d+44)) then
tmp = (nachar / (1.0d0 + exp((mu / -kbt)))) + (ndchar * 0.5d0)
else if (nachar <= 1.7d+189) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar * 0.5d0) - (nachar / ((-1.0d0) - exp((ev / 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 <= -1.1e+44) {
tmp = (NaChar / (1.0 + Math.exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 1.7e+189) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -1.1e+44: tmp = (NaChar / (1.0 + math.exp((mu / -KbT)))) + (NdChar * 0.5) elif NaChar <= 1.7e+189: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar * 0.5) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -1.1e+44) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT))))) + Float64(NdChar * 0.5)); elseif (NaChar <= 1.7e+189) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar * 0.5) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -1.1e+44) tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5); elseif (NaChar <= 1.7e+189) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / 2.0); else tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -1.1e+44], N[(N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.7e+189], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.1 \cdot 10^{+44}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{mu}{-KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 1.7 \cdot 10^{+189}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -1.09999999999999998e44Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 60.3%
associate-*r/60.3%
mul-1-neg60.3%
Simplified60.3%
Taylor expanded in KbT around inf 42.4%
if -1.09999999999999998e44 < NaChar < 1.69999999999999992e189Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.8%
if 1.69999999999999992e189 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 64.4%
Taylor expanded in KbT around inf 34.5%
Final simplification50.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -8.8e-125) (not (<= KbT 6.6e-105))) (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor Vef) KbT)))) (/ NaChar 2.0)) (- (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ (* KbT NaChar) mu))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -8.8e-125) || !(KbT <= 6.6e-105)) {
tmp = (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) - ((KbT * NaChar) / mu);
}
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 <= (-8.8d-125)) .or. (.not. (kbt <= 6.6d-105))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + vef) / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) - ((kbt * nachar) / mu)
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 <= -8.8e-125) || !(KbT <= 6.6e-105)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) - ((KbT * NaChar) / mu);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -8.8e-125) or not (KbT <= 6.6e-105): tmp = (NdChar / (1.0 + math.exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) - ((KbT * NaChar) / mu) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -8.8e-125) || !(KbT <= 6.6e-105)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Vef) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) - Float64(Float64(KbT * NaChar) / mu)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -8.8e-125) || ~((KbT <= 6.6e-105))) tmp = (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) - ((KbT * NaChar) / mu); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -8.8e-125], N[Not[LessEqual[KbT, 6.6e-105]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + Vef), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(KbT * NaChar), $MachinePrecision] / mu), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -8.8 \cdot 10^{-125} \lor \neg \left(KbT \leq 6.6 \cdot 10^{-105}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + Vef}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} - \frac{KbT \cdot NaChar}{mu}\\
\end{array}
\end{array}
if KbT < -8.79999999999999979e-125 or 6.5999999999999997e-105 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.7%
Taylor expanded in Vef around inf 44.5%
if -8.79999999999999979e-125 < KbT < 6.5999999999999997e-105Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.4%
associate-+r+44.4%
Simplified44.4%
Taylor expanded in mu around inf 25.4%
Taylor expanded in mu around inf 36.7%
associate-*r/36.7%
mul-1-neg36.7%
*-commutative36.7%
Simplified36.7%
Final simplification41.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar -4.5e+41)
(+ (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))) (* NdChar 0.5))
(if (<= NaChar 3.4e+77)
(+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor Vef) KbT)))) (/ NaChar 2.0))
(- (* NdChar 0.5) (/ NaChar (- -1.0 (exp (/ Ev 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 <= -4.5e+41) {
tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 3.4e+77) {
tmp = (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / 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 <= (-4.5d+41)) then
tmp = (nachar / (1.0d0 + exp((mu / -kbt)))) + (ndchar * 0.5d0)
else if (nachar <= 3.4d+77) then
tmp = (ndchar / (1.0d0 + exp(((edonor + vef) / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar * 0.5d0) - (nachar / ((-1.0d0) - exp((ev / 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 <= -4.5e+41) {
tmp = (NaChar / (1.0 + Math.exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (NaChar <= 3.4e+77) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= -4.5e+41: tmp = (NaChar / (1.0 + math.exp((mu / -KbT)))) + (NdChar * 0.5) elif NaChar <= 3.4e+77: tmp = (NdChar / (1.0 + math.exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar * 0.5) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= -4.5e+41) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT))))) + Float64(NdChar * 0.5)); elseif (NaChar <= 3.4e+77) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Vef) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar * 0.5) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= -4.5e+41) tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5); elseif (NaChar <= 3.4e+77) tmp = (NdChar / (1.0 + exp(((EDonor + Vef) / KbT)))) + (NaChar / 2.0); else tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, -4.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[NaChar, 3.4e+77], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + Vef), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.5 \cdot 10^{+41}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{mu}{-KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;NaChar \leq 3.4 \cdot 10^{+77}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + Vef}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if NaChar < -4.5000000000000001e41Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 60.3%
associate-*r/60.3%
mul-1-neg60.3%
Simplified60.3%
Taylor expanded in KbT around inf 42.4%
if -4.5000000000000001e41 < NaChar < 3.39999999999999997e77Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.4%
Taylor expanded in Vef around inf 43.8%
if 3.39999999999999997e77 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 61.6%
Taylor expanded in KbT around inf 33.9%
Final simplification41.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -1.06e+24) (not (<= NaChar 2e+76))) (- (* NdChar 0.5) (/ NaChar (- -1.0 (exp (/ Ev KbT))))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.06e+24) || !(NaChar <= 2e+76)) {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.06d+24)) .or. (.not. (nachar <= 2d+76))) then
tmp = (ndchar * 0.5d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.06e+24) || !(NaChar <= 2e+76)) {
tmp = (NdChar * 0.5) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.06e+24) or not (NaChar <= 2e+76): tmp = (NdChar * 0.5) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.06e+24) || !(NaChar <= 2e+76)) tmp = Float64(Float64(NdChar * 0.5) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.06e+24) || ~((NaChar <= 2e+76))) tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / KbT)))); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.06e+24], N[Not[LessEqual[NaChar, 2e+76]], $MachinePrecision]], N[(N[(NdChar * 0.5), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.06 \cdot 10^{+24} \lor \neg \left(NaChar \leq 2 \cdot 10^{+76}\right):\\
\;\;\;\;NdChar \cdot 0.5 - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.06e24 or 2.0000000000000001e76 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 61.0%
Taylor expanded in KbT around inf 37.9%
if -1.06e24 < NaChar < 2.0000000000000001e76Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.2%
Taylor expanded in EDonor around inf 41.8%
Final simplification40.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= EDonor -9e+28) (not (<= EDonor 6e+85))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -9e+28) || !(EDonor <= 6e+85)) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((edonor <= (-9d+28)) .or. (.not. (edonor <= 6d+85))) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((EDonor <= -9e+28) || !(EDonor <= 6e+85)) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (EDonor <= -9e+28) or not (EDonor <= 6e+85): tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((EDonor <= -9e+28) || !(EDonor <= 6e+85)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((EDonor <= -9e+28) || ~((EDonor <= 6e+85))) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[EDonor, -9e+28], N[Not[LessEqual[EDonor, 6e+85]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -9 \cdot 10^{+28} \lor \neg \left(EDonor \leq 6 \cdot 10^{+85}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if EDonor < -8.9999999999999994e28 or 6.0000000000000001e85 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.1%
Taylor expanded in EDonor around inf 38.1%
if -8.9999999999999994e28 < EDonor < 6.0000000000000001e85Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.2%
Taylor expanded in mu around inf 41.1%
Final simplification39.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EDonor -5e-79)
(+ (/ NaChar 2.0) (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
(if (<= EDonor 5.8e+84)
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0))
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -5e-79) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Ec / -KbT))));
} else if (EDonor <= 5.8e+84) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (edonor <= (-5d-79)) then
tmp = (nachar / 2.0d0) + (ndchar / (1.0d0 + exp((ec / -kbt))))
else if (edonor <= 5.8d+84) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EDonor <= -5e-79) {
tmp = (NaChar / 2.0) + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
} else if (EDonor <= 5.8e+84) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EDonor <= -5e-79: tmp = (NaChar / 2.0) + (NdChar / (1.0 + math.exp((Ec / -KbT)))) elif EDonor <= 5.8e+84: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EDonor <= -5e-79) tmp = Float64(Float64(NaChar / 2.0) + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))); elseif (EDonor <= 5.8e+84) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EDonor <= -5e-79) tmp = (NaChar / 2.0) + (NdChar / (1.0 + exp((Ec / -KbT)))); elseif (EDonor <= 5.8e+84) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EDonor, -5e-79], N[(N[(NaChar / 2.0), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 5.8e+84], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EDonor \leq -5 \cdot 10^{-79}:\\
\;\;\;\;\frac{NaChar}{2} + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{elif}\;EDonor \leq 5.8 \cdot 10^{+84}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if EDonor < -4.99999999999999999e-79Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.4%
Taylor expanded in Ec around inf 39.6%
associate-*r/39.6%
mul-1-neg39.6%
Simplified39.6%
if -4.99999999999999999e-79 < EDonor < 5.79999999999999977e84Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.6%
Taylor expanded in mu around inf 40.6%
if 5.79999999999999977e84 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 45.3%
Taylor expanded in EDonor around inf 40.8%
Final simplification40.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (- (* NdChar 0.5) (/ NaChar (- -1.0 (exp (/ Ev KbT))))))
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 / (-1.0 - exp((Ev / 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 * 0.5d0) - (nachar / ((-1.0d0) - exp((ev / 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 * 0.5) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) - (NaChar / (-1.0 - math.exp((Ev / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) - (NaChar / (-1.0 - exp((Ev / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.6%
Taylor expanded in KbT around inf 36.0%
Final simplification36.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 1.6e+170) (* 0.5 (+ NdChar NaChar)) (/ NdChar (- 2.0 (/ Ec KbT)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.6e+170) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.6d+170) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (2.0d0 - (ec / kbt))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.6e+170) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.6e+170: tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (2.0 - (Ec / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.6e+170) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(2.0 - Float64(Ec / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.6e+170) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (2.0 - (Ec / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.6e+170], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.6 \cdot 10^{+170}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if EAccept < 1.59999999999999989e170Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.8%
Taylor expanded in Ec around inf 35.3%
associate-*r/35.3%
mul-1-neg35.3%
Simplified35.3%
Taylor expanded in Ec around 0 25.0%
mul-1-neg25.0%
unsub-neg25.0%
Simplified25.0%
Taylor expanded in Ec around 0 26.9%
distribute-lft-out26.9%
Simplified26.9%
if 1.59999999999999989e170 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.7%
Taylor expanded in Ec around inf 32.3%
associate-*r/32.3%
mul-1-neg32.3%
Simplified32.3%
Taylor expanded in Ec around 0 23.5%
mul-1-neg23.5%
unsub-neg23.5%
Simplified23.5%
Taylor expanded in NdChar around inf 34.8%
Final simplification27.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 46.5%
Taylor expanded in Ec around inf 35.0%
associate-*r/35.0%
mul-1-neg35.0%
Simplified35.0%
Taylor expanded in Ec around 0 24.8%
mul-1-neg24.8%
unsub-neg24.8%
Simplified24.8%
Taylor expanded in Ec around 0 26.6%
distribute-lft-out26.6%
Simplified26.6%
Final simplification26.6%
herbie shell --seed 2024073
(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))))))