
(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 16 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 (+ (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)) 1.0)) (/ NaChar (+ (exp (/ (+ Vef (+ Ev (- EAccept mu))) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.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 / (exp(((edonor - ((ec - vef) - mu)) / kbt)) + 1.0d0)) + (nachar / (exp(((vef + (ev + (eaccept - mu))) / kbt)) + 1.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 / (Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (Math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0));
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return (NdChar / (math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (math.exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0))
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(Float64(Vef + Float64(Ev + Float64(EAccept - mu))) / KbT)) + 1.0))) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (exp(((Vef + (Ev + (EAccept - mu))) / KbT)) + 1.0)); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(N[(Vef + N[(Ev + N[(EAccept - mu), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{Vef + \left(Ev + \left(EAccept - mu\right)\right)}{KbT}} + 1}
\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 (/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))))
(if (<= Ev -5.3e+256)
t_0
(if (<= Ev -4.9e+30)
(/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0))
(if (<= Ev -4.1e-227)
t_0
(+
(/ NdChar (+ (exp (/ (- EDonor (- (- Ec Vef) mu)) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.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 / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -5.3e+256) {
tmp = t_0;
} else if (Ev <= -4.9e+30) {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else if (Ev <= -4.1e-227) {
tmp = t_0;
} else {
tmp = (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: t_0
real(8) :: tmp
t_0 = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
if (ev <= (-5.3d+256)) then
tmp = t_0
else if (ev <= (-4.9d+30)) then
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
else if (ev <= (-4.1d-227)) then
tmp = t_0
else
tmp = (ndchar / (exp(((edonor - ((ec - vef) - mu)) / kbt)) + 1.0d0)) + (nachar / (exp((eaccept / kbt)) + 1.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 / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
double tmp;
if (Ev <= -5.3e+256) {
tmp = t_0;
} else if (Ev <= -4.9e+30) {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else if (Ev <= -4.1e-227) {
tmp = t_0;
} else {
tmp = (NdChar / (Math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (Math.exp((EAccept / KbT)) + 1.0));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) tmp = 0 if Ev <= -5.3e+256: tmp = t_0 elif Ev <= -4.9e+30: tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) elif Ev <= -4.1e-227: tmp = t_0 else: tmp = (NdChar / (math.exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (math.exp((EAccept / KbT)) + 1.0)) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)) tmp = 0.0 if (Ev <= -5.3e+256) tmp = t_0; elseif (Ev <= -4.9e+30) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); elseif (Ev <= -4.1e-227) tmp = t_0; else tmp = Float64(Float64(NdChar / Float64(exp(Float64(Float64(EDonor - Float64(Float64(Ec - Vef) - mu)) / KbT)) + 1.0)) + Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); tmp = 0.0; if (Ev <= -5.3e+256) tmp = t_0; elseif (Ev <= -4.9e+30) tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); elseif (Ev <= -4.1e-227) tmp = t_0; else tmp = (NdChar / (exp(((EDonor - ((Ec - Vef) - mu)) / KbT)) + 1.0)) + (NaChar / (exp((EAccept / KbT)) + 1.0)); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -5.3e+256], t$95$0, If[LessEqual[Ev, -4.9e+30], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -4.1e-227], t$95$0, N[(N[(NdChar / N[(N[Exp[N[(N[(EDonor - N[(N[(Ec - Vef), $MachinePrecision] - mu), $MachinePrecision]), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\mathbf{if}\;Ev \leq -5.3 \cdot 10^{+256}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -4.9 \cdot 10^{+30}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -4.1 \cdot 10^{-227}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{EDonor - \left(\left(Ec - Vef\right) - mu\right)}{KbT}} + 1} + \frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -5.3e256 or -4.89999999999999984e30 < Ev < -4.10000000000000009e-227Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 70.9%
associate--l+70.9%
sub-neg70.9%
associate-+r+70.9%
mul-1-neg70.9%
mul-1-neg70.9%
associate-+r+70.9%
sub-neg70.9%
associate--l+70.9%
associate-+r+70.9%
Simplified70.9%
if -5.3e256 < Ev < -4.89999999999999984e30Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.3%
if -4.10000000000000009e-227 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in EAccept around inf 72.2%
Final simplification71.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -6e+256)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -1.2e+111)
(/ NdChar (+ (exp (/ mu KbT)) 1.0))
(if (<= Ev -1.7e-251)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= Ev 1.12e-166)
(/ NdChar (+ (exp (/ (- Ec) KbT)) 1.0))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0)))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6e+256) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.2e+111) {
tmp = NdChar / (exp((mu / KbT)) + 1.0);
} else if (Ev <= -1.7e-251) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else if (Ev <= 1.12e-166) {
tmp = NdChar / (exp((-Ec / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-6d+256)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-1.2d+111)) then
tmp = ndchar / (exp((mu / kbt)) + 1.0d0)
else if (ev <= (-1.7d-251)) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else if (ev <= 1.12d-166) then
tmp = ndchar / (exp((-ec / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -6e+256) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.2e+111) {
tmp = NdChar / (Math.exp((mu / KbT)) + 1.0);
} else if (Ev <= -1.7e-251) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (Ev <= 1.12e-166) {
tmp = NdChar / (Math.exp((-Ec / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -6e+256: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -1.2e+111: tmp = NdChar / (math.exp((mu / KbT)) + 1.0) elif Ev <= -1.7e-251: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) elif Ev <= 1.12e-166: tmp = NdChar / (math.exp((-Ec / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -6e+256) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -1.2e+111) tmp = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)); elseif (Ev <= -1.7e-251) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (Ev <= 1.12e-166) tmp = Float64(NdChar / Float64(exp(Float64(Float64(-Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -6e+256) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -1.2e+111) tmp = NdChar / (exp((mu / KbT)) + 1.0); elseif (Ev <= -1.7e-251) tmp = NaChar / (exp((Vef / KbT)) + 1.0); elseif (Ev <= 1.12e-166) tmp = NdChar / (exp((-Ec / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -6e+256], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.2e+111], N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.7e-251], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 1.12e-166], N[(NdChar / N[(N[Exp[N[((-Ec) / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -6 \cdot 10^{+256}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.2 \cdot 10^{+111}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.7 \cdot 10^{-251}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq 1.12 \cdot 10^{-166}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{-Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -6.0000000000000002e256Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 83.7%
associate--l+83.7%
sub-neg83.7%
associate-+r+83.7%
mul-1-neg83.7%
mul-1-neg83.7%
associate-+r+83.7%
sub-neg83.7%
associate--l+83.7%
associate-+r+83.7%
Simplified83.7%
Taylor expanded in Ev around inf 83.7%
if -6.0000000000000002e256 < Ev < -1.20000000000000003e111Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 71.8%
Taylor expanded in mu around inf 54.6%
if -1.20000000000000003e111 < Ev < -1.70000000000000008e-251Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 68.4%
associate--l+68.4%
sub-neg68.4%
associate-+r+68.4%
mul-1-neg68.4%
mul-1-neg68.4%
associate-+r+68.4%
sub-neg68.4%
associate--l+68.4%
associate-+r+68.4%
Simplified68.4%
Taylor expanded in Vef around inf 47.0%
if -1.70000000000000008e-251 < Ev < 1.11999999999999994e-166Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 62.1%
Taylor expanded in Ec around inf 44.7%
associate-*r/44.7%
mul-1-neg44.7%
Simplified44.7%
if 1.11999999999999994e-166 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 60.3%
associate--l+60.3%
sub-neg60.3%
associate-+r+60.3%
mul-1-neg60.3%
mul-1-neg60.3%
associate-+r+60.3%
sub-neg60.3%
associate--l+60.3%
associate-+r+60.3%
Simplified60.3%
Taylor expanded in EAccept around inf 37.8%
Final simplification44.5%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ mu KbT)) 1.0))))
(if (<= Ev -4.8e+256)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -1.05e+111)
t_0
(if (<= Ev -2.2e-256)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= Ev -6.2e-306)
t_0
(/ NaChar (+ (exp (/ EAccept KbT)) 1.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 / (exp((mu / KbT)) + 1.0);
double tmp;
if (Ev <= -4.8e+256) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.05e+111) {
tmp = t_0;
} else if (Ev <= -2.2e-256) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else if (Ev <= -6.2e-306) {
tmp = t_0;
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 / (exp((mu / kbt)) + 1.0d0)
if (ev <= (-4.8d+256)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-1.05d+111)) then
tmp = t_0
else if (ev <= (-2.2d-256)) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else if (ev <= (-6.2d-306)) then
tmp = t_0
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 / (Math.exp((mu / KbT)) + 1.0);
double tmp;
if (Ev <= -4.8e+256) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.05e+111) {
tmp = t_0;
} else if (Ev <= -2.2e-256) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (Ev <= -6.2e-306) {
tmp = t_0;
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((mu / KbT)) + 1.0) tmp = 0 if Ev <= -4.8e+256: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -1.05e+111: tmp = t_0 elif Ev <= -2.2e-256: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) elif Ev <= -6.2e-306: tmp = t_0 else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(mu / KbT)) + 1.0)) tmp = 0.0 if (Ev <= -4.8e+256) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -1.05e+111) tmp = t_0; elseif (Ev <= -2.2e-256) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (Ev <= -6.2e-306) tmp = t_0; else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((mu / KbT)) + 1.0); tmp = 0.0; if (Ev <= -4.8e+256) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -1.05e+111) tmp = t_0; elseif (Ev <= -2.2e-256) tmp = NaChar / (exp((Vef / KbT)) + 1.0); elseif (Ev <= -6.2e-306) tmp = t_0; else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(mu / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -4.8e+256], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.05e+111], t$95$0, If[LessEqual[Ev, -2.2e-256], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -6.2e-306], t$95$0, N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{mu}{KbT}} + 1}\\
\mathbf{if}\;Ev \leq -4.8 \cdot 10^{+256}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.05 \cdot 10^{+111}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -2.2 \cdot 10^{-256}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -6.2 \cdot 10^{-306}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -4.80000000000000028e256Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 83.7%
associate--l+83.7%
sub-neg83.7%
associate-+r+83.7%
mul-1-neg83.7%
mul-1-neg83.7%
associate-+r+83.7%
sub-neg83.7%
associate--l+83.7%
associate-+r+83.7%
Simplified83.7%
Taylor expanded in Ev around inf 83.7%
if -4.80000000000000028e256 < Ev < -1.04999999999999997e111 or -2.2000000000000001e-256 < Ev < -6.19999999999999995e-306Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 73.3%
Taylor expanded in mu around inf 55.9%
if -1.04999999999999997e111 < Ev < -2.2000000000000001e-256Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 68.4%
associate--l+68.4%
sub-neg68.4%
associate-+r+68.4%
mul-1-neg68.4%
mul-1-neg68.4%
associate-+r+68.4%
sub-neg68.4%
associate--l+68.4%
associate-+r+68.4%
Simplified68.4%
Taylor expanded in Vef around inf 47.0%
if -6.19999999999999995e-306 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 59.8%
associate--l+59.8%
sub-neg59.8%
associate-+r+59.8%
mul-1-neg59.8%
mul-1-neg59.8%
associate-+r+59.8%
sub-neg59.8%
associate--l+59.8%
associate-+r+59.8%
Simplified59.8%
Taylor expanded in EAccept around inf 37.8%
Final simplification44.3%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(let* ((t_0 (/ NdChar (+ (exp (/ EDonor KbT)) 1.0))))
(if (<= Ev -1.55e+209)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -1.22e+110)
t_0
(if (<= Ev -2.45e-256)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= Ev 3.3e-166)
t_0
(/ NaChar (+ (exp (/ EAccept KbT)) 1.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 / (exp((EDonor / KbT)) + 1.0);
double tmp;
if (Ev <= -1.55e+209) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.22e+110) {
tmp = t_0;
} else if (Ev <= -2.45e-256) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else if (Ev <= 3.3e-166) {
tmp = t_0;
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 / (exp((edonor / kbt)) + 1.0d0)
if (ev <= (-1.55d+209)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-1.22d+110)) then
tmp = t_0
else if (ev <= (-2.45d-256)) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else if (ev <= 3.3d-166) then
tmp = t_0
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 / (Math.exp((EDonor / KbT)) + 1.0);
double tmp;
if (Ev <= -1.55e+209) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.22e+110) {
tmp = t_0;
} else if (Ev <= -2.45e-256) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (Ev <= 3.3e-166) {
tmp = t_0;
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): t_0 = NdChar / (math.exp((EDonor / KbT)) + 1.0) tmp = 0 if Ev <= -1.55e+209: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -1.22e+110: tmp = t_0 elif Ev <= -2.45e-256: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) elif Ev <= 3.3e-166: tmp = t_0 else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = Float64(NdChar / Float64(exp(Float64(EDonor / KbT)) + 1.0)) tmp = 0.0 if (Ev <= -1.55e+209) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -1.22e+110) tmp = t_0; elseif (Ev <= -2.45e-256) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (Ev <= 3.3e-166) tmp = t_0; else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) t_0 = NdChar / (exp((EDonor / KbT)) + 1.0); tmp = 0.0; if (Ev <= -1.55e+209) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -1.22e+110) tmp = t_0; elseif (Ev <= -2.45e-256) tmp = NaChar / (exp((Vef / KbT)) + 1.0); elseif (Ev <= 3.3e-166) tmp = t_0; else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := Block[{t$95$0 = N[(NdChar / N[(N[Exp[N[(EDonor / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[Ev, -1.55e+209], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.22e+110], t$95$0, If[LessEqual[Ev, -2.45e-256], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 3.3e-166], t$95$0, N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{NdChar}{e^{\frac{EDonor}{KbT}} + 1}\\
\mathbf{if}\;Ev \leq -1.55 \cdot 10^{+209}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.22 \cdot 10^{+110}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;Ev \leq -2.45 \cdot 10^{-256}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq 3.3 \cdot 10^{-166}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -1.55e209Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 72.2%
associate--l+72.2%
sub-neg72.2%
associate-+r+72.2%
mul-1-neg72.2%
mul-1-neg72.2%
associate-+r+72.2%
sub-neg72.2%
associate--l+72.2%
associate-+r+72.2%
Simplified72.2%
Taylor expanded in Ev around inf 72.2%
if -1.55e209 < Ev < -1.22000000000000002e110 or -2.44999999999999998e-256 < Ev < 3.30000000000000018e-166Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 68.7%
Taylor expanded in EDonor around inf 44.2%
if -1.22000000000000002e110 < Ev < -2.44999999999999998e-256Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 69.3%
associate--l+69.3%
sub-neg69.3%
associate-+r+69.3%
mul-1-neg69.3%
mul-1-neg69.3%
associate-+r+69.3%
sub-neg69.3%
associate--l+69.3%
associate-+r+69.3%
Simplified69.3%
Taylor expanded in Vef around inf 47.7%
if 3.30000000000000018e-166 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 60.3%
associate--l+60.3%
sub-neg60.3%
associate-+r+60.3%
mul-1-neg60.3%
mul-1-neg60.3%
associate-+r+60.3%
sub-neg60.3%
associate--l+60.3%
associate-+r+60.3%
Simplified60.3%
Taylor expanded in EAccept around inf 37.8%
Final simplification44.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -1.7e+42) (not (<= NdChar 6.2e-32))) (/ NdChar (+ (exp (/ (- (+ EDonor (+ mu Vef)) Ec) KbT)) 1.0)) (/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.7e+42) || !(NdChar <= 6.2e-32)) {
tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-1.7d+42)) .or. (.not. (ndchar <= 6.2d-32))) then
tmp = ndchar / (exp((((edonor + (mu + vef)) - ec) / kbt)) + 1.0d0)
else
tmp = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -1.7e+42) || !(NdChar <= 6.2e-32)) {
tmp = NdChar / (Math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -1.7e+42) or not (NdChar <= 6.2e-32): tmp = NdChar / (math.exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -1.7e+42) || !(NdChar <= 6.2e-32)) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(EDonor + Float64(mu + Vef)) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -1.7e+42) || ~((NdChar <= 6.2e-32))) tmp = NdChar / (exp((((EDonor + (mu + Vef)) - Ec) / KbT)) + 1.0); else tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -1.7e+42], N[Not[LessEqual[NdChar, 6.2e-32]], $MachinePrecision]], N[(NdChar / N[(N[Exp[N[(N[(N[(EDonor + N[(mu + Vef), $MachinePrecision]), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -1.7 \cdot 10^{+42} \lor \neg \left(NdChar \leq 6.2 \cdot 10^{-32}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(EDonor + \left(mu + Vef\right)\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -1.69999999999999988e42 or 6.20000000000000021e-32 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 77.3%
if -1.69999999999999988e42 < NdChar < 6.20000000000000021e-32Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 72.6%
associate--l+72.6%
sub-neg72.6%
associate-+r+72.6%
mul-1-neg72.6%
mul-1-neg72.6%
associate-+r+72.6%
sub-neg72.6%
associate--l+72.6%
associate-+r+72.6%
Simplified72.6%
Final simplification74.7%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -2.65e+42) (not (<= NdChar 1e-31))) (/ NdChar (+ (exp (/ (- (+ mu Vef) Ec) KbT)) 1.0)) (/ NaChar (+ (exp (/ (- (+ Vef (+ Ev EAccept)) mu) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.65e+42) || !(NdChar <= 1e-31)) {
tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((ndchar <= (-2.65d+42)) .or. (.not. (ndchar <= 1d-31))) then
tmp = ndchar / (exp((((mu + vef) - ec) / kbt)) + 1.0d0)
else
tmp = nachar / (exp((((vef + (ev + eaccept)) - mu) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -2.65e+42) || !(NdChar <= 1e-31)) {
tmp = NdChar / (Math.exp((((mu + Vef) - Ec) / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -2.65e+42) or not (NdChar <= 1e-31): tmp = NdChar / (math.exp((((mu + Vef) - Ec) / KbT)) + 1.0) else: tmp = NaChar / (math.exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -2.65e+42) || !(NdChar <= 1e-31)) tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(Float64(Float64(Vef + Float64(Ev + EAccept)) - mu) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((NdChar <= -2.65e+42) || ~((NdChar <= 1e-31))) tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0); else tmp = NaChar / (exp((((Vef + (Ev + EAccept)) - mu) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -2.65e+42], N[Not[LessEqual[NdChar, 1e-31]], $MachinePrecision]], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(N[(N[(Vef + N[(Ev + EAccept), $MachinePrecision]), $MachinePrecision] - mu), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -2.65 \cdot 10^{+42} \lor \neg \left(NdChar \leq 10^{-31}\right):\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + Vef\right) - Ec}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{\left(Vef + \left(Ev + EAccept\right)\right) - mu}{KbT}} + 1}\\
\end{array}
\end{array}
if NdChar < -2.65000000000000014e42 or 1e-31 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 77.3%
Taylor expanded in EDonor around 0 71.5%
if -2.65000000000000014e42 < NdChar < 1e-31Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 72.6%
associate--l+72.6%
sub-neg72.6%
associate-+r+72.6%
mul-1-neg72.6%
mul-1-neg72.6%
associate-+r+72.6%
sub-neg72.6%
associate--l+72.6%
associate-+r+72.6%
Simplified72.6%
Final simplification72.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept)
:precision binary64
(if (<= Ev -2.35e+52)
(/ NaChar (+ (exp (/ Ev KbT)) 1.0))
(if (<= Ev -1.62e-248)
(/ NaChar (+ (exp (/ Vef KbT)) 1.0))
(if (<= Ev 6.5e-291)
(* 0.5 (+ NdChar NaChar))
(/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.35e+52) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.62e-248) {
tmp = NaChar / (exp((Vef / KbT)) + 1.0);
} else if (Ev <= 6.5e-291) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-2.35d+52)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else if (ev <= (-1.62d-248)) then
tmp = nachar / (exp((vef / kbt)) + 1.0d0)
else if (ev <= 6.5d-291) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.35e+52) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else if (Ev <= -1.62e-248) {
tmp = NaChar / (Math.exp((Vef / KbT)) + 1.0);
} else if (Ev <= 6.5e-291) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.35e+52: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) elif Ev <= -1.62e-248: tmp = NaChar / (math.exp((Vef / KbT)) + 1.0) elif Ev <= 6.5e-291: tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.35e+52) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); elseif (Ev <= -1.62e-248) tmp = Float64(NaChar / Float64(exp(Float64(Vef / KbT)) + 1.0)); elseif (Ev <= 6.5e-291) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -2.35e+52) tmp = NaChar / (exp((Ev / KbT)) + 1.0); elseif (Ev <= -1.62e-248) tmp = NaChar / (exp((Vef / KbT)) + 1.0); elseif (Ev <= 6.5e-291) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.35e+52], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, -1.62e-248], N[(NaChar / N[(N[Exp[N[(Vef / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[Ev, 6.5e-291], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.35 \cdot 10^{+52}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq -1.62 \cdot 10^{-248}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Vef}{KbT}} + 1}\\
\mathbf{elif}\;Ev \leq 6.5 \cdot 10^{-291}:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -2.35e52Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 55.8%
associate--l+55.8%
sub-neg55.8%
associate-+r+55.8%
mul-1-neg55.8%
mul-1-neg55.8%
associate-+r+55.8%
sub-neg55.8%
associate--l+55.8%
associate-+r+55.8%
Simplified55.8%
Taylor expanded in Ev around inf 49.4%
if -2.35e52 < Ev < -1.6200000000000001e-248Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 66.2%
associate--l+66.2%
sub-neg66.2%
associate-+r+66.2%
mul-1-neg66.2%
mul-1-neg66.2%
associate-+r+66.2%
sub-neg66.2%
associate--l+66.2%
associate-+r+66.2%
Simplified66.2%
Taylor expanded in Vef around inf 43.6%
if -1.6200000000000001e-248 < Ev < 6.50000000000000002e-291Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 52.7%
distribute-lft-out52.7%
Simplified52.7%
if 6.50000000000000002e-291 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 58.6%
associate--l+58.6%
sub-neg58.6%
associate-+r+58.6%
mul-1-neg58.6%
mul-1-neg58.6%
associate-+r+58.6%
sub-neg58.6%
associate--l+58.6%
associate-+r+58.6%
Simplified58.6%
Taylor expanded in EAccept around inf 37.2%
Final simplification41.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -1.05e+131) (not (<= KbT 4.2e+193))) (- (* 0.5 (+ NdChar NaChar)) (* -0.25 (* mu (/ (- NaChar NdChar) KbT)))) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
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+131) || !(KbT <= 4.2e+193)) {
tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.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 ((kbt <= (-1.05d+131)) .or. (.not. (kbt <= 4.2d+193))) then
tmp = (0.5d0 * (ndchar + nachar)) - ((-0.25d0) * (mu * ((nachar - ndchar) / kbt)))
else
tmp = nachar / (exp((eaccept / kbt)) + 1.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 ((KbT <= -1.05e+131) || !(KbT <= 4.2e+193)) {
tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (mu * ((NaChar - NdChar) / KbT)));
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -1.05e+131) or not (KbT <= 4.2e+193): tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (mu * ((NaChar - NdChar) / KbT))) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -1.05e+131) || !(KbT <= 4.2e+193)) tmp = Float64(Float64(0.5 * Float64(NdChar + NaChar)) - Float64(-0.25 * Float64(mu * Float64(Float64(NaChar - NdChar) / KbT)))); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -1.05e+131) || ~((KbT <= 4.2e+193))) tmp = (0.5 * (NdChar + NaChar)) - (-0.25 * (mu * ((NaChar - NdChar) / KbT))); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -1.05e+131], N[Not[LessEqual[KbT, 4.2e+193]], $MachinePrecision]], N[(N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision] - N[(-0.25 * N[(mu * N[(N[(NaChar - NdChar), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -1.05 \cdot 10^{+131} \lor \neg \left(KbT \leq 4.2 \cdot 10^{+193}\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right) - -0.25 \cdot \left(mu \cdot \frac{NaChar - NdChar}{KbT}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if KbT < -1.04999999999999993e131 or 4.2e193 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 35.8%
Simplified35.8%
Taylor expanded in mu around -inf 51.1%
associate-/l*60.2%
mul-1-neg60.2%
sub-neg60.2%
Simplified60.2%
if -1.04999999999999993e131 < KbT < 4.2e193Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 64.1%
associate--l+64.1%
sub-neg64.1%
associate-+r+64.1%
mul-1-neg64.1%
mul-1-neg64.1%
associate-+r+64.1%
sub-neg64.1%
associate--l+64.1%
associate-+r+64.1%
Simplified64.1%
Taylor expanded in EAccept around inf 39.2%
Final simplification44.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -7.2e+255) (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) (/ NdChar (+ (exp (/ (- (+ mu Vef) Ec) KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -7.2e+255) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-7.2d+255)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = ndchar / (exp((((mu + vef) - ec) / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -7.2e+255) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = NdChar / (Math.exp((((mu + Vef) - Ec) / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -7.2e+255: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = NdChar / (math.exp((((mu + Vef) - Ec) / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -7.2e+255) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(NdChar / Float64(exp(Float64(Float64(Float64(mu + Vef) - Ec) / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -7.2e+255) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = NdChar / (exp((((mu + Vef) - Ec) / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -7.2e+255], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(N[Exp[N[(N[(N[(mu + Vef), $MachinePrecision] - Ec), $MachinePrecision] / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -7.2 \cdot 10^{+255}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{e^{\frac{\left(mu + Vef\right) - Ec}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -7.1999999999999998e255Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 83.7%
associate--l+83.7%
sub-neg83.7%
associate-+r+83.7%
mul-1-neg83.7%
mul-1-neg83.7%
associate-+r+83.7%
sub-neg83.7%
associate--l+83.7%
associate-+r+83.7%
Simplified83.7%
Taylor expanded in Ev around inf 83.7%
if -7.1999999999999998e255 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 62.1%
Taylor expanded in EDonor around 0 57.0%
Final simplification57.6%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ev -2.9e-65) (/ NaChar (+ (exp (/ Ev KbT)) 1.0)) (/ NaChar (+ (exp (/ EAccept KbT)) 1.0))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.9e-65) {
tmp = NaChar / (exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if (ev <= (-2.9d-65)) then
tmp = nachar / (exp((ev / kbt)) + 1.0d0)
else
tmp = nachar / (exp((eaccept / kbt)) + 1.0d0)
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if (Ev <= -2.9e-65) {
tmp = NaChar / (Math.exp((Ev / KbT)) + 1.0);
} else {
tmp = NaChar / (Math.exp((EAccept / KbT)) + 1.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ev <= -2.9e-65: tmp = NaChar / (math.exp((Ev / KbT)) + 1.0) else: tmp = NaChar / (math.exp((EAccept / KbT)) + 1.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ev <= -2.9e-65) tmp = Float64(NaChar / Float64(exp(Float64(Ev / KbT)) + 1.0)); else tmp = Float64(NaChar / Float64(exp(Float64(EAccept / KbT)) + 1.0)); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if (Ev <= -2.9e-65) tmp = NaChar / (exp((Ev / KbT)) + 1.0); else tmp = NaChar / (exp((EAccept / KbT)) + 1.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ev, -2.9e-65], N[(NaChar / N[(N[Exp[N[(Ev / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[Exp[N[(EAccept / KbT), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ev \leq -2.9 \cdot 10^{-65}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{Ev}{KbT}} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{e^{\frac{EAccept}{KbT}} + 1}\\
\end{array}
\end{array}
if Ev < -2.8999999999999998e-65Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 57.0%
associate--l+57.0%
sub-neg57.0%
associate-+r+57.0%
mul-1-neg57.0%
mul-1-neg57.0%
associate-+r+57.0%
sub-neg57.0%
associate--l+57.0%
associate-+r+57.0%
Simplified57.0%
Taylor expanded in Ev around inf 46.8%
if -2.8999999999999998e-65 < Ev Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 60.5%
associate--l+60.5%
sub-neg60.5%
associate-+r+60.5%
mul-1-neg60.5%
mul-1-neg60.5%
associate-+r+60.5%
sub-neg60.5%
associate--l+60.5%
associate-+r+60.5%
Simplified60.5%
Taylor expanded in EAccept around inf 38.1%
Final simplification40.4%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= KbT -2.4e+24) (not (<= KbT 0.98))) (* 0.5 (+ NdChar NaChar)) (/ NdChar (+ 2.0 (+ (/ Vef KbT) (/ (- mu Ec) KbT))))))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.4e+24) || !(KbT <= 0.98)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + ((Vef / KbT) + ((mu - Ec) / KbT)));
}
return tmp;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
real(8) :: tmp
if ((kbt <= (-2.4d+24)) .or. (.not. (kbt <= 0.98d0))) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = ndchar / (2.0d0 + ((vef / kbt) + ((mu - ec) / kbt)))
end if
code = tmp
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((KbT <= -2.4e+24) || !(KbT <= 0.98)) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NdChar / (2.0 + ((Vef / KbT) + ((mu - Ec) / KbT)));
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (KbT <= -2.4e+24) or not (KbT <= 0.98): tmp = 0.5 * (NdChar + NaChar) else: tmp = NdChar / (2.0 + ((Vef / KbT) + ((mu - Ec) / KbT))) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((KbT <= -2.4e+24) || !(KbT <= 0.98)) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = Float64(NdChar / Float64(2.0 + Float64(Float64(Vef / KbT) + Float64(Float64(mu - Ec) / KbT)))); end return tmp end
function tmp_2 = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0; if ((KbT <= -2.4e+24) || ~((KbT <= 0.98))) tmp = 0.5 * (NdChar + NaChar); else tmp = NdChar / (2.0 + ((Vef / KbT) + ((mu - Ec) / KbT))); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[KbT, -2.4e+24], N[Not[LessEqual[KbT, 0.98]], $MachinePrecision]], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NdChar / N[(2.0 + N[(N[(Vef / KbT), $MachinePrecision] + N[(N[(mu - Ec), $MachinePrecision] / KbT), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;KbT \leq -2.4 \cdot 10^{+24} \lor \neg \left(KbT \leq 0.98\right):\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NdChar}{2 + \left(\frac{Vef}{KbT} + \frac{mu - Ec}{KbT}\right)}\\
\end{array}
\end{array}
if KbT < -2.4000000000000001e24 or 0.97999999999999998 < KbT Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 42.7%
distribute-lft-out42.7%
Simplified42.7%
if -2.4000000000000001e24 < KbT < 0.97999999999999998Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around inf 63.4%
Taylor expanded in EDonor around 0 57.2%
Taylor expanded in KbT around inf 22.0%
associate--l+22.0%
associate--l+22.0%
div-sub22.1%
Simplified22.1%
Final simplification31.8%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (or (<= NdChar -3.4e-45) (not (<= NdChar 7e-45))) (* NdChar 0.5) (* NaChar 0.5)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
double tmp;
if ((NdChar <= -3.4e-45) || !(NdChar <= 7e-45)) {
tmp = NdChar * 0.5;
} else {
tmp = 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 ((ndchar <= (-3.4d-45)) .or. (.not. (ndchar <= 7d-45))) then
tmp = ndchar * 0.5d0
else
tmp = 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 ((NdChar <= -3.4e-45) || !(NdChar <= 7e-45)) {
tmp = NdChar * 0.5;
} else {
tmp = NaChar * 0.5;
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if (NdChar <= -3.4e-45) or not (NdChar <= 7e-45): tmp = NdChar * 0.5 else: tmp = NaChar * 0.5 return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if ((NdChar <= -3.4e-45) || !(NdChar <= 7e-45)) tmp = Float64(NdChar * 0.5); else tmp = 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 ((NdChar <= -3.4e-45) || ~((NdChar <= 7e-45))) tmp = NdChar * 0.5; else tmp = NaChar * 0.5; end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[Or[LessEqual[NdChar, -3.4e-45], N[Not[LessEqual[NdChar, 7e-45]], $MachinePrecision]], N[(NdChar * 0.5), $MachinePrecision], N[(NaChar * 0.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;NdChar \leq -3.4 \cdot 10^{-45} \lor \neg \left(NdChar \leq 7 \cdot 10^{-45}\right):\\
\;\;\;\;NdChar \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;NaChar \cdot 0.5\\
\end{array}
\end{array}
if NdChar < -3.40000000000000004e-45 or 7e-45 < NdChar Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.4%
distribute-lft-out27.4%
Simplified27.4%
Taylor expanded in NaChar around 0 26.0%
*-commutative26.0%
Simplified26.0%
if -3.40000000000000004e-45 < NdChar < 7e-45Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 26.7%
distribute-lft-out26.7%
Simplified26.7%
Taylor expanded in NaChar around inf 26.0%
*-commutative26.0%
Simplified26.0%
Final simplification26.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (if (<= Ec 680.0) (* 0.5 (+ NdChar NaChar)) (/ 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 (Ec <= 680.0) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = 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 (ec <= 680.0d0) then
tmp = 0.5d0 * (ndchar + nachar)
else
tmp = 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 (Ec <= 680.0) {
tmp = 0.5 * (NdChar + NaChar);
} else {
tmp = NaChar / ((Ev / KbT) + 2.0);
}
return tmp;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): tmp = 0 if Ec <= 680.0: tmp = 0.5 * (NdChar + NaChar) else: tmp = NaChar / ((Ev / KbT) + 2.0) return tmp
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.0 if (Ec <= 680.0) tmp = Float64(0.5 * Float64(NdChar + NaChar)); else tmp = 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 (Ec <= 680.0) tmp = 0.5 * (NdChar + NaChar); else tmp = NaChar / ((Ev / KbT) + 2.0); end tmp_2 = tmp; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := If[LessEqual[Ec, 680.0], N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision], N[(NaChar / N[(N[(Ev / KbT), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;Ec \leq 680:\\
\;\;\;\;0.5 \cdot \left(NdChar + NaChar\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{NaChar}{\frac{Ev}{KbT} + 2}\\
\end{array}
\end{array}
if Ec < 680Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 28.7%
distribute-lft-out28.7%
Simplified28.7%
if 680 < Ec Initial program 100.0%
Simplified100.0%
Taylor expanded in NdChar around 0 69.0%
associate--l+69.0%
sub-neg69.0%
associate-+r+69.0%
mul-1-neg69.0%
mul-1-neg69.0%
associate-+r+69.0%
sub-neg69.0%
associate--l+69.0%
associate-+r+69.0%
Simplified69.0%
Taylor expanded in Ev around inf 39.8%
Taylor expanded in Ev around 0 22.0%
Final simplification27.0%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* 0.5 (+ NdChar NaChar)))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = 0.5d0 * (ndchar + nachar)
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return 0.5 * (NdChar + NaChar);
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return 0.5 * (NdChar + NaChar)
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(0.5 * Float64(NdChar + NaChar)) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = 0.5 * (NdChar + NaChar); end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(0.5 * N[(NdChar + NaChar), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
0.5 \cdot \left(NdChar + NaChar\right)
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.1%
distribute-lft-out27.1%
Simplified27.1%
Final simplification27.1%
(FPCore (NdChar Ec Vef EDonor mu KbT NaChar Ev EAccept) :precision binary64 (* NaChar 0.5))
double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
real(8) function code(ndchar, ec, vef, edonor, mu, kbt, nachar, ev, eaccept)
real(8), intent (in) :: ndchar
real(8), intent (in) :: ec
real(8), intent (in) :: vef
real(8), intent (in) :: edonor
real(8), intent (in) :: mu
real(8), intent (in) :: kbt
real(8), intent (in) :: nachar
real(8), intent (in) :: ev
real(8), intent (in) :: eaccept
code = nachar * 0.5d0
end function
public static double code(double NdChar, double Ec, double Vef, double EDonor, double mu, double KbT, double NaChar, double Ev, double EAccept) {
return NaChar * 0.5;
}
def code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept): return NaChar * 0.5
function code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) return Float64(NaChar * 0.5) end
function tmp = code(NdChar, Ec, Vef, EDonor, mu, KbT, NaChar, Ev, EAccept) tmp = NaChar * 0.5; end
code[NdChar_, Ec_, Vef_, EDonor_, mu_, KbT_, NaChar_, Ev_, EAccept_] := N[(NaChar * 0.5), $MachinePrecision]
\begin{array}{l}
\\
NaChar \cdot 0.5
\end{array}
Initial program 100.0%
Simplified100.0%
Taylor expanded in KbT around inf 27.1%
distribute-lft-out27.1%
Simplified27.1%
Taylor expanded in NaChar around inf 18.1%
*-commutative18.1%
Simplified18.1%
herbie shell --seed 2024181
(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))))))