
(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 23 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (- (- (- (- Ec Vef) EDonor) mu)) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ (+ (+ Ev Vef) EAccept) (- mu)) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp((-(((ec - vef) - edonor) - mu) / kbt)))) + (nachar / (1.0d0 + exp(((((ev + vef) + eaccept) + -mu) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + Math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + math.exp(((((Ev + Vef) + EAccept) + -mu) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(-Float64(Float64(Float64(Ec - Vef) - EDonor) - mu)) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Float64(Ev + Vef) + EAccept) + Float64(-mu)) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp((-(((Ec - Vef) - EDonor) - mu) / KbT)))) + (NaChar / (1.0 + exp(((((Ev + Vef) + EAccept) + -mu) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[((-N[(N[(N[(Ec - Vef), $MachinePrecision] - EDonor), $MachinePrecision] - mu), $MachinePrecision]) / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(N[(Ev + Vef), $MachinePrecision] + EAccept), $MachinePrecision] + (-mu)), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{-\left(\left(\left(Ec - Vef\right) - EDonor\right) - mu\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(\left(Ev + Vef\right) + EAccept\right) + \left(-mu\right)}{KbT}}}
\end{array}
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (pow (sqrt (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + pow(sqrt(exp(((Vef + (Ev - (mu - EAccept))) / KbT))), 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 = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (sqrt(exp(((vef + (ev - (mu - eaccept))) / kbt))) ** 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 (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.pow(Math.sqrt(Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))), 2.0)));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.pow(math.sqrt(math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))), 2.0)))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + (sqrt(exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))) ^ 2.0)))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (sqrt(exp(((Vef + (Ev - (mu - EAccept))) / KbT))) ^ 2.0))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Power[N[Sqrt[N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + {\left(\sqrt{e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\right)}^{2}}
\end{array}
Initial program 100.0%
Simplified100.0%
add-sqr-sqrt100.0%
pow2100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ Vef (* KbT Ev)))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_2 (+ t_1 (/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_3 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_4 (+ t_3 NaChar))
(t_5
(+
t_3
(/
NaChar
(-
1.0
(+
(/ mu KbT)
(+ (- -1.0 (/ EAccept KbT)) (* Ev (- (/ -1.0 KbT) t_0)))))))))
(if (<= mu -2.55e+203)
t_2
(if (<= mu -6e+111)
(+
t_3
(/
NaChar
(- 1.0 (/ (+ mu (- (* Vef (- -1.0 (/ Ev Vef))) EAccept)) KbT))))
(if (<= mu -2.25e+30)
t_5
(if (<= mu -7.5e-112)
t_4
(if (<= mu 3.05e-294)
t_5
(if (<= mu 7.5e-130)
t_4
(if (<= mu 7.2e+19)
(+
t_3
(/
NaChar
(+
1.0
(-
(+
1.0
(* Ev (- t_0 (- (/ -1.0 KbT) (/ (/ EAccept Ev) KbT)))))
(/ mu KbT)))))
(if (<= mu 2.5e+144)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_1)
t_2))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Vef / (KbT * Ev);
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + exp((mu / -KbT))));
double t_3 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_4 = t_3 + NaChar;
double t_5 = t_3 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - t_0))))));
double tmp;
if (mu <= -2.55e+203) {
tmp = t_2;
} else if (mu <= -6e+111) {
tmp = t_3 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT)));
} else if (mu <= -2.25e+30) {
tmp = t_5;
} else if (mu <= -7.5e-112) {
tmp = t_4;
} else if (mu <= 3.05e-294) {
tmp = t_5;
} else if (mu <= 7.5e-130) {
tmp = t_4;
} else if (mu <= 7.2e+19) {
tmp = t_3 + (NaChar / (1.0 + ((1.0 + (Ev * (t_0 - ((-1.0 / KbT) - ((EAccept / Ev) / KbT))))) - (mu / KbT))));
} else if (mu <= 2.5e+144) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: tmp
t_0 = vef / (kbt * ev)
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
t_2 = t_1 + (nachar / (1.0d0 + exp((mu / -kbt))))
t_3 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_4 = t_3 + nachar
t_5 = t_3 + (nachar / (1.0d0 - ((mu / kbt) + (((-1.0d0) - (eaccept / kbt)) + (ev * (((-1.0d0) / kbt) - t_0))))))
if (mu <= (-2.55d+203)) then
tmp = t_2
else if (mu <= (-6d+111)) then
tmp = t_3 + (nachar / (1.0d0 - ((mu + ((vef * ((-1.0d0) - (ev / vef))) - eaccept)) / kbt)))
else if (mu <= (-2.25d+30)) then
tmp = t_5
else if (mu <= (-7.5d-112)) then
tmp = t_4
else if (mu <= 3.05d-294) then
tmp = t_5
else if (mu <= 7.5d-130) then
tmp = t_4
else if (mu <= 7.2d+19) then
tmp = t_3 + (nachar / (1.0d0 + ((1.0d0 + (ev * (t_0 - (((-1.0d0) / kbt) - ((eaccept / ev) / kbt))))) - (mu / kbt))))
else if (mu <= 2.5d+144) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Vef / (KbT * Ev);
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_2 = t_1 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_3 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_4 = t_3 + NaChar;
double t_5 = t_3 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - t_0))))));
double tmp;
if (mu <= -2.55e+203) {
tmp = t_2;
} else if (mu <= -6e+111) {
tmp = t_3 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT)));
} else if (mu <= -2.25e+30) {
tmp = t_5;
} else if (mu <= -7.5e-112) {
tmp = t_4;
} else if (mu <= 3.05e-294) {
tmp = t_5;
} else if (mu <= 7.5e-130) {
tmp = t_4;
} else if (mu <= 7.2e+19) {
tmp = t_3 + (NaChar / (1.0 + ((1.0 + (Ev * (t_0 - ((-1.0 / KbT) - ((EAccept / Ev) / KbT))))) - (mu / KbT))));
} else if (mu <= 2.5e+144) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = Vef / (KbT * Ev) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) t_2 = t_1 + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_3 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_4 = t_3 + NaChar t_5 = t_3 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - t_0)))))) tmp = 0 if mu <= -2.55e+203: tmp = t_2 elif mu <= -6e+111: tmp = t_3 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT))) elif mu <= -2.25e+30: tmp = t_5 elif mu <= -7.5e-112: tmp = t_4 elif mu <= 3.05e-294: tmp = t_5 elif mu <= 7.5e-130: tmp = t_4 elif mu <= 7.2e+19: tmp = t_3 + (NaChar / (1.0 + ((1.0 + (Ev * (t_0 - ((-1.0 / KbT) - ((EAccept / Ev) / KbT))))) - (mu / KbT)))) elif mu <= 2.5e+144: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_1 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Vef / Float64(KbT * Ev)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_3 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_4 = Float64(t_3 + NaChar) t_5 = Float64(t_3 + Float64(NaChar / Float64(1.0 - Float64(Float64(mu / KbT) + Float64(Float64(-1.0 - Float64(EAccept / KbT)) + Float64(Ev * Float64(Float64(-1.0 / KbT) - t_0))))))) tmp = 0.0 if (mu <= -2.55e+203) tmp = t_2; elseif (mu <= -6e+111) tmp = Float64(t_3 + Float64(NaChar / Float64(1.0 - Float64(Float64(mu + Float64(Float64(Vef * Float64(-1.0 - Float64(Ev / Vef))) - EAccept)) / KbT)))); elseif (mu <= -2.25e+30) tmp = t_5; elseif (mu <= -7.5e-112) tmp = t_4; elseif (mu <= 3.05e-294) tmp = t_5; elseif (mu <= 7.5e-130) tmp = t_4; elseif (mu <= 7.2e+19) tmp = Float64(t_3 + Float64(NaChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Ev * Float64(t_0 - Float64(Float64(-1.0 / KbT) - Float64(Float64(EAccept / Ev) / KbT))))) - Float64(mu / KbT))))); elseif (mu <= 2.5e+144) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_1); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Vef / (KbT * Ev); t_1 = NdChar / (1.0 + exp((mu / KbT))); t_2 = t_1 + (NaChar / (1.0 + exp((mu / -KbT)))); t_3 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_4 = t_3 + NaChar; t_5 = t_3 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - t_0)))))); tmp = 0.0; if (mu <= -2.55e+203) tmp = t_2; elseif (mu <= -6e+111) tmp = t_3 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT))); elseif (mu <= -2.25e+30) tmp = t_5; elseif (mu <= -7.5e-112) tmp = t_4; elseif (mu <= 3.05e-294) tmp = t_5; elseif (mu <= 7.5e-130) tmp = t_4; elseif (mu <= 7.2e+19) tmp = t_3 + (NaChar / (1.0 + ((1.0 + (Ev * (t_0 - ((-1.0 / KbT) - ((EAccept / Ev) / KbT))))) - (mu / KbT)))); elseif (mu <= 2.5e+144) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 + NaChar), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$3 + N[(NaChar / N[(1.0 - N[(N[(mu / KbT), $MachinePrecision] + N[(N[(-1.0 - N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(Ev * N[(N[(-1.0 / KbT), $MachinePrecision] - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.55e+203], t$95$2, If[LessEqual[mu, -6e+111], N[(t$95$3 + N[(NaChar / N[(1.0 - N[(N[(mu + N[(N[(Vef * N[(-1.0 - N[(Ev / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -2.25e+30], t$95$5, If[LessEqual[mu, -7.5e-112], t$95$4, If[LessEqual[mu, 3.05e-294], t$95$5, If[LessEqual[mu, 7.5e-130], t$95$4, If[LessEqual[mu, 7.2e+19], N[(t$95$3 + N[(NaChar / N[(1.0 + N[(N[(1.0 + N[(Ev * N[(t$95$0 - N[(N[(-1.0 / KbT), $MachinePrecision] - N[(N[(EAccept / Ev), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.5e+144], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], t$95$2]]]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Vef}{KbT \cdot Ev}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := t\_1 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_3 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_4 := t\_3 + NaChar\\
t_5 := t\_3 + \frac{NaChar}{1 - \left(\frac{mu}{KbT} + \left(\left(-1 - \frac{EAccept}{KbT}\right) + Ev \cdot \left(\frac{-1}{KbT} - t\_0\right)\right)\right)}\\
\mathbf{if}\;mu \leq -2.55 \cdot 10^{+203}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -6 \cdot 10^{+111}:\\
\;\;\;\;t\_3 + \frac{NaChar}{1 - \frac{mu + \left(Vef \cdot \left(-1 - \frac{Ev}{Vef}\right) - EAccept\right)}{KbT}}\\
\mathbf{elif}\;mu \leq -2.25 \cdot 10^{+30}:\\
\;\;\;\;t\_5\\
\mathbf{elif}\;mu \leq -7.5 \cdot 10^{-112}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;mu \leq 3.05 \cdot 10^{-294}:\\
\;\;\;\;t\_5\\
\mathbf{elif}\;mu \leq 7.5 \cdot 10^{-130}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;mu \leq 7.2 \cdot 10^{+19}:\\
\;\;\;\;t\_3 + \frac{NaChar}{1 + \left(\left(1 + Ev \cdot \left(t\_0 - \left(\frac{-1}{KbT} - \frac{\frac{EAccept}{Ev}}{KbT}\right)\right)\right) - \frac{mu}{KbT}\right)}\\
\mathbf{elif}\;mu \leq 2.5 \cdot 10^{+144}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.5500000000000001e203 or 2.5e144 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 96.6%
Taylor expanded in mu around inf 91.8%
associate-*r/91.8%
mul-1-neg91.8%
Simplified91.8%
if -2.5500000000000001e203 < mu < -6e111Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.2%
associate-+r+67.2%
+-commutative67.2%
Simplified67.2%
clear-num67.2%
frac-add46.8%
*-un-lft-identity46.8%
Applied egg-rr46.8%
Taylor expanded in KbT around 0 86.8%
if -6e111 < mu < -2.24999999999999997e30 or -7.5000000000000002e-112 < mu < 3.0500000000000001e-294Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 64.4%
associate-+r+64.4%
+-commutative64.4%
Simplified64.4%
Taylor expanded in Ev around inf 69.4%
*-commutative69.4%
Simplified69.4%
if -2.24999999999999997e30 < mu < -7.5000000000000002e-112 or 3.0500000000000001e-294 < mu < 7.4999999999999994e-130Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 47.6%
associate-+r+47.6%
+-commutative47.6%
Simplified47.6%
Taylor expanded in mu around inf 59.2%
neg-mul-159.2%
distribute-neg-frac259.2%
Simplified59.2%
Taylor expanded in mu around 0 71.9%
if 7.4999999999999994e-130 < mu < 7.2e19Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 63.5%
associate-+r+63.5%
+-commutative63.5%
Simplified63.5%
Taylor expanded in Ev around inf 68.9%
distribute-lft-in68.9%
rgt-mult-inverse68.9%
associate-+r+68.9%
associate-/r*69.2%
*-commutative69.2%
Simplified69.2%
if 7.2e19 < mu < 2.5e144Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.6%
Taylor expanded in EAccept around inf 61.6%
Final simplification75.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor Vef) Ec) KbT))))))
(t_1 (exp (/ (- (+ Vef Ev) mu) KbT)))
(t_2 (- (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (- -1.0 t_1)))))
(if (<= mu -2.05e-36)
t_2
(if (<= mu -1.3e-157)
t_0
(if (<= mu 1.25e-236)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (+ 1.0 t_1)))
(if (<= mu 1.7e-197)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(+
1.0
(*
EAccept
(+
(/ 1.0 KbT)
(/
(- (+ 1.0 (+ (/ Ev KbT) (/ Vef KbT))) (/ mu KbT))
EAccept))))))
(if (<= mu 1.05e-195)
(-
(/ NdChar (+ 2.0 (/ EDonor KbT)))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(if (<= mu 7e+46) t_0 t_2))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((EDonor + Vef) - Ec) / KbT))));
double t_1 = exp((((Vef + Ev) - mu) / KbT));
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - t_1));
double tmp;
if (mu <= -2.05e-36) {
tmp = t_2;
} else if (mu <= -1.3e-157) {
tmp = t_0;
} else if (mu <= 1.25e-236) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + t_1));
} else if (mu <= 1.7e-197) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (EAccept * ((1.0 / KbT) + (((1.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept)))));
} else if (mu <= 1.05e-195) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if (mu <= 7e+46) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((edonor + vef) - ec) / kbt))))
t_1 = exp((((vef + ev) - mu) / kbt))
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) - (nachar / ((-1.0d0) - t_1))
if (mu <= (-2.05d-36)) then
tmp = t_2
else if (mu <= (-1.3d-157)) then
tmp = t_0
else if (mu <= 1.25d-236) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + t_1))
else if (mu <= 1.7d-197) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + (eaccept * ((1.0d0 / kbt) + (((1.0d0 + ((ev / kbt) + (vef / kbt))) - (mu / kbt)) / eaccept)))))
else if (mu <= 1.05d-195) then
tmp = (ndchar / (2.0d0 + (edonor / kbt))) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else if (mu <= 7d+46) then
tmp = t_0
else
tmp = t_2
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((EDonor + Vef) - Ec) / KbT))));
double t_1 = Math.exp((((Vef + Ev) - mu) / KbT));
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) - (NaChar / (-1.0 - t_1));
double tmp;
if (mu <= -2.05e-36) {
tmp = t_2;
} else if (mu <= -1.3e-157) {
tmp = t_0;
} else if (mu <= 1.25e-236) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + t_1));
} else if (mu <= 1.7e-197) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (EAccept * ((1.0 / KbT) + (((1.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept)))));
} else if (mu <= 1.05e-195) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else if (mu <= 7e+46) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((EDonor + Vef) - Ec) / KbT)))) t_1 = math.exp((((Vef + Ev) - mu) / KbT)) t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) - (NaChar / (-1.0 - t_1)) tmp = 0 if mu <= -2.05e-36: tmp = t_2 elif mu <= -1.3e-157: tmp = t_0 elif mu <= 1.25e-236: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + t_1)) elif mu <= 1.7e-197: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (EAccept * ((1.0 / KbT) + (((1.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept))))) elif mu <= 1.05e-195: tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) elif mu <= 7e+46: tmp = t_0 else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT))))) t_1 = exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) - Float64(NaChar / Float64(-1.0 - t_1))) tmp = 0.0 if (mu <= -2.05e-36) tmp = t_2; elseif (mu <= -1.3e-157) tmp = t_0; elseif (mu <= 1.25e-236) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + t_1))); elseif (mu <= 1.7e-197) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + Float64(EAccept * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(1.0 + Float64(Float64(Ev / KbT) + Float64(Vef / KbT))) - Float64(mu / KbT)) / EAccept)))))); elseif (mu <= 1.05e-195) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); elseif (mu <= 7e+46) tmp = t_0; else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((EDonor + Vef) - Ec) / KbT)))); t_1 = exp((((Vef + Ev) - mu) / KbT)); t_2 = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - t_1)); tmp = 0.0; if (mu <= -2.05e-36) tmp = t_2; elseif (mu <= -1.3e-157) tmp = t_0; elseif (mu <= 1.25e-236) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + t_1)); elseif (mu <= 1.7e-197) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (EAccept * ((1.0 / KbT) + (((1.0 + ((Ev / KbT) + (Vef / KbT))) - (mu / KbT)) / EAccept))))); elseif (mu <= 1.05e-195) tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); elseif (mu <= 7e+46) tmp = t_0; else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2.05e-36], t$95$2, If[LessEqual[mu, -1.3e-157], t$95$0, If[LessEqual[mu, 1.25e-236], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.7e-197], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[(EAccept * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(1.0 + N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision] / EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 1.05e-195], N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $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], If[LessEqual[mu, 7e+46], t$95$0, t$95$2]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}}}\\
t_1 := e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} - \frac{NaChar}{-1 - t\_1}\\
\mathbf{if}\;mu \leq -2.05 \cdot 10^{-36}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -1.3 \cdot 10^{-157}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 1.25 \cdot 10^{-236}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + t\_1}\\
\mathbf{elif}\;mu \leq 1.7 \cdot 10^{-197}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + EAccept \cdot \left(\frac{1}{KbT} + \frac{\left(1 + \left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right)\right) - \frac{mu}{KbT}}{EAccept}\right)}\\
\mathbf{elif}\;mu \leq 1.05 \cdot 10^{-195}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{elif}\;mu \leq 7 \cdot 10^{+46}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -2.05000000000000006e-36 or 6.9999999999999997e46 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.8%
Taylor expanded in EAccept around 0 85.1%
+-commutative57.4%
Simplified85.1%
if -2.05000000000000006e-36 < mu < -1.29999999999999994e-157 or 1.05e-195 < mu < 6.9999999999999997e46Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 78.2%
Taylor expanded in mu around 0 77.0%
+-commutative77.0%
+-commutative77.0%
Simplified77.0%
if -1.29999999999999994e-157 < mu < 1.2499999999999999e-236Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 82.7%
Taylor expanded in EAccept around 0 78.9%
+-commutative78.9%
Simplified78.9%
if 1.2499999999999999e-236 < mu < 1.6999999999999999e-197Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.3%
associate-+r+67.3%
+-commutative67.3%
Simplified67.3%
Taylor expanded in EAccept around -inf 83.7%
if 1.6999999999999999e-197 < mu < 1.05e-195Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 53.5%
Taylor expanded in EDonor around 0 100.0%
Final simplification81.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(t_1 (+ t_0 (/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_2 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= mu -2e+203)
t_1
(if (<= mu -3.6e+111)
(+
t_2
(/
NaChar
(- 1.0 (/ (+ mu (- (* Vef (- -1.0 (/ Ev Vef))) EAccept)) KbT))))
(if (<= mu -1.4e+58)
(+
t_2
(/
NaChar
(-
1.0
(+
(/ mu KbT)
(+
(- -1.0 (/ EAccept KbT))
(* Ev (- (/ -1.0 KbT) (/ Vef (* KbT Ev)))))))))
(if (<= mu 4.1e+18)
(+
(/ NdChar (+ 1.0 (exp (/ EDonor KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(if (<= mu 1.05e+145)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_0)
t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((mu / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + exp((mu / -KbT))));
double t_2 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (mu <= -2e+203) {
tmp = t_1;
} else if (mu <= -3.6e+111) {
tmp = t_2 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT)));
} else if (mu <= -1.4e+58) {
tmp = t_2 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev))))))));
} else if (mu <= 4.1e+18) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.05e+145) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_0;
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((mu / kbt)))
t_1 = t_0 + (nachar / (1.0d0 + exp((mu / -kbt))))
t_2 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (mu <= (-2d+203)) then
tmp = t_1
else if (mu <= (-3.6d+111)) then
tmp = t_2 + (nachar / (1.0d0 - ((mu + ((vef * ((-1.0d0) - (ev / vef))) - eaccept)) / kbt)))
else if (mu <= (-1.4d+58)) then
tmp = t_2 + (nachar / (1.0d0 - ((mu / kbt) + (((-1.0d0) - (eaccept / kbt)) + (ev * (((-1.0d0) / kbt) - (vef / (kbt * ev))))))))
else if (mu <= 4.1d+18) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
else if (mu <= 1.05d+145) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((mu / KbT)));
double t_1 = t_0 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_2 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (mu <= -2e+203) {
tmp = t_1;
} else if (mu <= -3.6e+111) {
tmp = t_2 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT)));
} else if (mu <= -1.4e+58) {
tmp = t_2 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev))))))));
} else if (mu <= 4.1e+18) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
} else if (mu <= 1.05e+145) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((mu / KbT))) t_1 = t_0 + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_2 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if mu <= -2e+203: tmp = t_1 elif mu <= -3.6e+111: tmp = t_2 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT))) elif mu <= -1.4e+58: tmp = t_2 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))))) elif mu <= 4.1e+18: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) elif mu <= 1.05e+145: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_0 else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) t_1 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (mu <= -2e+203) tmp = t_1; elseif (mu <= -3.6e+111) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 - Float64(Float64(mu + Float64(Float64(Vef * Float64(-1.0 - Float64(Ev / Vef))) - EAccept)) / KbT)))); elseif (mu <= -1.4e+58) tmp = Float64(t_2 + Float64(NaChar / Float64(1.0 - Float64(Float64(mu / KbT) + Float64(Float64(-1.0 - Float64(EAccept / KbT)) + Float64(Ev * Float64(Float64(-1.0 / KbT) - Float64(Vef / Float64(KbT * Ev))))))))); elseif (mu <= 4.1e+18) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); elseif (mu <= 1.05e+145) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_0); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((mu / KbT))); t_1 = t_0 + (NaChar / (1.0 + exp((mu / -KbT)))); t_2 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (mu <= -2e+203) tmp = t_1; elseif (mu <= -3.6e+111) tmp = t_2 + (NaChar / (1.0 - ((mu + ((Vef * (-1.0 - (Ev / Vef))) - EAccept)) / KbT))); elseif (mu <= -1.4e+58) tmp = t_2 + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))))); elseif (mu <= 4.1e+18) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); elseif (mu <= 1.05e+145) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_0; else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -2e+203], t$95$1, If[LessEqual[mu, -3.6e+111], N[(t$95$2 + N[(NaChar / N[(1.0 - N[(N[(mu + N[(N[(Vef * N[(-1.0 - N[(Ev / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - EAccept), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -1.4e+58], N[(t$95$2 + N[(NaChar / N[(1.0 - N[(N[(mu / KbT), $MachinePrecision] + N[(N[(-1.0 - N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(Ev * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 4.1e+18], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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, 1.05e+145], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], t$95$1]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_1 := t\_0 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;mu \leq -2 \cdot 10^{+203}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;mu \leq -3.6 \cdot 10^{+111}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 - \frac{mu + \left(Vef \cdot \left(-1 - \frac{Ev}{Vef}\right) - EAccept\right)}{KbT}}\\
\mathbf{elif}\;mu \leq -1.4 \cdot 10^{+58}:\\
\;\;\;\;t\_2 + \frac{NaChar}{1 - \left(\frac{mu}{KbT} + \left(\left(-1 - \frac{EAccept}{KbT}\right) + Ev \cdot \left(\frac{-1}{KbT} - \frac{Vef}{KbT \cdot Ev}\right)\right)\right)}\\
\mathbf{elif}\;mu \leq 4.1 \cdot 10^{+18}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{elif}\;mu \leq 1.05 \cdot 10^{+145}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if mu < -2e203 or 1.04999999999999995e145 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 96.6%
Taylor expanded in mu around inf 91.8%
associate-*r/91.8%
mul-1-neg91.8%
Simplified91.8%
if -2e203 < mu < -3.6000000000000002e111Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 67.2%
associate-+r+67.2%
+-commutative67.2%
Simplified67.2%
clear-num67.2%
frac-add46.8%
*-un-lft-identity46.8%
Applied egg-rr46.8%
Taylor expanded in KbT around 0 86.8%
if -3.6000000000000002e111 < mu < -1.3999999999999999e58Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 43.0%
associate-+r+43.0%
+-commutative43.0%
Simplified43.0%
Taylor expanded in Ev around inf 61.6%
*-commutative61.6%
Simplified61.6%
if -1.3999999999999999e58 < mu < 4.1e18Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 76.7%
Taylor expanded in EAccept around 0 68.1%
+-commutative68.1%
Simplified68.1%
if 4.1e18 < mu < 1.04999999999999995e145Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.6%
Taylor expanded in EAccept around inf 61.6%
Final simplification73.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))
(t_1 (- (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar (- -1.0 t_0)))))
(if (<= Vef -6.5e+197)
t_1
(if (<= Vef 7.1e-100)
(+ (/ NaChar (+ 1.0 t_0)) (/ NdChar (+ 1.0 (exp (/ mu KbT)))))
(if (<= Vef 1.05e+26)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/
NaChar
(-
1.0
(+
(/ mu KbT)
(+
(- -1.0 (/ EAccept KbT))
(* Ev (- (/ -1.0 KbT) (/ Vef (* KbT Ev)))))))))
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 = exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0));
double tmp;
if (Vef <= -6.5e+197) {
tmp = t_1;
} else if (Vef <= 7.1e-100) {
tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + exp((mu / KbT))));
} else if (Vef <= 1.05e+26) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev))))))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = exp(((vef + (ev - (mu - eaccept))) / kbt))
t_1 = (ndchar / (1.0d0 + exp((vef / kbt)))) - (nachar / ((-1.0d0) - t_0))
if (vef <= (-6.5d+197)) then
tmp = t_1
else if (vef <= 7.1d-100) then
tmp = (nachar / (1.0d0 + t_0)) + (ndchar / (1.0d0 + exp((mu / kbt))))
else if (vef <= 1.05d+26) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 - ((mu / kbt) + (((-1.0d0) - (eaccept / kbt)) + (ev * (((-1.0d0) / kbt) - (vef / (kbt * ev))))))))
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 = Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0));
double tmp;
if (Vef <= -6.5e+197) {
tmp = t_1;
} else if (Vef <= 7.1e-100) {
tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else if (Vef <= 1.05e+26) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev))))))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) t_1 = (NdChar / (1.0 + math.exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0)) tmp = 0 if Vef <= -6.5e+197: tmp = t_1 elif Vef <= 7.1e-100: tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + math.exp((mu / KbT)))) elif Vef <= 1.05e+26: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) - Float64(NaChar / Float64(-1.0 - t_0))) tmp = 0.0 if (Vef <= -6.5e+197) tmp = t_1; elseif (Vef <= 7.1e-100) tmp = Float64(Float64(NaChar / Float64(1.0 + t_0)) + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); elseif (Vef <= 1.05e+26) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 - Float64(Float64(mu / KbT) + Float64(Float64(-1.0 - Float64(EAccept / KbT)) + Float64(Ev * Float64(Float64(-1.0 / KbT) - Float64(Vef / Float64(KbT * Ev))))))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev - (mu - EAccept))) / KbT)); t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0)); tmp = 0.0; if (Vef <= -6.5e+197) tmp = t_1; elseif (Vef <= 7.1e-100) tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + exp((mu / KbT)))); elseif (Vef <= 1.05e+26) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 - ((mu / KbT) + ((-1.0 - (EAccept / KbT)) + (Ev * ((-1.0 / KbT) - (Vef / (KbT * Ev)))))))); else tmp = t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -6.5e+197], t$95$1, If[LessEqual[Vef, 7.1e-100], N[(N[(NaChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.05e+26], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(N[(mu / KbT), $MachinePrecision] + N[(N[(-1.0 - N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision] + N[(Ev * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Vef / N[(KbT * Ev), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{if}\;Vef \leq -6.5 \cdot 10^{+197}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 7.1 \cdot 10^{-100}:\\
\;\;\;\;\frac{NaChar}{1 + t\_0} + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{elif}\;Vef \leq 1.05 \cdot 10^{+26}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 - \left(\frac{mu}{KbT} + \left(\left(-1 - \frac{EAccept}{KbT}\right) + Ev \cdot \left(\frac{-1}{KbT} - \frac{Vef}{KbT \cdot Ev}\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -6.49999999999999952e197 or 1.05e26 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.4%
if -6.49999999999999952e197 < Vef < 7.0999999999999999e-100Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.7%
if 7.0999999999999999e-100 < Vef < 1.05e26Initial program 99.8%
Simplified99.8%
Taylor expanded in KbT around inf 84.6%
associate-+r+84.6%
+-commutative84.6%
Simplified84.6%
Taylor expanded in Ev around inf 88.6%
*-commutative88.6%
Simplified88.6%
Final simplification83.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))
(t_1 (- (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) (/ NaChar (- -1.0 t_0)))))
(if (<= Vef -1.1e+16)
t_1
(if (<= Vef -2.4e-199)
(+ (/ NaChar (+ 1.0 t_0)) (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= Vef 4.9e+26)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept 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 = exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0));
double tmp;
if (Vef <= -1.1e+16) {
tmp = t_1;
} else if (Vef <= -2.4e-199) {
tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (Vef <= 4.9e+26) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = exp(((vef + (ev - (mu - eaccept))) / kbt))
t_1 = (ndchar / (1.0d0 + exp((vef / kbt)))) - (nachar / ((-1.0d0) - t_0))
if (vef <= (-1.1d+16)) then
tmp = t_1
else if (vef <= (-2.4d-199)) then
tmp = (nachar / (1.0d0 + t_0)) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (vef <= 4.9d+26) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / 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 = Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT));
double t_1 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0));
double tmp;
if (Vef <= -1.1e+16) {
tmp = t_1;
} else if (Vef <= -2.4e-199) {
tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (Vef <= 4.9e+26) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)) t_1 = (NdChar / (1.0 + math.exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0)) tmp = 0 if Vef <= -1.1e+16: tmp = t_1 elif Vef <= -2.4e-199: tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif Vef <= 4.9e+26: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)) t_1 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) - Float64(NaChar / Float64(-1.0 - t_0))) tmp = 0.0 if (Vef <= -1.1e+16) tmp = t_1; elseif (Vef <= -2.4e-199) tmp = Float64(Float64(NaChar / Float64(1.0 + t_0)) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (Vef <= 4.9e+26) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); else tmp = t_1; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(((Vef + (Ev - (mu - EAccept))) / KbT)); t_1 = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - t_0)); tmp = 0.0; if (Vef <= -1.1e+16) tmp = t_1; elseif (Vef <= -2.4e-199) tmp = (NaChar / (1.0 + t_0)) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (Vef <= 4.9e+26) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / 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[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -1.1e+16], t$95$1, If[LessEqual[Vef, -2.4e-199], N[(N[(NaChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 4.9e+26], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{if}\;Vef \leq -1.1 \cdot 10^{+16}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq -2.4 \cdot 10^{-199}:\\
\;\;\;\;\frac{NaChar}{1 + t\_0} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;Vef \leq 4.9 \cdot 10^{+26}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if Vef < -1.1e16 or 4.89999999999999974e26 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 85.4%
if -1.1e16 < Vef < -2.39999999999999996e-199Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 84.0%
if -2.39999999999999996e-199 < Vef < 4.89999999999999974e26Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 79.9%
Final simplification83.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(-
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (- -1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))
(if (<= mu -7e+84)
t_0
(if (<= mu 3.1e-85)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= mu 3.1e+50)
(+
(/ NaChar (+ 1.0 (exp (/ Ev KbT))))
(/ NdChar (+ 1.0 (exp (/ (- (+ EDonor Vef) Ec) KbT)))))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -7e+84) {
tmp = t_0;
} else if (mu <= 3.1e-85) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (mu <= 3.1e+50) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((EDonor + Vef) - Ec) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((mu / kbt)))) - (nachar / ((-1.0d0) - exp((((vef + ev) - mu) / kbt))))
if (mu <= (-7d+84)) then
tmp = t_0
else if (mu <= 3.1d-85) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (mu <= 3.1d+50) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar / (1.0d0 + exp((((edonor + vef) - ec) / kbt))))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((mu / KbT)))) - (NaChar / (-1.0 - Math.exp((((Vef + Ev) - mu) / KbT))));
double tmp;
if (mu <= -7e+84) {
tmp = t_0;
} else if (mu <= 3.1e-85) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (mu <= 3.1e+50) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar / (1.0 + Math.exp((((EDonor + Vef) - Ec) / KbT))));
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((mu / KbT)))) - (NaChar / (-1.0 - math.exp((((Vef + Ev) - mu) / KbT)))) tmp = 0 if mu <= -7e+84: tmp = t_0 elif mu <= 3.1e-85: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif mu <= 3.1e+50: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar / (1.0 + math.exp((((EDonor + Vef) - Ec) / KbT)))) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) tmp = 0.0 if (mu <= -7e+84) tmp = t_0; elseif (mu <= 3.1e-85) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (mu <= 3.1e+50) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(Float64(EDonor + Vef) - Ec) / KbT))))); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - exp((((Vef + Ev) - mu) / KbT)))); tmp = 0.0; if (mu <= -7e+84) tmp = t_0; elseif (mu <= 3.1e-85) tmp = (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (mu <= 3.1e+50) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar / (1.0 + exp((((EDonor + Vef) - Ec) / KbT)))); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / 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, -7e+84], t$95$0, If[LessEqual[mu, 3.1e-85], 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[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 3.1e+50], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(N[(EDonor + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} - \frac{NaChar}{-1 - e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\mathbf{if}\;mu \leq -7 \cdot 10^{+84}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 3.1 \cdot 10^{-85}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;mu \leq 3.1 \cdot 10^{+50}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + \frac{NdChar}{1 + e^{\frac{\left(EDonor + Vef\right) - Ec}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if mu < -6.9999999999999998e84 or 3.10000000000000003e50 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.3%
Taylor expanded in EAccept around 0 88.1%
+-commutative52.8%
Simplified88.1%
if -6.9999999999999998e84 < mu < 3.1000000000000002e-85Initial program 99.9%
Simplified99.9%
Taylor expanded in EDonor around inf 78.0%
if 3.1000000000000002e-85 < mu < 3.10000000000000003e50Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 81.1%
Taylor expanded in mu around 0 78.0%
+-commutative78.0%
+-commutative78.0%
Simplified78.0%
Final simplification81.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -9.5e+77)
(+ t_0 NaChar)
(if (<= NdChar 3.7e+130)
(-
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(+
t_0
(/
NaChar
(+
1.0
(*
mu
(+
(/ (- (+ (/ Ev KbT) (/ Vef KbT)) (- -1.0 (/ EAccept KbT))) mu)
(/ -1.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 + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -9.5e+77) {
tmp = t_0 + NaChar;
} else if (NdChar <= 3.7e+130) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + (mu * (((((Ev / KbT) + (Vef / KbT)) - (-1.0 - (EAccept / KbT))) / mu) + (-1.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) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-9.5d+77)) then
tmp = t_0 + nachar
else if (ndchar <= 3.7d+130) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + (mu * (((((ev / kbt) + (vef / kbt)) - ((-1.0d0) - (eaccept / kbt))) / mu) + ((-1.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 + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -9.5e+77) {
tmp = t_0 + NaChar;
} else if (NdChar <= 3.7e+130) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + (mu * (((((Ev / KbT) + (Vef / KbT)) - (-1.0 - (EAccept / KbT))) / mu) + (-1.0 / KbT)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -9.5e+77: tmp = t_0 + NaChar elif NdChar <= 3.7e+130: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + (mu * (((((Ev / KbT) + (Vef / KbT)) - (-1.0 - (EAccept / KbT))) / mu) + (-1.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(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -9.5e+77) tmp = Float64(t_0 + NaChar); elseif (NdChar <= 3.7e+130) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(mu * Float64(Float64(Float64(Float64(Float64(Ev / KbT) + Float64(Vef / KbT)) - Float64(-1.0 - Float64(EAccept / KbT))) / mu) + Float64(-1.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 + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -9.5e+77) tmp = t_0 + NaChar; elseif (NdChar <= 3.7e+130) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); else tmp = t_0 + (NaChar / (1.0 + (mu * (((((Ev / KbT) + (Vef / KbT)) - (-1.0 - (EAccept / KbT))) / mu) + (-1.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[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -9.5e+77], N[(t$95$0 + NaChar), $MachinePrecision], If[LessEqual[NdChar, 3.7e+130], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / 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], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(mu * N[(N[(N[(N[(N[(Ev / KbT), $MachinePrecision] + N[(Vef / KbT), $MachinePrecision]), $MachinePrecision] - N[(-1.0 - N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / mu), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -9.5 \cdot 10^{+77}:\\
\;\;\;\;t\_0 + NaChar\\
\mathbf{elif}\;NdChar \leq 3.7 \cdot 10^{+130}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + mu \cdot \left(\frac{\left(\frac{Ev}{KbT} + \frac{Vef}{KbT}\right) - \left(-1 - \frac{EAccept}{KbT}\right)}{mu} + \frac{-1}{KbT}\right)}\\
\end{array}
\end{array}
if NdChar < -9.4999999999999998e77Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.2%
associate-+r+56.2%
+-commutative56.2%
Simplified56.2%
Taylor expanded in mu around inf 55.5%
neg-mul-155.5%
distribute-neg-frac255.5%
Simplified55.5%
Taylor expanded in mu around 0 80.7%
if -9.4999999999999998e77 < NdChar < 3.7000000000000001e130Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 77.8%
if 3.7000000000000001e130 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 78.4%
associate-+r+78.4%
+-commutative78.4%
Simplified78.4%
Taylor expanded in mu around -inf 84.7%
mul-1-neg84.7%
*-commutative84.7%
distribute-rgt-neg-in84.7%
+-commutative84.7%
mul-1-neg84.7%
unsub-neg84.7%
associate-+r+84.7%
Simplified84.7%
Final simplification79.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(if (or (<= mu -1.8e-46) (not (<= mu 215000000.0)))
(- (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar (- -1.0 t_0)))
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (+ 1.0 t_0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = exp((((Vef + Ev) - mu) / KbT));
double tmp;
if ((mu <= -1.8e-46) || !(mu <= 215000000.0)) {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + t_0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = exp((((vef + ev) - mu) / kbt))
if ((mu <= (-1.8d-46)) .or. (.not. (mu <= 215000000.0d0))) then
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) - (nachar / ((-1.0d0) - t_0))
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / (1.0d0 + t_0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = Math.exp((((Vef + Ev) - mu) / KbT));
double tmp;
if ((mu <= -1.8e-46) || !(mu <= 215000000.0)) {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) - (NaChar / (-1.0 - t_0));
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / (1.0 + t_0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = math.exp((((Vef + Ev) - mu) / KbT)) tmp = 0 if (mu <= -1.8e-46) or not (mu <= 215000000.0): tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) - (NaChar / (-1.0 - t_0)) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / (1.0 + t_0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)) tmp = 0.0 if ((mu <= -1.8e-46) || !(mu <= 215000000.0)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) - Float64(NaChar / Float64(-1.0 - t_0))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(1.0 + t_0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = exp((((Vef + Ev) - mu) / KbT)); tmp = 0.0; if ((mu <= -1.8e-46) || ~((mu <= 215000000.0))) tmp = (NdChar / (1.0 + exp((mu / KbT)))) - (NaChar / (-1.0 - t_0)); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / (1.0 + t_0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]}, If[Or[LessEqual[mu, -1.8e-46], N[Not[LessEqual[mu, 215000000.0]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(NaChar / N[(-1.0 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}\\
\mathbf{if}\;mu \leq -1.8 \cdot 10^{-46} \lor \neg \left(mu \leq 215000000\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} - \frac{NaChar}{-1 - t\_0}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{1 + t\_0}\\
\end{array}
\end{array}
if mu < -1.8e-46 or 2.15e8 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 88.1%
Taylor expanded in EAccept around 0 82.4%
+-commutative55.4%
Simplified82.4%
if -1.8e-46 < mu < 2.15e8Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.8%
Taylor expanded in EAccept around 0 67.8%
+-commutative67.8%
Simplified67.8%
Final simplification75.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (pow E (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + pow(((double) M_E), ((Vef + (Ev - (mu - EAccept))) / KbT))));
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.pow(Math.E, ((Vef + (Ev - (mu - EAccept))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.pow(math.e, ((Vef + (Ev - (mu - EAccept))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + (exp(1) ^ Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + (2.71828182845904523536 ^ ((Vef + (Ev - (mu - EAccept))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Power[E, N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + {e}^{\left(\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}\right)}}
\end{array}
Initial program 100.0%
Simplified100.0%
*-un-lft-identity100.0%
exp-prod100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= EAccept 4.4e-129)
(+ t_0 (/ NaChar (+ 1.0 (pow E (/ Ev KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 4.4e-129) {
tmp = t_0 + (NaChar / (1.0 + pow(((double) M_E), (Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 4.4e-129) {
tmp = t_0 + (NaChar / (1.0 + Math.pow(Math.E, (Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if EAccept <= 4.4e-129: tmp = t_0 + (NaChar / (1.0 + math.pow(math.e, (Ev / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (EAccept <= 4.4e-129) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + (exp(1) ^ Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (EAccept <= 4.4e-129) tmp = t_0 + (NaChar / (1.0 + (2.71828182845904523536 ^ (Ev / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 4.4e-129], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Power[E, N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 4.4 \cdot 10^{-129}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + {e}^{\left(\frac{Ev}{KbT}\right)}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 4.40000000000000006e-129Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 75.5%
*-un-lft-identity75.5%
exp-prod75.5%
Applied egg-rr75.5%
exp-1-e75.5%
Simplified75.5%
if 4.40000000000000006e-129 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.9%
Final simplification76.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp(((vef + (ev - (mu - eaccept))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev - N[(mu - EAccept), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= EAccept 7.2e-128)
(+ t_0 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 7.2e-128) {
tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (eaccept <= 7.2d-128) then
tmp = t_0 + (nachar / (1.0d0 + exp((ev / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((eaccept / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (EAccept <= 7.2e-128) {
tmp = t_0 + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if EAccept <= 7.2e-128: tmp = t_0 + (NaChar / (1.0 + math.exp((Ev / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((EAccept / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (EAccept <= 7.2e-128) tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (EAccept <= 7.2e-128) tmp = t_0 + (NaChar / (1.0 + exp((Ev / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((EAccept / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, 7.2e-128], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;EAccept \leq 7.2 \cdot 10^{-128}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\end{array}
\end{array}
if EAccept < 7.20000000000000049e-128Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 75.5%
if 7.20000000000000049e-128 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 78.9%
Final simplification76.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -7.5e+42)
(+ t_0 NaChar)
(if (<= NdChar 7.6e-48)
(-
(/ NdChar (+ 2.0 (/ EDonor KbT)))
(/ NaChar (- -1.0 (exp (/ (+ Vef (- Ev (- mu EAccept))) KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (/ EAccept KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -7.5e+42) {
tmp = t_0 + NaChar;
} else if (NdChar <= 7.6e-48) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + (EAccept / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-7.5d+42)) then
tmp = t_0 + nachar
else if (ndchar <= 7.6d-48) then
tmp = (ndchar / (2.0d0 + (edonor / kbt))) - (nachar / ((-1.0d0) - exp(((vef + (ev - (mu - eaccept))) / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + (eaccept / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -7.5e+42) {
tmp = t_0 + NaChar;
} else if (NdChar <= 7.6e-48) {
tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - Math.exp(((Vef + (Ev - (mu - EAccept))) / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + (EAccept / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -7.5e+42: tmp = t_0 + NaChar elif NdChar <= 7.6e-48: tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - math.exp(((Vef + (Ev - (mu - EAccept))) / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + (EAccept / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -7.5e+42) tmp = Float64(t_0 + NaChar); elseif (NdChar <= 7.6e-48) tmp = Float64(Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT))) - Float64(NaChar / Float64(-1.0 - exp(Float64(Float64(Vef + Float64(Ev - Float64(mu - EAccept))) / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(1.0 + Float64(EAccept / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -7.5e+42) tmp = t_0 + NaChar; elseif (NdChar <= 7.6e-48) tmp = (NdChar / (2.0 + (EDonor / KbT))) - (NaChar / (-1.0 - exp(((Vef + (Ev - (mu - EAccept))) / KbT)))); else tmp = t_0 + (NaChar / (1.0 + (EAccept / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -7.5e+42], N[(t$95$0 + NaChar), $MachinePrecision], If[LessEqual[NdChar, 7.6e-48], N[(N[(NdChar / N[(2.0 + N[(EDonor / KbT), $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], N[(t$95$0 + N[(NaChar / N[(1.0 + N[(EAccept / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -7.5 \cdot 10^{+42}:\\
\;\;\;\;t\_0 + NaChar\\
\mathbf{elif}\;NdChar \leq 7.6 \cdot 10^{-48}:\\
\;\;\;\;\frac{NdChar}{2 + \frac{EDonor}{KbT}} - \frac{NaChar}{-1 - e^{\frac{Vef + \left(Ev - \left(mu - EAccept\right)\right)}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + \frac{EAccept}{KbT}}\\
\end{array}
\end{array}
if NdChar < -7.50000000000000041e42Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 56.8%
associate-+r+56.8%
+-commutative56.8%
Simplified56.8%
Taylor expanded in mu around inf 57.8%
neg-mul-157.8%
distribute-neg-frac257.8%
Simplified57.8%
Taylor expanded in mu around 0 77.6%
if -7.50000000000000041e42 < NdChar < 7.60000000000000005e-48Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 73.1%
Taylor expanded in EDonor around 0 65.6%
if 7.60000000000000005e-48 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 68.1%
associate-+r+68.1%
+-commutative68.1%
Simplified68.1%
Taylor expanded in EAccept around inf 71.1%
Final simplification69.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))))
(if (<= NdChar -8.8e+35)
t_0
(if (<= NdChar 4.05e-283)
(- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT)))))
(if (<= NdChar 1.5e+102)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (/ NdChar 2.0))
t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
double tmp;
if (NdChar <= -8.8e+35) {
tmp = t_0;
} else if (NdChar <= 4.05e-283) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else if (NdChar <= 1.5e+102) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
if (ndchar <= (-8.8d+35)) then
tmp = t_0
else if (ndchar <= 4.05d-283) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else if (ndchar <= 1.5d+102) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / 2.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
double tmp;
if (NdChar <= -8.8e+35) {
tmp = t_0;
} else if (NdChar <= 4.05e-283) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else if (NdChar <= 1.5e+102) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / 2.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) tmp = 0 if NdChar <= -8.8e+35: tmp = t_0 elif NdChar <= 4.05e-283: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) elif NdChar <= 1.5e+102: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / 2.0) else: tmp = t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)) tmp = 0.0 if (NdChar <= -8.8e+35) tmp = t_0; elseif (NdChar <= 4.05e-283) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); elseif (NdChar <= 1.5e+102) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / 2.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); tmp = 0.0; if (NdChar <= -8.8e+35) tmp = t_0; elseif (NdChar <= 4.05e-283) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); elseif (NdChar <= 1.5e+102) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / 2.0); else tmp = t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -8.8e+35], t$95$0, If[LessEqual[NdChar, 4.05e-283], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.5e+102], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / 2.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{if}\;NdChar \leq -8.8 \cdot 10^{+35}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 4.05 \cdot 10^{-283}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;NdChar \leq 1.5 \cdot 10^{+102}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{2}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NdChar < -8.7999999999999994e35 or 1.4999999999999999e102 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 63.2%
Taylor expanded in KbT around inf 46.3%
if -8.7999999999999994e35 < NdChar < 4.04999999999999983e-283Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 66.1%
Taylor expanded in KbT around inf 44.6%
if 4.04999999999999983e-283 < NdChar < 1.4999999999999999e102Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 59.3%
Taylor expanded in KbT around inf 29.2%
Final simplification40.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= NaChar 5.6e+150)
(+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) NaChar)
(+
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))
(/ NdChar (+ 2.0 (/ EDonor KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= 5.6e+150) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar;
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (nachar <= 5.6d+150) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + nachar
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar / (2.0d0 + (edonor / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NaChar <= 5.6e+150) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar;
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NaChar <= 5.6e+150: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NaChar <= 5.6e+150) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + NaChar); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar / Float64(2.0 + Float64(EDonor / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NaChar <= 5.6e+150) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar; else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar / (2.0 + (EDonor / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NaChar, 5.6e+150], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + NaChar), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq 5.6 \cdot 10^{+150}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + \frac{NdChar}{2 + \frac{EDonor}{KbT}}\\
\end{array}
\end{array}
if NaChar < 5.60000000000000018e150Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 55.1%
associate-+r+55.1%
+-commutative55.1%
Simplified55.1%
Taylor expanded in mu around inf 57.6%
neg-mul-157.6%
distribute-neg-frac257.6%
Simplified57.6%
Taylor expanded in mu around 0 67.8%
if 5.60000000000000018e150 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 75.3%
Taylor expanded in EAccept around 0 67.8%
+-commutative67.8%
Simplified67.8%
Taylor expanded in EDonor around 0 58.2%
Final simplification66.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -9.2e+38) (not (<= NdChar 1.02e-66))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor 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+38) || !(NdChar <= 1.02e-66)) {
tmp = (NdChar / (1.0 + exp((EDonor / 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+38)) .or. (.not. (ndchar <= 1.02d-66))) then
tmp = (ndchar / (1.0d0 + exp((edonor / 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+38) || !(NdChar <= 1.02e-66)) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / 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+38) or not (NdChar <= 1.02e-66): tmp = (NdChar / (1.0 + math.exp((EDonor / 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+38) || !(NdChar <= 1.02e-66)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / 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+38) || ~((NdChar <= 1.02e-66))) tmp = (NdChar / (1.0 + exp((EDonor / 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+38], N[Not[LessEqual[NdChar, 1.02e-66]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / 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^{+38} \lor \neg \left(NdChar \leq 1.02 \cdot 10^{-66}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if NdChar < -9.2000000000000005e38 or 1.01999999999999996e-66 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in EDonor around inf 64.3%
Taylor expanded in KbT around inf 41.6%
if -9.2000000000000005e38 < NdChar < 1.01999999999999996e-66Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 67.1%
Taylor expanded in KbT around inf 43.9%
Final simplification42.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 8e+149) (- (/ NdChar 2.0) (/ NaChar (- -1.0 (exp (/ Ev KbT))))) (/ NdChar (- 2.0 (/ Ec KbT)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 8e+149) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT))));
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 8d+149) then
tmp = (ndchar / 2.0d0) - (nachar / ((-1.0d0) - exp((ev / kbt))))
else
tmp = ndchar / (2.0d0 - (ec / kbt))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 8e+149) {
tmp = (NdChar / 2.0) - (NaChar / (-1.0 - Math.exp((Ev / KbT))));
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 8e+149: tmp = (NdChar / 2.0) - (NaChar / (-1.0 - math.exp((Ev / KbT)))) else: tmp = NdChar / (2.0 - (Ec / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 8e+149) tmp = Float64(Float64(NdChar / 2.0) - Float64(NaChar / Float64(-1.0 - exp(Float64(Ev / KbT))))); else tmp = Float64(NdChar / Float64(2.0 - Float64(Ec / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 8e+149) tmp = (NdChar / 2.0) - (NaChar / (-1.0 - exp((Ev / KbT)))); else tmp = NdChar / (2.0 - (Ec / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 8e+149], N[(N[(NdChar / 2.0), $MachinePrecision] - N[(NaChar / N[(-1.0 - N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 8 \cdot 10^{+149}:\\
\;\;\;\;\frac{NdChar}{2} - \frac{NaChar}{-1 - e^{\frac{Ev}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if EAccept < 8.00000000000000039e149Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.9%
Taylor expanded in KbT around inf 38.7%
if 8.00000000000000039e149 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.0%
Taylor expanded in Ec around inf 17.1%
associate-*r/17.1%
mul-1-neg17.1%
Simplified17.1%
Taylor expanded in Ec around 0 17.0%
mul-1-neg17.0%
unsub-neg17.0%
Simplified17.0%
Taylor expanded in NdChar around inf 28.2%
Final simplification37.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))) NaChar))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + nachar
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + NaChar) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + NaChar; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + NaChar), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.8%
associate-+r+52.8%
+-commutative52.8%
Simplified52.8%
Taylor expanded in mu around inf 53.6%
neg-mul-153.6%
distribute-neg-frac253.6%
Simplified53.6%
Taylor expanded in mu around 0 63.8%
Final simplification63.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (- 1.0 (/ mu KbT)))))
(if (<= EAccept -1.4e-37)
(+
(/
NdChar
(+
1.0
(- (+ 1.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) (/ Ec KbT))))
t_0)
(if (<= EAccept 8e+137)
(* 0.5 (+ NdChar NaChar))
(+ (/ NdChar 2.0) t_0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 - (mu / KbT));
double tmp;
if (EAccept <= -1.4e-37) {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)))) + t_0;
} else if (EAccept <= 8e+137) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar / 2.0) + t_0;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 - (mu / kbt))
if (eaccept <= (-1.4d-37)) then
tmp = (ndchar / (1.0d0 + ((1.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) - (ec / kbt)))) + t_0
else if (eaccept <= 8d+137) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = (ndchar / 2.0d0) + t_0
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 - (mu / KbT));
double tmp;
if (EAccept <= -1.4e-37) {
tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)))) + t_0;
} else if (EAccept <= 8e+137) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar / 2.0) + t_0;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 - (mu / KbT)) tmp = 0 if EAccept <= -1.4e-37: tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)))) + t_0 elif EAccept <= 8e+137: tmp = 0.5 * (NdChar + NaChar) else: tmp = (NdChar / 2.0) + t_0 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 - Float64(mu / KbT))) tmp = 0.0 if (EAccept <= -1.4e-37) tmp = Float64(Float64(NdChar / Float64(1.0 + Float64(Float64(1.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) - Float64(Ec / KbT)))) + t_0); elseif (EAccept <= 8e+137) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(Float64(NdChar / 2.0) + t_0); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 - (mu / KbT)); tmp = 0.0; if (EAccept <= -1.4e-37) tmp = (NdChar / (1.0 + ((1.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) - (Ec / KbT)))) + t_0; elseif (EAccept <= 8e+137) tmp = 0.5 * (NdChar + NaChar); else tmp = (NdChar / 2.0) + t_0; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EAccept, -1.4e-37], N[(N[(NdChar / N[(1.0 + N[(N[(1.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[EAccept, 8e+137], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\mathbf{if}\;EAccept \leq -1.4 \cdot 10^{-37}:\\
\;\;\;\;\frac{NdChar}{1 + \left(\left(1 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)\right) - \frac{Ec}{KbT}\right)} + t\_0\\
\mathbf{elif}\;EAccept \leq 8 \cdot 10^{+137}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + t\_0\\
\end{array}
\end{array}
if EAccept < -1.4000000000000001e-37Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.4%
associate-+r+49.4%
+-commutative49.4%
Simplified49.4%
Taylor expanded in mu around inf 58.3%
neg-mul-158.3%
distribute-neg-frac258.3%
Simplified58.3%
Taylor expanded in KbT around inf 27.8%
if -1.4000000000000001e-37 < EAccept < 8.0000000000000003e137Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 51.4%
Taylor expanded in Ec around inf 35.5%
associate-*r/35.5%
mul-1-neg35.5%
Simplified35.5%
Taylor expanded in Ec around 0 28.1%
mul-1-neg28.1%
unsub-neg28.1%
Simplified28.1%
Taylor expanded in Ec around 0 28.2%
distribute-lft-out28.2%
Simplified28.2%
if 8.0000000000000003e137 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 41.1%
associate-+r+41.1%
+-commutative41.1%
Simplified41.1%
Taylor expanded in mu around inf 46.2%
neg-mul-146.2%
distribute-neg-frac246.2%
Simplified46.2%
Taylor expanded in KbT around inf 23.3%
Final simplification27.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= NdChar -2.05e-273) (* 0.5 (+ NdChar NaChar)) (+ (/ NdChar 2.0) (/ NaChar (- 1.0 (/ mu KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.05e-273) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ndchar <= (-2.05d-273)) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = (ndchar / 2.0d0) + (nachar / (1.0d0 - (mu / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (NdChar <= -2.05e-273) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if NdChar <= -2.05e-273: tmp = 0.5 * (NdChar + NaChar) else: tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (NdChar <= -2.05e-273) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(Float64(NdChar / 2.0) + Float64(NaChar / Float64(1.0 - Float64(mu / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (NdChar <= -2.05e-273) tmp = 0.5 * (NdChar + NaChar); else tmp = (NdChar / 2.0) + (NaChar / (1.0 - (mu / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[NdChar, -2.05e-273], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / 2.0), $MachinePrecision] + N[(NaChar / N[(1.0 - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.05 \cdot 10^{-273}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2} + \frac{NaChar}{1 - \frac{mu}{KbT}}\\
\end{array}
\end{array}
if NdChar < -2.0500000000000002e-273Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 52.2%
Taylor expanded in Ec around inf 39.8%
associate-*r/39.8%
mul-1-neg39.8%
Simplified39.8%
Taylor expanded in Ec around 0 29.0%
mul-1-neg29.0%
unsub-neg29.0%
Simplified29.0%
Taylor expanded in Ec around 0 29.9%
distribute-lft-out29.9%
Simplified29.9%
if -2.0500000000000002e-273 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 50.8%
associate-+r+50.8%
+-commutative50.8%
Simplified50.8%
Taylor expanded in mu around inf 57.8%
neg-mul-157.8%
distribute-neg-frac257.8%
Simplified57.8%
Taylor expanded in KbT around inf 29.8%
Final simplification29.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 6.5e+149) (* 0.5 (+ NdChar NaChar)) (/ NdChar (- 2.0 (/ Ec KbT)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6.5e+149) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 6.5d+149) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (2.0d0 - (ec / kbt))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 6.5e+149) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 - (Ec / KbT));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 6.5e+149: tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (2.0 - (Ec / KbT)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 6.5e+149) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(2.0 - Float64(Ec / KbT))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 6.5e+149) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (2.0 - (Ec / KbT)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 6.5e+149], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 6.5 \cdot 10^{+149}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 - \frac{Ec}{KbT}}\\
\end{array}
\end{array}
if EAccept < 6.50000000000000015e149Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 51.0%
Taylor expanded in Ec around inf 36.9%
associate-*r/36.9%
mul-1-neg36.9%
Simplified36.9%
Taylor expanded in Ec around 0 27.3%
mul-1-neg27.3%
unsub-neg27.3%
Simplified27.3%
Taylor expanded in Ec around 0 27.9%
distribute-lft-out27.9%
Simplified27.9%
if 6.50000000000000015e149 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 37.0%
Taylor expanded in Ec around inf 17.1%
associate-*r/17.1%
mul-1-neg17.1%
Simplified17.1%
Taylor expanded in Ec around 0 17.0%
mul-1-neg17.0%
unsub-neg17.0%
Simplified17.0%
Taylor expanded in NdChar around inf 28.2%
Final simplification27.9%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 49.2%
Taylor expanded in Ec around inf 34.3%
associate-*r/34.3%
mul-1-neg34.3%
Simplified34.3%
Taylor expanded in Ec around 0 26.0%
mul-1-neg26.0%
unsub-neg26.0%
Simplified26.0%
Taylor expanded in Ec around 0 26.6%
distribute-lft-out26.6%
Simplified26.6%
Final simplification26.6%
herbie shell --seed 2024080
(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))))))