
(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 21 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 (- (- Ec Vef) mu)) 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 - ((Ec - Vef) - mu)) / 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 - ((ec - vef) - mu)) / 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 - ((Ec - Vef) - mu)) / 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 - ((Ec - Vef) - mu)) / 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(Float64(Ec - Vef) - mu)) / 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 - ((Ec - Vef) - mu)) / 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[(N[(Ec - Vef), $MachinePrecision] - mu), $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(\left(Ec - Vef\right) - mu\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 (+ 1.0 (exp (/ Vef KbT))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_2 (+ (/ Vef KbT) (/ Ev KbT)))
(t_3
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))
(if (<= mu -3.7e+146)
t_3
(if (<= mu -1.1e+68)
(+ (/ NdChar t_0) (/ NaChar t_0))
(if (<= mu -1.8e+21)
t_3
(if (<= mu -4.2e-129)
(-
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (- -1.0 (exp (/ EDonor KbT)))))
(if (<= mu 1.75e-210)
(+
t_1
(/
NaChar
(* mu (+ (/ (+ (+ (/ EAccept KbT) 2.0) t_2) mu) (/ -1.0 KbT)))))
(if (<= mu 1.45e-147)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/
NdChar
(-
(+ (+ 2.0 (/ EDonor KbT)) (+ (/ Vef KbT) (/ mu KbT)))
(/ Ec KbT))))
(if (<= mu 5e+108)
(+
t_1
(/
NaChar
(*
EAccept
(+ (/ 1.0 KbT) (/ (- (+ 2.0 t_2) (/ mu KbT)) EAccept)))))
t_3)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp((Vef / KbT));
double t_1 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_2 = (Vef / KbT) + (Ev / KbT);
double t_3 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double tmp;
if (mu <= -3.7e+146) {
tmp = t_3;
} else if (mu <= -1.1e+68) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (mu <= -1.8e+21) {
tmp = t_3;
} else if (mu <= -4.2e-129) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) - (NdChar / (-1.0 - exp((EDonor / KbT))));
} else if (mu <= 1.75e-210) {
tmp = t_1 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + t_2) / mu) + (-1.0 / KbT))));
} else if (mu <= 1.45e-147) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (mu <= 5e+108) {
tmp = t_1 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + t_2) - (mu / KbT)) / EAccept))));
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp((vef / kbt))
t_1 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_2 = (vef / kbt) + (ev / kbt)
t_3 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
if (mu <= (-3.7d+146)) then
tmp = t_3
else if (mu <= (-1.1d+68)) then
tmp = (ndchar / t_0) + (nachar / t_0)
else if (mu <= (-1.8d+21)) then
tmp = t_3
else if (mu <= (-4.2d-129)) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) - (ndchar / ((-1.0d0) - exp((edonor / kbt))))
else if (mu <= 1.75d-210) then
tmp = t_1 + (nachar / (mu * (((((eaccept / kbt) + 2.0d0) + t_2) / mu) + ((-1.0d0) / kbt))))
else if (mu <= 1.45d-147) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (ndchar / (((2.0d0 + (edonor / kbt)) + ((vef / kbt) + (mu / kbt))) - (ec / kbt)))
else if (mu <= 5d+108) then
tmp = t_1 + (nachar / (eaccept * ((1.0d0 / kbt) + (((2.0d0 + t_2) - (mu / kbt)) / eaccept))))
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp((Vef / KbT));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_2 = (Vef / KbT) + (Ev / KbT);
double t_3 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double tmp;
if (mu <= -3.7e+146) {
tmp = t_3;
} else if (mu <= -1.1e+68) {
tmp = (NdChar / t_0) + (NaChar / t_0);
} else if (mu <= -1.8e+21) {
tmp = t_3;
} else if (mu <= -4.2e-129) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) - (NdChar / (-1.0 - Math.exp((EDonor / KbT))));
} else if (mu <= 1.75e-210) {
tmp = t_1 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + t_2) / mu) + (-1.0 / KbT))));
} else if (mu <= 1.45e-147) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)));
} else if (mu <= 5e+108) {
tmp = t_1 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + t_2) - (mu / KbT)) / EAccept))));
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp((Vef / KbT)) t_1 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_2 = (Vef / KbT) + (Ev / KbT) t_3 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) tmp = 0 if mu <= -3.7e+146: tmp = t_3 elif mu <= -1.1e+68: tmp = (NdChar / t_0) + (NaChar / t_0) elif mu <= -1.8e+21: tmp = t_3 elif mu <= -4.2e-129: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) - (NdChar / (-1.0 - math.exp((EDonor / KbT)))) elif mu <= 1.75e-210: tmp = t_1 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + t_2) / mu) + (-1.0 / KbT)))) elif mu <= 1.45e-147: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))) elif mu <= 5e+108: tmp = t_1 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + t_2) - (mu / KbT)) / EAccept)))) else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Vef / KbT))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) t_2 = Float64(Float64(Vef / KbT) + Float64(Ev / KbT)) t_3 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) tmp = 0.0 if (mu <= -3.7e+146) tmp = t_3; elseif (mu <= -1.1e+68) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / t_0)); elseif (mu <= -1.8e+21) tmp = t_3; elseif (mu <= -4.2e-129) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) - Float64(NdChar / Float64(-1.0 - exp(Float64(EDonor / KbT))))); elseif (mu <= 1.75e-210) tmp = Float64(t_1 + Float64(NaChar / Float64(mu * Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + t_2) / mu) + Float64(-1.0 / KbT))))); elseif (mu <= 1.45e-147) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(NdChar / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)))); elseif (mu <= 5e+108) tmp = Float64(t_1 + Float64(NaChar / Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + t_2) - Float64(mu / KbT)) / EAccept))))); else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp((Vef / KbT)); t_1 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))); t_2 = (Vef / KbT) + (Ev / KbT); t_3 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); tmp = 0.0; if (mu <= -3.7e+146) tmp = t_3; elseif (mu <= -1.1e+68) tmp = (NdChar / t_0) + (NaChar / t_0); elseif (mu <= -1.8e+21) tmp = t_3; elseif (mu <= -4.2e-129) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) - (NdChar / (-1.0 - exp((EDonor / KbT)))); elseif (mu <= 1.75e-210) tmp = t_1 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + t_2) / mu) + (-1.0 / KbT)))); elseif (mu <= 1.45e-147) tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (((2.0 + (EDonor / KbT)) + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT))); elseif (mu <= 5e+108) tmp = t_1 + (NaChar / (EAccept * ((1.0 / KbT) + (((2.0 + t_2) - (mu / KbT)) / EAccept)))); else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.7e+146], t$95$3, If[LessEqual[mu, -1.1e+68], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -1.8e+21], t$95$3, If[LessEqual[mu, -4.2e-129], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.75e-210], N[(t$95$1 + N[(NaChar / N[(mu * N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + t$95$2), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.45e-147], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 5e+108], N[(t$95$1 + N[(NaChar / N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + t$95$2), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$3]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{Vef}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_2 := \frac{Vef}{KbT} + \frac{Ev}{KbT}\\
t_3 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{if}\;mu \leq -3.7 \cdot 10^{+146}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq -1.1 \cdot 10^{+68}:\\
\;\;\;\;\frac{NdChar}{t\_0} + \frac{NaChar}{t\_0}\\
\mathbf{elif}\;mu \leq -1.8 \cdot 10^{+21}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq -4.2 \cdot 10^{-129}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} - \frac{NdChar}{-1 - e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.75 \cdot 10^{-210}:\\
\;\;\;\;t\_1 + \frac{NaChar}{mu \cdot \left(\frac{\left(\frac{EAccept}{KbT} + 2\right) + t\_2}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 1.45 \cdot 10^{-147}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{NdChar}{\left(\left(2 + \frac{EDonor}{KbT}\right) + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;mu \leq 5 \cdot 10^{+108}:\\
\;\;\;\;t\_1 + \frac{NaChar}{EAccept \cdot \left(\frac{1}{KbT} + \frac{\left(2 + t\_2\right) - \frac{mu}{KbT}}{EAccept}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if mu < -3.70000000000000004e146 or -1.09999999999999994e68 < mu < -1.8e21 or 4.99999999999999991e108 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.4%
Taylor expanded in mu around inf 80.6%
associate-*r/37.7%
mul-1-neg37.7%
Simplified80.6%
if -3.70000000000000004e146 < mu < -1.09999999999999994e68Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.7%
Taylor expanded in EAccept around 0 82.7%
Taylor expanded in Vef around inf 83.7%
if -1.8e21 < mu < -4.2e-129Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 80.1%
Taylor expanded in EDonor around inf 75.9%
if -4.2e-129 < mu < 1.75000000000000008e-210Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 72.1%
associate-+r+72.1%
+-commutative72.1%
Simplified72.1%
Taylor expanded in mu around -inf 84.9%
associate-*r*84.9%
mul-1-neg84.9%
+-commutative84.9%
mul-1-neg84.9%
unsub-neg84.9%
associate-+r+84.9%
Simplified84.9%
if 1.75000000000000008e-210 < mu < 1.4500000000000001e-147Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 94.0%
associate-+r+94.0%
Simplified94.0%
if 1.4500000000000001e-147 < mu < 4.99999999999999991e108Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.2%
associate-+r+69.2%
+-commutative69.2%
Simplified69.2%
Taylor expanded in EAccept around -inf 75.4%
Final simplification81.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_2
(-
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= mu -7.5e+166)
t_1
(if (<= mu -1.4e-213)
t_2
(if (<= mu 3e-253)
(+
t_0
(/
NaChar
(*
mu
(+
(/ (+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT))) mu)
(/ -1.0 KbT)))))
(if (<= mu 5.5e+89)
t_2
(if (<= mu 1.18e+150)
(+
t_0
(/
NaChar
(*
EAccept
(-
(/ 2.0 EAccept)
(-
(/ (/ mu EAccept) KbT)
(-
(/ Vef (* KbT EAccept))
(- (/ -1.0 KbT) (/ (/ Ev EAccept) KbT))))))))
(if (<= mu 3.8e+174)
(+
(/ NdChar (+ 1.0 (exp (/ Ec (- KbT)))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
t_1))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -7.5e+166) {
tmp = t_1;
} else if (mu <= -1.4e-213) {
tmp = t_2;
} else if (mu <= 3e-253) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if (mu <= 5.5e+89) {
tmp = t_2;
} else if (mu <= 1.18e+150) {
tmp = t_0 + (NaChar / (EAccept * ((2.0 / EAccept) - (((mu / EAccept) / KbT) - ((Vef / (KbT * EAccept)) - ((-1.0 / KbT) - ((Ev / EAccept) / KbT)))))));
} else if (mu <= 3.8e+174) {
tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_2 = (ndchar / (1.0d0 + exp((vef / kbt)))) - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
if (mu <= (-7.5d+166)) then
tmp = t_1
else if (mu <= (-1.4d-213)) then
tmp = t_2
else if (mu <= 3d-253) then
tmp = t_0 + (nachar / (mu * (((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) / mu) + ((-1.0d0) / kbt))))
else if (mu <= 5.5d+89) then
tmp = t_2
else if (mu <= 1.18d+150) then
tmp = t_0 + (nachar / (eaccept * ((2.0d0 / eaccept) - (((mu / eaccept) / kbt) - ((vef / (kbt * eaccept)) - (((-1.0d0) / kbt) - ((ev / eaccept) / kbt)))))))
else if (mu <= 3.8d+174) then
tmp = (ndchar / (1.0d0 + exp((ec / -kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_1 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_2 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -7.5e+166) {
tmp = t_1;
} else if (mu <= -1.4e-213) {
tmp = t_2;
} else if (mu <= 3e-253) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if (mu <= 5.5e+89) {
tmp = t_2;
} else if (mu <= 1.18e+150) {
tmp = t_0 + (NaChar / (EAccept * ((2.0 / EAccept) - (((mu / EAccept) / KbT) - ((Vef / (KbT * EAccept)) - ((-1.0 / KbT) - ((Ev / EAccept) / KbT)))))));
} else if (mu <= 3.8e+174) {
tmp = (NdChar / (1.0 + Math.exp((Ec / -KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_1 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_2 = (NdChar / (1.0 + math.exp((Vef / KbT)))) - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if mu <= -7.5e+166: tmp = t_1 elif mu <= -1.4e-213: tmp = t_2 elif mu <= 3e-253: tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))) elif mu <= 5.5e+89: tmp = t_2 elif mu <= 1.18e+150: tmp = t_0 + (NaChar / (EAccept * ((2.0 / EAccept) - (((mu / EAccept) / KbT) - ((Vef / (KbT * EAccept)) - ((-1.0 / KbT) - ((Ev / EAccept) / KbT))))))) elif mu <= 3.8e+174: tmp = (NdChar / (1.0 + math.exp((Ec / -KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (mu <= -7.5e+166) tmp = t_1; elseif (mu <= -1.4e-213) tmp = t_2; elseif (mu <= 3e-253) tmp = Float64(t_0 + Float64(NaChar / Float64(mu * Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) / mu) + Float64(-1.0 / KbT))))); elseif (mu <= 5.5e+89) tmp = t_2; elseif (mu <= 1.18e+150) tmp = Float64(t_0 + Float64(NaChar / Float64(EAccept * Float64(Float64(2.0 / EAccept) - Float64(Float64(Float64(mu / EAccept) / KbT) - Float64(Float64(Vef / Float64(KbT * EAccept)) - Float64(Float64(-1.0 / KbT) - Float64(Float64(Ev / EAccept) / KbT)))))))); elseif (mu <= 3.8e+174) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT))))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))); t_1 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_2 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (mu <= -7.5e+166) tmp = t_1; elseif (mu <= -1.4e-213) tmp = t_2; elseif (mu <= 3e-253) tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))); elseif (mu <= 5.5e+89) tmp = t_2; elseif (mu <= 1.18e+150) tmp = t_0 + (NaChar / (EAccept * ((2.0 / EAccept) - (((mu / EAccept) / KbT) - ((Vef / (KbT * EAccept)) - ((-1.0 / KbT) - ((Ev / EAccept) / KbT))))))); elseif (mu <= 3.8e+174) tmp = (NdChar / (1.0 + exp((Ec / -KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -7.5e+166], t$95$1, If[LessEqual[mu, -1.4e-213], t$95$2, If[LessEqual[mu, 3e-253], N[(t$95$0 + N[(NaChar / N[(mu * N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 5.5e+89], t$95$2, If[LessEqual[mu, 1.18e+150], N[(t$95$0 + N[(NaChar / N[(EAccept * N[(N[(2.0 / EAccept), $MachinePrecision] - N[(N[(N[(mu / EAccept), $MachinePrecision] / KbT), $MachinePrecision] - N[(N[(Vef / N[(KbT * EAccept), $MachinePrecision]), $MachinePrecision] - N[(N[(-1.0 / KbT), $MachinePrecision] - N[(N[(Ev / EAccept), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.8e+174], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -7.5 \cdot 10^{+166}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -1.4 \cdot 10^{-213}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq 3 \cdot 10^{-253}:\\
\;\;\;\;t\_0 + \frac{NaChar}{mu \cdot \left(\frac{\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 5.5 \cdot 10^{+89}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq 1.18 \cdot 10^{+150}:\\
\;\;\;\;t\_0 + \frac{NaChar}{EAccept \cdot \left(\frac{2}{EAccept} - \left(\frac{\frac{mu}{EAccept}}{KbT} - \left(\frac{Vef}{KbT \cdot EAccept} - \left(\frac{-1}{KbT} - \frac{\frac{Ev}{EAccept}}{KbT}\right)\right)\right)\right)}\\
\mathbf{elif}\;mu \leq 3.8 \cdot 10^{+174}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if mu < -7.50000000000000029e166 or 3.8000000000000002e174 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 90.5%
Taylor expanded in mu around inf 82.1%
associate-*r/35.0%
mul-1-neg35.0%
Simplified82.1%
if -7.50000000000000029e166 < mu < -1.4e-213 or 3.0000000000000002e-253 < mu < 5.49999999999999976e89Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 83.2%
Taylor expanded in EAccept around 0 77.3%
if -1.4e-213 < mu < 3.0000000000000002e-253Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 77.4%
associate-+r+77.4%
+-commutative77.4%
Simplified77.4%
Taylor expanded in mu around -inf 86.8%
associate-*r*86.8%
mul-1-neg86.8%
+-commutative86.8%
mul-1-neg86.8%
unsub-neg86.8%
associate-+r+86.8%
Simplified86.8%
if 5.49999999999999976e89 < mu < 1.18e150Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 91.8%
associate-+r+91.8%
+-commutative91.8%
Simplified91.8%
Taylor expanded in EAccept around inf 75.2%
associate--l+75.2%
associate-*r/75.2%
metadata-eval75.2%
associate-+r+75.2%
associate-/r*91.8%
*-commutative91.8%
associate-/r*91.8%
Simplified91.8%
if 1.18e150 < mu < 3.8000000000000002e174Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 74.5%
Taylor expanded in Ec around inf 74.5%
associate-*r/74.5%
mul-1-neg74.5%
Simplified74.5%
Final simplification80.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(if (<= Vef -4.65e+33)
(+ t_1 t_0)
(if (<= Vef 1.1e-249)
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(if (<= Vef 1.45e+64)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(- t_0 (/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (Vef <= -4.65e+33) {
tmp = t_1 + t_0;
} else if (Vef <= 1.1e-249) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else if (Vef <= 1.45e+64) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))
if (vef <= (-4.65d+33)) then
tmp = t_1 + t_0
else if (vef <= 1.1d-249) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else if (vef <= 1.45d+64) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_0 - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (Vef <= -4.65e+33) {
tmp = t_1 + t_0;
} else if (Vef <= 1.1e-249) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else if (Vef <= 1.45e+64) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))) tmp = 0 if Vef <= -4.65e+33: tmp = t_1 + t_0 elif Vef <= 1.1e-249: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) elif Vef <= 1.45e+64: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_0 - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) tmp = 0.0 if (Vef <= -4.65e+33) tmp = Float64(t_1 + t_0); elseif (Vef <= 1.1e-249) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); elseif (Vef <= 1.45e+64) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_0 - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))); tmp = 0.0; if (Vef <= -4.65e+33) tmp = t_1 + t_0; elseif (Vef <= 1.1e-249) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); elseif (Vef <= 1.45e+64) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -4.65e+33], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.1e-249], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.45e+64], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -4.65 \cdot 10^{+33}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;Vef \leq 1.1 \cdot 10^{-249}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.45 \cdot 10^{+64}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -4.65000000000000001e33Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 83.4%
if -4.65000000000000001e33 < Vef < 1.1e-249Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 80.6%
if 1.1e-249 < Vef < 1.44999999999999997e64Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 90.1%
if 1.44999999999999997e64 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.4%
Taylor expanded in EAccept around 0 80.0%
Final simplification83.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(if (<= NaChar -6.5e+196)
(+ t_1 (* KbT (/ NdChar (- EDonor (- Ec (+ mu Vef))))))
(if (<= NaChar -2.4e+48)
(+
t_0
(/
NaChar
(*
mu
(+
(/ (+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT))) mu)
(/ -1.0 KbT)))))
(if (<= NaChar -6.6e-21)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))
(if (<= NaChar 1.9e-26)
(-
t_0
(/ NaChar (/ (- mu (+ (+ Ev EAccept) (+ Vef (* KbT 2.0)))) KbT)))
(+
t_1
(/
-1.0
(/ (- (/ (- Ec (+ EDonor (+ mu Vef))) KbT) 2.0) NdChar)))))))))
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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -6.5e+196) {
tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
} else if (NaChar <= -2.4e+48) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if (NaChar <= -6.6e-21) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
} else if (NaChar <= 1.9e-26) {
tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
} else {
tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))
if (nachar <= (-6.5d+196)) then
tmp = t_1 + (kbt * (ndchar / (edonor - (ec - (mu + vef)))))
else if (nachar <= (-2.4d+48)) then
tmp = t_0 + (nachar / (mu * (((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) / mu) + ((-1.0d0) / kbt))))
else if (nachar <= (-6.6d-21)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
else if (nachar <= 1.9d-26) then
tmp = t_0 - (nachar / ((mu - ((ev + eaccept) + (vef + (kbt * 2.0d0)))) / kbt))
else
tmp = t_1 + ((-1.0d0) / ((((ec - (edonor + (mu + vef))) / kbt) - 2.0d0) / ndchar))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -6.5e+196) {
tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
} else if (NaChar <= -2.4e+48) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if (NaChar <= -6.6e-21) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
} else if (NaChar <= 1.9e-26) {
tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
} else {
tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))) tmp = 0 if NaChar <= -6.5e+196: tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))) elif NaChar <= -2.4e+48: tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))) elif NaChar <= -6.6e-21: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) elif NaChar <= 1.9e-26: tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT)) else: tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)) 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(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) tmp = 0.0 if (NaChar <= -6.5e+196) tmp = Float64(t_1 + Float64(KbT * Float64(NdChar / Float64(EDonor - Float64(Ec - Float64(mu + Vef)))))); elseif (NaChar <= -2.4e+48) tmp = Float64(t_0 + Float64(NaChar / Float64(mu * Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) / mu) + Float64(-1.0 / KbT))))); elseif (NaChar <= -6.6e-21) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); elseif (NaChar <= 1.9e-26) tmp = Float64(t_0 - Float64(NaChar / Float64(Float64(mu - Float64(Float64(Ev + EAccept) + Float64(Vef + Float64(KbT * 2.0)))) / KbT))); else tmp = Float64(t_1 + Float64(-1.0 / Float64(Float64(Float64(Float64(Ec - Float64(EDonor + Float64(mu + Vef))) / KbT) - 2.0) / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))); tmp = 0.0; if (NaChar <= -6.5e+196) tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))); elseif (NaChar <= -2.4e+48) tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))); elseif (NaChar <= -6.6e-21) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); elseif (NaChar <= 1.9e-26) tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT)); else tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)); 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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.5e+196], N[(t$95$1 + N[(KbT * N[(NdChar / N[(EDonor - N[(Ec - N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -2.4e+48], N[(t$95$0 + N[(NaChar / N[(mu * N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -6.6e-21], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 1.9e-26], N[(t$95$0 - N[(NaChar / N[(N[(mu - N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(-1.0 / N[(N[(N[(N[(Ec - N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] - 2.0), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -6.5 \cdot 10^{+196}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NdChar}{EDonor - \left(Ec - \left(mu + Vef\right)\right)}\\
\mathbf{elif}\;NaChar \leq -2.4 \cdot 10^{+48}:\\
\;\;\;\;t\_0 + \frac{NaChar}{mu \cdot \left(\frac{\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq -6.6 \cdot 10^{-21}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\mathbf{elif}\;NaChar \leq 1.9 \cdot 10^{-26}:\\
\;\;\;\;t\_0 - \frac{NaChar}{\frac{mu - \left(\left(Ev + EAccept\right) + \left(Vef + KbT \cdot 2\right)\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{-1}{\frac{\frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT} - 2}{NdChar}}\\
\end{array}
\end{array}
if NaChar < -6.49999999999999968e196Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.9%
associate-+r+54.9%
Simplified54.9%
Taylor expanded in KbT around 0 55.0%
associate-/l*61.3%
associate--l+61.3%
+-commutative61.3%
Simplified61.3%
if -6.49999999999999968e196 < NaChar < -2.4000000000000001e48Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
associate-+r+59.0%
+-commutative59.0%
Simplified59.0%
Taylor expanded in mu around -inf 70.4%
associate-*r*70.4%
mul-1-neg70.4%
+-commutative70.4%
mul-1-neg70.4%
unsub-neg70.4%
associate-+r+70.4%
Simplified70.4%
if -2.4000000000000001e48 < NaChar < -6.60000000000000018e-21Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 84.9%
Taylor expanded in mu around inf 78.2%
associate-*r/47.5%
mul-1-neg47.5%
Simplified78.2%
if -6.60000000000000018e-21 < NaChar < 1.90000000000000007e-26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 74.1%
associate-+r+74.1%
+-commutative74.1%
Simplified74.1%
Taylor expanded in KbT around 0 80.1%
associate-+r+80.1%
Simplified80.1%
if 1.90000000000000007e-26 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.7%
associate-+r+70.7%
Simplified70.7%
clear-num71.4%
inv-pow71.4%
associate-+r+71.4%
Applied egg-rr71.4%
unpow-171.4%
associate-+l+71.4%
associate-+r+71.4%
associate--l+71.4%
+-commutative71.4%
Simplified71.4%
Taylor expanded in KbT around 0 76.8%
Final simplification76.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -2e+22) (not (<= NdChar 2.5e+171)))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (/ (* EAccept (- 1.0 (/ (- mu (+ Vef Ev)) EAccept))) KbT)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/ NdChar (+ 1.0 (exp (/ Vef KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2e+22) || !(NdChar <= 2.5e+171)) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((EAccept * (1.0 - ((mu - (Vef + Ev)) / EAccept))) / KbT));
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-2d+22)) .or. (.not. (ndchar <= 2.5d+171))) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / ((eaccept * (1.0d0 - ((mu - (vef + ev)) / eaccept))) / kbt))
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (ndchar / (1.0d0 + exp((vef / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2e+22) || !(NdChar <= 2.5e+171)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((EAccept * (1.0 - ((mu - (Vef + Ev)) / EAccept))) / KbT));
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2e+22) or not (NdChar <= 2.5e+171): tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((EAccept * (1.0 - ((mu - (Vef + Ev)) / EAccept))) / KbT)) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + math.exp((Vef / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2e+22) || !(NdChar <= 2.5e+171)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept * Float64(1.0 - Float64(Float64(mu - Float64(Vef + Ev)) / EAccept))) / KbT))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -2e+22) || ~((NdChar <= 2.5e+171))) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / ((EAccept * (1.0 - ((mu - (Vef + Ev)) / EAccept))) / KbT)); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2e+22], N[Not[LessEqual[NdChar, 2.5e+171]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept * N[(1.0 - N[(N[(mu - N[(Vef + Ev), $MachinePrecision]), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2 \cdot 10^{+22} \lor \neg \left(NdChar \leq 2.5 \cdot 10^{+171}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept \cdot \left(1 - \frac{mu - \left(Vef + Ev\right)}{EAccept}\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -2e22 or 2.5000000000000002e171 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 73.2%
associate-+r+73.2%
+-commutative73.2%
Simplified73.2%
Taylor expanded in EAccept around -inf 80.9%
Taylor expanded in KbT around 0 85.0%
if -2e22 < NdChar < 2.5000000000000002e171Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.1%
Final simplification80.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(if (<= Vef -2.5e+37)
(+ t_1 t_0)
(if (<= Vef 1.3e+64)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(- t_0 (/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (Vef <= -2.5e+37) {
tmp = t_1 + t_0;
} else if (Vef <= 1.3e+64) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))
if (vef <= (-2.5d+37)) then
tmp = t_1 + t_0
else if (vef <= 1.3d+64) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_0 - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (Vef <= -2.5e+37) {
tmp = t_1 + t_0;
} else if (Vef <= 1.3e+64) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_0 - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))) tmp = 0 if Vef <= -2.5e+37: tmp = t_1 + t_0 elif Vef <= 1.3e+64: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_0 - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) tmp = 0.0 if (Vef <= -2.5e+37) tmp = Float64(t_1 + t_0); elseif (Vef <= 1.3e+64) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_0 - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))); tmp = 0.0; if (Vef <= -2.5e+37) tmp = t_1 + t_0; elseif (Vef <= 1.3e+64) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_0 - (NaChar / (-1.0 - exp((((Vef + Ev) - 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -2.5e+37], N[(t$95$1 + t$95$0), $MachinePrecision], If[LessEqual[Vef, 1.3e+64], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(NaChar / N[(-1.0 - N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -2.5 \cdot 10^{+37}:\\
\;\;\;\;t\_1 + t\_0\\
\mathbf{elif}\;Vef \leq 1.3 \cdot 10^{+64}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -2.49999999999999994e37Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.0%
if -2.49999999999999994e37 < Vef < 1.29999999999999998e64Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 82.5%
if 1.29999999999999998e64 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.4%
Taylor expanded in EAccept around 0 80.0%
Final simplification82.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(if (<= NaChar -3.8e+196)
(+ t_1 (* KbT (/ NdChar (- EDonor (- Ec (+ mu Vef))))))
(if (<= NaChar -3.5e+57)
(+
t_0
(/
NaChar
(*
mu
(+
(/ (+ (+ (/ EAccept KbT) 2.0) (+ (/ Vef KbT) (/ Ev KbT))) mu)
(/ -1.0 KbT)))))
(if (or (<= NaChar -1.55e-46) (not (<= NaChar 1.6e-26)))
(+
t_1
(/ -1.0 (/ (- (/ (- Ec (+ EDonor (+ mu Vef))) KbT) 2.0) NdChar)))
(-
t_0
(/
NaChar
(/ (- mu (+ (+ Ev EAccept) (+ Vef (* KbT 2.0)))) 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -3.8e+196) {
tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
} else if (NaChar <= -3.5e+57) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if ((NaChar <= -1.55e-46) || !(NaChar <= 1.6e-26)) {
tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
} else {
tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))
t_1 = nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))
if (nachar <= (-3.8d+196)) then
tmp = t_1 + (kbt * (ndchar / (edonor - (ec - (mu + vef)))))
else if (nachar <= (-3.5d+57)) then
tmp = t_0 + (nachar / (mu * (((((eaccept / kbt) + 2.0d0) + ((vef / kbt) + (ev / kbt))) / mu) + ((-1.0d0) / kbt))))
else if ((nachar <= (-1.55d-46)) .or. (.not. (nachar <= 1.6d-26))) then
tmp = t_1 + ((-1.0d0) / ((((ec - (edonor + (mu + vef))) / kbt) - 2.0d0) / ndchar))
else
tmp = t_0 - (nachar / ((mu - ((ev + eaccept) + (vef + (kbt * 2.0d0)))) / 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 - ((Ec - Vef) - mu)) / KbT)));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -3.8e+196) {
tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
} else if (NaChar <= -3.5e+57) {
tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT))));
} else if ((NaChar <= -1.55e-46) || !(NaChar <= 1.6e-26)) {
tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
} else {
tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT))) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))) tmp = 0 if NaChar <= -3.8e+196: tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))) elif NaChar <= -3.5e+57: tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))) elif (NaChar <= -1.55e-46) or not (NaChar <= 1.6e-26): tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)) else: tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / 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(Float64(Ec - Vef) - mu)) / KbT)))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) tmp = 0.0 if (NaChar <= -3.8e+196) tmp = Float64(t_1 + Float64(KbT * Float64(NdChar / Float64(EDonor - Float64(Ec - Float64(mu + Vef)))))); elseif (NaChar <= -3.5e+57) tmp = Float64(t_0 + Float64(NaChar / Float64(mu * Float64(Float64(Float64(Float64(Float64(EAccept / KbT) + 2.0) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT))) / mu) + Float64(-1.0 / KbT))))); elseif ((NaChar <= -1.55e-46) || !(NaChar <= 1.6e-26)) tmp = Float64(t_1 + Float64(-1.0 / Float64(Float64(Float64(Float64(Ec - Float64(EDonor + Float64(mu + Vef))) / KbT) - 2.0) / NdChar))); else tmp = Float64(t_0 - Float64(NaChar / Float64(Float64(mu - Float64(Float64(Ev + EAccept) + Float64(Vef + Float64(KbT * 2.0)))) / 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 - ((Ec - Vef) - mu)) / KbT))); t_1 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))); tmp = 0.0; if (NaChar <= -3.8e+196) tmp = t_1 + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))); elseif (NaChar <= -3.5e+57) tmp = t_0 + (NaChar / (mu * (((((EAccept / KbT) + 2.0) + ((Vef / KbT) + (Ev / KbT))) / mu) + (-1.0 / KbT)))); elseif ((NaChar <= -1.55e-46) || ~((NaChar <= 1.6e-26))) tmp = t_1 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)); else tmp = t_0 - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / 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[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -3.8e+196], N[(t$95$1 + N[(KbT * N[(NdChar / N[(EDonor - N[(Ec - N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -3.5e+57], N[(t$95$0 + N[(NaChar / N[(mu * N[(N[(N[(N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[NaChar, -1.55e-46], N[Not[LessEqual[NaChar, 1.6e-26]], $MachinePrecision]], N[(t$95$1 + N[(-1.0 / N[(N[(N[(N[(Ec - N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] - 2.0), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - N[(NaChar / N[(N[(mu - N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -3.8 \cdot 10^{+196}:\\
\;\;\;\;t\_1 + KbT \cdot \frac{NdChar}{EDonor - \left(Ec - \left(mu + Vef\right)\right)}\\
\mathbf{elif}\;NaChar \leq -3.5 \cdot 10^{+57}:\\
\;\;\;\;t\_0 + \frac{NaChar}{mu \cdot \left(\frac{\left(\frac{EAccept}{KbT} + 2\right) + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)}{mu} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;NaChar \leq -1.55 \cdot 10^{-46} \lor \neg \left(NaChar \leq 1.6 \cdot 10^{-26}\right):\\
\;\;\;\;t\_1 + \frac{-1}{\frac{\frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT} - 2}{NdChar}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 - \frac{NaChar}{\frac{mu - \left(\left(Ev + EAccept\right) + \left(Vef + KbT \cdot 2\right)\right)}{KbT}}\\
\end{array}
\end{array}
if NaChar < -3.8000000000000001e196Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 54.9%
associate-+r+54.9%
Simplified54.9%
Taylor expanded in KbT around 0 55.0%
associate-/l*61.3%
associate--l+61.3%
+-commutative61.3%
Simplified61.3%
if -3.8000000000000001e196 < NaChar < -3.4999999999999997e57Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 58.2%
associate-+r+58.2%
+-commutative58.2%
Simplified58.2%
Taylor expanded in mu around -inf 70.7%
associate-*r*70.7%
mul-1-neg70.7%
+-commutative70.7%
mul-1-neg70.7%
unsub-neg70.7%
associate-+r+70.7%
Simplified70.7%
if -3.4999999999999997e57 < NaChar < -1.55e-46 or 1.6000000000000001e-26 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.2%
associate-+r+67.2%
Simplified67.2%
clear-num67.8%
inv-pow67.8%
associate-+r+67.8%
Applied egg-rr67.8%
unpow-167.8%
associate-+l+67.8%
associate-+r+67.8%
associate--l+67.8%
+-commutative67.8%
Simplified67.8%
Taylor expanded in KbT around 0 76.0%
if -1.55e-46 < NaChar < 1.6000000000000001e-26Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 75.0%
associate-+r+75.0%
+-commutative75.0%
Simplified75.0%
Taylor expanded in KbT around 0 80.6%
associate-+r+80.6%
Simplified80.6%
Final simplification76.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.6e+22) (not (<= NdChar 1.25e+171)))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/ -1.0 (/ (- (/ (- Ec (+ EDonor (+ mu Vef))) KbT) 2.0) NdChar)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.6e+22) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.6d+22)) .or. (.not. (ndchar <= 1.25d+171))) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + ((-1.0d0) / ((((ec - (edonor + (mu + vef))) / kbt) - 2.0d0) / ndchar))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.6e+22) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.6e+22) or not (NdChar <= 1.25e+171): tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.6e+22) || !(NdChar <= 1.25e+171)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(-1.0 / Float64(Float64(Float64(Float64(Ec - Float64(EDonor + Float64(mu + Vef))) / KbT) - 2.0) / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.6e+22) || ~((NdChar <= 1.25e+171))) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.6e+22], N[Not[LessEqual[NdChar, 1.25e+171]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / N[(N[(N[(N[(Ec - N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] - 2.0), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.6 \cdot 10^{+22} \lor \neg \left(NdChar \leq 1.25 \cdot 10^{+171}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{-1}{\frac{\frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT} - 2}{NdChar}}\\
\end{array}
\end{array}
if NdChar < -1.6e22 or 1.2500000000000001e171 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 87.8%
Taylor expanded in Ev around 0 72.8%
if -1.6e22 < NdChar < 1.2500000000000001e171Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.5%
associate-+r+63.5%
Simplified63.5%
clear-num63.8%
inv-pow63.8%
associate-+r+63.8%
Applied egg-rr63.8%
unpow-163.8%
associate-+l+63.8%
associate-+r+63.8%
associate--l+63.8%
+-commutative63.8%
Simplified63.8%
Taylor expanded in KbT around 0 71.7%
Final simplification72.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
(if (<= NaChar -2.65e+170)
(+ t_0 (/ NdChar 2.0))
(if (<= NaChar 8.5e-27)
(-
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar (/ (- mu (+ (+ Ev EAccept) (+ Vef (* KbT 2.0)))) KbT)))
(+
t_0
(/ -1.0 (/ (- (/ (- Ec (+ EDonor (+ mu Vef))) KbT) 2.0) NdChar)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -2.65e+170) {
tmp = t_0 + (NdChar / 2.0);
} else if (NaChar <= 8.5e-27) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
} else {
tmp = t_0 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))
if (nachar <= (-2.65d+170)) then
tmp = t_0 + (ndchar / 2.0d0)
else if (nachar <= 8.5d-27) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) - (nachar / ((mu - ((ev + eaccept) + (vef + (kbt * 2.0d0)))) / kbt))
else
tmp = t_0 + ((-1.0d0) / ((((ec - (edonor + (mu + vef))) / kbt) - 2.0d0) / ndchar))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)));
double tmp;
if (NaChar <= -2.65e+170) {
tmp = t_0 + (NdChar / 2.0);
} else if (NaChar <= 8.5e-27) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT));
} else {
tmp = t_0 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))) tmp = 0 if NaChar <= -2.65e+170: tmp = t_0 + (NdChar / 2.0) elif NaChar <= 8.5e-27: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT)) else: tmp = t_0 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) tmp = 0.0 if (NaChar <= -2.65e+170) tmp = Float64(t_0 + Float64(NdChar / 2.0)); elseif (NaChar <= 8.5e-27) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) - Float64(NaChar / Float64(Float64(mu - Float64(Float64(Ev + EAccept) + Float64(Vef + Float64(KbT * 2.0)))) / KbT))); else tmp = Float64(t_0 + Float64(-1.0 / Float64(Float64(Float64(Float64(Ec - Float64(EDonor + Float64(mu + Vef))) / KbT) - 2.0) / NdChar))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))); tmp = 0.0; if (NaChar <= -2.65e+170) tmp = t_0 + (NdChar / 2.0); elseif (NaChar <= 8.5e-27) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) - (NaChar / ((mu - ((Ev + EAccept) + (Vef + (KbT * 2.0)))) / KbT)); else tmp = t_0 + (-1.0 / ((((Ec - (EDonor + (mu + Vef))) / KbT) - 2.0) / NdChar)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -2.65e+170], N[(t$95$0 + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 8.5e-27], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(N[(mu - N[(N[(Ev + EAccept), $MachinePrecision] + N[(Vef + N[(KbT * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(-1.0 / N[(N[(N[(N[(Ec - N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision] - 2.0), $MachinePrecision] / NdChar), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{if}\;NaChar \leq -2.65 \cdot 10^{+170}:\\
\;\;\;\;t\_0 + \frac{NdChar}{2}\\
\mathbf{elif}\;NaChar \leq 8.5 \cdot 10^{-27}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} - \frac{NaChar}{\frac{mu - \left(\left(Ev + EAccept\right) + \left(Vef + KbT \cdot 2\right)\right)}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{-1}{\frac{\frac{Ec - \left(EDonor + \left(mu + Vef\right)\right)}{KbT} - 2}{NdChar}}\\
\end{array}
\end{array}
if NaChar < -2.65000000000000002e170Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.4%
if -2.65000000000000002e170 < NaChar < 8.50000000000000033e-27Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 69.8%
associate-+r+69.8%
+-commutative69.8%
Simplified69.8%
Taylor expanded in KbT around 0 76.2%
associate-+r+76.2%
Simplified76.2%
if 8.50000000000000033e-27 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 70.7%
associate-+r+70.7%
Simplified70.7%
clear-num71.4%
inv-pow71.4%
associate-+r+71.4%
Applied egg-rr71.4%
unpow-171.4%
associate-+l+71.4%
associate-+r+71.4%
associate--l+71.4%
+-commutative71.4%
Simplified71.4%
Taylor expanded in KbT around 0 76.8%
Final simplification74.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -1.8e+22) (not (<= NdChar 9.6e-91)))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT))))
(/ NaChar 2.0))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(* KbT (/ NdChar (- EDonor (- Ec (+ mu Vef))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.8e+22) || !(NdChar <= 9.6e-91)) {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.8d+22)) .or. (.not. (ndchar <= 9.6d-91))) then
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - mu)) / kbt)))) + (nachar / 2.0d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (kbt * (ndchar / (edonor - (ec - (mu + vef)))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.8e+22) || !(NdChar <= 9.6e-91)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.8e+22) or not (NdChar <= 9.6e-91): tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.8e+22) || !(NdChar <= 9.6e-91)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)))) + Float64(NaChar / 2.0)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(KbT * Float64(NdChar / Float64(EDonor - Float64(Ec - Float64(mu + Vef)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.8e+22) || ~((NdChar <= 9.6e-91))) tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (KbT * (NdChar / (EDonor - (Ec - (mu + Vef))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.8e+22], N[Not[LessEqual[NdChar, 9.6e-91]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(KbT * N[(NdChar / N[(EDonor - N[(Ec - N[(mu + Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.8 \cdot 10^{+22} \lor \neg \left(NdChar \leq 9.6 \cdot 10^{-91}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + KbT \cdot \frac{NdChar}{EDonor - \left(Ec - \left(mu + Vef\right)\right)}\\
\end{array}
\end{array}
if NdChar < -1.8e22 or 9.60000000000000043e-91 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.0%
Taylor expanded in Ev around 0 66.3%
if -1.8e22 < NdChar < 9.60000000000000043e-91Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 65.4%
associate-+r+65.4%
Simplified65.4%
Taylor expanded in KbT around 0 67.5%
associate-/l*72.4%
associate--l+72.4%
+-commutative72.4%
Simplified72.4%
Final simplification69.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NdChar -6.8e+70) (not (<= NdChar 1.25e+171)))
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.8e+70) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-6.8d+70)) .or. (.not. (ndchar <= 1.25d+171))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -6.8e+70) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -6.8e+70) or not (NdChar <= 1.25e+171): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -6.8e+70) || !(NdChar <= 1.25e+171)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -6.8e+70) || ~((NdChar <= 1.25e+171))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -6.8e+70], N[Not[LessEqual[NdChar, 1.25e+171]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -6.8 \cdot 10^{+70} \lor \neg \left(NdChar \leq 1.25 \cdot 10^{+171}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -6.8000000000000002e70 or 1.2500000000000001e171 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 66.1%
Taylor expanded in KbT around inf 56.4%
if -6.8000000000000002e70 < NdChar < 1.2500000000000001e171Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.9%
Final simplification56.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -7.2e+107) (not (<= NaChar 2.65e-33)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/ NdChar 2.0))
(+
(/ NdChar (+ 1.0 (exp (/ (- EDonor (- (- Ec Vef) 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 ((NaChar <= -7.2e+107) || !(NaChar <= 2.65e-33)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - 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 ((nachar <= (-7.2d+107)) .or. (.not. (nachar <= 2.65d-33))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (ndchar / 2.0d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor - ((ec - vef) - 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 ((NaChar <= -7.2e+107) || !(NaChar <= 2.65e-33)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -7.2e+107) or not (NaChar <= 2.65e-33): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0) else: tmp = (NdChar / (1.0 + math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -7.2e+107) || !(NaChar <= 2.65e-33)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(NdChar / 2.0)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - 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 ((NaChar <= -7.2e+107) || ~((NaChar <= 2.65e-33))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / 2.0); else tmp = (NdChar / (1.0 + exp(((EDonor - ((Ec - Vef) - mu)) / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -7.2e+107], N[Not[LessEqual[NaChar, 2.65e-33]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7.2 \cdot 10^{+107} \lor \neg \left(NaChar \leq 2.65 \cdot 10^{-33}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -7.1999999999999995e107 or 2.64999999999999984e-33 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.0%
if -7.1999999999999995e107 < NaChar < 2.64999999999999984e-33Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.1%
Taylor expanded in Ev around 0 66.3%
Final simplification63.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -2.4e+71) (not (<= NdChar 1.6e+164))) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.4e+71) || !(NdChar <= 1.6e+164)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-2.4d+71)) .or. (.not. (ndchar <= 1.6d+164))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.4e+71) || !(NdChar <= 1.6e+164)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2.4e+71) or not (NdChar <= 1.6e+164): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2.4e+71) || !(NdChar <= 1.6e+164)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -2.4e+71) || ~((NdChar <= 1.6e+164))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2.4e+71], N[Not[LessEqual[NdChar, 1.6e+164]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.4 \cdot 10^{+71} \lor \neg \left(NdChar \leq 1.6 \cdot 10^{+164}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if NdChar < -2.39999999999999981e71 or 1.5999999999999999e164 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.7%
Taylor expanded in KbT around inf 56.5%
if -2.39999999999999981e71 < NdChar < 1.5999999999999999e164Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.4%
Taylor expanded in EAccept around 0 52.8%
Final simplification54.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1.5e-24) (not (<= NdChar 1.25e+171))) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5)) (- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ mu (- KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.5e-24) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((mu / -KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.5d-24)) .or. (.not. (ndchar <= 1.25d+171))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((mu / -kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.5e-24) || !(NdChar <= 1.25e+171)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((mu / -KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.5e-24) or not (NdChar <= 1.25e+171): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) else: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((mu / -KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.5e-24) || !(NdChar <= 1.25e+171)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(mu / Float64(-KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.5e-24) || ~((NdChar <= 1.25e+171))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); else tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((mu / -KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.5e-24], N[Not[LessEqual[NdChar, 1.25e+171]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.5 \cdot 10^{-24} \lor \neg \left(NdChar \leq 1.25 \cdot 10^{+171}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{mu}{-KbT}}}\\
\end{array}
\end{array}
if NdChar < -1.49999999999999998e-24 or 1.2500000000000001e171 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 64.8%
Taylor expanded in KbT around inf 50.5%
if -1.49999999999999998e-24 < NdChar < 1.2500000000000001e171Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 58.6%
Taylor expanded in mu around inf 45.6%
associate-*r/45.6%
mul-1-neg45.6%
Simplified45.6%
Final simplification47.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= Vef -1.55e+121) (not (<= Vef 1.46e+44))) (- (* NaChar 0.5) (/ NdChar (- -1.0 (exp (/ Vef KbT))))) (- (/ NdChar 2.0) (/ 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 ((Vef <= -1.55e+121) || !(Vef <= 1.46e+44)) {
tmp = (NaChar * 0.5) - (NdChar / (-1.0 - exp((Vef / KbT))));
} else {
tmp = (NdChar / 2.0) - (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 ((vef <= (-1.55d+121)) .or. (.not. (vef <= 1.46d+44))) then
tmp = (nachar * 0.5d0) - (ndchar / ((-1.0d0) - exp((vef / kbt))))
else
tmp = (ndchar / 2.0d0) - (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 ((Vef <= -1.55e+121) || !(Vef <= 1.46e+44)) {
tmp = (NaChar * 0.5) - (NdChar / (-1.0 - Math.exp((Vef / KbT))));
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -1.55e+121) or not (Vef <= 1.46e+44): tmp = (NaChar * 0.5) - (NdChar / (-1.0 - math.exp((Vef / KbT)))) else: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -1.55e+121) || !(Vef <= 1.46e+44)) tmp = Float64(Float64(NaChar * 0.5) - Float64(NdChar / Float64(-1.0 - exp(Float64(Vef / KbT))))); else tmp = Float64(Float64(NdChar / 2.0) - 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 ((Vef <= -1.55e+121) || ~((Vef <= 1.46e+44))) tmp = (NaChar * 0.5) - (NdChar / (-1.0 - exp((Vef / KbT)))); else tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -1.55e+121], N[Not[LessEqual[Vef, 1.46e+44]], $MachinePrecision]], N[(N[(NaChar * 0.5), $MachinePrecision] - N[(NdChar / N[(-1.0 - N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -1.55 \cdot 10^{+121} \lor \neg \left(Vef \leq 1.46 \cdot 10^{+44}\right):\\
\;\;\;\;NaChar \cdot 0.5 - \frac{NdChar}{-1 - e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.55000000000000004e121 or 1.4599999999999999e44 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.0%
Taylor expanded in KbT around inf 40.0%
if -1.55000000000000004e121 < Vef < 1.4599999999999999e44Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.8%
Taylor expanded in Ev around inf 47.8%
Final simplification45.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -9.2e+70) (not (<= NdChar 7.2e+153))) (+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (* NaChar 0.5)) (- (/ NdChar 2.0) (/ 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 ((NdChar <= -9.2e+70) || !(NdChar <= 7.2e+153)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / 2.0) - (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 ((ndchar <= (-9.2d+70)) .or. (.not. (ndchar <= 7.2d+153))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar * 0.5d0)
else
tmp = (ndchar / 2.0d0) - (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 ((NdChar <= -9.2e+70) || !(NdChar <= 7.2e+153)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -9.2e+70) or not (NdChar <= 7.2e+153): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar * 0.5) else: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -9.2e+70) || !(NdChar <= 7.2e+153)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NdChar / 2.0) - 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 ((NdChar <= -9.2e+70) || ~((NdChar <= 7.2e+153))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar * 0.5); else tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -9.2e+70], N[Not[LessEqual[NdChar, 7.2e+153]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -9.2 \cdot 10^{+70} \lor \neg \left(NdChar \leq 7.2 \cdot 10^{+153}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -9.19999999999999975e70 or 7.2000000000000001e153 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 67.6%
Taylor expanded in KbT around inf 54.9%
if -9.19999999999999975e70 < NdChar < 7.2000000000000001e153Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.2%
Taylor expanded in Ev around inf 40.9%
Final simplification45.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -4.7e+21) (- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT))))) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -4.7e+21) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-4.7d+21)) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -4.7e+21) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -4.7e+21: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -4.7e+21) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -4.7e+21) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -4.7e+21], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -4.7 \cdot 10^{+21}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\end{array}
\end{array}
if Ev < -4.7e21Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.1%
Taylor expanded in Ev around inf 47.0%
if -4.7e21 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.4%
Taylor expanded in EAccept around inf 41.7%
Final simplification42.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in EAccept around inf 41.3%
Final simplification41.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar 2.0) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (NaChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / 2.0d0) + (nachar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / 2.0) + (NaChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / 2.0) + (NaChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / 2.0) + Float64(NaChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / 2.0) + (NaChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{2} + NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
Taylor expanded in KbT around inf 33.1%
Final simplification33.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NdChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NdChar * 0.5;
}
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
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;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NdChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NdChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NdChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NdChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.6%
associate-+r+57.6%
+-commutative57.6%
Simplified57.6%
Taylor expanded in mu around inf 35.1%
neg-mul-135.1%
distribute-neg-frac235.1%
Simplified35.1%
Taylor expanded in KbT around inf 12.9%
Taylor expanded in NdChar around inf 23.2%
Final simplification23.2%
herbie shell --seed 2024059
(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))))))