
(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 33 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 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))) (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt))))
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * Float64(1.0 / 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(EAccept - mu))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}
\end{array}
Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Final simplification100.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_2
(+
(/ NdChar (+ 1.0 (exp (/ mu KbT))))
(/ NaChar (+ 1.0 (exp (/ mu (- KbT)))))))
(t_3
(+
(* NdChar (/ 1.0 t_0))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))))
(if (<= mu -3.3e+103)
t_2
(if (<= mu -4.4e-120)
(+ (/ NdChar t_0) (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= mu -8e-229)
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(if (<= mu 2.7e-192)
t_3
(if (<= mu 1.3e-116)
(+
t_1
(*
NdChar
(/
1.0
(*
EDonor
(+
(/ 1.0 KbT)
(/
(- (+ 2.0 (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))
EDonor))))))
(if (<= mu 2.8e-46)
t_3
(if (<= mu 1.9e+147)
(+
t_1
(*
NdChar
(/
1.0
(*
Vef
(-
(/ 1.0 KbT)
(/
(- (/ Ec KbT) (+ 2.0 (+ (/ mu KbT) (/ EDonor KbT))))
Vef))))))
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 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT))));
double t_3 = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double tmp;
if (mu <= -3.3e+103) {
tmp = t_2;
} else if (mu <= -4.4e-120) {
tmp = (NdChar / t_0) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (mu <= -8e-229) {
tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
} else if (mu <= 2.7e-192) {
tmp = t_3;
} else if (mu <= 1.3e-116) {
tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else if (mu <= 2.8e-46) {
tmp = t_3;
} else if (mu <= 1.9e+147) {
tmp = t_1 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = 1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_2 = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / (1.0d0 + exp((mu / -kbt))))
t_3 = (ndchar * (1.0d0 / t_0)) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
if (mu <= (-3.3d+103)) then
tmp = t_2
else if (mu <= (-4.4d-120)) then
tmp = (ndchar / t_0) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (mu <= (-8d-229)) then
tmp = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
else if (mu <= 2.7d-192) then
tmp = t_3
else if (mu <= 1.3d-116) then
tmp = t_1 + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + ((vef / kbt) + (mu / kbt))) - (ec / kbt)) / edonor)))))
else if (mu <= 2.8d-46) then
tmp = t_3
else if (mu <= 1.9d+147) then
tmp = t_1 + (ndchar * (1.0d0 / (vef * ((1.0d0 / kbt) - (((ec / kbt) - (2.0d0 + ((mu / kbt) + (edonor / kbt)))) / vef)))))
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 = 1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_2 = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / (1.0 + Math.exp((mu / -KbT))));
double t_3 = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
double tmp;
if (mu <= -3.3e+103) {
tmp = t_2;
} else if (mu <= -4.4e-120) {
tmp = (NdChar / t_0) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (mu <= -8e-229) {
tmp = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
} else if (mu <= 2.7e-192) {
tmp = t_3;
} else if (mu <= 1.3e-116) {
tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else if (mu <= 2.8e-46) {
tmp = t_3;
} else if (mu <= 1.9e+147) {
tmp = t_1 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else {
tmp = t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_2 = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / (1.0 + math.exp((mu / -KbT)))) t_3 = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) tmp = 0 if mu <= -3.3e+103: tmp = t_2 elif mu <= -4.4e-120: tmp = (NdChar / t_0) + (NaChar / ((EAccept / KbT) + 2.0)) elif mu <= -8e-229: tmp = (NdChar / (1.0 + math.exp((Vef / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) elif mu <= 2.7e-192: tmp = t_3 elif mu <= 1.3e-116: tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))) elif mu <= 2.8e-46: tmp = t_3 elif mu <= 1.9e+147: tmp = t_1 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))) else: tmp = t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_2 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))) t_3 = Float64(Float64(NdChar * Float64(1.0 / t_0)) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))) tmp = 0.0 if (mu <= -3.3e+103) tmp = t_2; elseif (mu <= -4.4e-120) tmp = Float64(Float64(NdChar / t_0) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (mu <= -8e-229) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); elseif (mu <= 2.7e-192) tmp = t_3; elseif (mu <= 1.3e-116) tmp = Float64(t_1 + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)) / EDonor)))))); elseif (mu <= 2.8e-46) tmp = t_3; elseif (mu <= 1.9e+147) tmp = Float64(t_1 + Float64(NdChar * Float64(1.0 / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(Ec / KbT) - Float64(2.0 + Float64(Float64(mu / KbT) + Float64(EDonor / KbT)))) / Vef)))))); else tmp = t_2; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_2 = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / (1.0 + exp((mu / -KbT)))); t_3 = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); tmp = 0.0; if (mu <= -3.3e+103) tmp = t_2; elseif (mu <= -4.4e-120) tmp = (NdChar / t_0) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (mu <= -8e-229) tmp = (NdChar / (1.0 + exp((Vef / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); elseif (mu <= 2.7e-192) tmp = t_3; elseif (mu <= 1.3e-116) tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))); elseif (mu <= 2.8e-46) tmp = t_3; elseif (mu <= 1.9e+147) tmp = t_1 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))); else tmp = t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -3.3e+103], t$95$2, If[LessEqual[mu, -4.4e-120], N[(N[(NdChar / t$95$0), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, -8e-229], N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.7e-192], t$95$3, If[LessEqual[mu, 1.3e-116], N[(t$95$1 + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.8e-46], t$95$3, If[LessEqual[mu, 1.9e+147], N[(t$95$1 + N[(NdChar * N[(1.0 / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(Ec / KbT), $MachinePrecision] - N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
t_3 := NdChar \cdot \frac{1}{t\_0} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{if}\;mu \leq -3.3 \cdot 10^{+103}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;mu \leq -4.4 \cdot 10^{-120}:\\
\;\;\;\;\frac{NdChar}{t\_0} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;mu \leq -8 \cdot 10^{-229}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\mathbf{elif}\;mu \leq 2.7 \cdot 10^{-192}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq 1.3 \cdot 10^{-116}:\\
\;\;\;\;t\_1 + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\mathbf{elif}\;mu \leq 2.8 \cdot 10^{-46}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;mu \leq 1.9 \cdot 10^{+147}:\\
\;\;\;\;t\_1 + NdChar \cdot \frac{1}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{Ec}{KbT} - \left(2 + \left(\frac{mu}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if mu < -3.30000000000000009e103 or 1.89999999999999985e147 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 89.3%
Taylor expanded in mu around inf 83.9%
associate-*r/42.1%
mul-1-neg42.1%
Simplified83.9%
if -3.30000000000000009e103 < mu < -4.40000000000000025e-120Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.6%
Taylor expanded in EAccept around 0 70.5%
if -4.40000000000000025e-120 < mu < -8.00000000000000055e-229Initial program 99.9%
Simplified99.9%
Taylor expanded in Ev around inf 71.5%
Taylor expanded in Vef around inf 67.0%
if -8.00000000000000055e-229 < mu < 2.69999999999999991e-192 or 1.3e-116 < mu < 2.7999999999999998e-46Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 80.8%
if 2.69999999999999991e-192 < mu < 1.3e-116Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 69.0%
+-commutative69.0%
+-commutative69.0%
associate-+l+69.0%
Simplified69.0%
Taylor expanded in EDonor around -inf 87.1%
if 2.7999999999999998e-46 < mu < 1.89999999999999985e147Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 51.6%
+-commutative51.6%
+-commutative51.6%
associate-+l+51.6%
Simplified51.6%
Taylor expanded in Vef around -inf 67.7%
Final simplification76.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ Vef KbT) (/ mu KbT)))
(t_1 (/ NaChar (+ 1.0 (exp (/ Ev KbT)))))
(t_2 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_3 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= EDonor -1.25e+101)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_2)
(if (<= EDonor -8.4e-38)
(+
t_3
(*
NdChar
(/
1.0
(* Ec (+ (/ (+ 2.0 (+ (/ EDonor KbT) t_0)) Ec) (/ -1.0 KbT))))))
(if (<= EDonor -3.15e-204)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= EDonor 9.5e-53)
(+
t_3
(*
NdChar
(/
1.0
(*
EDonor
(+ (/ 1.0 KbT) (/ (- (+ 2.0 t_0) (/ Ec KbT)) EDonor))))))
(if (<= EDonor 520000000.0)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ Ec (- KbT))))))
(if (<= EDonor 4.5e+101)
(+
t_3
(*
NdChar
(/
1.0
(-
(+
(+ 2.0 (/ EDonor KbT))
(/ (+ (* mu KbT) (* Vef KbT)) (* KbT KbT)))
(/ Ec KbT)))))
(if (<= EDonor 3.8e+123)
(+ t_1 (/ NdChar (+ 1.0 (exp (/ mu 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) + (mu / KbT);
double t_1 = NaChar / (1.0 + exp((Ev / KbT)));
double t_2 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -1.25e+101) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_2;
} else if (EDonor <= -8.4e-38) {
tmp = t_3 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if (EDonor <= -3.15e-204) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (EDonor <= 9.5e-53) {
tmp = t_3 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
} else if (EDonor <= 520000000.0) {
tmp = t_1 + (NdChar / (1.0 + exp((Ec / -KbT))));
} else if (EDonor <= 4.5e+101) {
tmp = t_3 + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (((mu * KbT) + (Vef * KbT)) / (KbT * KbT))) - (Ec / KbT))));
} else if (EDonor <= 3.8e+123) {
tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT))));
} else {
tmp = t_1 + t_2;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = (vef / kbt) + (mu / kbt)
t_1 = nachar / (1.0d0 + exp((ev / kbt)))
t_2 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_3 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (edonor <= (-1.25d+101)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_2
else if (edonor <= (-8.4d-38)) then
tmp = t_3 + (ndchar * (1.0d0 / (ec * (((2.0d0 + ((edonor / kbt) + t_0)) / ec) + ((-1.0d0) / kbt)))))
else if (edonor <= (-3.15d-204)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (edonor <= 9.5d-53) then
tmp = t_3 + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + t_0) - (ec / kbt)) / edonor)))))
else if (edonor <= 520000000.0d0) then
tmp = t_1 + (ndchar / (1.0d0 + exp((ec / -kbt))))
else if (edonor <= 4.5d+101) then
tmp = t_3 + (ndchar * (1.0d0 / (((2.0d0 + (edonor / kbt)) + (((mu * kbt) + (vef * kbt)) / (kbt * kbt))) - (ec / kbt))))
else if (edonor <= 3.8d+123) then
tmp = t_1 + (ndchar / (1.0d0 + exp((mu / kbt))))
else
tmp = t_1 + 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) + (mu / KbT);
double t_1 = NaChar / (1.0 + Math.exp((Ev / KbT)));
double t_2 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_3 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -1.25e+101) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_2;
} else if (EDonor <= -8.4e-38) {
tmp = t_3 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if (EDonor <= -3.15e-204) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (EDonor <= 9.5e-53) {
tmp = t_3 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
} else if (EDonor <= 520000000.0) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((Ec / -KbT))));
} else if (EDonor <= 4.5e+101) {
tmp = t_3 + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (((mu * KbT) + (Vef * KbT)) / (KbT * KbT))) - (Ec / KbT))));
} else if (EDonor <= 3.8e+123) {
tmp = t_1 + (NdChar / (1.0 + Math.exp((mu / KbT))));
} else {
tmp = t_1 + t_2;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Vef / KbT) + (mu / KbT) t_1 = NaChar / (1.0 + math.exp((Ev / KbT))) t_2 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_3 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if EDonor <= -1.25e+101: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_2 elif EDonor <= -8.4e-38: tmp = t_3 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))) elif EDonor <= -3.15e-204: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif EDonor <= 9.5e-53: tmp = t_3 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))) elif EDonor <= 520000000.0: tmp = t_1 + (NdChar / (1.0 + math.exp((Ec / -KbT)))) elif EDonor <= 4.5e+101: tmp = t_3 + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (((mu * KbT) + (Vef * KbT)) / (KbT * KbT))) - (Ec / KbT)))) elif EDonor <= 3.8e+123: tmp = t_1 + (NdChar / (1.0 + math.exp((mu / KbT)))) else: tmp = t_1 + t_2 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Vef / KbT) + Float64(mu / KbT)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) t_2 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_3 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -1.25e+101) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_2); elseif (EDonor <= -8.4e-38) tmp = Float64(t_3 + Float64(NdChar * Float64(1.0 / Float64(Ec * Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + t_0)) / Ec) + Float64(-1.0 / KbT)))))); elseif (EDonor <= -3.15e-204) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (EDonor <= 9.5e-53) tmp = Float64(t_3 + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + t_0) - Float64(Ec / KbT)) / EDonor)))))); elseif (EDonor <= 520000000.0) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(Ec / Float64(-KbT)))))); elseif (EDonor <= 4.5e+101) tmp = Float64(t_3 + Float64(NdChar * Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) + Float64(Float64(Float64(mu * KbT) + Float64(Vef * KbT)) / Float64(KbT * KbT))) - Float64(Ec / KbT))))); elseif (EDonor <= 3.8e+123) tmp = Float64(t_1 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); else tmp = Float64(t_1 + t_2); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Vef / KbT) + (mu / KbT); t_1 = NaChar / (1.0 + exp((Ev / KbT))); t_2 = NdChar / (1.0 + exp((EDonor / KbT))); t_3 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (EDonor <= -1.25e+101) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_2; elseif (EDonor <= -8.4e-38) tmp = t_3 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))); elseif (EDonor <= -3.15e-204) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (EDonor <= 9.5e-53) tmp = t_3 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))); elseif (EDonor <= 520000000.0) tmp = t_1 + (NdChar / (1.0 + exp((Ec / -KbT)))); elseif (EDonor <= 4.5e+101) tmp = t_3 + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (((mu * KbT) + (Vef * KbT)) / (KbT * KbT))) - (Ec / KbT)))); elseif (EDonor <= 3.8e+123) tmp = t_1 + (NdChar / (1.0 + exp((mu / KbT)))); else tmp = t_1 + t_2; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -1.25e+101], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision], If[LessEqual[EDonor, -8.4e-38], N[(t$95$3 + N[(NdChar * N[(1.0 / N[(Ec * N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3.15e-204], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 9.5e-53], N[(t$95$3 + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 520000000.0], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(Ec / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 4.5e+101], N[(t$95$3 + N[(NdChar * N[(1.0 / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(mu * KbT), $MachinePrecision] + N[(Vef * KbT), $MachinePrecision]), $MachinePrecision] / N[(KbT * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 3.8e+123], N[(t$95$1 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + t$95$2), $MachinePrecision]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Vef}{KbT} + \frac{mu}{KbT}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
t_2 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_3 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -1.25 \cdot 10^{+101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_2\\
\mathbf{elif}\;EDonor \leq -8.4 \cdot 10^{-38}:\\
\;\;\;\;t\_3 + NdChar \cdot \frac{1}{Ec \cdot \left(\frac{2 + \left(\frac{EDonor}{KbT} + t\_0\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;EDonor \leq -3.15 \cdot 10^{-204}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;EDonor \leq 9.5 \cdot 10^{-53}:\\
\;\;\;\;t\_3 + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + t\_0\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\mathbf{elif}\;EDonor \leq 520000000:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{Ec}{-KbT}}}\\
\mathbf{elif}\;EDonor \leq 4.5 \cdot 10^{+101}:\\
\;\;\;\;t\_3 + NdChar \cdot \frac{1}{\left(\left(2 + \frac{EDonor}{KbT}\right) + \frac{mu \cdot KbT + Vef \cdot KbT}{KbT \cdot KbT}\right) - \frac{Ec}{KbT}}\\
\mathbf{elif}\;EDonor \leq 3.8 \cdot 10^{+123}:\\
\;\;\;\;t\_1 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + t\_2\\
\end{array}
\end{array}
if EDonor < -1.24999999999999997e101Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in EDonor around inf 66.5%
if -1.24999999999999997e101 < EDonor < -8.40000000000000052e-38Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 60.4%
+-commutative60.4%
+-commutative60.4%
associate-+l+60.4%
Simplified60.4%
Taylor expanded in Ec around -inf 75.1%
mul-1-neg75.1%
distribute-rgt-neg-in75.1%
+-commutative75.1%
mul-1-neg75.1%
unsub-neg75.1%
Simplified75.1%
if -8.40000000000000052e-38 < EDonor < -3.14999999999999996e-204Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 69.7%
Taylor expanded in EAccept around 0 69.5%
if -3.14999999999999996e-204 < EDonor < 9.5000000000000008e-53Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 64.8%
+-commutative64.8%
+-commutative64.8%
associate-+l+64.8%
Simplified64.8%
Taylor expanded in EDonor around -inf 77.8%
if 9.5000000000000008e-53 < EDonor < 5.2e8Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 92.6%
Taylor expanded in Ec around inf 85.1%
mul-1-neg85.1%
distribute-neg-frac285.1%
Simplified85.1%
if 5.2e8 < EDonor < 4.5000000000000002e101Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 66.0%
+-commutative66.0%
+-commutative66.0%
associate-+l+66.0%
Simplified66.0%
+-commutative66.0%
frac-2neg66.0%
frac-add80.0%
Applied egg-rr80.0%
if 4.5000000000000002e101 < EDonor < 3.79999999999999994e123Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in mu around inf 70.2%
if 3.79999999999999994e123 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 71.8%
Taylor expanded in EDonor around inf 66.3%
Final simplification73.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))
(t_1 (+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(t_2
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(*
Vef
(-
(/ 1.0 KbT)
(/
(- (/ Ec KbT) (+ 2.0 (+ (/ mu KbT) (/ EDonor KbT))))
Vef)))))))
(t_3 (+ (/ NdChar (+ 1.0 (exp (/ Vef KbT)))) t_0)))
(if (<= Vef -2.2e-86)
t_3
(if (<= Vef -1.2e-215)
t_1
(if (<= Vef 2.6e-281)
t_2
(if (<= Vef 2.2e-252)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= Vef 1.8e-205) t_2 (if (<= Vef 4.2e+24) t_1 t_3))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
double t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
double t_3 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -2.2e-86) {
tmp = t_3;
} else if (Vef <= -1.2e-215) {
tmp = t_1;
} else if (Vef <= 2.6e-281) {
tmp = t_2;
} else if (Vef <= 2.2e-252) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (Vef <= 1.8e-205) {
tmp = t_2;
} else if (Vef <= 4.2e+24) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))
t_1 = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
t_2 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (vef * ((1.0d0 / kbt) - (((ec / kbt) - (2.0d0 + ((mu / kbt) + (edonor / kbt)))) / vef)))))
t_3 = (ndchar / (1.0d0 + exp((vef / kbt)))) + t_0
if (vef <= (-2.2d-86)) then
tmp = t_3
else if (vef <= (-1.2d-215)) then
tmp = t_1
else if (vef <= 2.6d-281) then
tmp = t_2
else if (vef <= 2.2d-252) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (vef <= 1.8d-205) then
tmp = t_2
else if (vef <= 4.2d+24) then
tmp = t_1
else
tmp = t_3
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)));
double t_1 = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
double t_2 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
double t_3 = (NdChar / (1.0 + Math.exp((Vef / KbT)))) + t_0;
double tmp;
if (Vef <= -2.2e-86) {
tmp = t_3;
} else if (Vef <= -1.2e-215) {
tmp = t_1;
} else if (Vef <= 2.6e-281) {
tmp = t_2;
} else if (Vef <= 2.2e-252) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (Vef <= 1.8e-205) {
tmp = t_2;
} else if (Vef <= 4.2e+24) {
tmp = t_1;
} else {
tmp = t_3;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT))) t_1 = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) t_2 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))) t_3 = (NdChar / (1.0 + math.exp((Vef / KbT)))) + t_0 tmp = 0 if Vef <= -2.2e-86: tmp = t_3 elif Vef <= -1.2e-215: tmp = t_1 elif Vef <= 2.6e-281: tmp = t_2 elif Vef <= 2.2e-252: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif Vef <= 1.8e-205: tmp = t_2 elif Vef <= 4.2e+24: tmp = t_1 else: tmp = t_3 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) t_1 = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))) t_2 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(Ec / KbT) - Float64(2.0 + Float64(Float64(mu / KbT) + Float64(EDonor / KbT)))) / Vef)))))) t_3 = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) + t_0) tmp = 0.0 if (Vef <= -2.2e-86) tmp = t_3; elseif (Vef <= -1.2e-215) tmp = t_1; elseif (Vef <= 2.6e-281) tmp = t_2; elseif (Vef <= 2.2e-252) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (Vef <= 1.8e-205) tmp = t_2; elseif (Vef <= 4.2e+24) tmp = t_1; else tmp = t_3; end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))); t_1 = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); t_2 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))); t_3 = (NdChar / (1.0 + exp((Vef / KbT)))) + t_0; tmp = 0.0; if (Vef <= -2.2e-86) tmp = t_3; elseif (Vef <= -1.2e-215) tmp = t_1; elseif (Vef <= 2.6e-281) tmp = t_2; elseif (Vef <= 2.2e-252) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (Vef <= 1.8e-205) tmp = t_2; elseif (Vef <= 4.2e+24) tmp = t_1; else tmp = t_3; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(Ec / KbT), $MachinePrecision] - N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]}, If[LessEqual[Vef, -2.2e-86], t$95$3, If[LessEqual[Vef, -1.2e-215], t$95$1, If[LessEqual[Vef, 2.6e-281], t$95$2, If[LessEqual[Vef, 2.2e-252], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[Vef, 1.8e-205], t$95$2, If[LessEqual[Vef, 4.2e+24], t$95$1, t$95$3]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_1 := t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{Ec}{KbT} - \left(2 + \left(\frac{mu}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Vef}\right)}\\
t_3 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + t\_0\\
\mathbf{if}\;Vef \leq -2.2 \cdot 10^{-86}:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;Vef \leq -1.2 \cdot 10^{-215}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;Vef \leq 2.6 \cdot 10^{-281}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 2.2 \cdot 10^{-252}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;Vef \leq 1.8 \cdot 10^{-205}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;Vef \leq 4.2 \cdot 10^{+24}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if Vef < -2.2000000000000002e-86 or 4.2000000000000003e24 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.2%
Taylor expanded in EAccept around 0 80.3%
if -2.2000000000000002e-86 < Vef < -1.20000000000000005e-215 or 1.7999999999999999e-205 < Vef < 4.2000000000000003e24Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 78.4%
Taylor expanded in EAccept around 0 75.4%
if -1.20000000000000005e-215 < Vef < 2.60000000000000005e-281 or 2.1999999999999999e-252 < Vef < 1.7999999999999999e-205Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 64.2%
+-commutative64.2%
+-commutative64.2%
associate-+l+64.2%
Simplified64.2%
Taylor expanded in Vef around -inf 79.3%
if 2.60000000000000005e-281 < Vef < 2.1999999999999999e-252Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.4%
Taylor expanded in EAccept around 0 83.1%
Final simplification79.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(t_1 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))
(if (<= mu -7.6e+48)
(+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) t_1)
(if (<= mu -3.5e-228)
t_0
(if (<= mu 3.7e-196)
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= mu 2e+143)
t_0
(+ t_1 (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT))));
double t_1 = NdChar / (1.0 + exp((mu / KbT)));
double tmp;
if (mu <= -7.6e+48) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + t_1;
} else if (mu <= -3.5e-228) {
tmp = t_0;
} else if (mu <= 3.7e-196) {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (mu <= 2e+143) {
tmp = t_0;
} else {
tmp = t_1 + (NaChar / (1.0 + exp((mu / -KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((vef / kbt))))
t_1 = ndchar / (1.0d0 + exp((mu / kbt)))
if (mu <= (-7.6d+48)) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + t_1
else if (mu <= (-3.5d-228)) then
tmp = t_0
else if (mu <= 3.7d-196) then
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (mu <= 2d+143) then
tmp = t_0
else
tmp = t_1 + (nachar / (1.0d0 + exp((mu / -kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
double t_1 = NdChar / (1.0 + Math.exp((mu / KbT)));
double tmp;
if (mu <= -7.6e+48) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + t_1;
} else if (mu <= -3.5e-228) {
tmp = t_0;
} else if (mu <= 3.7e-196) {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (mu <= 2e+143) {
tmp = t_0;
} else {
tmp = t_1 + (NaChar / (1.0 + Math.exp((mu / -KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((Vef / KbT)))) t_1 = NdChar / (1.0 + math.exp((mu / KbT))) tmp = 0 if mu <= -7.6e+48: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + t_1 elif mu <= -3.5e-228: tmp = t_0 elif mu <= 3.7e-196: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif mu <= 2e+143: tmp = t_0 else: tmp = t_1 + (NaChar / (1.0 + math.exp((mu / -KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) tmp = 0.0 if (mu <= -7.6e+48) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + t_1); elseif (mu <= -3.5e-228) tmp = t_0; elseif (mu <= 3.7e-196) tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (mu <= 2e+143) tmp = t_0; else tmp = Float64(t_1 + Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT)))); t_1 = NdChar / (1.0 + exp((mu / KbT))); tmp = 0.0; if (mu <= -7.6e+48) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + t_1; elseif (mu <= -3.5e-228) tmp = t_0; elseif (mu <= 3.7e-196) tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (mu <= 2e+143) tmp = t_0; else tmp = t_1 + (NaChar / (1.0 + exp((mu / -KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[mu, -7.6e+48], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[mu, -3.5e-228], t$95$0, If[LessEqual[mu, 3.7e-196], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2e+143], t$95$0, N[(t$95$1 + N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\mathbf{if}\;mu \leq -7.6 \cdot 10^{+48}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + t\_1\\
\mathbf{elif}\;mu \leq -3.5 \cdot 10^{-228}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;mu \leq 3.7 \cdot 10^{-196}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;mu \leq 2 \cdot 10^{+143}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{1 + e^{\frac{mu}{-KbT}}}\\
\end{array}
\end{array}
if mu < -7.60000000000000001e48Initial program 99.9%
Simplified99.9%
Taylor expanded in mu around inf 87.9%
Taylor expanded in EAccept around 0 85.9%
if -7.60000000000000001e48 < mu < -3.49999999999999975e-228 or 3.7000000000000001e-196 < mu < 2e143Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.2%
if -3.49999999999999975e-228 < mu < 3.7000000000000001e-196Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 81.2%
if 2e143 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 91.1%
Taylor expanded in mu around inf 79.4%
associate-*r/32.5%
mul-1-neg32.5%
Simplified79.4%
Final simplification79.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NdChar (+ 1.0 (exp (/ Vef KbT))))
(/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT))))))
(t_1 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(if (<= NaChar -6.4e-177)
t_0
(if (<= NaChar -1.35e-273)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(*
Vef
(-
(/ 1.0 KbT)
(/ (- (/ Ec KbT) (+ 2.0 (+ (/ mu KbT) (/ EDonor KbT)))) Vef))))))
(if (<= NaChar -3.2e-289)
(+
(* NdChar (/ 1.0 t_1))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NaChar 4.2e-178)
(+ (/ NdChar t_1) (/ NaChar (+ (/ EAccept KbT) 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((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
double t_1 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double tmp;
if (NaChar <= -6.4e-177) {
tmp = t_0;
} else if (NaChar <= -1.35e-273) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else if (NaChar <= -3.2e-289) {
tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 4.2e-178) {
tmp = (NdChar / t_1) + (NaChar / ((EAccept / KbT) + 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) :: t_1
real(8) :: tmp
t_0 = (ndchar / (1.0d0 + exp((vef / kbt)))) + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
t_1 = 1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))
if (nachar <= (-6.4d-177)) then
tmp = t_0
else if (nachar <= (-1.35d-273)) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (vef * ((1.0d0 / kbt) - (((ec / kbt) - (2.0d0 + ((mu / kbt) + (edonor / kbt)))) / vef)))))
else if (nachar <= (-3.2d-289)) then
tmp = (ndchar * (1.0d0 / t_1)) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (nachar <= 4.2d-178) then
tmp = (ndchar / t_1) + (nachar / ((eaccept / kbt) + 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((Vef / KbT)))) + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
double t_1 = 1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double tmp;
if (NaChar <= -6.4e-177) {
tmp = t_0;
} else if (NaChar <= -1.35e-273) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else if (NaChar <= -3.2e-289) {
tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NaChar <= 4.2e-178) {
tmp = (NdChar / t_1) + (NaChar / ((EAccept / KbT) + 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((Vef / KbT)))) + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) t_1 = 1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) tmp = 0 if NaChar <= -6.4e-177: tmp = t_0 elif NaChar <= -1.35e-273: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))) elif NaChar <= -3.2e-289: tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NaChar <= 4.2e-178: tmp = (NdChar / t_1) + (NaChar / ((EAccept / KbT) + 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(Vef / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))) t_1 = Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))) tmp = 0.0 if (NaChar <= -6.4e-177) tmp = t_0; elseif (NaChar <= -1.35e-273) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(Ec / KbT) - Float64(2.0 + Float64(Float64(mu / KbT) + Float64(EDonor / KbT)))) / Vef)))))); elseif (NaChar <= -3.2e-289) tmp = Float64(Float64(NdChar * Float64(1.0 / t_1)) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NaChar <= 4.2e-178) tmp = Float64(Float64(NdChar / t_1) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 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((Vef / KbT)))) + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); t_1 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)); tmp = 0.0; if (NaChar <= -6.4e-177) tmp = t_0; elseif (NaChar <= -1.35e-273) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))); elseif (NaChar <= -3.2e-289) tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NaChar <= 4.2e-178) tmp = (NdChar / t_1) + (NaChar / ((EAccept / KbT) + 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[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NaChar, -6.4e-177], t$95$0, If[LessEqual[NaChar, -1.35e-273], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(Ec / KbT), $MachinePrecision] - N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, -3.2e-289], N[(N[(NdChar * N[(1.0 / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NaChar, 4.2e-178], N[(N[(NdChar / t$95$1), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}} + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
t_1 := 1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
\mathbf{if}\;NaChar \leq -6.4 \cdot 10^{-177}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NaChar \leq -1.35 \cdot 10^{-273}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{Ec}{KbT} - \left(2 + \left(\frac{mu}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{elif}\;NaChar \leq -3.2 \cdot 10^{-289}:\\
\;\;\;\;NdChar \cdot \frac{1}{t\_1} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NaChar \leq 4.2 \cdot 10^{-178}:\\
\;\;\;\;\frac{NdChar}{t\_1} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if NaChar < -6.3999999999999997e-177 or 4.2e-178 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 76.6%
Taylor expanded in EAccept around 0 71.3%
if -6.3999999999999997e-177 < NaChar < -1.34999999999999992e-273Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 67.2%
+-commutative67.2%
+-commutative67.2%
associate-+l+67.2%
Simplified67.2%
Taylor expanded in Vef around -inf 89.1%
if -1.34999999999999992e-273 < NaChar < -3.2000000000000002e-289Initial program 99.8%
Simplified99.8%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 87.0%
if -3.2000000000000002e-289 < NaChar < 4.2e-178Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 82.6%
Taylor expanded in EAccept around 0 79.9%
Final simplification74.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ (/ Vef KbT) (/ mu KbT)))
(t_1 (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= EDonor -2.4e+100)
(+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) t_1)
(if (<= EDonor -2.2e-36)
(+
t_2
(*
NdChar
(/
1.0
(* Ec (+ (/ (+ 2.0 (+ (/ EDonor KbT) t_0)) Ec) (/ -1.0 KbT))))))
(if (<= EDonor -3.9e-204)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= EDonor 6e+126)
(+
t_2
(*
NdChar
(/
1.0
(*
EDonor
(+ (/ 1.0 KbT) (/ (- (+ 2.0 t_0) (/ Ec KbT)) EDonor))))))
(+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) t_1)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (Vef / KbT) + (mu / KbT);
double t_1 = NdChar / (1.0 + exp((EDonor / KbT)));
double t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -2.4e+100) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1;
} else if (EDonor <= -2.2e-36) {
tmp = t_2 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if (EDonor <= -3.9e-204) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (EDonor <= 6e+126) {
tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
} else {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + 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 = (vef / kbt) + (mu / kbt)
t_1 = ndchar / (1.0d0 + exp((edonor / kbt)))
t_2 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (edonor <= (-2.4d+100)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + t_1
else if (edonor <= (-2.2d-36)) then
tmp = t_2 + (ndchar * (1.0d0 / (ec * (((2.0d0 + ((edonor / kbt) + t_0)) / ec) + ((-1.0d0) / kbt)))))
else if (edonor <= (-3.9d-204)) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else if (edonor <= 6d+126) then
tmp = t_2 + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + t_0) - (ec / kbt)) / edonor)))))
else
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + 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 = (Vef / KbT) + (mu / KbT);
double t_1 = NdChar / (1.0 + Math.exp((EDonor / KbT)));
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -2.4e+100) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + t_1;
} else if (EDonor <= -2.2e-36) {
tmp = t_2 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if (EDonor <= -3.9e-204) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else if (EDonor <= 6e+126) {
tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
} else {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + t_1;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Vef / KbT) + (mu / KbT) t_1 = NdChar / (1.0 + math.exp((EDonor / KbT))) t_2 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if EDonor <= -2.4e+100: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + t_1 elif EDonor <= -2.2e-36: tmp = t_2 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))) elif EDonor <= -3.9e-204: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) elif EDonor <= 6e+126: tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))) else: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + t_1 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Vef / KbT) + Float64(mu / KbT)) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -2.4e+100) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + t_1); elseif (EDonor <= -2.2e-36) tmp = Float64(t_2 + Float64(NdChar * Float64(1.0 / Float64(Ec * Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + t_0)) / Ec) + Float64(-1.0 / KbT)))))); elseif (EDonor <= -3.9e-204) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (EDonor <= 6e+126) tmp = Float64(t_2 + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + t_0) - Float64(Ec / KbT)) / EDonor)))))); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + t_1); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Vef / KbT) + (mu / KbT); t_1 = NdChar / (1.0 + exp((EDonor / KbT))); t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (EDonor <= -2.4e+100) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + t_1; elseif (EDonor <= -2.2e-36) tmp = t_2 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))); elseif (EDonor <= -3.9e-204) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); elseif (EDonor <= 6e+126) tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))); else tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + t_1; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -2.4e+100], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[EDonor, -2.2e-36], N[(t$95$2 + N[(NdChar * N[(1.0 / N[(Ec * N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3.9e-204], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, 6e+126], N[(t$95$2 + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Vef}{KbT} + \frac{mu}{KbT}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -2.4 \cdot 10^{+100}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + t\_1\\
\mathbf{elif}\;EDonor \leq -2.2 \cdot 10^{-36}:\\
\;\;\;\;t\_2 + NdChar \cdot \frac{1}{Ec \cdot \left(\frac{2 + \left(\frac{EDonor}{KbT} + t\_0\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;EDonor \leq -3.9 \cdot 10^{-204}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;EDonor \leq 6 \cdot 10^{+126}:\\
\;\;\;\;t\_2 + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + t\_0\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + t\_1\\
\end{array}
\end{array}
if EDonor < -2.40000000000000012e100Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in EDonor around inf 66.5%
if -2.40000000000000012e100 < EDonor < -2.1999999999999999e-36Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 60.4%
+-commutative60.4%
+-commutative60.4%
associate-+l+60.4%
Simplified60.4%
Taylor expanded in Ec around -inf 75.1%
mul-1-neg75.1%
distribute-rgt-neg-in75.1%
+-commutative75.1%
mul-1-neg75.1%
unsub-neg75.1%
Simplified75.1%
if -2.1999999999999999e-36 < EDonor < -3.9e-204Initial program 99.9%
Simplified99.9%
Taylor expanded in EAccept around inf 69.7%
Taylor expanded in EAccept around 0 69.5%
if -3.9e-204 < EDonor < 6.0000000000000005e126Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 60.0%
+-commutative60.0%
+-commutative60.0%
associate-+l+60.0%
Simplified60.0%
Taylor expanded in EDonor around -inf 70.0%
if 6.0000000000000005e126 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 73.3%
Taylor expanded in EDonor around inf 67.7%
Final simplification69.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (or (<= Vef -1.1e-90) (not (<= Vef 4.2e+23)))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+ t_0 (/ NdChar (+ 1.0 (exp (/ mu KbT))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -1.1e-90) || !(Vef <= 4.2e+23)) {
tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if ((vef <= (-1.1d-90)) .or. (.not. (vef <= 4.2d+23))) then
tmp = t_0 + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = t_0 + (ndchar / (1.0d0 + exp((mu / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if ((Vef <= -1.1e-90) || !(Vef <= 4.2e+23)) {
tmp = t_0 + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = t_0 + (NdChar / (1.0 + Math.exp((mu / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if (Vef <= -1.1e-90) or not (Vef <= 4.2e+23): tmp = t_0 + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = t_0 + (NdChar / (1.0 + math.exp((mu / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if ((Vef <= -1.1e-90) || !(Vef <= 4.2e+23)) tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(t_0 + Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if ((Vef <= -1.1e-90) || ~((Vef <= 4.2e+23))) tmp = t_0 + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = t_0 + (NdChar / (1.0 + exp((mu / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[Vef, -1.1e-90], N[Not[LessEqual[Vef, 4.2e+23]], $MachinePrecision]], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;Vef \leq -1.1 \cdot 10^{-90} \lor \neg \left(Vef \leq 4.2 \cdot 10^{+23}\right):\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NdChar}{1 + e^{\frac{mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -1.09999999999999993e-90 or 4.2000000000000003e23 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.2%
if -1.09999999999999993e-90 < Vef < 4.2000000000000003e23Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 73.5%
Final simplification80.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= Vef -3.1e-84) (not (<= Vef 2.05e+25)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ 1.0 (exp (/ Vef KbT)))))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ Ev KbT)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -3.1e-84) || !(Vef <= 2.05e+25)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT))));
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((vef <= (-3.1d-84)) .or. (.not. (vef <= 2.05d+25))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp((vef / kbt))))
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((ev / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((Vef <= -3.1e-84) || !(Vef <= 2.05e+25)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp((Vef / KbT))));
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((Ev / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (Vef <= -3.1e-84) or not (Vef <= 2.05e+25): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp((Vef / KbT)))) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((Ev / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((Vef <= -3.1e-84) || !(Vef <= 2.05e+25)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT))))); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((Vef <= -3.1e-84) || ~((Vef <= 2.05e+25))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp((Vef / KbT)))); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((Ev / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[Vef, -3.1e-84], N[Not[LessEqual[Vef, 2.05e+25]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Vef \leq -3.1 \cdot 10^{-84} \lor \neg \left(Vef \leq 2.05 \cdot 10^{+25}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{Ev}{KbT}}}\\
\end{array}
\end{array}
if Vef < -3.10000000000000002e-84 or 2.04999999999999983e25 < Vef Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 86.7%
if -3.10000000000000002e-84 < Vef < 2.04999999999999983e25Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 77.3%
Final simplification82.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ Vef KbT))))))
(if (<= Vef -8.8e-62)
(+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) t_0)
(if (<= Vef 5.7e+197)
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ 1.0 (exp (/ EAccept KbT)))))
(+ t_0 (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp((Vef / KbT)));
double tmp;
if (Vef <= -8.8e-62) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + t_0;
} else if (Vef <= 5.7e+197) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp((vef / kbt)))
if (vef <= (-8.8d-62)) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + t_0
else if (vef <= 5.7d+197) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / (1.0d0 + exp((eaccept / kbt))))
else
tmp = t_0 + (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt))))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp((Vef / KbT)));
double tmp;
if (Vef <= -8.8e-62) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + t_0;
} else if (Vef <= 5.7e+197) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + Math.exp((EAccept / KbT))));
} else {
tmp = t_0 + (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp((Vef / KbT))) tmp = 0 if Vef <= -8.8e-62: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + t_0 elif Vef <= 5.7e+197: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + math.exp((EAccept / KbT)))) else: tmp = t_0 + (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Vef / KbT)))) tmp = 0.0 if (Vef <= -8.8e-62) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + t_0); elseif (Vef <= 5.7e+197) 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 = Float64(t_0 + Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp((Vef / KbT))); tmp = 0.0; if (Vef <= -8.8e-62) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + t_0; elseif (Vef <= 5.7e+197) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / (1.0 + exp((EAccept / KbT)))); else tmp = t_0 + (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Vef, -8.8e-62], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[Vef, 5.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[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{1 + e^{\frac{Vef}{KbT}}}\\
\mathbf{if}\;Vef \leq -8.8 \cdot 10^{-62}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + t\_0\\
\mathbf{elif}\;Vef \leq 5.7 \cdot 10^{+197}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}}\\
\end{array}
\end{array}
if Vef < -8.80000000000000069e-62Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 88.8%
if -8.80000000000000069e-62 < Vef < 5.70000000000000022e197Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.5%
if 5.70000000000000022e197 < Vef Initial program 99.9%
Simplified99.9%
Taylor expanded in Vef around inf 95.9%
Taylor expanded in EAccept around 0 95.9%
Final simplification80.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))) (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / 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 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / 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 (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\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 (+ (/ Vef KbT) (/ mu KbT)))
(t_1 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= EDonor -5.8e+99)
(+
(/ NaChar (+ 1.0 (exp (/ EAccept KbT))))
(/ NdChar (+ 1.0 (exp (/ EDonor KbT)))))
(if (<= EDonor -3.8e-36)
(+
t_1
(*
NdChar
(/
1.0
(* Ec (+ (/ (+ 2.0 (+ (/ EDonor KbT) t_0)) Ec) (/ -1.0 KbT))))))
(if (or (<= EDonor -8.6e-204) (not (<= EDonor 2.6e+102)))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))
(+
t_1
(*
NdChar
(/
1.0
(*
EDonor
(+ (/ 1.0 KbT) (/ (- (+ 2.0 t_0) (/ Ec KbT)) EDonor)))))))))))
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) + (mu / KbT);
double t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -5.8e+99) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT))));
} else if (EDonor <= -3.8e-36) {
tmp = t_1 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if ((EDonor <= -8.6e-204) || !(EDonor <= 2.6e+102)) {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
}
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 = (vef / kbt) + (mu / kbt)
t_1 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (edonor <= (-5.8d+99)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar / (1.0d0 + exp((edonor / kbt))))
else if (edonor <= (-3.8d-36)) then
tmp = t_1 + (ndchar * (1.0d0 / (ec * (((2.0d0 + ((edonor / kbt) + t_0)) / ec) + ((-1.0d0) / kbt)))))
else if ((edonor <= (-8.6d-204)) .or. (.not. (edonor <= 2.6d+102))) then
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
else
tmp = t_1 + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + t_0) - (ec / kbt)) / edonor)))))
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) + (mu / KbT);
double t_1 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (EDonor <= -5.8e+99) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar / (1.0 + Math.exp((EDonor / KbT))));
} else if (EDonor <= -3.8e-36) {
tmp = t_1 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT)))));
} else if ((EDonor <= -8.6e-204) || !(EDonor <= 2.6e+102)) {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
} else {
tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor)))));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (Vef / KbT) + (mu / KbT) t_1 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if EDonor <= -5.8e+99: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar / (1.0 + math.exp((EDonor / KbT)))) elif EDonor <= -3.8e-36: tmp = t_1 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))) elif (EDonor <= -8.6e-204) or not (EDonor <= 2.6e+102): tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) else: tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(Vef / KbT) + Float64(mu / KbT)) t_1 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (EDonor <= -5.8e+99) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT))))); elseif (EDonor <= -3.8e-36) tmp = Float64(t_1 + Float64(NdChar * Float64(1.0 / Float64(Ec * Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + t_0)) / Ec) + Float64(-1.0 / KbT)))))); elseif ((EDonor <= -8.6e-204) || !(EDonor <= 2.6e+102)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); else tmp = Float64(t_1 + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + t_0) - Float64(Ec / KbT)) / EDonor)))))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (Vef / KbT) + (mu / KbT); t_1 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (EDonor <= -5.8e+99) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar / (1.0 + exp((EDonor / KbT)))); elseif (EDonor <= -3.8e-36) tmp = t_1 + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + t_0)) / Ec) + (-1.0 / KbT))))); elseif ((EDonor <= -8.6e-204) || ~((EDonor <= 2.6e+102))) tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); else tmp = t_1 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + t_0) - (Ec / KbT)) / EDonor))))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[EDonor, -5.8e+99], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[EDonor, -3.8e-36], N[(t$95$1 + N[(NdChar * N[(1.0 / N[(Ec * N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[EDonor, -8.6e-204], N[Not[LessEqual[EDonor, 2.6e+102]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + t$95$0), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{Vef}{KbT} + \frac{mu}{KbT}\\
t_1 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;EDonor \leq -5.8 \cdot 10^{+99}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + \frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}}\\
\mathbf{elif}\;EDonor \leq -3.8 \cdot 10^{-36}:\\
\;\;\;\;t\_1 + NdChar \cdot \frac{1}{Ec \cdot \left(\frac{2 + \left(\frac{EDonor}{KbT} + t\_0\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{elif}\;EDonor \leq -8.6 \cdot 10^{-204} \lor \neg \left(EDonor \leq 2.6 \cdot 10^{+102}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + t\_0\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\end{array}
\end{array}
if EDonor < -5.8000000000000004e99Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.0%
Taylor expanded in EDonor around inf 66.5%
if -5.8000000000000004e99 < EDonor < -3.79999999999999971e-36Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 60.4%
+-commutative60.4%
+-commutative60.4%
associate-+l+60.4%
Simplified60.4%
Taylor expanded in Ec around -inf 75.1%
mul-1-neg75.1%
distribute-rgt-neg-in75.1%
+-commutative75.1%
mul-1-neg75.1%
unsub-neg75.1%
Simplified75.1%
if -3.79999999999999971e-36 < EDonor < -8.6000000000000005e-204 or 2.60000000000000006e102 < EDonor Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.8%
Taylor expanded in EAccept around 0 65.2%
if -8.6000000000000005e-204 < EDonor < 2.60000000000000006e102Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 62.8%
+-commutative62.8%
+-commutative62.8%
associate-+l+62.8%
Simplified62.8%
Taylor expanded in EDonor around -inf 72.5%
Final simplification69.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(t_1 (/ NdChar t_0))
(t_2 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))))
(if (<= NdChar -4.6e+201)
(+
(* NdChar (/ 1.0 t_0))
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT))))
(if (<= NdChar -2.7e+162)
(+
t_2
(*
NdChar
(/
1.0
(*
Vef
(-
(/ 1.0 KbT)
(/ (- (/ Ec KbT) (+ 2.0 (+ (/ mu KbT) (/ EDonor KbT)))) Vef))))))
(if (<= NdChar -4.4e-75)
(+ t_1 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 2.9e+81)
(+
t_2
(*
NdChar
(/
1.0
(*
EDonor
(+
(/ 1.0 KbT)
(/
(- (+ 2.0 (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT))
EDonor))))))
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / t_0;
double t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -4.6e+201) {
tmp = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= -2.7e+162) {
tmp = t_2 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else if (NdChar <= -4.4e-75) {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 2.9e+81) {
tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = 1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))
t_1 = ndchar / t_0
t_2 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
if (ndchar <= (-4.6d+201)) then
tmp = (ndchar * (1.0d0 / t_0)) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= (-2.7d+162)) then
tmp = t_2 + (ndchar * (1.0d0 / (vef * ((1.0d0 / kbt) - (((ec / kbt) - (2.0d0 + ((mu / kbt) + (edonor / kbt)))) / vef)))))
else if (ndchar <= (-4.4d-75)) then
tmp = t_1 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 2.9d+81) then
tmp = t_2 + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + ((vef / kbt) + (mu / kbt))) - (ec / kbt)) / edonor)))))
else
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = 1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_1 = NdChar / t_0;
double t_2 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double tmp;
if (NdChar <= -4.6e+201) {
tmp = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= -2.7e+162) {
tmp = t_2 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef)))));
} else if (NdChar <= -4.4e-75) {
tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 2.9e+81) {
tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = 1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_1 = NdChar / t_0 t_2 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) tmp = 0 if NdChar <= -4.6e+201: tmp = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= -2.7e+162: tmp = t_2 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))) elif NdChar <= -4.4e-75: tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 2.9e+81: tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))) else: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))) t_1 = Float64(NdChar / t_0) t_2 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) tmp = 0.0 if (NdChar <= -4.6e+201) tmp = Float64(Float64(NdChar * Float64(1.0 / t_0)) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= -2.7e+162) tmp = Float64(t_2 + Float64(NdChar * Float64(1.0 / Float64(Vef * Float64(Float64(1.0 / KbT) - Float64(Float64(Float64(Ec / KbT) - Float64(2.0 + Float64(Float64(mu / KbT) + Float64(EDonor / KbT)))) / Vef)))))); elseif (NdChar <= -4.4e-75) tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 2.9e+81) tmp = Float64(t_2 + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)) / EDonor)))))); else tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_1 = NdChar / t_0; t_2 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); tmp = 0.0; if (NdChar <= -4.6e+201) tmp = (NdChar * (1.0 / t_0)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= -2.7e+162) tmp = t_2 + (NdChar * (1.0 / (Vef * ((1.0 / KbT) - (((Ec / KbT) - (2.0 + ((mu / KbT) + (EDonor / KbT)))) / Vef))))); elseif (NdChar <= -4.4e-75) tmp = t_1 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 2.9e+81) tmp = t_2 + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))); else tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(NdChar / t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4.6e+201], N[(N[(NdChar * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -2.7e+162], N[(t$95$2 + N[(NdChar * N[(1.0 / N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] - N[(N[(N[(Ec / KbT), $MachinePrecision] - N[(2.0 + N[(N[(mu / KbT), $MachinePrecision] + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Vef), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, -4.4e-75], N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 2.9e+81], N[(t$95$2 + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_1 := \frac{NdChar}{t\_0}\\
t_2 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
\mathbf{if}\;NdChar \leq -4.6 \cdot 10^{+201}:\\
\;\;\;\;NdChar \cdot \frac{1}{t\_0} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq -2.7 \cdot 10^{+162}:\\
\;\;\;\;t\_2 + NdChar \cdot \frac{1}{Vef \cdot \left(\frac{1}{KbT} - \frac{\frac{Ec}{KbT} - \left(2 + \left(\frac{mu}{KbT} + \frac{EDonor}{KbT}\right)\right)}{Vef}\right)}\\
\mathbf{elif}\;NdChar \leq -4.4 \cdot 10^{-75}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 2.9 \cdot 10^{+81}:\\
\;\;\;\;t\_2 + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -4.6000000000000002e201Initial program 99.9%
Simplified99.9%
div-inv99.9%
Applied egg-rr99.9%
Taylor expanded in KbT around inf 66.3%
if -4.6000000000000002e201 < NdChar < -2.7000000000000002e162Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 55.5%
+-commutative55.5%
+-commutative55.5%
associate-+l+55.5%
Simplified55.5%
Taylor expanded in Vef around -inf 80.1%
if -2.7000000000000002e162 < NdChar < -4.40000000000000011e-75Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 73.7%
Taylor expanded in EAccept around 0 64.8%
if -4.40000000000000011e-75 < NdChar < 2.9e81Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 65.1%
+-commutative65.1%
+-commutative65.1%
associate-+l+65.1%
Simplified65.1%
Taylor expanded in EDonor around -inf 70.3%
if 2.9e81 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.7%
Taylor expanded in Ev around 0 73.3%
Final simplification69.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(t_2 (/ NdChar t_1)))
(if (<= NdChar -4.2e-51)
(+ t_2 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 7.2e-238)
(+ t_0 (/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NdChar 4.15e-153)
(+
(* NdChar (/ 1.0 t_1))
(/
NaChar
(-
(+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT))))
(/ mu KbT))))
(if (<= NdChar 1.15e+101)
(+ t_0 (/ NdChar (+ (/ Vef KbT) 2.0)))
(+ t_2 (/ NaChar (+ (/ Ev KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_2 = NdChar / t_1;
double tmp;
if (NdChar <= -4.2e-51) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 7.2e-238) {
tmp = t_0 + (NdChar / ((mu / KbT) + 2.0));
} else if (NdChar <= 4.15e-153) {
tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.15e+101) {
tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = 1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))
t_2 = ndchar / t_1
if (ndchar <= (-4.2d-51)) then
tmp = t_2 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 7.2d-238) then
tmp = t_0 + (ndchar / ((mu / kbt) + 2.0d0))
else if (ndchar <= 4.15d-153) then
tmp = (ndchar * (1.0d0 / t_1)) + (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt)))
else if (ndchar <= 1.15d+101) then
tmp = t_0 + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_2 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = 1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT));
double t_2 = NdChar / t_1;
double tmp;
if (NdChar <= -4.2e-51) {
tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 7.2e-238) {
tmp = t_0 + (NdChar / ((mu / KbT) + 2.0));
} else if (NdChar <= 4.15e-153) {
tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT)));
} else if (NdChar <= 1.15e+101) {
tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = 1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)) t_2 = NdChar / t_1 tmp = 0 if NdChar <= -4.2e-51: tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 7.2e-238: tmp = t_0 + (NdChar / ((mu / KbT) + 2.0)) elif NdChar <= 4.15e-153: tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) elif NdChar <= 1.15e+101: tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))) t_2 = Float64(NdChar / t_1) tmp = 0.0 if (NdChar <= -4.2e-51) tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 7.2e-238) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NdChar <= 4.15e-153) tmp = Float64(Float64(NdChar * Float64(1.0 / t_1)) + Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT)))); elseif (NdChar <= 1.15e+101) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(t_2 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = 1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)); t_2 = NdChar / t_1; tmp = 0.0; if (NdChar <= -4.2e-51) tmp = t_2 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 7.2e-238) tmp = t_0 + (NdChar / ((mu / KbT) + 2.0)); elseif (NdChar <= 4.15e-153) tmp = (NdChar * (1.0 / t_1)) + (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))); elseif (NdChar <= 1.15e+101) tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_2 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(NdChar / t$95$1), $MachinePrecision]}, If[LessEqual[NdChar, -4.2e-51], N[(t$95$2 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 7.2e-238], N[(t$95$0 + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 4.15e-153], N[(N[(NdChar * N[(1.0 / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.15e+101], N[(t$95$0 + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := 1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}\\
t_2 := \frac{NdChar}{t\_1}\\
\mathbf{if}\;NdChar \leq -4.2 \cdot 10^{-51}:\\
\;\;\;\;t\_2 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 7.2 \cdot 10^{-238}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 4.15 \cdot 10^{-153}:\\
\;\;\;\;NdChar \cdot \frac{1}{t\_1} + \frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}}\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+101}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t\_2 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -4.20000000000000003e-51Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.4%
Taylor expanded in EAccept around 0 61.9%
if -4.20000000000000003e-51 < NdChar < 7.20000000000000021e-238Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.5%
Taylor expanded in mu around 0 67.0%
if 7.20000000000000021e-238 < NdChar < 4.1499999999999998e-153Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 80.7%
if 4.1499999999999998e-153 < NdChar < 1.1500000000000001e101Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.8%
Taylor expanded in Vef around 0 63.2%
if 1.1500000000000001e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 83.8%
Taylor expanded in Ev around 0 75.9%
Final simplification66.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 -8.4e-73)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.15e+101)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(-
(+
(+ 2.0 (/ EDonor KbT))
(* Vef (+ (/ 1.0 KbT) (/ mu (* Vef KbT)))))
(/ Ec KbT)))))
(+ t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -8.4e-73) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.15e+101) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-8.4d-73)) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.15d+101) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (((2.0d0 + (edonor / kbt)) + (vef * ((1.0d0 / kbt) + (mu / (vef * kbt))))) - (ec / kbt))))
else
tmp = t_0 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -8.4e-73) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.15e+101) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -8.4e-73: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.15e+101: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT)))) else: tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -8.4e-73) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.15e+101) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) + Float64(Vef * Float64(Float64(1.0 / KbT) + Float64(mu / Float64(Vef * KbT))))) - Float64(Ec / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -8.4e-73) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.15e+101) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) + (Vef * ((1.0 / KbT) + (mu / (Vef * KbT))))) - (Ec / KbT)))); else tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -8.4e-73], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.15e+101], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] + N[(Vef * N[(N[(1.0 / KbT), $MachinePrecision] + N[(mu / N[(Vef * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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 -8.4 \cdot 10^{-73}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{\left(\left(2 + \frac{EDonor}{KbT}\right) + Vef \cdot \left(\frac{1}{KbT} + \frac{mu}{Vef \cdot KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -8.3999999999999994e-73Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
Taylor expanded in EAccept around 0 61.3%
if -8.3999999999999994e-73 < NdChar < 1.1500000000000001e101Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 64.3%
+-commutative64.3%
+-commutative64.3%
associate-+l+64.3%
Simplified64.3%
Taylor expanded in Vef around inf 65.2%
if 1.1500000000000001e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 83.8%
Taylor expanded in Ev around 0 75.9%
Final simplification65.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -7.1e-72)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.22e+101)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(-
(-
(+ 2.0 (/ EDonor KbT))
(* mu (- (/ -1.0 KbT) (/ Vef (* mu KbT)))))
(/ Ec KbT)))))
(+ t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -7.1e-72) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.22e+101) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT))))) - (Ec / KbT))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-7.1d-72)) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.22d+101) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (((2.0d0 + (edonor / kbt)) - (mu * (((-1.0d0) / kbt) - (vef / (mu * kbt))))) - (ec / kbt))))
else
tmp = t_0 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -7.1e-72) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.22e+101) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT))))) - (Ec / KbT))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -7.1e-72: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.22e+101: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT))))) - (Ec / KbT)))) else: tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -7.1e-72) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.22e+101) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Float64(Float64(2.0 + Float64(EDonor / KbT)) - Float64(mu * Float64(Float64(-1.0 / KbT) - Float64(Vef / Float64(mu * KbT))))) - Float64(Ec / KbT))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -7.1e-72) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.22e+101) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (((2.0 + (EDonor / KbT)) - (mu * ((-1.0 / KbT) - (Vef / (mu * KbT))))) - (Ec / KbT)))); else tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -7.1e-72], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.22e+101], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(N[(N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision] - N[(mu * N[(N[(-1.0 / KbT), $MachinePrecision] - N[(Vef / N[(mu * KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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.1 \cdot 10^{-72}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.22 \cdot 10^{+101}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{\left(\left(2 + \frac{EDonor}{KbT}\right) - mu \cdot \left(\frac{-1}{KbT} - \frac{Vef}{mu \cdot KbT}\right)\right) - \frac{Ec}{KbT}}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -7.0999999999999997e-72Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
Taylor expanded in EAccept around 0 61.3%
if -7.0999999999999997e-72 < NdChar < 1.22e101Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 64.3%
+-commutative64.3%
+-commutative64.3%
associate-+l+64.3%
Simplified64.3%
Taylor expanded in mu around inf 66.5%
if 1.22e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 83.8%
Taylor expanded in Ev around 0 75.9%
Final simplification66.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))))
(if (<= NdChar -4e-71)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.05e+89)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(*
Ec
(+
(/ (+ 2.0 (+ (/ EDonor KbT) (+ (/ Vef KbT) (/ mu KbT)))) Ec)
(/ -1.0 KbT))))))
(+ t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -4e-71) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.05e+89) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-4d-71)) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.05d+89) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (ec * (((2.0d0 + ((edonor / kbt) + ((vef / kbt) + (mu / kbt)))) / ec) + ((-1.0d0) / kbt)))))
else
tmp = t_0 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -4e-71) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.05e+89) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT)))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -4e-71: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.05e+89: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))) else: tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -4e-71) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.05e+89) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(Ec * Float64(Float64(Float64(2.0 + Float64(Float64(EDonor / KbT) + Float64(Float64(Vef / KbT) + Float64(mu / KbT)))) / Ec) + Float64(-1.0 / KbT)))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -4e-71) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.05e+89) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (Ec * (((2.0 + ((EDonor / KbT) + ((Vef / KbT) + (mu / KbT)))) / Ec) + (-1.0 / KbT))))); else tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4e-71], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.05e+89], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(Ec * N[(N[(N[(2.0 + N[(N[(EDonor / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / Ec), $MachinePrecision] + N[(-1.0 / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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 -4 \cdot 10^{-71}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.05 \cdot 10^{+89}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{Ec \cdot \left(\frac{2 + \left(\frac{EDonor}{KbT} + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right)}{Ec} + \frac{-1}{KbT}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -3.9999999999999997e-71Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
Taylor expanded in EAccept around 0 61.3%
if -3.9999999999999997e-71 < NdChar < 1.04999999999999993e89Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 65.1%
+-commutative65.1%
+-commutative65.1%
associate-+l+65.1%
Simplified65.1%
Taylor expanded in Ec around -inf 69.8%
mul-1-neg69.8%
distribute-rgt-neg-in69.8%
+-commutative69.8%
mul-1-neg69.8%
unsub-neg69.8%
Simplified69.8%
if 1.04999999999999993e89 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.7%
Taylor expanded in Ev around 0 73.3%
Final simplification67.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 -4.4e-71)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 3.8e+83)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
1.0
(*
EDonor
(+
(/ 1.0 KbT)
(/ (- (+ 2.0 (+ (/ Vef KbT) (/ mu KbT))) (/ Ec KbT)) EDonor))))))
(+ t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -4.4e-71) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 3.8e+83) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-4.4d-71)) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 3.8d+83) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * (1.0d0 / (edonor * ((1.0d0 / kbt) + (((2.0d0 + ((vef / kbt) + (mu / kbt))) - (ec / kbt)) / edonor)))))
else
tmp = t_0 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -4.4e-71) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 3.8e+83) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor)))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -4.4e-71: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 3.8e+83: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))) else: tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -4.4e-71) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 3.8e+83) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(1.0 / Float64(EDonor * Float64(Float64(1.0 / KbT) + Float64(Float64(Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(mu / KbT))) - Float64(Ec / KbT)) / EDonor)))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -4.4e-71) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 3.8e+83) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (1.0 / (EDonor * ((1.0 / KbT) + (((2.0 + ((Vef / KbT) + (mu / KbT))) - (Ec / KbT)) / EDonor))))); else tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -4.4e-71], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 3.8e+83], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(1.0 / N[(EDonor * N[(N[(1.0 / KbT), $MachinePrecision] + N[(N[(N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(Ec / KbT), $MachinePrecision]), $MachinePrecision] / EDonor), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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 -4.4 \cdot 10^{-71}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 3.8 \cdot 10^{+83}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{1}{EDonor \cdot \left(\frac{1}{KbT} + \frac{\left(2 + \left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right)\right) - \frac{Ec}{KbT}}{EDonor}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -4.39999999999999995e-71Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
Taylor expanded in EAccept around 0 61.3%
if -4.39999999999999995e-71 < NdChar < 3.8000000000000002e83Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 65.1%
+-commutative65.1%
+-commutative65.1%
associate-+l+65.1%
Simplified65.1%
Taylor expanded in EDonor around -inf 70.3%
if 3.8000000000000002e83 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.7%
Taylor expanded in Ev around 0 73.3%
Final simplification68.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 (<= NdChar -5.8e-74)
(+ t_0 (/ NaChar (+ (/ EAccept KbT) 2.0)))
(if (<= NdChar 1.7e+87)
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(*
NdChar
(/
-1.0
(-
(/ Ec KbT)
(+ (+ (/ Vef KbT) (/ mu KbT)) (+ 2.0 (/ EDonor KbT)))))))
(+ t_0 (/ NaChar (+ (/ Ev KbT) 2.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -5.8e-74) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.7e+87) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT))))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
if (ndchar <= (-5.8d-74)) then
tmp = t_0 + (nachar / ((eaccept / kbt) + 2.0d0))
else if (ndchar <= 1.7d+87) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * ((-1.0d0) / ((ec / kbt) - (((vef / kbt) + (mu / kbt)) + (2.0d0 + (edonor / kbt))))))
else
tmp = t_0 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double tmp;
if (NdChar <= -5.8e-74) {
tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0));
} else if (NdChar <= 1.7e+87) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT))))));
} else {
tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) tmp = 0 if NdChar <= -5.8e-74: tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)) elif NdChar <= 1.7e+87: tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT)))))) else: tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) tmp = 0.0 if (NdChar <= -5.8e-74) tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); elseif (NdChar <= 1.7e+87) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * Float64(-1.0 / Float64(Float64(Ec / KbT) - Float64(Float64(Float64(Vef / KbT) + Float64(mu / KbT)) + Float64(2.0 + Float64(EDonor / KbT))))))); else tmp = Float64(t_0 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); tmp = 0.0; if (NdChar <= -5.8e-74) tmp = t_0 + (NaChar / ((EAccept / KbT) + 2.0)); elseif (NdChar <= 1.7e+87) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT)))))); else tmp = t_0 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -5.8e-74], N[(t$95$0 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.7e+87], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(-1.0 / N[(N[(Ec / KbT), $MachinePrecision] - N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $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 -5.8 \cdot 10^{-74}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.7 \cdot 10^{+87}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot \frac{-1}{\frac{Ec}{KbT} - \left(\left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right) + \left(2 + \frac{EDonor}{KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -5.8e-74Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.9%
Taylor expanded in EAccept around 0 61.3%
if -5.8e-74 < NdChar < 1.7000000000000001e87Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 65.1%
+-commutative65.1%
+-commutative65.1%
associate-+l+65.1%
Simplified65.1%
if 1.7000000000000001e87 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 82.7%
Taylor expanded in Ev around 0 73.3%
Final simplification65.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(/ NdChar (+ (/ Vef KbT) 2.0))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ (/ EAccept KbT) 2.0)))))
(if (<= NdChar -2.25e-71)
t_2
(if (<= NdChar 7.2e-238)
t_0
(if (<= NdChar 4.15e-153)
t_2
(if (<= NdChar 1.15e+101)
t_0
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (NdChar <= -2.25e-71) {
tmp = t_2;
} else if (NdChar <= 7.2e-238) {
tmp = t_0;
} else if (NdChar <= 4.15e-153) {
tmp = t_2;
} else if (NdChar <= 1.15e+101) {
tmp = t_0;
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar / ((vef / kbt) + 2.0d0))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_2 = t_1 + (nachar / ((eaccept / kbt) + 2.0d0))
if (ndchar <= (-2.25d-71)) then
tmp = t_2
else if (ndchar <= 7.2d-238) then
tmp = t_0
else if (ndchar <= 4.15d-153) then
tmp = t_2
else if (ndchar <= 1.15d+101) then
tmp = t_0
else
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (NdChar <= -2.25e-71) {
tmp = t_2;
} else if (NdChar <= 7.2e-238) {
tmp = t_0;
} else if (NdChar <= 4.15e-153) {
tmp = t_2;
} else if (NdChar <= 1.15e+101) {
tmp = t_0;
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0)) tmp = 0 if NdChar <= -2.25e-71: tmp = t_2 elif NdChar <= 7.2e-238: tmp = t_0 elif NdChar <= 4.15e-153: tmp = t_2 elif NdChar <= 1.15e+101: tmp = t_0 else: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -2.25e-71) tmp = t_2; elseif (NdChar <= 7.2e-238) tmp = t_0; elseif (NdChar <= 4.15e-153) tmp = t_2; elseif (NdChar <= 1.15e+101) tmp = t_0; else tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar / ((Vef / KbT) + 2.0)); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -2.25e-71) tmp = t_2; elseif (NdChar <= 7.2e-238) tmp = t_0; elseif (NdChar <= 4.15e-153) tmp = t_2; elseif (NdChar <= 1.15e+101) tmp = t_0; else tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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$2 = N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.25e-71], t$95$2, If[LessEqual[NdChar, 7.2e-238], t$95$0, If[LessEqual[NdChar, 4.15e-153], t$95$2, If[LessEqual[NdChar, 1.15e+101], t$95$0, N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -2.25 \cdot 10^{-71}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 7.2 \cdot 10^{-238}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;NdChar \leq 4.15 \cdot 10^{-153}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+101}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -2.2500000000000001e-71 or 7.20000000000000021e-238 < NdChar < 4.1499999999999998e-153Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.8%
Taylor expanded in EAccept around 0 63.4%
if -2.2500000000000001e-71 < NdChar < 7.20000000000000021e-238 or 4.1499999999999998e-153 < NdChar < 1.1500000000000001e101Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 78.7%
Taylor expanded in Vef around 0 65.7%
if 1.1500000000000001e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 83.8%
Taylor expanded in Ev around 0 75.9%
Final simplification66.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)))))
(t_1 (/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(t_2 (+ t_1 (/ NaChar (+ (/ EAccept KbT) 2.0)))))
(if (<= NdChar -2.8e-52)
t_2
(if (<= NdChar 6.5e-238)
(+ t_0 (/ NdChar (+ (/ mu KbT) 2.0)))
(if (<= NdChar 1.15e-151)
t_2
(if (<= NdChar 1.15e+101)
(+ t_0 (/ NdChar (+ (/ Vef KbT) 2.0)))
(+ t_1 (/ NaChar (+ (/ Ev KbT) 2.0)))))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (NdChar <= -2.8e-52) {
tmp = t_2;
} else if (NdChar <= 6.5e-238) {
tmp = t_0 + (NdChar / ((mu / KbT) + 2.0));
} else if (NdChar <= 1.15e-151) {
tmp = t_2;
} else if (NdChar <= 1.15e+101) {
tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_0 = nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))
t_1 = ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))
t_2 = t_1 + (nachar / ((eaccept / kbt) + 2.0d0))
if (ndchar <= (-2.8d-52)) then
tmp = t_2
else if (ndchar <= 6.5d-238) then
tmp = t_0 + (ndchar / ((mu / kbt) + 2.0d0))
else if (ndchar <= 1.15d-151) then
tmp = t_2
else if (ndchar <= 1.15d+101) then
tmp = t_0 + (ndchar / ((vef / kbt) + 2.0d0))
else
tmp = t_1 + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double t_0 = NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)));
double t_1 = NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)));
double t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0));
double tmp;
if (NdChar <= -2.8e-52) {
tmp = t_2;
} else if (NdChar <= 6.5e-238) {
tmp = t_0 + (NdChar / ((mu / KbT) + 2.0));
} else if (NdChar <= 1.15e-151) {
tmp = t_2;
} else if (NdChar <= 1.15e+101) {
tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0));
} else {
tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT))) t_1 = NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))) t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0)) tmp = 0 if NdChar <= -2.8e-52: tmp = t_2 elif NdChar <= 6.5e-238: tmp = t_0 + (NdChar / ((mu / KbT) + 2.0)) elif NdChar <= 1.15e-151: tmp = t_2 elif NdChar <= 1.15e+101: tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0)) else: tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) t_1 = Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) t_2 = Float64(t_1 + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))) tmp = 0.0 if (NdChar <= -2.8e-52) tmp = t_2; elseif (NdChar <= 6.5e-238) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(mu / KbT) + 2.0))); elseif (NdChar <= 1.15e-151) tmp = t_2; elseif (NdChar <= 1.15e+101) tmp = Float64(t_0 + Float64(NdChar / Float64(Float64(Vef / KbT) + 2.0))); else tmp = Float64(t_1 + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT))); t_1 = NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))); t_2 = t_1 + (NaChar / ((EAccept / KbT) + 2.0)); tmp = 0.0; if (NdChar <= -2.8e-52) tmp = t_2; elseif (NdChar <= 6.5e-238) tmp = t_0 + (NdChar / ((mu / KbT) + 2.0)); elseif (NdChar <= 1.15e-151) tmp = t_2; elseif (NdChar <= 1.15e+101) tmp = t_0 + (NdChar / ((Vef / KbT) + 2.0)); else tmp = t_1 + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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$2 = N[(t$95$1 + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[NdChar, -2.8e-52], t$95$2, If[LessEqual[NdChar, 6.5e-238], N[(t$95$0 + N[(NdChar / N[(N[(mu / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[NdChar, 1.15e-151], t$95$2, If[LessEqual[NdChar, 1.15e+101], N[(t$95$0 + N[(NdChar / N[(N[(Vef / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$1 + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}}\\
t_1 := \frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}}\\
t_2 := t\_1 + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\mathbf{if}\;NdChar \leq -2.8 \cdot 10^{-52}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 6.5 \cdot 10^{-238}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\frac{mu}{KbT} + 2}\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{-151}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;NdChar \leq 1.15 \cdot 10^{+101}:\\
\;\;\;\;t\_0 + \frac{NdChar}{\frac{Vef}{KbT} + 2}\\
\mathbf{else}:\\
\;\;\;\;t\_1 + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NdChar < -2.79999999999999995e-52 or 6.5000000000000006e-238 < NdChar < 1.14999999999999998e-151Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 76.2%
Taylor expanded in EAccept around 0 64.0%
if -2.79999999999999995e-52 < NdChar < 6.5000000000000006e-238Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 79.5%
Taylor expanded in mu around 0 67.0%
if 1.14999999999999998e-151 < NdChar < 1.1500000000000001e101Initial program 100.0%
Simplified100.0%
Taylor expanded in Vef around inf 77.8%
Taylor expanded in Vef around 0 63.2%
if 1.1500000000000001e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 83.8%
Taylor expanded in Ev around 0 75.9%
Final simplification66.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -7.2e+133) (not (<= NaChar 1.95e+124)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(/ NaChar (+ (/ EAccept KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.2e+133) || !(NaChar <= 1.95e+124)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-7.2d+133)) .or. (.not. (nachar <= 1.95d+124))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar / ((eaccept / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -7.2e+133) || !(NaChar <= 1.95e+124)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -7.2e+133) or not (NaChar <= 1.95e+124): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -7.2e+133) || !(NaChar <= 1.95e+124)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar / Float64(Float64(EAccept / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -7.2e+133) || ~((NaChar <= 1.95e+124))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar / ((EAccept / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -7.2e+133], N[Not[LessEqual[NaChar, 1.95e+124]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(EAccept / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -7.2 \cdot 10^{+133} \lor \neg \left(NaChar \leq 1.95 \cdot 10^{+124}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{\frac{EAccept}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -7.19999999999999956e133 or 1.95e124 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 60.5%
*-commutative60.5%
Simplified60.5%
if -7.19999999999999956e133 < NaChar < 1.95e124Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 74.4%
Taylor expanded in EAccept around 0 64.8%
Final simplification63.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.25e+44) (not (<= NaChar 2900000000000.0)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(* NdChar (/ 1.0 (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT)))))
(/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+44) || !(NaChar <= 2900000000000.0)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.25d+44)) .or. (.not. (nachar <= 2900000000000.0d0))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar * (1.0d0 / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt))))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+44) || !(NaChar <= 2900000000000.0)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar * (1.0 / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.25e+44) or not (NaChar <= 2900000000000.0): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar * (1.0 / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.25e+44) || !(NaChar <= 2900000000000.0)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar * Float64(1.0 / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT))))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.25e+44) || ~((NaChar <= 2900000000000.0))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar * (1.0 / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT))))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.25e+44], N[Not[LessEqual[NaChar, 2900000000000.0]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * N[(1.0 / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.25 \cdot 10^{+44} \lor \neg \left(NaChar \leq 2900000000000\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot \frac{1}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if NaChar < -1.2499999999999999e44 or 2.9e12 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.6%
*-commutative59.6%
Simplified59.6%
if -1.2499999999999999e44 < NaChar < 2.9e12Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 53.5%
Final simplification56.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -4.9e+42) (not (<= NaChar 6.2e-97)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (+ (/ Ev KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.9e+42) || !(NaChar <= 6.2e-97)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.9d+42)) .or. (.not. (nachar <= 6.2d-97))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.9e+42) || !(NaChar <= 6.2e-97)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.9e+42) or not (NaChar <= 6.2e-97): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.9e+42) || !(NaChar <= 6.2e-97)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.9e+42) || ~((NaChar <= 6.2e-97))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.9e+42], N[Not[LessEqual[NaChar, 6.2e-97]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.9 \cdot 10^{+42} \lor \neg \left(NaChar \leq 6.2 \cdot 10^{-97}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -4.9000000000000002e42 or 6.20000000000000004e-97 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 57.6%
*-commutative57.6%
Simplified57.6%
if -4.9000000000000002e42 < NaChar < 6.20000000000000004e-97Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 70.8%
Taylor expanded in EDonor around inf 51.3%
Taylor expanded in Ev around 0 47.3%
Final simplification52.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (or (<= NaChar -1.25e+43) (not (<= NaChar 2.7e+14)))
(+
(/ NaChar (+ 1.0 (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT))))
(* NdChar 0.5))
(+
(/ NdChar (+ 1.0 (exp (/ (+ EDonor (+ mu (- Vef Ec))) KbT))))
(* NaChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+43) || !(NaChar <= 2.7e+14)) {
tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-1.25d+43)) .or. (.not. (nachar <= 2.7d+14))) then
tmp = (nachar / (1.0d0 + exp(((vef + (ev + (eaccept - mu))) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp(((edonor + (mu + (vef - ec))) / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -1.25e+43) || !(NaChar <= 2.7e+14)) {
tmp = (NaChar / (1.0 + Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -1.25e+43) or not (NaChar <= 2.7e+14): tmp = (NaChar / (1.0 + math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -1.25e+43) || !(NaChar <= 2.7e+14)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(Float64(EDonor + Float64(mu + Float64(Vef - Ec))) / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -1.25e+43) || ~((NaChar <= 2.7e+14))) tmp = (NaChar / (1.0 + exp(((Vef + (Ev + (EAccept - mu))) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp(((EDonor + (mu + (Vef - Ec))) / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -1.25e+43], N[Not[LessEqual[NaChar, 2.7e+14]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(N[(EDonor + N[(mu + N[(Vef - Ec), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -1.25 \cdot 10^{+43} \lor \neg \left(NaChar \leq 2.7 \cdot 10^{+14}\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor + \left(mu + \left(Vef - Ec\right)\right)}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if NaChar < -1.2500000000000001e43 or 2.7e14 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.6%
*-commutative59.6%
Simplified59.6%
if -1.2500000000000001e43 < NaChar < 2.7e14Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 53.5%
Final simplification56.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -4.8e-51) (not (<= NdChar 1.22e+101))) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.8e-51) || !(NdChar <= 1.22e+101)) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-4.8d-51)) .or. (.not. (ndchar <= 1.22d+101))) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -4.8e-51) || !(NdChar <= 1.22e+101)) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -4.8e-51) or not (NdChar <= 1.22e+101): tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -4.8e-51) || !(NdChar <= 1.22e+101)) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -4.8e-51) || ~((NdChar <= 1.22e+101))) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -4.8e-51], N[Not[LessEqual[NdChar, 1.22e+101]], $MachinePrecision]], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -4.8 \cdot 10^{-51} \lor \neg \left(NdChar \leq 1.22 \cdot 10^{+101}\right):\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -4.8e-51 or 1.22e101 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 79.0%
Taylor expanded in EDonor around inf 55.6%
Taylor expanded in Ev around 0 43.0%
if -4.8e-51 < NdChar < 1.22e101Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 56.4%
*-commutative56.4%
Simplified56.4%
Taylor expanded in EAccept around 0 52.8%
Final simplification48.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NaChar -4.4e+45) (not (<= NaChar 140000000000.0))) (+ (/ NaChar (+ 1.0 (exp (/ (- (+ Vef Ev) mu) KbT)))) (* NdChar 0.5)) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (/ NaChar (+ (/ Ev KbT) 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.4e+45) || !(NaChar <= 140000000000.0)) {
tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((nachar <= (-4.4d+45)) .or. (.not. (nachar <= 140000000000.0d0))) then
tmp = (nachar / (1.0d0 + exp((((vef + ev) - mu) / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar / ((ev / kbt) + 2.0d0))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NaChar <= -4.4e+45) || !(NaChar <= 140000000000.0)) {
tmp = (NaChar / (1.0 + Math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NaChar <= -4.4e+45) or not (NaChar <= 140000000000.0): tmp = (NaChar / (1.0 + math.exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NaChar <= -4.4e+45) || !(NaChar <= 140000000000.0)) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Float64(Float64(Vef + Ev) - mu) / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar / Float64(Float64(Ev / KbT) + 2.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NaChar <= -4.4e+45) || ~((NaChar <= 140000000000.0))) tmp = (NaChar / (1.0 + exp((((Vef + Ev) - mu) / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar / ((Ev / KbT) + 2.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NaChar, -4.4e+45], N[Not[LessEqual[NaChar, 140000000000.0]], $MachinePrecision]], N[(N[(NaChar / N[(1.0 + N[Exp[N[(N[(N[(Vef + Ev), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NaChar \leq -4.4 \cdot 10^{+45} \lor \neg \left(NaChar \leq 140000000000\right):\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{\left(Vef + Ev\right) - mu}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + \frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if NaChar < -4.4000000000000001e45 or 1.4e11 < NaChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 59.3%
*-commutative59.3%
Simplified59.3%
Taylor expanded in EAccept around 0 55.8%
if -4.4000000000000001e45 < NaChar < 1.4e11Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 69.4%
Taylor expanded in EDonor around inf 51.2%
Taylor expanded in Ev around 0 46.4%
Final simplification50.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= mu -8.2e+58)
(+ (/ NaChar (+ 1.0 (exp (/ mu (- KbT))))) (* NdChar 0.5))
(if (<= mu 2.15e+89)
(+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))
(+ (/ NdChar (+ 1.0 (exp (/ mu KbT)))) (/ NaChar 2.0)))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= -8.2e+58) {
tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (mu <= 2.15e+89) {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (mu <= (-8.2d+58)) then
tmp = (nachar / (1.0d0 + exp((mu / -kbt)))) + (ndchar * 0.5d0)
else if (mu <= 2.15d+89) then
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((mu / kbt)))) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (mu <= -8.2e+58) {
tmp = (NaChar / (1.0 + Math.exp((mu / -KbT)))) + (NdChar * 0.5);
} else if (mu <= 2.15e+89) {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((mu / KbT)))) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if mu <= -8.2e+58: tmp = (NaChar / (1.0 + math.exp((mu / -KbT)))) + (NdChar * 0.5) elif mu <= 2.15e+89: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((mu / KbT)))) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (mu <= -8.2e+58) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(mu / Float64(-KbT))))) + Float64(NdChar * 0.5)); elseif (mu <= 2.15e+89) tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(mu / KbT)))) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (mu <= -8.2e+58) tmp = (NaChar / (1.0 + exp((mu / -KbT)))) + (NdChar * 0.5); elseif (mu <= 2.15e+89) tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); else tmp = (NdChar / (1.0 + exp((mu / KbT)))) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[mu, -8.2e+58], N[(N[(NaChar / N[(1.0 + N[Exp[N[(mu / (-KbT)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[mu, 2.15e+89], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;mu \leq -8.2 \cdot 10^{+58}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{mu}{-KbT}}} + NdChar \cdot 0.5\\
\mathbf{elif}\;mu \leq 2.15 \cdot 10^{+89}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{mu}{KbT}}} + \frac{NaChar}{2}\\
\end{array}
\end{array}
if mu < -8.2e58Initial program 99.9%
Simplified99.9%
Taylor expanded in KbT around inf 49.1%
*-commutative49.1%
Simplified49.1%
Taylor expanded in mu around inf 47.1%
associate-*r/47.1%
mul-1-neg47.1%
Simplified47.1%
if -8.2e58 < mu < 2.1500000000000001e89Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 76.9%
Taylor expanded in EDonor around inf 61.2%
Taylor expanded in Ev around 0 43.9%
if 2.1500000000000001e89 < mu Initial program 100.0%
Simplified100.0%
Taylor expanded in mu around inf 86.6%
Taylor expanded in KbT around inf 36.4%
Final simplification43.2%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= EAccept 1.35e+30) (+ (/ NaChar (+ 1.0 (exp (/ Ev KbT)))) (* NdChar 0.5)) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.35e+30) {
tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 1.35d+30) then
tmp = (nachar / (1.0d0 + exp((ev / kbt)))) + (ndchar * 0.5d0)
else
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 1.35e+30) {
tmp = (NaChar / (1.0 + Math.exp((Ev / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 1.35e+30: tmp = (NaChar / (1.0 + math.exp((Ev / KbT)))) + (NdChar * 0.5) else: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 1.35e+30) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(Ev / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 1.35e+30) tmp = (NaChar / (1.0 + exp((Ev / KbT)))) + (NdChar * 0.5); else tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 1.35e+30], N[(N[(NaChar / N[(1.0 + N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 1.35 \cdot 10^{+30}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{Ev}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\end{array}
\end{array}
if EAccept < 1.3499999999999999e30Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 48.2%
*-commutative48.2%
Simplified48.2%
Taylor expanded in Ev around inf 41.7%
if 1.3499999999999999e30 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 33.2%
*-commutative33.2%
Simplified33.2%
Taylor expanded in EAccept around inf 29.6%
Final simplification38.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= KbT -1.05e-301) (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)) (+ (/ NdChar (+ 1.0 (exp (/ EDonor KbT)))) (* NaChar 0.5))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.05e-301) {
tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (kbt <= (-1.05d-301)) then
tmp = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
else
tmp = (ndchar / (1.0d0 + exp((edonor / kbt)))) + (nachar * 0.5d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (KbT <= -1.05e-301) {
tmp = (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
} else {
tmp = (NdChar / (1.0 + Math.exp((EDonor / KbT)))) + (NaChar * 0.5);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if KbT <= -1.05e-301: tmp = (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5) else: tmp = (NdChar / (1.0 + math.exp((EDonor / KbT)))) + (NaChar * 0.5) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (KbT <= -1.05e-301) tmp = Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)); else tmp = Float64(Float64(NdChar / Float64(1.0 + exp(Float64(EDonor / KbT)))) + Float64(NaChar * 0.5)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (KbT <= -1.05e-301) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); else tmp = (NdChar / (1.0 + exp((EDonor / KbT)))) + (NaChar * 0.5); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[KbT, -1.05e-301], N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar / N[(1.0 + N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NaChar * 0.5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.05 \cdot 10^{-301}:\\
\;\;\;\;\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{1 + e^{\frac{EDonor}{KbT}}} + NaChar \cdot 0.5\\
\end{array}
\end{array}
if KbT < -1.0499999999999999e-301Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 47.5%
*-commutative47.5%
Simplified47.5%
Taylor expanded in EAccept around inf 33.9%
if -1.0499999999999999e-301 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in Ev around inf 66.9%
Taylor expanded in EDonor around inf 51.0%
Taylor expanded in Ev around 0 39.8%
Final simplification36.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (/ NaChar (+ 1.0 (exp (/ EAccept KbT)))) (* NdChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = (nachar / (1.0d0 + exp((eaccept / kbt)))) + (ndchar * 0.5d0)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NaChar / (1.0 + Math.exp((EAccept / KbT)))) + (NdChar * 0.5);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NaChar / (1.0 + math.exp((EAccept / KbT)))) + (NdChar * 0.5)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NaChar / Float64(1.0 + exp(Float64(EAccept / KbT)))) + Float64(NdChar * 0.5)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NaChar / (1.0 + exp((EAccept / KbT)))) + (NdChar * 0.5); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NaChar / N[(1.0 + N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * 0.5), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NaChar}{1 + e^{\frac{EAccept}{KbT}}} + NdChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.6%
*-commutative44.6%
Simplified44.6%
Taylor expanded in EAccept around inf 33.0%
Final simplification33.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= EAccept 4.9e-94)
(+
(/
NaChar
(- (+ 2.0 (+ (/ EAccept KbT) (+ (/ Vef KbT) (/ Ev KbT)))) (/ mu KbT)))
(*
NdChar
(/
-1.0
(- (/ Ec KbT) (+ (+ (/ Vef KbT) (/ mu KbT)) (+ 2.0 (/ EDonor KbT)))))))
(+ (* NdChar 0.5) (/ NaChar 2.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.9e-94) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT))))));
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (eaccept <= 4.9d-94) then
tmp = (nachar / ((2.0d0 + ((eaccept / kbt) + ((vef / kbt) + (ev / kbt)))) - (mu / kbt))) + (ndchar * ((-1.0d0) / ((ec / kbt) - (((vef / kbt) + (mu / kbt)) + (2.0d0 + (edonor / kbt))))))
else
tmp = (ndchar * 0.5d0) + (nachar / 2.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (EAccept <= 4.9e-94) {
tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT))))));
} else {
tmp = (NdChar * 0.5) + (NaChar / 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if EAccept <= 4.9e-94: tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT)))))) else: tmp = (NdChar * 0.5) + (NaChar / 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (EAccept <= 4.9e-94) tmp = Float64(Float64(NaChar / Float64(Float64(2.0 + Float64(Float64(EAccept / KbT) + Float64(Float64(Vef / KbT) + Float64(Ev / KbT)))) - Float64(mu / KbT))) + Float64(NdChar * Float64(-1.0 / Float64(Float64(Ec / KbT) - Float64(Float64(Float64(Vef / KbT) + Float64(mu / KbT)) + Float64(2.0 + Float64(EDonor / KbT))))))); else tmp = Float64(Float64(NdChar * 0.5) + Float64(NaChar / 2.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (EAccept <= 4.9e-94) tmp = (NaChar / ((2.0 + ((EAccept / KbT) + ((Vef / KbT) + (Ev / KbT)))) - (mu / KbT))) + (NdChar * (-1.0 / ((Ec / KbT) - (((Vef / KbT) + (mu / KbT)) + (2.0 + (EDonor / KbT)))))); else tmp = (NdChar * 0.5) + (NaChar / 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[EAccept, 4.9e-94], N[(N[(NaChar / N[(N[(2.0 + N[(N[(EAccept / KbT), $MachinePrecision] + N[(N[(Vef / KbT), $MachinePrecision] + N[(Ev / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(mu / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(NdChar * N[(-1.0 / N[(N[(Ec / KbT), $MachinePrecision] - N[(N[(N[(Vef / KbT), $MachinePrecision] + N[(mu / KbT), $MachinePrecision]), $MachinePrecision] + N[(2.0 + N[(EDonor / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;EAccept \leq 4.9 \cdot 10^{-94}:\\
\;\;\;\;\frac{NaChar}{\left(2 + \left(\frac{EAccept}{KbT} + \left(\frac{Vef}{KbT} + \frac{Ev}{KbT}\right)\right)\right) - \frac{mu}{KbT}} + NdChar \cdot \frac{-1}{\frac{Ec}{KbT} - \left(\left(\frac{Vef}{KbT} + \frac{mu}{KbT}\right) + \left(2 + \frac{EDonor}{KbT}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;NdChar \cdot 0.5 + \frac{NaChar}{2}\\
\end{array}
\end{array}
if EAccept < 4.89999999999999987e-94Initial program 100.0%
Simplified100.0%
div-inv100.0%
Applied egg-rr100.0%
Taylor expanded in KbT around inf 56.8%
+-commutative56.8%
+-commutative56.8%
associate-+l+56.8%
Simplified56.8%
Taylor expanded in KbT around inf 32.0%
if 4.89999999999999987e-94 < EAccept Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 36.7%
*-commutative36.7%
Simplified36.7%
Taylor expanded in KbT around inf 22.2%
Final simplification28.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (+ (* NdChar 0.5) (/ NaChar 2.0)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar * 0.5) + (NaChar / 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 * 0.5d0) + (nachar / 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 * 0.5) + (NaChar / 2.0);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar * 0.5) + (NaChar / 2.0)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar * 0.5) + Float64(NaChar / 2.0)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar * 0.5) + (NaChar / 2.0); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar * 0.5), $MachinePrecision] + N[(NaChar / 2.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
NdChar \cdot 0.5 + \frac{NaChar}{2}
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 44.6%
*-commutative44.6%
Simplified44.6%
Taylor expanded in KbT around inf 28.6%
Final simplification28.6%
herbie shell --seed 2024085
(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))))))